Verilog宏检查是否在模拟或合成中

时间:2018-06-08 18:13:47

标签: verilog xilinx

我需要修改我的设计源的行为,以便在模拟和综合中做一些稍微不同的事情(我需要在模拟中将时间戳归零以获得确定性结果。)是否定义了verilog宏以便我可以告诉哪个模式源正在使用?有点像...

`ifdef __SYNTHESIS__
   timestamp <= hardware_ts;
`else
   timestamp <= 0;
`endif

2 个答案:

答案 0 :(得分:1)

这将是非常具体的工具。 Mentor的模拟器定义MODEL_TECHQUESTA

在命令行上运行任何综合工具时,最好用+define+__SYNTHESIS__自己定义宏。

答案 1 :(得分:0)

另一种选择是向您传递的每个模块添加参数,无论您处于合成还是仿真模式。只需将默认值设为正确综合所需的值即可,除非从测试平台实例化,否则您无需做任何特殊的事情。

对于诸如HOW_MANY_CLOCK_CYCLES_TO_WAIT_FOR_PLL_TO_LOCK之类的东西也很有用,在合成/真实性方面将有很大的不同(取决于您在仿真中等待的时间)。