Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Входы/выходы только для симуляции в verilog/system verilog
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Языки проектирования на ПЛИС (FPGA)
flammmable
Возможно ли в verilog обозначить часть входов/выходов модуля только для симуляции? Что бы можно было один и тот же проект (не внося изменений) запустить как на симуляцию так и на сборку прошивки.
iosifk
Цитата(flammmable @ Jul 3 2018, 11:19) *
Возможно ли в verilog обозначить часть входов/выходов модуля только для симуляции? Что бы можно было один и тот же проект (не внося изменений) запустить как на симуляцию так и на сборку прошивки.

Да без проблем.
Делаете параметр - "дебаг-релиз = "да-нет""...
И еще две группы параметров, одну только для "дебага", другую - для "релиза". Для дебага на эти выходы подаете сигналы, нужные для симуляции.
А для "релиза" - подаете 0 или 1. И при компеляции эти сигналы будут автоматически проигнарированы...
alexadmin
Цитата(flammmable @ Jul 3 2018, 11:19) *
Возможно ли в verilog обозначить часть входов/выходов модуля только для симуляции? Что бы можно было один и тот же проект (не внося изменений) запустить как на симуляцию так и на сборку прошивки.


Если речь про модуль верхнего уровня,то лучше использовать `ifdef - чтобы эти порты совсем не виделись средством синтеза.
Цитата
module aaa(
`ifdef SIM
input sim_signal,
`endif
...
);

`ifndef SIM
wire sim_signal = 1'b0,
`endif

переменную SIM определяете в настройках симулятора.
Dima_G
Цитата(alexadmin @ Jul 3 2018, 16:06) *
Если речь про модуль верхнего уровня,то лучше использовать `ifdef - чтобы эти порты совсем не виделись средством синтеза.

переменную SIM определяете в настройках симулятора.

Либо так
/* synopsys translate_off */
`define SIMULATOR
/* synopsys translate_on */
flammmable
Цитата(alexadmin @ Jul 3 2018, 12:06) *
переменную SIM определяете в настройках симулятора.

Большое спасибо. Могли бы вы рассказать, где и как делается настройка переменных ModelSim-Altera в Quartus?

Цитата(Dima_G @ Jul 4 2018, 07:27) *
Либо так
/* synopsys translate_off */
`define SIMULATOR
/* synopsys translate_on */

Искал как задать/настроить define в ModelSim-Altera/Quartus по словам "quartus altera modelsim variable settings define ifdef" и их комбинациям - не нашел решения.
Сделал, как вы советовали - работает. Спасибо, буду делать так. Хотя данные выражения звучат как заклинание.
misyachniy
Для просмотра выходов я объявляю переменные в тестбенче с указанием полного имени
wire test_lock = module1.module2.lock;
В принципе, незадействованные входы/выходы при синтезе будут отброшены.
iosifk
Цитата(flammmable @ Jul 4 2018, 09:09) *
Искал как задать/настроить define в ModelSim-Altera/Quartus по словам "quartus altera modelsim variable settings define ifdef" и их комбинациям - не нашел решения.
Сделал, как вы советовали - работает. Спасибо, буду делать так. Хотя данные выражения звучат как заклинание.


Еще про заклинания...

New Verilog-2001 Techniques for Creating Parmeterized Models
(or Down With `define and Death of a defparam!)
брать здесь:http://www.sunburst-design.com/papers/
nice_vladi
Цитата(flammmable @ Jul 4 2018, 06:09) *
Большое спасибо. Могли бы вы рассказать, где и как делается настройка переменных ModelSim-Altera в Quartus?


В симуляторах от Mentor (ModelSim/QuestaSim) есть предопределенный define "MODEL_TECH". Все придумано за нас)

Т.о. код, предназначенный только для симуляции выглдит примерно так:

CODE

`ifndef MODEL_TECH
...
pll_eth
eth_clk__
(
);
...
`else
...
initial #20 forever #20 eth_clk__25 = ~eth_clk__25 ; // 0*
....
`endif


В этом примере:

если не симуляция - описываем PLL;
Если симуляция - делаем симуляционные частоты.
AVR
Цитата(nice_vladi @ Jul 7 2018, 15:19) *
В симуляторах от Mentor (ModelSim/QuestaSim) есть предопределенный define "MODEL_TECH". Все придумано за нас)

О, это весьма приятно. Но я так понимаю, универсального дефайна симуляторщики не придумали, чтобы для всех подходило?
dxp
Да, у каждого свои макросы. Поэтому вариант с

//synopsys translate_off
`define SIMULATOR
//synopsys translate_on

выглядит привлекательнее, этот вариант завязан на синтез, и, насколько знаю, все современные FPGA (и скорее всего не только FPGA) синтезаторы его понимают. Макросы симуляторов рулят, когда надо более тонко учесть особенности конкретного симулятора.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.