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

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

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

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


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

вариант 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

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


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

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

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

`ifdef MODEL_TECH
`endif

 

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


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

14 минут назад, des00 сказал:

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

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

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


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

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

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


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

35 minutes ago, Flip-fl0p said:

держу 2 проекта

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

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


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

15 минут назад, new123 сказал:

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

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

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

 

 

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


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

3 minutes ago, Flip-fl0p said:

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

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

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


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

12 hours ago, MarGor said:

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

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

 

9 hours ago, new123 said:

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

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

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


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

Just now, MarGor said:

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

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

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


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

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

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


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

12 hours ago, new123 said:

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

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

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


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

2 hours ago, lexx said:

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

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

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


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

4 часа назад, Strob сказал:

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

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

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


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

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

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

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

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

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

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

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

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

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