У меня есть большой проект 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 or
ifdef MODELSIM вместо моего хака `ifdef SIMULATION? Большое спасибо!