ic验证之怎样通过波形来发现和定位bug.pdfVIP

ic验证之怎样通过波形来发现和定位bug.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
IC 验证之怎样通过波形来发现和定位 Bug 根据海思验证大牛一文《总结我的思路,如何在验证中发现和定位 Bug》整理而得。 很多新晋的验证人员抱怨,这么多信号,这么复杂的连接关系,千头万绪,眼睛都看得长挑针 还是看不出东西。OK,我说,这是没办法的事情,看波形,追波形,是一个经验积累的过程 任谁都逃不掉。越是看,越是明白,越是不看,越是不懂。看得多了,自然就知道应该抓那些信 号,如何分类,如何追溯了。所以我奉劝某些希望通过全自动的 Log 和信息推导结果,或者每 次一有问题就找设计人员看波形的验证人员,回头是岸。波形,是逻辑运行的最真实的表现,逃 不掉的。 看波形首先有两个基本的看点。 先看 X 和 Z。 任何一个波形,无论是验证的前期、中期、后期,到手之后,先刷屏,找 X 和 Z,确认。某些 Z 和 X 是可以存在的,例如某些 IP 模型,或者未初始化的寄存器和 RAM,但芯片开始正常后 Z 和 X,都不应当存在。 OK,我承认这个经验非常简单,某些高层领导可能认为这简直就是幼稚。可惜,可惜的是,我 至今为止看的,所有项目的波形,都能够在这上面找到 Bug,甚至我可以预计下一个项目,我 继续看波形,还是能够找到。 以我自己设计的 L2 Cache 为例,一个多年验证经验的老员工负责验证的,至今已经在多个项目 中量产,还是在最近检查波形的时候发现有一个文件wire 声明时把信号名写错了,悬空了(因 为该信号是 input,隐含了 wire 声明,所以不影响功能)。 OK X 和 Z,一定会存在,第一时间找到它,可以节省非常多的验证定位时间,否则追波形半 天发现是 X,真是浪费青春。X 和 Z,所对应的 Bug,可能有如下几种: 1、IP (包括Memory、PLL、Serdes 等等)例化时,某些信号悬空未接。也许某些模型允许 Power 信号悬空,或者某些信号是悬空给 DFT 处理(当下给 DFT 处理的信号是接零),但大多数 IP 输入信号是不可悬空的; 2、信号位宽不匹配、信号多驱动、声明的信号名称写错、TB 级互联错误或TB 中遗漏的Force (额 外小心隐藏的 Force),不要相信 nLint,特别是在芯片顶层或 3、后仿真时序不满足时的 X 态传递; 4、功能错误,某些模拟 IP 未能正确操作; 5、功能错误,导致管脚冲突; 6、功能错误,未能合理使用无复位端的寄存器和未初始化的 Memory。 再看时钟。 很多验证人员不看时钟。经过我反复的证明,这是一个非常普遍的现象(经常在项目验证后期协 助定位时钟不对齐导致的环境问题)。只要 TC 能够打印 Pass,很多验证人员不关心时钟是否 有问题(甚至很多新验证人员,根本不明白∆ Delay 的概念)。大多数情况下,时钟不会有问 题?No,大多数情况下,系统验证,时钟都有问题。 记得以前在一个项目中推动 CRG 设计定义了一个规范,时钟分频寄存器,延迟 0.2ns,其他寄 存器,延迟 0.3ns,分频的原时钟,在输出前延迟 0.2ns 对齐,不知道看到本文的,数字平台 部的验证人员,有多少能明白其中的用意?不解释,不明白的请自行蹲墙角反省。 再想起一个以前海思的设计规范,要求寄存器赋值,不可加延迟,也是让人在风中凌乱啊。下面 这个逻辑,寄存器赋值没有延迟,仿真能正常工作否?答案是可以!如果上帝比较仁慈,或者验 证人员对仿真器的 always 执行顺序无限了解。 always@(posedge clkx2) clk = ~clk; always@(posedge clkx2) b= a; always@(posedge clk) if(clken) c = b; 所以,在看完 X 和 Z 后,要将所有时钟拉到波形中 Check,看是否所有同步时钟(包括 1:N 倍频)的时钟沿是否严格对齐 CLKEN 时钟能够正确将倍频时钟上升沿罩住,关键地方寄存器 赋值是否有 Delay (如果时钟间不存在∆ Delay ,寄存器赋值可以没有 Delay)。 OK,上面两种情况说完,我们进入正题,怎样看波形。 如何在一个看似无限复杂的挂死波形中定位根因? 如何在后仿波形中发现可能的问题? 如何在表面上没有问题的波形中发现问题? 面对波形 首先要端正心态,不要认为看波形是浪费时间,也不要因为一时无法发现其中的问题 而焦虑烦躁,更不要盲目乐观,认为已经没有任何问题。要执着、坚定,充满勇气。 先不要看波形,对,先不要看,这是我很重要的经验之一。要先思考,我的做法是对照架构图 虚拟一个芯

文档评论(0)

LF20190802 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档