Перейти к содержанию
    

Закончился тот период, когда устройства были простенькие и их симуляцию было легко провести при помощи встроенного симулятора в Quartus. Начал осваивать написание тестов на языке VHDL и моделированием ( пока только функциональным) в среде Modelsim. Но столкнулся с проблемой: я практически не нашел информации как правильно писать тесты на VHDL. И ещё меньше нашел информации как правильно применять эти тесты в Modelsim.

Сейчас я делаю так:

 

1. Написал и откомпилировал текст схемы в quartus. Компилирую именно в quartus'e потому-что были ситуации когда Modelsim компилировал нормально, а вот Quartus's ругался.

2. Когда результаты компиляции меня устроили я генерирую Testbench в среде quartus (Processing => Start => Start Testbench template writer)

3. Далее когда Quartus сгенерировал Testbench, я настраиваю в Quartus'e путь расположения этого Testbench.

4. После настройки пути я запускаю моделирование через Quartus.

5. Когда Modelsim запустился и всё откомпилировал я начинаю писать тестовые воздействия.

6. Написал тестовые воздействия и начинаю проверять как схема на них реагирует:

7. Для этого я из Modelsim'а компилирую, написанный Testbench, и перезапускаю временные диаграммы.

8. Анализирую результат.

9. Если результат не устроил, например я неправильно подал тестовые воздействия я повторяю пункты 6..8.

10. Если где-то накосячил в тексте схемы, я её меняю и перекомпилирю в Modelsim'е. И снова запускаю временные диаграммы.

 

Если честно то у меня есть 3 проблемы, которые меня просто раздражают до безумия.

1. Напрягает постоянно перекомпилировать Testbench, затем заново перестраивать временные диаграммы. Хотелось бы это как-то автоматизировать. Например написал\исправил тест\схему, кнопочку жамкнул и диаграммы построились.

2. Хотелось бы подробнее узнать про то, как правильно писать тесты на VHDL. Литературы очень мало. А хотелось бы писать нормальные тесты. Сейчас у меня получаются совсем примитивные тесты, которые меня не устраивают, в плане функционала. Хотелось бы писать что-то более качественное. Вот пример, как у меня сейчас получаются тесты:

LIBRARY ieee;                                               
USE ieee.std_logic_1164.all;                                

ENTITY SERILAISER_vhd_tst IS
END SERILAISER_vhd_tst;
ARCHITECTURE SERILAISER_arch OF SERILAISER_vhd_tst IS
-- constants                                                 
-- signals                                                   
SIGNAL CLOCKx7 : STD_LOGIC;
SIGNAL DATA_CLOCK : STD_LOGIC;
SIGNAL DATA_IN : STD_LOGIC_VECTOR(6 DOWNTO 0);
SIGNAL SERIAL_DATA : STD_LOGIC;
COMPONENT SERILAISER
    PORT (
    CLOCKx7 : IN STD_LOGIC;
    DATA_CLOCK : IN STD_LOGIC;
    DATA_IN : IN STD_LOGIC_VECTOR(6 DOWNTO 0);
    SERIAL_DATA : OUT STD_LOGIC
    );
END COMPONENT;
BEGIN
    i1 : SERILAISER
    PORT MAP (
-- list connections between master ports and signals
    CLOCKx7 => CLOCKx7,
    DATA_CLOCK => DATA_CLOCK,
    DATA_IN => DATA_IN,
    SERIAL_DATA => SERIAL_DATA
    );
    
        PROCESS
    BEGIN
        DATA_CLOCK <= '1'; WAIT FOR 70 ps;
        DATA_CLOCK <= '0'; WAIT FOR 70 ps;
    END PROCESS;
    
    PROCESS
    BEGIN
        CLOCKx7 <= '1'; WAIT FOR 10 ps;
        CLOCKx7 <= '0'; WAIT FOR 10 ps;
    END PROCESS;
    
    PROCESS
    BEGIN
    DATA_IN <= "Z000001"; WAIT FOR 140 ps;
    DATA_IN <= "Z000011"; WAIT FOR 140 ps;
    DATA_IN <= "Z000111"; WAIT FOR 140 ps;
    DATA_IN <= "Z001111"; WAIT FOR 140 ps;
    DATA_IN <= "Z011111"; WAIT FOR 140 ps;
    DATA_IN <= "Z111111"; WAIT FOR 140 ps;
    END PROCESS;
