0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

浅析Formality形式验证里的案件

sanyue7758 来源:艾思后端实现 2023-07-21 09:56 次阅读

在当前的形式验证的领域,主要有两个工具,一个就是Cadence的conformal,另外一个就是Synopsys的formality(以下简称FM)。

通常情况下,形式验证的工具的主战场,是在RTLvsSYN这个阶段,主要是由于综合器的mapping/optimization会遇到各种各样的挑战。但是,本案有一些不同,在通常很容易的SYNvsLAY里边,出现了一点小插曲。笔者整理了一下,以嗜各位读者。

ICC的结束以后,一般都会先走一个formal检查,保证SYNvsLAY的一致性,通常都是一键过的,可是,在这个案子里边,出现了下边的问题:

c3df2e16-2710-11ee-962d-dac502259ad0.png

可以看到,有1个BBnet和1个BBpin的不等。展开GUI,可以看到如下的提示:

c3fe54da-2710-11ee-962d-dac502259ad0.png

可以看到,有一个是DIODE cell的DIODE pin 不相等,另外一个是和这个DIODE cell 相连接的net 不等,这个net也是会送到对应的output port的 ,如下图所示

c42238b4-2710-11ee-962d-dac502259ad0.jpg

经过按步骤排查,发现问题竟然出现在CTS的一个命令里边,有点扑朔迷离。DEBUG 安排!

在ICC的``步骤里边,CTS阶段,为了节省面积,使用了下边这个命令

c43bf81c-2710-11ee-962d-dac502259ad0.png

在命令结束的地方,有一些小结,可以看到一些冗余的buffer/inveter被拿掉了

c44db872-2710-11ee-962d-dac502259ad0.jpg

可以看到,整个数据库,被拿掉了235个buffers和4个inveters。看来还是有一定面积优化的效果。

基本现象是:如果跳过这个命令,formal就没有问题,反之就会有问题。总觉得哪里不太对:一个buffer removing的动作,会引起FM的问题?

为了定位问题,将上边的remove_clock_tree命令分解,可以定位出来,如果使用下面的细化命令,是会引起这个FM的问题。

c47131f8-2710-11ee-962d-dac502259ad0.png

难道是inverter出的问题!来来来,把buffer全部dont_touch:

c496300c-2710-11ee-962d-dac502259ad0.png

FM竟让给了一个大大的suprise:FM相等!。buffer移除出错了?

这个时候,还是仔细看看FM的log,注意到下面有趣的信息

c4a8b286-2710-11ee-962d-dac502259ad0.png

log表明,由于DIODE_cell的DIODE pin是个INOUT,导致和它相连接的port被相应转成了INOUT方向。

通常,FM再比对的时候会通过IN/INOUT port给输入port加入激励。所以,这里的pt2out[5] port,虽然是一个输出口,但是被FM改变成一个双向口,会向里边打入激励。

但是,这个DIODE带来的的影响,在不使用remove_clock_tree的数据库里的情形是一样的!看来,这个还不是root-cause。

继续使用FM的analysis功能,

c4cfeff4-2710-11ee-962d-dac502259ad0.jpg

可以看到,这里的Cone Input有一个很奇怪的地方,这里的sar_clk在设计里边是一个output port,怎么会成为影响到另外一个output port pt2out[5]的Unmatched Cone input呢?

c504f424-2710-11ee-962d-dac502259ad0.png

聪明的读者一定想到了一点:是不是前边的FM-579导致的问题呢?是的,你说对了,但是也只是对了一半!

还是回到ICC,通过all_fanin来看,pt2out[5]的driver都是干净的,并没有看到sar_clk,这个可以证明,的确是FM-579引起的问题,所以,如果移除DIODE pin的direction的问题。FM一定可以过。

但是,这么好的一个DEBUG机会,怎么可以就此放过。使用report_timing看看,就看到了另外一半的原因了。舒坦!

先出场的FM不相等的数据库

先看一下到sar_clk的timing path:可以看到,这个port 有一个**…G4IP/Z buffer驱动。没有什么问题。但是,请留意一下黄色高亮区域的这个net:…/inst_SAR/sar_clk (net)**

c5360afa-2710-11ee-962d-dac502259ad0.png

再看一下到pt2out[5]的timing path:可以看到,这个port 有一个…G4IP/Z buffer驱动。没有什么异样,但是,请注意黄色方块高亮区域,这个net就是上边timing report的高亮的那个net!所以,从FM的角度来看pt2out[5]的driver,在版图的网表里边,有两个driver:…G4IP/Z 和 sar_clk。这个就是FM的根本原因。

c55484f8-2710-11ee-962d-dac502259ad0.jpg

既然都花了这么久的debug功夫,也不介意再看一下,正确网表:没有使用remove_clock_tree命令的网表FM可以pass的原因了。

还是看一下ICC的timing report。对于FM而言,这里的sar_clk port 还是一个输入激励端,但是可以看到,这里的sar_clk的网表driver 是一个BUF/Z(place239/Z),按照lib的定义BUF是不能反向传递的,所以,FM-579的影响,到place239这里就截止了(注意到,place239/Z的负载只有一个),并不会影响其他的地方。

c57520aa-2710-11ee-962d-dac502259ad0.jpg

在没有使用remove_clock_tree的数据库里边,由于place239这个buffer的保护,FM-579的影响并没有传递到合法的比较点上,所以FM是可以过的。反之,则会影响到FM的结果。
敲黑板的时间到了,解决方案如下

