Doo*_*oov 0 simulation verilog fpga modelsim xilinx
我有一个大型 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));
Run Code Online (Sandbox Code Playgroud)
虽然这行得通,但它要求我每次从 modlesim 切换到 ISE 时都注释输入/输出`define SIMULATION。我经常忘记,浪费时间等等。
是否有自动确定正在使用的工具的方法?例如,我可以说ifdef XILINX orifdef MODELSIM 之类的东西,而不是我的 `ifdef SIMULATION hack?非常感谢!
Mentor Graphics 模拟器(ModelSim 和 Questa)将定义MODEL_TECH预处理器宏。
所以你可以这样做:
`ifdef MODEL_TECH
// code for simulation with modelsim
`else
// code for synthesis
`endif
Run Code Online (Sandbox Code Playgroud)