MyHDL
MyHDL [1] — это Python (HDL) на основе язык описания оборудования .
Особенности MyHDL включают в себя:
- Возможность генерировать код VHDL и Verilog на основе проекта MyHDL. [2]
- Возможность генерации тестового стенда (Конвертация тестовых стендов [3] ) с тестовыми векторами в VHDL или Verilog на основе сложных вычислений на Python.
- Возможность конвертировать список сигналов. [4]
- Возможность конвертировать выходную проверку. [5]
- Возможность совместного моделирования с Verilog. [6]
- Продвинутая система типов данных, независимая от традиционных типов данных. Инструмент-переводчик MyHDL автоматически записывает функции преобразования, когда их требует целевой язык.
MyHDL разработан Яном Декалуве. [7]
Примеры конвертации [ править ]
Здесь вы можете увидеть несколько примеров преобразования проектов MyHDL в VHDL и/или Verilog. [8]
Небольшой комбинаторный проект
Пример представляет собой небольшой комбинаторный проект, а точнее преобразователь двоичного кода в код Грея:
def bin2gray(B, G, width: int):
"""Gray encoder.
B -- input intbv signal, binary encoded
G -- output intbv signal, gray encoded
width -- bit width
"""
@always_comb
def logic():
Bext = intbv(0)[width + 1 :]
Bext[:] = B
for i in range(width):
G.next[i] = Bext[i + 1] ^ Bext[i]
return logic
Вы можете создать экземпляр и преобразовать его в Verilog и VHDL следующим образом:
width = 8
B = Signal(intbv(0)[width:])
G = Signal(intbv(0)[width:])
bin2gray_inst = toVerilog(bin2gray, B, G, width)
bin2gray_inst = toVHDL(bin2gray, B, G, width)
Сгенерированный код Verilog выглядит следующим образом:
module bin2gray (
B,
G
);
input [7:0] B;
output [7:0] G;
reg [7:0] G;
always @(B) begin: BIN2GRAY_LOGIC
integer i;
reg [9-1:0] Bext;
Bext = 9'h0;
Bext = B;
for (i=0; i<8; i=i+1) begin
G[i] <= (Bext[(i + 1)] ^ Bext[i]);
end
end
endmodule
Сгенерированный код VHDL выглядит следующим образом:
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.numeric_std.all;
use std.textio.all;
use work.pck_myhdl_06.all;
entity bin2gray is
port (
B: in unsigned(7 downto 0);
G: out unsigned(7 downto 0)
);
end entity bin2gray;
architecture MyHDL of bin2gray is
begin
BIN2GRAY_LOGIC: process (B) is
variable Bext: unsigned(8 downto 0);
begin
Bext := to_unsigned(0, 9);
Bext := resize(B, 9);
for i in 0 to 8-1 loop
G(i) <= (Bext((i + 1)) xor Bext(i));
end loop;
end process BIN2GRAY_LOGIC;
end architecture MyHDL;
См. также [ править ]
- Сравнение бесплатного программного обеспечения EDA
- Сравнение программного обеспечения EDA
- Автоматизация электронного проектирования (EDA)
- C в HDL Компиляторы
Ссылки [ править ]
- ^ "Дом" . myhdl.org .
- ^ «Преобразование в Verilog и VHDL — документация MyHDL 0.11» .
- ^ «Что нового в MyHDL 0.6 — документация MyHDL 0.11» .
- ^ «Что нового в MyHDL 0.6 — документация MyHDL 0.11» .
- ^ «Что нового в MyHDL 0.6 — документация MyHDL 0.11» .
- ^ «Совместное моделирование с Verilog — документация MyHDL 0.11» .
- ^ «MyHDL: язык описания оборудования на основе Python | Журнал Linux» .
- ^ «Примеры конвертации — документация MyHDL 0.11» .