Flip-fl0p 4 8 сентября, 2016 Опубликовано 8 сентября, 2016 · Жалоба Закончился тот период, когда устройства были простенькие и их симуляцию было легко провести при помощи встроенного симулятора в 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'ом Буду рад любой литературе, поскольку очень хочу научиться, но не знаю как подступиться к проблеме. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Raven 11 8 сентября, 2016 Опубликовано 8 сентября, 2016 · Жалоба Для верификации лучше освойте SystemVerilog. Это будет ваш путь в будущее. Тест-бенчи на VHDL - вариант возможный, но проигрывающий SV. Связка VHDL (RTL code) + SV (verification) - на мой взгляд, отличный выбор. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 8 сентября, 2016 Опубликовано 8 сентября, 2016 · Жалоба Для верификации лучше освойте SystemVerilog. Это будет ваш путь в будущее. Тест-бенчи на VHDL - вариант возможный, но проигрывающий SV. Связка VHDL (RTL code) + SV (verification) - на мой взгляд, отличный выбор. Да я бы рад, но столько вещей осваивать "за раз" крайне тяжело, поскольку я параллельно осваиваю Time Quest. Естественно постепенно я перейду к SV, но сейчас бы VHDL освоить. За всё браться тоже плохо. Надо с чем то одним разобраться. Иначе получиться "не рыба, ни мясо" Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 8 сентября, 2016 Опубликовано 8 сентября, 2016 · Жалоба попробуйте использовать do файлы Modelsim набираете например do c.do в окне Transcript Modelsim перекомпилирует заданные файлы проекта и сразу выводит все необходимые сигналы на Waveform + чтение данных из файла и запись результатов в файл (в тестбенче) почитайте и попробуйте Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 8 сентября, 2016 Опубликовано 8 сентября, 2016 · Жалоба Закончился тот период, когда устройства были простенькие и их симуляцию было легко провести при помощи встроенного симулятора в Quartus. Начал осваивать написание тестов на языке VHDL и моделированием ( пока только функциональным) в среде Modelsim. Но столкнулся с проблемой: я практически не нашел информации как правильно писать тесты на VHDL. И ещё меньше нашел информации как правильно применять эти тесты в Modelsim. Буду рад любой литературе, поскольку очень хочу научиться, но не знаю как подступиться к проблеме. Учебное пособие по ModelSim SE htttp://www.naliwator.narod.ru/modelsim.html Еще посмотрите у меня на сайте "Краткий Курс", раздел про моделирование. Научитесь читать воздействия на DUT из файла... Научитесь записывать действия в скрипты и их запускать... Ну а хотите подробнее, могу показать по скайпу... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 8 сентября, 2016 Опубликовано 8 сентября, 2016 · Жалоба Учебное пособие по ModelSim SE htttp://www.naliwator.narod.ru/modelsim.html Еще посмотрите у меня на сайте "Краткий Курс", раздел про моделирование. Научитесь читать воздействия на DUT из файла... Научитесь записывать действия в скрипты и их запускать... Ну а хотите подробнее, могу показать по скайпу... Был бы очень признателен, если мне по скайпу покажут, как правильно работать в Modelsim'е. А Ваш сайт чего-то не доступен :( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
eugen_pcad_ru 0 11 сентября, 2016 Опубликовано 11 сентября, 2016 · Жалоба 1 Используйте tcl-скрипты в моделсиме.. Когда Вы что-то делаете, модесим внизу пишет текстовую команду. Весь набор команд можно потом скопировать и записать в отдельный файл. вызывать его потом командой типа "do file.tcl" 2 Используйте для симуляции Verilog или SystemVerilog. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 11 сентября, 2016 Опубликовано 11 сентября, 2016 · Жалоба Был бы очень признателен, если мне по скайпу покажут, как правильно работать в Modelsim'е. А Ваш сайт чего-то не доступен :( Владельцы uCoz свой сервер починили и теперь сайт работает... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 16 сентября, 2016 Опубликовано 16 сентября, 2016 · Жалоба Подскажите как провести симуляцию моделей устройств, модели которых представляют производители ? Например у меня есть память типа SDRAM MT48LC4M16A2-75 компании Micron. Производители этой памяти предоставляют её модель, написанную на Verilog. Я написал для этой памяти контроллер. Но писал я его на VHDL. Тестбенч я тоже пишу на VHDL. Поскольку у меня Modelsim Altera Edition, он не может симулировать работу контроллера с памятью, поскольку они написаны на разных языках. Как можно обойти это ограничение ? Можно ли как-то модель памяти перевести на VHDL ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
agregat 0 16 сентября, 2016 Опубликовано 16 сентября, 2016 · Жалоба Можно ли как-то модель памяти перевести на VHDL ? А не проще взять ломаный полноценный Modelsim и запустить модель в смешанном режиме. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 16 сентября, 2016 Опубликовано 16 сентября, 2016 · Жалоба А не проще взять ломаный полноценный Modelsim и запустить модель в смешанном режиме. Проще. Но это дома и для "души". А на рабочем месте только лицензия или бесплатная версия. Сетевые администраторы зверствуют...... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 16 сентября, 2016 Опубликовано 16 сентября, 2016 · Жалоба Подскажите как провести симуляцию моделей устройств, модели которых представляют производители ? Например у меня есть память типа SDRAM MT48LC4M16A2-75 компании Micron. Производители этой памяти предоставляют её модель, написанную на Verilog. Самый простой способ - написать производителю и попросить их прислать VHDL модель... Далее. Есть конверторы форматов, но они дают некрасивый код... Попробуйте выложить код сюда, может он не слишком сложный? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 16 сентября, 2016 Опубликовано 16 сентября, 2016 (изменено) · Жалоба Самый простой способ - написать производителю и попросить их прислать VHDL модель... Далее. Есть конверторы форматов, но они дают некрасивый код... Попробуйте выложить код сюда, может он не слишком сложный? Выложить могу, но он сложный, более 1000 строк. https://marsohod.org/11-blog/282-sdrammodelsim (там кстати есть исходник модели памяти) там написано, что можно сначала в Quartus'e скомпилировать код, и выплюнуть в виде выходных файлов нужного формата. И действительно, я попробовал так сделать, и модель контроллера автора просиммулировалась в Modelsim'e. Вот только столкнулся с другой бедой. Попытался скомпилировать модель в Quartus'e и выдать выходные файлы в формате VHDL. Но только вот мой системник отказывается компилировать код модели памяти и виснет наглухо, спасает только перезагрузка. ОЗУ не хватает компьютеру. Хотя Modelsim компилирует без проблем. Чё делать не знаю. Не хотелось бы ещё разбираться с Verilog, поскольку VHDL то я освоил только на базовом уровне. А ещё надо осваивать SDC скрипты и TCL.... Изменено 16 сентября, 2016 пользователем Flip-fl0p Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 16 сентября, 2016 Опубликовано 16 сентября, 2016 · Жалоба Выложить могу, но он сложный, более 1000 строк. https://marsohod.org/11-blog/282-sdrammodelsim (там кстати есть исходник модели памяти) там написано, что можно сначала в Quartus'e скомпилировать код, и выплюнуть в виде выходных файлов нужного формата. И действительно, я попробовал так сделать, и модель контроллера автора просиммулировалась в Modelsim'e. Вот только столкнулся с другой бедой. Попытался скомпилировать модель в Quartus'e и выдать выходные файлы в формате VHDL. Но только вот мой системник отказывается компилировать код модели памяти и виснет наглухо, спасает только перезагрузка. ОЗУ не хватает компьютеру. Хотя Modelsim компилирует без проблем. Чё делать не знаю. Не хотелось бы ещё разбираться с Verilog, поскольку VHDL то я освоил только на базовом уровне. А ещё надо осваивать SDC скрипты и TCL.... так модель нужна сугобо для моделирования и проверки работоспособности реализованного/взятого готового контроллера памяти Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 16 сентября, 2016 Опубликовано 16 сентября, 2016 · Жалоба так модель нужна сугобо для моделирования и проверки работоспособности реализованного/взятого готового контроллера памяти Ну так это и понятно. Но из-за ограничений бесплатной версии Modelsim Altera Edition, я не могу/не знаю, как применить эту модель для симуляции контроллера, поскольку я пишу на VHDL, а контроллер написан на Verilog. В этом то и беда. Пытался в "железе" отладить. Ноль реакций на внешние воздействия. Пытаюсь записать хоть 1 бит в ячейку памяти, а потом прочитать эту ячейку, и вывести этот несчастный бит на светодиод. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться