реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Входы/выходы только для симуляции в verilog/system verilog, Возможно ли?
flammmable
сообщение Jul 3 2018, 08:19
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 30
Регистрация: 4-06-18
Пользователь №: 104 848



Возможно ли в verilog обозначить часть входов/выходов модуля только для симуляции? Что бы можно было один и тот же проект (не внося изменений) запустить как на симуляцию так и на сборку прошивки.

Сообщение отредактировал flammmable - Jul 3 2018, 08:38
Go to the top of the page
 
+Quote Post
iosifk
сообщение Jul 3 2018, 08:59
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 4 006
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(flammmable @ Jul 3 2018, 11:19) *
Возможно ли в verilog обозначить часть входов/выходов модуля только для симуляции? Что бы можно было один и тот же проект (не внося изменений) запустить как на симуляцию так и на сборку прошивки.

Да без проблем.
Делаете параметр - "дебаг-релиз = "да-нет""...
И еще две группы параметров, одну только для "дебага", другую - для "релиза". Для дебага на эти выходы подаете сигналы, нужные для симуляции.
А для "релиза" - подаете 0 или 1. И при компеляции эти сигналы будут автоматически проигнарированы...


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
alexadmin
сообщение Jul 3 2018, 09:06
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 571
Регистрация: 17-11-05
Из: СПб, Россия
Пользователь №: 10 965



Цитата(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 определяете в настройках симулятора.
Go to the top of the page
 
+Quote Post
Dima_G
сообщение Jul 4 2018, 04:27
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 279
Регистрация: 2-07-08
Из: Новосибирск
Пользователь №: 38 699



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

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

Либо так
/* synopsys translate_off */
`define SIMULATOR
/* synopsys translate_on */
Go to the top of the page
 
+Quote Post
flammmable
сообщение Jul 4 2018, 06:09
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 30
Регистрация: 4-06-18
Пользователь №: 104 848



Цитата(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" и их комбинациям - не нашел решения.
Сделал, как вы советовали - работает. Спасибо, буду делать так. Хотя данные выражения звучат как заклинание.

Сообщение отредактировал flammmable - Jul 4 2018, 12:38
Go to the top of the page
 
+Quote Post
misyachniy
сообщение Jul 7 2018, 10:17
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 716
Регистрация: 27-05-05
Из: Kyiv
Пользователь №: 5 454



Для просмотра выходов я объявляю переменные в тестбенче с указанием полного имени
wire test_lock = module1.module2.lock;
В принципе, незадействованные входы/выходы при синтезе будут отброшены.
Go to the top of the page
 
+Quote Post
iosifk
сообщение Jul 7 2018, 10:50
Сообщение #7


Гуру
******

Группа: Модераторы
Сообщений: 4 006
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(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/


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
nice_vladi
сообщение Jul 7 2018, 12:19
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 7-09-16
Из: Томск
Пользователь №: 93 239



Цитата(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;
Если симуляция - делаем симуляционные частоты.
Go to the top of the page
 
+Quote Post
AVR
сообщение Jul 8 2018, 19:23
Сообщение #9


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 340
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



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

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


--------------------
Go to the top of the page
 
+Quote Post
dxp
сообщение Jul 9 2018, 03:43
Сообщение #10


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Да, у каждого свои макросы. Поэтому вариант с

//synopsys translate_off
`define SIMULATOR
//synopsys translate_on

выглядит привлекательнее, этот вариант завязан на синтез, и, насколько знаю, все современные FPGA (и скорее всего не только FPGA) синтезаторы его понимают. Макросы симуляторов рулят, когда надо более тонко учесть особенности конкретного симулятора.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd September 2018 - 16:11
Рейтинг@Mail.ru


Страница сгенерированна за 0.01068 секунд с 7
ELECTRONIX ©2004-2016