剔除DIODE cell的DIODE pin的双向口影响:导出netlist 的时候 ,使用write_verilog -no_diode_port选项,FM不会出现FM-579的问题

在input/output PORT 添加隔离buffer,阻断DIODE的FM误动作。





审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • GUI
    GUI
    +关注

    关注

    3

    文章

    610

    浏览量

    38792
  • CLK
    CLK
    +关注

    关注

    0

    文章

    122

    浏览量

    16908
  • CTS
    CTS
    +关注

    关注

    0

    文章

    34

    浏览量

    13887

原文标题:Formality形式验证里的案件分析

文章出处:【微信号:处芯积律,微信公众号:处芯积律】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    芯片开发中形式化验证的是一个误区

    今天的形式验证工具具有更大的容量,并且许多工具能够在服务器或云上以分布式模式运行。形式验证的技术和方法也得到了扩展。
    的头像 发表于 11-29 14:31 1592次阅读

    EDA形式化验证漫谈:仿真之外,验证之内

    “在未来五年内仿真将逐渐被淘汰,仅用于子系统和系统级验证。与此同时,形式化验证方法已经开始处理一些系统级任务。随着技术发展,更多Formal相关的商业标准化会推出。” Intel fellow
    的头像 发表于 09-01 09:10 949次阅读

    关于功能验证、时序验证形式验证、时序建模的论文

    的新方法,提高了验证效率。论文还研究了运用形式验证的方法对RTL级和RTL级以及RTL级和门级网表进行等价性验证。为了进一步保证RTL级设计和对应的全定制设计模块之间功能的等价性,设计
    发表于 12-07 17:40

    Conformal和formality形式验证svf文件问题

    formality要读入一个svf文件,那conformal需要读入什么文件帮助LEC呢?试了用DC生成一个vsdc文件,但读进去并没有解决问题,一个可能是读的指令不对,又或者还需要发送什么指令来进行设置?
    发表于 08-11 17:51

    老化验证和封装形式有关系吗?

    无关,任何形式的封装,皆需要做老化实验。苏试宜特提供客户量身订制全方位的一站式服务, 从老化验证的硬件设计/制造到样品调试/实验/报告, 苏试宜特都可以协助客户完成。
    发表于 09-13 09:46

    浅析虚拟化技术各种形式管理方案

    浅析虚拟化技术各种形式管理方案 随着存储网络技术的成熟,大容量和复杂度较高的方案实现变得十分常见。不同架构的存储平台大大增加了管理
    发表于 04-27 17:34 563次阅读
    <b class='flag-5'>浅析</b>虚拟化技术各种<b class='flag-5'>形式</b>管理方案

    深层解析形式验证

      形式验证(Formal Verification)是一种IC设计的验证方法,它的主要思想是通过使用形式证明的方式来验证一个设计的功能是否
    发表于 08-06 10:05 3771次阅读
    深层解析<b class='flag-5'>形式</b><b class='flag-5'>验证</b>

    形式验证成为SoC模块验证的主流

      以对以仿真为中心的工程师有意义的方式调试形式验证代码,在很大程度上已被许多形式验证供应商解决。大多数工具可以在断言失败的情况下输出“见证”。也就是说,导致断言失败的仿真波形
    的头像 发表于 06-13 10:25 984次阅读
    <b class='flag-5'>形式</b><b class='flag-5'>验证</b>成为SoC模块<b class='flag-5'>验证</b>的主流

    形式验证简介

    形式验证是一种自动检查方法,可以捕捉许多常见的设计错误,并可以发现设计中的歧义。
    的头像 发表于 07-28 14:04 2079次阅读

    关于形式验证的11个误区

    对于第一代形式化工具来说,这个误区可以说是正确的,这些工具是为学术目的而设计的。他们需要学习一种晦涩难懂的数学符号来指定断言和约束。这些工具需要大量的手动指导,所以大多数用户实际上是专门研究形式验证技术的教授和博士生。
    的头像 发表于 11-29 14:31 588次阅读

    形式验证入门之基本概念和流程

    和静态时序分析工具一起来完成对电路完备的验证。本文就以Synopsys公司的formality工具为例,来介绍形式验证的流程和基本概念,后续会详细介绍使用
    的头像 发表于 12-27 15:18 1248次阅读

    Formal Verification:形式验证的分类、发展、适用场景

    形式验证分为两大分支:Equivalence Checking 等价检查 和 Property Checking 属性检查 形式验证初次被EDA工具采用,可以追溯到90年代,被应用于R
    的头像 发表于 02-03 11:12 1548次阅读

    基于形式验证的高效RISC-V处理器验证方法

    随着RISC-V处理器的快速发展,如何保证其正确性成为了一个重要的问题。传统的测试方法只能覆盖一部分错误情况,而且无法完全保证处理器的正确性。因此,基于形式验证的方法成为了一个非常有前途的方法,可以更加全面地验证处理器的正确性。
    的头像 发表于 06-02 10:35 1020次阅读

    Formal Verify形式验证的流程概述

    Formal Verify,即形式验证,主要思想是通过使用数学证明的方式来验证一个修改后的设计和它原始的设计,在功能上是否等价。
    的头像 发表于 09-15 10:45 499次阅读
    Formal Verify<b class='flag-5'>形式</b><b class='flag-5'>验证</b>的流程概述

    形式验证及其在芯片工程中的应用

    形式验证不仅仅是芯片领域中的一个概念。正如文章开头提到过,形式验证强调使用严格的数学推理和形式化技术,以确保系统的行为是否符合预期的性质和规
    的头像 发表于 10-20 10:46 471次阅读