MyHDL - 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, г, ширина: int): "" "Серый кодировщик. B - входной сигнал intbv, двоичный кодированный G - выходной сигнал intbv, закодированный серым width - разрядность """ @always_comb def логика(): Bext = intbv(0)[ширина + 1 :] Bext[:] = B за я в ассортимент(ширина): г.Следующий[я] = Bext[я + 1] ^ Bext[я] вернуть логика
Вы можете создать экземпляр и преобразовать его в Verilog и VHDL следующим образом:
ширина = 8B = Сигнал(intbv(0)[ширина:])г = Сигнал(intbv(0)[ширина:])bin2gray_inst = toVerilog(bin2gray, B, г, ширина)bin2gray_inst = toVHDL(bin2gray, B, г, ширина)
Сгенерированный код Verilog выглядит следующим образом:
модуль bin2gray ( B, г);Вход [7:0] B;вывод [7:0] г;рег [7:0] г;всегда @(B) начинать: BIN2GRAY_LOGIC целое число я; рег [9-1:0] Bext; Bext = 9'h0; Bext = B; за (я=0; я<8; я=я+1) начинать г[я] <= (Bext[(я + 1)] ^ Bext[я]); конецконецконечный модуль
Сгенерированный код VHDL выглядит следующим образом:
библиотека IEEE;использовать IEEE.std_logic_1164.все;использовать IEEE.numeric_std.все;использовать std.textio.все;использовать work.pck_myhdl_06.все;юридическое лицо bin2gray является порт ( B: в беззнаковый(7 вниз 0); г: вне беззнаковый(7 вниз 0) );конец юридическое лицо bin2gray;архитектура MyHDL из bin2gray являетсяначинатьBIN2GRAY_LOGIC: обработать (B) является переменная Bext: беззнаковый(8 вниз 0);начинать Bext := to_unsigned(0, 9); Bext := изменить размер(B, 9); за я в 0 к 8-1 петля г(я) <= (Bext((я + 1)) xor Bext(я)); конец петля;конец обработать BIN2GRAY_LOGIC;конец архитектура MyHDL;
Смотрите также
- Сравнение бесплатного программного обеспечения EDA
- Сравнение программного обеспечения EDA
- Автоматизация электронного проектирования (EDA)
- C в HDL компиляторы
Рекомендации
- ^ http://www.myhdl.org/
- ^ http://docs.myhdl.org/en/stable/manual/conversion.html
- ^ http://docs.myhdl.org/en/stable/whatsnew/0.6.html#conversion-of-test-benches
- ^ http://docs.myhdl.org/en/stable/whatsnew/0.6.html#conversion-of-lists-of-signals
- ^ http://docs.myhdl.org/en/stable/whatsnew/0.6.html#conversion-output-verification
- ^ http://docs.myhdl.org/en/stable/manual/cosimulation.html
- ^ http://www.linuxjournal.com/article/7542
- ^ http://docs.myhdl.org/en/stable/manual/conversion_examples.html