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

Verilog宏,用于检查是否在模拟或合成中,verilog,xilinx,Verilog,Xilinx,我需要修改我的设计源的行为,以便在模拟和合成中做一些稍微不同的事情(我需要在模拟中去掉时间戳以获得确定的结果)。是否定义了verilog宏,以便我可以知道源在哪种模式下使用?类似于 `ifdef __SYNTHESIS__ timestamp <= hardware_ts; `else timestamp <= 0; `endif `ifdef\u合成__ 时间戳这将是非常特定于工具的。来自Mentor的模拟器定义了MODEL\u TECH和QUESTA宏 在命令行上运

我需要修改我的设计源的行为,以便在模拟和合成中做一些稍微不同的事情(我需要在模拟中去掉时间戳以获得确定的结果)。是否定义了verilog宏,以便我可以知道源在哪种模式下使用?类似于

`ifdef __SYNTHESIS__
   timestamp <= hardware_ts;
`else
   timestamp <= 0;
`endif
`ifdef\u合成__

时间戳这将是非常特定于工具的。来自Mentor的模拟器定义了
MODEL\u TECH
QUESTA


在命令行上运行任何合成工具时,最好使用
+define+\uuuuu SYNTHESIS\uuuu
自己定义宏。

另一个选项是向每个模块添加一个参数,无论您处于合成模式还是模拟模式。只要将默认值设置为正确合成所需的值,就不必做任何特殊的事情,除非您是从测试台实例化的

对于诸如有多少时钟周期等待PLL锁定之类的事情也很有用,这在合成/现实中会有很大的不同(取决于您希望在模拟中等待多长时间)