记vcs仿真过程中发现的Bug

科技   教育   2024-04-13 11:47   上海  


本文选自知识星球,更多干货知识以及后端笔记、视频教程等,欢迎加入星球进行查看。

最新星球刚刚上线基于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的,而不应该显示黄色,黄色表示的是频繁翻转的信号。


…(更多精彩内容见知识星球)





星球简介

目前星球中一共分享了19本+系统性的、整理成册的笔记,高达55万字+,2024年星球将分享更多私人笔记,逐步完善整个IC设计生态。
以后知识星球也会陆续会开放:
《Timing/DRV修复的专题笔记》 《ICC2 flow教程》 《Makefile在IC设计中的应用》和 《RedHawk教程笔记》 等等。
目前已上传的笔记有:
  • 低功耗设计技术总结 - 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页
  • 更多教程、笔记持续更新中。。。 

集成电路设计及EDA教程
知识 前端 后端 DFT 低功耗 验证 EDA 1rtl检查:LEDA 2仿真:VCS 3逻辑综合:DC 4形式验证:Formality 5布局布线:ICC 6STA:PT 7功耗分析:PTPX 8DRC LVS:Calibre
 最新文章