我需要修改我的设计源的行为,以便在模拟和综合中做一些稍微不同的事情(我需要在模拟中将时间戳归零以获得确定性结果。)是否定义了verilog宏以便我可以告诉哪个模式源正在使用?有点像...
`ifdef __SYNTHESIS__
timestamp <= hardware_ts;
`else
timestamp <= 0;
`endif
答案 0 :(得分:1)
这将是非常具体的工具。 Mentor的模拟器定义MODEL_TECH
和QUESTA
宏
在命令行上运行任何综合工具时,最好用+define+__SYNTHESIS__
自己定义宏。
答案 1 :(得分:0)
另一种选择是向您传递的每个模块添加参数,无论您处于合成还是仿真模式。只需将默认值设为正确综合所需的值即可,除非从测试平台实例化,否则您无需做任何特殊的事情。
对于诸如HOW_MANY_CLOCK_CYCLES_TO_WAIT_FOR_PLL_TO_LOCK之类的东西也很有用,在合成/真实性方面将有很大的不同(取决于您在仿真中等待的时间)。