请问,在后仿时violatiton报告中显示的时间精度与sdf中的精度不一致,怎么处理?比如sdf的精度为1ps,但是violation中显示的是10ps精度。后面去查lib.v中有个一个pg.v中timescale=1ns/10ps。怀疑是这个导致的。因此将makefile中timescale=1ns/1ps改为override_timescale=1ns/1ps,甚至1ps/1ps。发现violation显示精度仍为10ns,导致有些时序报violation。请问该如何处理??谢谢
Hi lewis, how may I assist you?
后仿时violatiton显示的时间精度与sdf中的精度不一致,怎么处理?
如果后仿时violatiton显示的时间精度与sdf中的精度不一致,可以尝试按照如下步骤进行处理:
-
检查makefile或者环境变量中的timescale设置,确保其与sdf文件中的时间精度一致。
-
如果还是有问题,可以尝试在Verilog代码中添加
timescale
声明来明确时间精度。 -
检查Verilog库文件中的timescale设置,并与自己的代码进行比较,看是否需要做出修改。
-
如果问题仍然存在,那么可以考虑修改仿真时的时间精度和单位,以确保和sdf中的时间精度一致。
总的来说,需要根据具体情况进行细致的排查,找到问题所在并采取相应的措施来解决。
这个问题看起来AI也不会,需要真人来解答了
1.要确认vio是否是由于精度问题导致,还是真正的时序问题,可以让后端同事先报一下。
2.override_timesacle 会有一个作用范围,在同一个库中,在override_timescale之前的文件会被替代,之后analysis进库的文件不会受影响。另外使用override_timescale简单粗暴,可能影响正常仿真,需要谨慎使用。
1 个赞
王哥,我可以帮你解决
愿闻其详 ,等大佬回复
再tb中加上$timeformat,你可以查查这个系统函数
tks,
makefile 中的tiemscale优先级比.v文件中的timescale优先级低,如果.v文件内部指定了timescale,那makefile中的指令是无效的
第一条帖子嘿嘿嘿嘿
1 个赞
Nice 手动比心