少说废话,多做实事。 微信订阅号 不忘出芯

Verilog错误大全(2)- sdf反标出错

上一篇 / 下一篇  2018-04-05 22:09:27 / 个人分类:Verilog

功能仿真比拼覆盖率,时序后仿主要靠耐心。



1



时序后仿真作为STA的辅助手段,尤其对于异步电路的时序检查有不可替代的作用。


   流程比较简单

  1. 准备网表、工艺库、IP仿真模型、sdf文件

  2. test-bench中增加$sdf_annotation

  3. 编译运行,预期得到和前仿一样的输出结果。




2


但是由于后仿使用的数据是门级网表,不易调试。而且sdf时序文件是从其他工具中产生,在反标(annotation)这一步经常会碰到错误,比如下面这种:


# ** Error (suppressible): 
(vsim-SDF-3261) 
netlist/chip_WC.sdf(730974): 
Failed to find matching specify module path.


打印了成千上万条之后,仿真就fail退出了。


怎么办?


3



仿真器在EDA工具中对于语法的解释最为复杂。既要支持可综合的语句,也要支持行为级不可综合成硬件的写法,各家的仿真器都有各种各样的trick。


不过随着工具的不断更新,在出错之后给出的提示信息越来越准确。


以M家的Questasim为例,针对上面一条错误信息,可以使用下面的命令查询具体信息:

verror vsim-SDF-3261

vsim Message # 3261: No module path in a specify block in the related module instance was found to match the SDF construct on the specified line. Verify that the SDF file is being applied to the correct design instance and that a specify block exists in this module instance and contains the appropriate module path. If a COND is being used, verify that the order of the condition is the same in the specify block as it is in the SDF file. Also verify that vlog or vsim wasn't run with "+nospecify". NOTE: If the SDF IOPATH statements have bit-blasted wide port names, ===== (e.g. A[3]) and the specify paths have atomic wide ports (e.g A), specifying "+bitblast" on vsim command line will fix this error. This error message can be suppressed or downgraded to a note or warning


sdf文件中出错位置描述的时序信息,在相关模块实例中的specify

中没有对应的时序路径。推荐以下检查:



  1. 确认sdf文件和网表版本是否匹配

  2. 确认仿真器没有使用nospecify选项:前仿环境会打开此选项

  3. 追踪相应的时序路径是否存在

  4. 如果是IO或者IP,检查相关的behaviour 模型

  5. 可以尝试 +bitblast 选项

  6. 最后,这条错误信息可以被降级为warning:只是对应的时序信息不再反标,仿真可以继续进行。


4



一般来说,按照以上步骤检查,大概率可以解决问题。引起sdf反标出现问题的情况,以下几点值得怀疑:

  • 版本控制问题:sdf与网表,与仿真环境的匹配

  • 写sdf的选项不合适

  • 写sdf的工具与读sdf的工具之间可能存在兼容性

  • sdf文件太大,导致内存溢出


在调试过程中,如果能得到类似上面这种明确的错误信息指示,包括出错代码,显示出错位置,再加上仿真器的帮助信息,总是能够按图索骥解决问题。

最让人头疼的是出现软件crash,并且没有任何有效提示,或者只有一些堆栈的打印:

Internal Error.

Please your contact system administrator.


5



一般遇到类似的问题,可能要请CAD或者软件厂商的FAE来帮忙解决了。当然,软件本身出错的概率很小,还是会与设计、或者仿真流程的数据文件相关。但是这类问题的解决周期会比较长。搞不好再涉及商务问题,就扯得远了。


分享一个曾经无意中发现的bug。C家的某个版本的irun,读取sdf会报内部错误直接退出,后来发现在sdf文件中第一条延时信息不能是

INTERCONNECT START_POINT END_POINT(0.000 :0.000:0.000)

发现的过程是使用ncsdfc对sdf进行编译会生成chip.sdf.X ,然后在使用ncsdfc -DECOMPILE进行反编译,在这个过程中的log可能会给出一些提示。

当然,这个不是常规做法。

在保证工具环境稳定的前提下,后仿还是主要专注于设计本身

# An example from pt

write_sdf \ -version 3 \ -context Verilog \ -no_edge \ -include {SETUPHOLD RECREM} \ -input_port_nets \ -output_port_nets \ -exclue {no_condelse checkpins} \ -no_internal_pins \ -no_negative_values {net_delays cell_delays} \ $TOP\_$CORNER.sdf



TAG: verilog Verilog 后仿 sdf

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

ic7x24

ic7x24

少说废话,多做实事。记录关于芯片设计的点点滴滴。同步更新微信订阅号:不忘出芯,欢迎关注,共同讨论学习。

我的栏目

日历

« 2018-10-17  
 123456
78910111213
14151617181920
21222324252627
28293031   

数据统计

  • 访问量: 4997
  • 日志数: 6
  • 建立时间: 2018-04-03
  • 更新时间: 2018-07-19

RSS订阅

Open Toolbar
博聚网