Автоматический флаг для директивы компилятора на основе синтеза / моделирования для xilinx / modelsim?

У меня есть большой проект Verilog, который я синтезирую на xilinx fpga и моделирую в modelsim. Есть несколько модулей, в которых я хотел бы смоделировать одну версию указанного модуля и синтезировать другую. Например, у меня есть параметризованный дебаундер сброса, который считает несколько миллисекунд. Очевидно, что для моделирования это раздражает, поэтому перед тем, как приступить к моделированию, я изменяю счетчик дребезга примерно на 10 тактов. В настоящее время у меня есть флаг (`define SIMULATION), который я закомментировал для обобщения. Затем в своих модулях я использую директивы компилятора, такие как ifdef, для компиляции другой версии deouncer в зависимости от синтеза / моделирования:

 `ifdef SIMULATION
   button_debouncer #(1,5, 24)
`else
   button_debouncer #(1,12000000,24)
`endif
   resetdebounce(/**/
         // Outputs
         .debounced     (reset),
         // Inputs
         .clk           (clk),
         .button        (~reset_button));

Хотя это работает, необходимо, чтобы я комментировал in / out `define SIMULATION каждый раз, когда я переключаюсь с modlesim на ISE. Я часто забываю, теряю время и т. Д. И т. Д.

Есть ли автоматический способ определить, какой инструмент используется? Например, я мог бы сказать что-то вроде ifdef XILINX orifdef MODELSIM вместо моего хака `ifdef SIMULATION? Большое спасибо!


person Doov    schedule 24.05.2013    source источник
comment
Оба решения @CliffordVienna и dwikle работают хорошо. В зависимости от вашей цепочки инструментов одно или оба решения отлично работают.   -  person Doov    schedule 28.05.2013


Ответы (3)


Согласно Руководству пользователя Xilinx ISIm (UG660, v14.3, стр. 44), isim предопределяет макрос XILINX_ISIM (со значением 1). Так что просто используйте XILINX_ISIM вместо SIMULATION.

person CliffordVienna    schedule 26.05.2013

Симуляторы Mentor Graphics (ModelSim и Questa) будут определять макрос препроцессора MODEL_TECH.

Итак, вы можете:

`ifdef MODEL_TECH
  // code for simulation with modelsim
`else
  // code for synthesis
`endif
person dwikle    schedule 25.05.2013

Попробуйте передать +define+SIMULATION в vlog в качестве аргумента командной строки.

person Community    schedule 25.05.2013
comment
Спасибо за информацию. Вы знаете, приведет ли это к постоянному определению или мне придется делать это каждый раз, когда я открываю modelsim? - person Doov; 27.05.2013