本文选自知识星球,更多干货知识以及后端笔记、视频教程等,欢迎加入星球进行查看。
最新星球刚刚上线基于GPT4和个人IC设计知识库的IC设计 AI机器人 ,星球成员可以免费使用!!AI机器人24小时随时随地都能立刻回答用户的提问哦,效果非常棒!可以同时在电脑、手机、平板等多个平台上使用。
AI机器人还有绘图功能哦,最近几期的封面都是用AI机器人绘制的。
AI机器人的所有功能介绍如下:
基于GPT4和个人IC设计知识库的IC设计机器人v1.0正式上线
同时星球QQ群还有分享高达55万+字的个人数字后端设计笔记,欢迎加入。
《记vcs仿真过程中发现的Bug》
在用VCS做后仿真过程中发现一个巨坑的问题,这里分享给大家
问题:后仿真结果是错误的!!!但是形式验证结果却是通过的。
通过往前Trace,Debug发现了一个非常非常奇葩、不可思议的现象。
我发现后仿真中两个输出端口值是错误的,正常是应该翻转的,可是却没有发生翻转,往前Trace是两个寄存器,仿真端口及波形如下,奇怪之处在于:一般而言Q和QBAR是两个反相的端口,它们的结果应该是完全相同的,而相位相反。
可以通过波形能明显发现,QBAR是翻转的,可是Q端却一直保持为0,这明显是有问题的。Q端是直接送到设计的输出端口的,QBAR还会送到内部的其他逻辑。
这种错误要么是库文件的问题(.v问题),要么就是仿真工具的问题了。
一级级Trace std verilog发现,库里面描述是正确的,Q是QBAR的反向,如下图所示:
那么现在的问题就是,最简单的not功能,VCS仿真却是有问题的。
且送往两个输出端口的寄存器都有相同的问题,问题可以复现,不是随机的!!!
也查看了log,发现了一些Warning,不过不至于会引起功能上的错误:
log:
Warning-[SDFCOM_CFTC] Cannot find timing check
xxxx/pt/sdf_out/C_MIN.sdf, 45636
module: SDFFR_B, "instance: tb.u_digital_top_inst.u_los_control.rx_mute_reg"
SDF Warning: Cannot find timing check $hold(posedge CLK,posedge RN,...)
最最奇怪的是:其他寄存器仿真也没有问题,唯独两个输出到片外的,Q都不翻转
其他相同ref name的寄存器仿真是正常的,没有这个问题,仿真波形如下:
一个可能的猜想是:薛定谔的猫,只要不观测结果,它就是对的,只要观测结果,它就是错的,额(⊙o⊙)…,发现了个了不得的现象,是不是可以拿诺贝尔奖了,哈哈哈
后来我又尝试了用零延迟仿真,结果居然对了,非常的奇怪:
+nospecify
可以看到Q端会发生翻转了,且结果是正确的:
又可以推断出一个结论:在理想情况下,薛定谔的猫不存在,上帝不扔骰子。我自己真是个天才,哈哈哈,说的我自己都信了。。。
本来感觉是vcs工具的bug,所以在仿真的过程中dump了fsdb到verdi里面看波形,结果发现和vcs一样,有点慌,开始怀疑到底是什么问题了,因为之前也发现过vcs显示波形的bug,但是dump vcd到verdi里面看波形就没有问题了,这次一看感觉好像vcs没有问题,但是却找不到任何问题。
想用modelsim验证一下的,结果发现它的license过期了,想用Incisive验证下的,发现服务器没有装。。。
最后,换个了VCS版本仿真(在各种版本上面发现了很多奇葩的Bug,这个版本是走了很多坑之后发现的比较好的版本,具体版本信息见知识星球原文):
仿真结果是完全正确的,没有问题:所以结论是:工具的bug!!!非常恶心的问题,Debug工具的Bug非常浪费时间。
同样的Option再换成老的版本:vcs-mx_vL-2016.06:
的确是错的:
再用verdi打开波形看下:
还是错的,有问题,这说明一个结论:
2016版本的vcs显示波形有bug,且dump fsdb给verdi打开的话,里面波形可能仍然是错的,会受到仿真工具的影响。
之前遇到过vcs显示波形有问题,但是导出fsdb/vcd到verdi的话显示是没有问题的,这次这个问题更加严重,使得fsdb里面信息都是错误的!!!
再换成2014版:
vcs_mx_2014.03
这个版本问题更多,波形不但有上面的问题,而且RN的显示也有问题,只有放大很大的情况下,才能看到RN有个短暂的复位,其他时间都是一直为1的,而不应该显示黄色,黄色表示的是频繁翻转的信号。
…(更多精彩内容见知识星球)
星球简介
低功耗设计技术总结 - 3万字,129页 IR drop的分析与修复总结 - 4.3千字,20页 数字后端理论及实践-ICC干货笔记 - 11万字,423页 数字后端理论及实践-Innouvs教程(第4版)- 5.7万字,316页 ICC2教程-星球精编版 - 2万字,125页 数字后端理论及实践-Innouvs教程(第5版)- 11.8万字,635页 面试笔试题整理 面试笔试经验分享(第1版)- 1.6万字,48页 面试笔试题整理 面试笔试经验分享(第2版)- 2.3万字,87页 ICC2 ICC与Innovus的命令对照(第1版) Tcl与DesignCompiler教程(第1版)- 6.1万字,183页 DRC规则讲解、DRC的检查与修复(第1版)- 7.3千字,26页 Congestion的分析与修复专题(第1版)- 1.2万字,41页 Perl-Tk教程(第1版)- 1.6万字 73页 星球精华推文分类整理合集(第1版)- 1.8万字,75页 星球精华推文分类整理合集(第2版)- 4.4万字,160页 面试笔试题整理 面试笔试经验分享(第3版)- 2.7万字,96页 星球精华推文分类整理合集(第3版)- 6.6万字,240页 时序分析与sdc专题笔记(第1版) - 3.1万字,115页 星球精华推文分类整理合集(第4版)- 8.4万字,296页 更多教程、笔记持续更新中。。。