首页 > 解决方案 > 为仿真和综合定义不同的参数值

问题描述

我正在使用 systemVerilog,并且我有一个包含我的一些模块参数值的包(例如parameter SPI_RATE = 2_000_000;)。有什么方法可以为模拟设置一个值,为综合设置一个不同的值?(我正在使用 ModelSim)。例如,我想要类似的东西:

if(IN_SIM) begin
parameter SPI_RATE = 2_000_000;
end
else begin
parameter SPI_RATE = 1_000_000;
end

谢谢!

标签: verilogsystem-verilogmodelsimsynplify

解决方案


是的,这是可能的。SystemVerilog 支持条件编译器指令,例如`ifdef`ifndef`else`elsif`endif. 请注意,这些指令使用重音符号(ASCII 0x60) 而不是普通的撇号 (ASCII 0x27)。

此外,大多数综合工具都支持宏标识符SYNTHESIS。因此,您可以执行以下操作:

`ifdef SYNTHESIS
  parameter SPI_RATE = 1_000_000;
`else
  parameter SPI_RATE = 2_000_000;    
`endif 

推荐阅读