我有一个大型 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));
虽然这行得通,但每次从 modlesim 切换到 ISE 时,我都需要注释掉“定义仿真”。我经常忘记,浪费时间等等。
是否有一种自动方法来确定正在使用的工具?例如,我可以说ifdef XILINX or
ifdef MODELSIM 之类的话,而不是我的 `ifdef SIMULATION hack?非常感谢!