Jump to content

    
MarGor

Разделение проекта на симуляциюи синтез

Recommended Posts

Здравствуйте, подскажите, как в проекте сделать так, чтобы тестбенч для верхнего уровня читал данные из файла в модуль нижнего уровня. Не делая выводы в модeле top? Либо можно как-то пометить выводы верхнего уровня, чтоб при имплементации не выдавало ошибок об отсутствии пинов для данных выводов? 

Share this post


Link to post
Share on other sites

вариант 1. простой еще верилоговских времен.

IEEE Standard for SystemVerilog—Unified Hardware Design, Specification, and Verification Language - 10. Assignment statements -10.6 Procedural continuous assignments -10.6.2 The force and release procedural statements

вариант 2. сложнее, красивее, но свешнее

IEEE Standard for SystemVerilog—Unified Hardware Design, Specification, and Verification Language - 8. Classes

ЗЫ. в любом случае еще нужна глава IEEE Standard for SystemVerilog—Unified Hardware Design, Specification, and Verification Language 23. Modules and hierarchy - 23.6 Hierarchical names

ну и в код добавить

// synthesis translate_off

// synthesis translate_on

Share this post


Link to post
Share on other sites

Постою послушаю, кто как решает. Интересно.

У меня весь проект настраивает и собирается через define объявления. В том числе и под симуляцию сам видоизменяется (подключаются доп выводы или переназначаются) через
 

`ifdef MODEL_TECH
`endif

 

Share this post


Link to post
Share on other sites
14 минут назад, des00 сказал:

IEEE Standard for SystemVerilog—Unified Hardware Design, Specification, and Verification Language - 8. Classes

Спасибо! Но данный стандарт описывыает для SystemVerilog. Можно ли сделать на VHDL?

Share this post


Link to post
Share on other sites

держу 2 проекта, которыйы собран из одних исходников нужного модуля.  В проекте для симуляции моделирую тестовое окружение модуля. Но модули у меня очень маленькие по сравнению с основным проектом, куда они входят. Основной проект моделировать нереально, ибо там 1 us моделирования - это оооочеь много реального времени моделирования.

Share this post


Link to post
Share on other sites
15 минут назад, new123 сказал:

один боевой, другой для симуляции? я постоянно так исправления терял

Да. Но исходники в них одни которые находятся на диске.

Например файл c:\work\SRC\ABC\my_module.vhd  используется в 2 проектах. Измененив этот файл в проекте для  симуляции, автоматически все изменения вносятся в проект для железки. При этом часто бывает нужен проект для отладки модуля не только в симуляторе, но и на отлалочной плате. Фактически у меня модуль. используется в  3 проектах. Главный проект, состоящий из кучи модулей. Проект для симуляции модуля my_module_ SIM, проект для отладки модуля на отладочной плате my_module_HDBG. Другого пути не нашёл, особенно когда главный проект занимает почти весь кристалл, имплементится несколько часов, и симуляции не поддается. Из минусов данного пути -  много побочных проектов. Из плюсов - всегда могу какой-то кусок посмотреть как на симуляции, так и на отладке

 

 

Share this post


Link to post
Share on other sites
3 minutes ago, Flip-fl0p said:

Но исходники в них одни которые находятся на диске.

я вот в связи с этим тоже взял за правило не разделять. Чтобы править только в одних исходниках. Единственное до такого разделения не допер. Обложил все ifdef MODEL_TECH, поотключал все ядра, которые тормозят симуляцию, так же через ifdef MODEL_TECH подал свои частоты в top, ну и тест бенч навороченный с настройками, хочешь из файла данные подать в top, хочешь сам сгенерь и тд. По началу было круто. Но потом подсел на всякого рода define и теперь проект стал сильно разветвленный в top. Но зато очень универсальный на различные версии

Share this post


Link to post
Share on other sites
12 hours ago, MarGor said:

Спасибо! Но данный стандарт описывыает для SystemVerilog. Можно ли сделать на VHDL?

ууу, тогда все сложнее. не слежу за последними новинками VHDL, но посмотреть на глобальные сигналы и особенности вашего симмулятора. там могут быть библиотечные функции для иерархического доступа.

 

9 hours ago, new123 said:

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

в VHDL макросов нет, к сожалению. Поэтому все вот это не подойдет.

Share this post


Link to post
Share on other sites
Just now, MarGor said:

Можно ли сделать на VHDL?

Да, если используется VHDL-2008 или 2019. Иерархический доступ к сигналам. Путь к сигналу прописывается в парных угловых скобках <<signal путь.до.сигнала : тип_сигнала>>.  символ ^ - подняться вверх по иерархии,  символ @ - перейти в корень иерархии. Для упрощения иерархический сигнал можно использовать через alias.

Share this post


Link to post
Share on other sites

Если с vhdl-2008 проблемы, например, используется Quartus lite, то на крайний случай, чтобы при имплементации не было ошибок, можно присвоить этим портам значения virtual pins.

Share this post


Link to post
Share on other sites
12 hours ago, new123 said:

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

Как потом верифицировать проект, если версия симуляции и версия имплементации отличаются?

Share this post


Link to post
Share on other sites
2 hours ago, lexx said:

если версия симуляции и версия имплементации отличаются?

они идентичны из одного и того же исходника. Только делаю подмену различных ног,  в том же top, если надо грузануть входящие данные из файла, как пример.

Share this post


Link to post
Share on other sites
4 часа назад, Strob сказал:

Да, если используется VHDL-2008 или 2019. Иерархический доступ к сигналам. Путь к сигналу прописывается в парных угловых скобках <<signal путь.до.сигнала : тип_сигнала>>.  символ ^ - подняться вверх по иерархии,  символ @ - перейти в корень иерархии. Для упрощения иерархический сигнал можно использовать через alias.

Спасибо, получилось! 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.