END SERILAISER_arch;

 

 

3. Ну и совсем напрягает незнание, как пользоваться Modelsim'ом. У меня такое ощущение, что у меня лежит безумно дорогой осциллограф, а я его применяю как вольтметр. Хотелось бы найти примеры, как можно пользоваться Modelsim'ом

 

Буду рад любой литературе, поскольку очень хочу научиться, но не знаю как подступиться к проблеме.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для верификации лучше освойте SystemVerilog. Это будет ваш путь в будущее. Тест-бенчи на VHDL - вариант возможный, но проигрывающий SV. Связка VHDL (RTL code) + SV (verification) - на мой взгляд, отличный выбор.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для верификации лучше освойте SystemVerilog. Это будет ваш путь в будущее. Тест-бенчи на VHDL - вариант возможный, но проигрывающий SV. Связка VHDL (RTL code) + SV (verification) - на мой взгляд, отличный выбор.

Да я бы рад, но столько вещей осваивать "за раз" крайне тяжело, поскольку я параллельно осваиваю Time Quest. Естественно постепенно я перейду к SV, но сейчас бы VHDL освоить. За всё браться тоже плохо. Надо с чем то одним разобраться. Иначе получиться "не рыба, ни мясо"

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

попробуйте использовать do файлы Modelsim

набираете например do c.do в окне Transcript Modelsim перекомпилирует заданные файлы проекта и сразу выводит все необходимые сигналы на Waveform

+ чтение данных из файла и запись результатов в файл (в тестбенче)

 

почитайте и попробуйте

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Закончился тот период, когда устройства были простенькие и их симуляцию было легко провести при помощи встроенного симулятора в Quartus. Начал осваивать написание тестов на языке VHDL и моделированием ( пока только функциональным) в среде Modelsim. Но столкнулся с проблемой: я практически не нашел информации как правильно писать тесты на VHDL. И ещё меньше нашел информации как правильно применять эти тесты в Modelsim.

 

Буду рад любой литературе, поскольку очень хочу научиться, но не знаю как подступиться к проблеме.

Учебное пособие по ModelSim SE htttp://www.naliwator.narod.ru/modelsim.html

Еще посмотрите у меня на сайте "Краткий Курс", раздел про моделирование.

Научитесь читать воздействия на DUT из файла...

Научитесь записывать действия в скрипты и их запускать...

Ну а хотите подробнее, могу показать по скайпу...

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Учебное пособие по ModelSim SE htttp://www.naliwator.narod.ru/modelsim.html

Еще посмотрите у меня на сайте "Краткий Курс", раздел про моделирование.

Научитесь читать воздействия на DUT из файла...

Научитесь записывать действия в скрипты и их запускать...

Ну а хотите подробнее, могу показать по скайпу...

Был бы очень признателен, если мне по скайпу покажут, как правильно работать в Modelsim'е.

А Ваш сайт чего-то не доступен :(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 Используйте tcl-скрипты в моделсиме.. Когда Вы что-то делаете, модесим внизу пишет текстовую команду. Весь набор команд можно потом скопировать и записать в отдельный файл. вызывать его потом командой типа "do file.tcl"

2 Используйте для симуляции Verilog или SystemVerilog.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Был бы очень признателен, если мне по скайпу покажут, как правильно работать в Modelsim'е.

А Ваш сайт чего-то не доступен :(

Владельцы uCoz свой сервер починили и теперь сайт работает...

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Подскажите как провести симуляцию моделей устройств, модели которых представляют производители ?

Например у меня есть память типа SDRAM MT48LC4M16A2-75 компании Micron. Производители этой памяти предоставляют её модель, написанную на Verilog.

Я написал для этой памяти контроллер. Но писал я его на VHDL. Тестбенч я тоже пишу на VHDL. Поскольку у меня Modelsim Altera Edition, он не может симулировать работу контроллера с памятью, поскольку они написаны на разных языках. Как можно обойти это ограничение ? Можно ли как-то модель памяти перевести на VHDL ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно ли как-то модель памяти перевести на VHDL ?

А не проще взять ломаный полноценный Modelsim и запустить модель в смешанном режиме.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А не проще взять ломаный полноценный Modelsim и запустить модель в смешанном режиме.

Проще. Но это дома и для "души".

А на рабочем месте только лицензия или бесплатная версия. Сетевые администраторы зверствуют......

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Подскажите как провести симуляцию моделей устройств, модели которых представляют производители ?

Например у меня есть память типа SDRAM MT48LC4M16A2-75 компании Micron. Производители этой памяти предоставляют её модель, написанную на Verilog.

Самый простой способ - написать производителю и попросить их прислать VHDL модель...

Далее. Есть конверторы форматов, но они дают некрасивый код...

Попробуйте выложить код сюда, может он не слишком сложный?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Самый простой способ - написать производителю и попросить их прислать VHDL модель...

Далее. Есть конверторы форматов, но они дают некрасивый код...

Попробуйте выложить код сюда, может он не слишком сложный?

Выложить могу, но он сложный, более 1000 строк. https://marsohod.org/11-blog/282-sdrammodelsim (там кстати есть исходник модели памяти) там написано, что можно сначала в Quartus'e скомпилировать код, и выплюнуть в виде выходных файлов нужного формата. И действительно, я попробовал так сделать, и модель контроллера автора просиммулировалась в Modelsim'e. Вот только столкнулся с другой бедой. Попытался скомпилировать модель в Quartus'e и выдать выходные файлы в формате VHDL. Но только вот мой системник отказывается компилировать код модели памяти и виснет наглухо, спасает только перезагрузка. ОЗУ не хватает компьютеру. Хотя Modelsim компилирует без проблем. Чё делать не знаю. Не хотелось бы ещё разбираться с Verilog, поскольку VHDL то я освоил только на базовом уровне. А ещё надо осваивать SDC скрипты и TCL....

Изменено пользователем Flip-fl0p

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Выложить могу, но он сложный, более 1000 строк. https://marsohod.org/11-blog/282-sdrammodelsim (там кстати есть исходник модели памяти) там написано, что можно сначала в Quartus'e скомпилировать код, и выплюнуть в виде выходных файлов нужного формата. И действительно, я попробовал так сделать, и модель контроллера автора просиммулировалась в Modelsim'e. Вот только столкнулся с другой бедой. Попытался скомпилировать модель в Quartus'e и выдать выходные файлы в формате VHDL. Но только вот мой системник отказывается компилировать код модели памяти и виснет наглухо, спасает только перезагрузка. ОЗУ не хватает компьютеру. Хотя Modelsim компилирует без проблем. Чё делать не знаю. Не хотелось бы ещё разбираться с Verilog, поскольку VHDL то я освоил только на базовом уровне. А ещё надо осваивать SDC скрипты и TCL....

так модель нужна сугобо для моделирования и проверки работоспособности реализованного/взятого готового контроллера памяти

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

так модель нужна сугобо для моделирования и проверки работоспособности реализованного/взятого готового контроллера памяти

Ну так это и понятно. Но из-за ограничений бесплатной версии Modelsim Altera Edition, я не могу/не знаю, как применить эту модель для симуляции контроллера, поскольку я пишу на VHDL, а контроллер написан на Verilog. В этом то и беда. Пытался в "железе" отладить. Ноль реакций на внешние воздействия. Пытаюсь записать хоть 1 бит в ячейку памяти, а потом прочитать эту ячейку, и вывести этот несчастный бит на светодиод.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...