Verilog 宏,用于检查是在仿真中还是在综合中
Verilog macro to check if in simulation or synthesis
我需要修改我的设计源的行为以在仿真和综合中做一些稍微不同的事情(我需要将仿真中的时间戳归零以获得确定性结果。)是否定义了 verilog 宏以便我可以告诉在哪种模式下使用源?像...
`ifdef __SYNTHESIS__
timestamp <= hardware_ts;
`else
timestamp <= 0;
`endif
这将是非常特定于工具的。 Mentor 的模拟器定义了 MODEL_TECH
和 QUESTA
宏
当 运行 在命令行上使用任何综合工具时,您最好使用 +define+__SYNTHESIS__
自己定义宏。
另一种选择是向每个模块添加一个参数,无论您是处于综合模式还是模拟模式,该参数都会向下传递。只需将默认值设置为正确综合所需的默认值,除非您从测试平台实例化,否则您无需执行任何特殊操作。
对于 HOW_MANY_CLOCK_CYCLES_TO_WAIT_FOR_PLL_TO_LOCK 之类的东西也很有用,这在 synthesis/reality 中会大不相同(取决于您希望在模拟中等待多长时间)。
我需要修改我的设计源的行为以在仿真和综合中做一些稍微不同的事情(我需要将仿真中的时间戳归零以获得确定性结果。)是否定义了 verilog 宏以便我可以告诉在哪种模式下使用源?像...
`ifdef __SYNTHESIS__
timestamp <= hardware_ts;
`else
timestamp <= 0;
`endif
这将是非常特定于工具的。 Mentor 的模拟器定义了 MODEL_TECH
和 QUESTA
宏
当 运行 在命令行上使用任何综合工具时,您最好使用 +define+__SYNTHESIS__
自己定义宏。
另一种选择是向每个模块添加一个参数,无论您是处于综合模式还是模拟模式,该参数都会向下传递。只需将默认值设置为正确综合所需的默认值,除非您从测试平台实例化,否则您无需执行任何特殊操作。
对于 HOW_MANY_CLOCK_CYCLES_TO_WAIT_FOR_PLL_TO_LOCK 之类的东西也很有用,这在 synthesis/reality 中会大不相同(取决于您希望在模拟中等待多长时间)。