后仿时violatiton显示的时间精度与sdf中的精度不一致,怎么处理?

请问,在后仿时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。请问该如何处理??谢谢

@AIBot 需要你的帮助

Hi lewis, how may I assist you?

后仿时violatiton显示的时间精度与sdf中的精度不一致,怎么处理?

如果后仿时violatiton显示的时间精度与sdf中的精度不一致,可以尝试按照如下步骤进行处理:

  1. 检查makefile或者环境变量中的timescale设置,确保其与sdf文件中的时间精度一致。

  2. 如果还是有问题,可以尝试在Verilog代码中添加 timescale声明来明确时间精度。

  3. 检查Verilog库文件中的timescale设置,并与自己的代码进行比较,看是否需要做出修改。

  4. 如果问题仍然存在,那么可以考虑修改仿真时的时间精度和单位,以确保和sdf中的时间精度一致。

总的来说,需要根据具体情况进行细致的排查,找到问题所在并采取相应的措施来解决。

这个问题看起来AI也不会,需要真人来解答了

1.要确认vio是否是由于精度问题导致,还是真正的时序问题,可以让后端同事先报一下。
2.override_timesacle 会有一个作用范围,在同一个库中,在override_timescale之前的文件会被替代,之后analysis进库的文件不会受影响。另外使用override_timescale简单粗暴,可能影响正常仿真,需要谨慎使用。

1 个赞

王哥,我可以帮你解决 :smirk:

愿闻其详 :face_with_monocle:,等大佬回复

再tb中加上$timeformat,你可以查查这个系统函数

tks,:+1::+1::+1::+1::+1::+1:

makefile 中的tiemscale优先级比.v文件中的timescale优先级低,如果.v文件内部指定了timescale,那makefile中的指令是无效的

第一条帖子嘿嘿嘿嘿

1 个赞

Nice 手动比心 :sparkling_heart: