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

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

3天内不再提示

谈谈Formal验证中的Equivalence Checking

sanyue7758 来源:处芯积律 2023-04-08 09:22 次阅读

Lec形式验证想必ICer们都很熟悉,尤其是中后端的IC工程师,在正常逻辑综合生成网表过后或DFT插入mbist等可测试逻辑综合后,需要对综合后产生的网表与综合前的RTL代码进行等效逻辑Lec验证,目的是为了保证综合过程没有映射map错,逻辑正确。后端工程师同时还需要在APR的place,cts等阶段手动ec后,ecoRt手动ec后,将综合后的网表与PostRoute ec后的网表进行Lec验证。

6bdb3732-d576-11ed-bfe3-dac502259ad0.png

图1 数字电路设计验证的分类(包括Formal验证和仿真功能验证)

实际上形式验证是为了验证RTL代码与综合后的门级网表之间的逻辑等价性。功能是否等价,与时序无关。与动态仿真 Simulation Veficiation 相比,形式验证属于 Static Verification ,不需要手动灌入激励;只需要通过数学分析的方式,对待测设计进行检查。

形式验证由两类静态检查组成:Equivalence Checking 等价检查 和 Property Checking 属性检查,形式验证现在通常通过EDA工具进行验证,业内通常用S家的Formality,C家的Conformal进行Lec形式验证,国内也有多家企业在进行Formal验证工具的开发如奇捷科技的EasyECO等等,被应用在RTLCode 和 gate level code的LEC等价检查。

Equivalence Checking

Combinational equuvalence :用于综合过后RTL与Netlist之间的检查,检查寄存器之间的组合逻辑在综合前后是否一致,比如常见的Lec验证工具:Formality,Conformal。sequential Equivalence :用于RTL代码阶段的Check,基于cycle的精确度;在module层面上对时钟&时钟树路径上的gating代码手动ec后的RTL进行等价检查。Transaction Equivalence :用于C/C++ model 与 RTL代码之间进行检查,基于transaction的精确度;用于通路的算法类设计。

Property Checking

属性检查是基于PSL、SVA等断言语言的,需要通过对属性的assume,cover,assert等语句进行分析,进行建立golden模型。FPV(Formal Property Verifacation)需要用户直接书写property;从FPV衍生出各类APP,适用于不同场景,可以通过配置相关配置,自动生成对应的property。

实际上前端设计使用Spyglass工具对跨时钟域设计的structure结构的CDC检查,检查异步时钟寄存器在跨时钟域时,信号有没有进行同步处理也属于静态验证的一种。

S家的Formality的流程(Reference 参照网表/RTL; Implementation 实施网表)

6bfc3b3a-d576-11ed-bfe3-dac502259ad0.png

图2 Formal工具的GUI界面

由图2可以观察到,在参照网表implemetation下方,有从0.Guide到60.debug的Formal验证流程,通常Formal的验证流程为Guidance > Reference>implemetation>setup>Match>Verify(有时候setup顺序可以改变),再到最后的Debug,听上去是不是十分复杂,但是其实不然,让小编结合FM官方的环境来给你一一介绍:

环境配置

6c13c99e-d576-11ed-bfe3-dac502259ad0.png

Guidance

这一步通常是用来添加DC综合完后,报出来的.svf文件,通常是些逻辑优化记录和一些约束条件。

6c300b68-d576-11ed-bfe3-dac502259ad0.png

Reference(这里举例是综合后的,所以Reference吃的是RTL HDL,如果是APR后,那么吃的就是综合后的网表)

读入rtl设计文件,从吃对应teachlibrary的DB文件(S家的lib文件都是.db格式)开始,再吃Reference参照的设计文件Verilog、VHDL等等,如果有UPF,则还要吃UPF,如果没有则设置顶层文件。

6c42305e-d576-11ed-bfe3-dac502259ad0.png

6c5f2286-d576-11ed-bfe3-dac502259ad0.png

这一步比较简单,主要就是read 需要对比的网表 read design file > verlilog >load files吃完netlist后再set top

6c7e7730-d576-11ed-bfe3-dac502259ad0.png

Setup

设置常量

6c94788c-d576-11ed-bfe3-dac502259ad0.png

Match

也是Formal最重要的一个环节,验证Reference与Implementation的逻辑是否一致.match>run matching

6ca2a02e-d576-11ed-bfe3-dac502259ad0.png

通常Implemetation的point要多于Reference,小编出现过Reference的umatch point反而更多的情况,后来定位发现是部分logic在Reference中删除了,这也是得来的Formal经验!!

Verify

也是Formal最重要的一个环节,验证Reference与Implementation的功能是否一致.这一步骤将吐出failing_point和abort_point,即相同激励输入,信号不同的点,都会被当成功能不一致的点输出到rpt内

6cb66e92-d576-11ed-bfe3-dac502259ad0.png

Debug

可以通过GUI界面一个一个时序锥来对照追问题port,,也可以通过前面verify和match的报告来进行debug,最后跑完,打印出结果,可以看到Passing (equivalent)和Failing (notequivalent)是否通过,再分析没过的原因。

好啦,到这里今天这期Formal形式验证全流程以及flow代码环境讲解就讲到这里啦,小编在这里留下个小问题,如果在fm环境内要吃UPF(为了Implemetation netlist),需要进行哪些代码操作呢?知道的小伙伴可以后台留言哦。

审核编辑:汤梓红

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

    关注

    35

    文章

    5545

    浏览量

    173231
  • eda
    eda
    +关注

    关注

    71

    文章

    2540

    浏览量

    170891
  • RTL
    RTL
    +关注

    关注

    1

    文章

    377

    浏览量

    59077
  • 验证
    +关注

    关注

    0

    文章

    57

    浏览量

    15077
  • 网表
    +关注

    关注

    0

    文章

    13

    浏览量

    7524

原文标题:谈谈Formal验证中的Equivalence Checking

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

收藏 人收藏

    评论

    相关推荐

    一文解析最严格的等价性比对验证combinational equivalence

    Combinational equivalence是使用EDA工具进行等价性比对中最成熟的FEV技术,一般情况下是将RTL和原理图网表进行等价性比对。
    的头像 发表于 07-19 09:48 1339次阅读

    介绍放宽约束的等价性比对sequential equivalence

    Sequential equivalence被某些EDA工具称之为周期精确等价(cycle-accurate equivalence),名字不重要,关键的是理解它和combinational equivalence的区别。
    的头像 发表于 07-19 09:53 895次阅读

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

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

    A Model Checking Example--Solving Sudoku Using Simulink Design Verifier

    , presents an easy-to-understand application of formal methods—specifically, model checking
    发表于 07-18 09:39

    Formal算法基础知识学习笔记

    Spec和Implementation,这样的比较输入和输入我们可以判定implementation与spec是等价的,设计符合我们的要求。这个一个典型的formal equivalence
    发表于 10-26 16:21

    A Roadmap for Formal Property

    What is formal property verification? A natural language such as English allowsus to interpret
    发表于 07-18 08:27 0次下载
    A Roadmap for <b class='flag-5'>Formal</b> Property

    深层解析形式验证

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

    形式验证工具对系统功能的设计

    形式验证工具(Formal Verification Tool)是通过数学逻辑的算法来判断硬件设计的功能是否正确,通常有等价性检查(Equivalence Checking)和属性检查
    的头像 发表于 08-25 14:35 1098次阅读

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

    形式验证分为两大分支:Equivalence Checking 等价检查 和 Property Checking 属性检查 形式验证初次被E
    的头像 发表于 02-03 11:12 1549次阅读

    分享一些形式验证(Formal Verification)的经典视频

    前段时间很多朋友在微信群里讨论Formal验证的视频资料问题,今天整理好了,分享给大家。
    的头像 发表于 02-11 13:15 552次阅读
    分享一些形式<b class='flag-5'>验证</b>(<b class='flag-5'>Formal</b> Verification)的经典视频

    可以通过降低约束的复杂度来优化Formal的执行效率吗?

    我们可以通过降低约束的复杂度来优化Formal的执行效率,但是这个主要是通过减少Formal验证空间来实现的,很容易出现过约,导致bug遗漏。
    的头像 发表于 02-15 15:14 551次阅读

    Formal Verification的基础知识

    通过上一篇对Formal Verification有了基本的认识;本篇将通过一个简单的例子,感受一下Formal的“魅力”;目前Formal Tool主流的有Synopsys的VC Forma
    的头像 发表于 05-25 17:29 1449次阅读
    <b class='flag-5'>Formal</b> Verification的基础知识

    数字验证Formal Verification在国内的应用以及前景如何?

    这种中型规模的RTL如果用simulation,妥妥的一分钟能跑十几个sanity case,所以性价比实在太低。尤其是碰到带memory的设计,用formal简直就是噩梦(不过工具好像可以替换掉memory的逻辑,你也可以dummy掉data payload,但控制逻辑的data path同样不短)。
    的头像 发表于 06-26 16:38 790次阅读

    什么是形式验证(Formal验证)?Formal是怎么实现的呢?

    相信很多人已经接触过验证。如我以前有篇文章所写验证分为IP验证,FPGA验证,SOC验证和CPU验证
    的头像 发表于 07-21 09:53 5410次阅读
    什么是形式<b class='flag-5'>验证</b>(<b class='flag-5'>Formal</b><b class='flag-5'>验证</b>)?<b class='flag-5'>Formal</b>是怎么实现的呢?

    Formal Verify形式验证的流程概述

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