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

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

3天内不再提示

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

sanyue7758 来源:处芯积律 2023-07-21 09:53 次阅读

最近看到行业群里面经常有人问什么是形式验证,今天的文章和大家介绍下形式验证(Formal verification)。

相信很多人已经接触过验证。如我前面有篇文章所写验证分为IP验证,FPGA验证,SOC验证和CPU验证,这其中大部分是采用动态仿真(dynamic simulation)实现,即通过给定设计(design)端口测试激励,结合时间消耗判断设计的输出结果是否符合预期。动态仿真又分为定向测试和随机测试。现在很多公司用的UVM验证方法学便是建立在动态仿真的基础上的。

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

形式验证不同于仿真验证,它是通过数学上完备地证明或验证电路的实现方法是否确实实现了电路设计所描述的功能。形式验证方法分为等价性检查(equivalence checking)如Formality,LEC等和属性检查(Property checking)如Jasper gold,VC Formal 等。我们这里讲的形式验证特指属性的检查(Property checking)。

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

如上图所示,在一个简单的加法设计中,我们采用动态仿真的方式去验证上述运算是类似一种丢飞镖的过程,想要验到所有的场景要运行2的64次方即18446744073709551616次,这只是简单的加法运算,如果再加入其它稍微复杂的逻辑,想用动态仿真的方式打完所有情况是非常困难的。

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

另外一种场景是当信号从设计的端口输入,信号流的走向会根据不同设定或者状态选择走向不同的路径。如上图所示,当信号流可选择的路径很多时,通过动态仿真也是很难覆盖到所有路径的。

上述两个问题用Formal就可以很好的解决掉。

除了功能验证上的使用,Formal也可以被用在coverage的收集上。在设计里面有不少代码是无法执行到的。如果用动态仿真去找这些点,一般的做法是跑大量的回归测试(regression),收集coverage,然后针对没打到的coverage hole找designer去review。整个过程走下来会花费不少人力。而用formal可以比较轻松高效的找到其中的一些点。

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

介绍了这么多,那么Formal是怎么实现的呢?用Formal验证需要输入设计(design),约束(constraint)和待验证的property。这里的设计一般是指RTL,约束指的是assumption,clock,reset等,propert是指assertion。

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

下面是一个简单的例子,当设计如下

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

我们可以通过下面描述来验证该段逻辑,先验证req_valid 为高时,dataout等于datain;

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

再验证req_valid 为低时,dataout等于0。

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

Formal适合所有验证场景吗?当然不是,因为formal是通过数学运算去完成完备性验证,在一些简单的逻辑如arbiter,muxes,FSM,Control logic上比较适合用formal去验证,但是对一些复杂的场景,比如涉及到大量的memory,复杂的总线传输,多模块协助工作等场景都不太适合用Formal。

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





审核编辑:刘清

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

    关注

    1629

    文章

    21729

    浏览量

    603037
  • 仿真器
    +关注

    关注

    14

    文章

    1017

    浏览量

    83726
  • SoC芯片
    +关注

    关注

    1

    文章

    610

    浏览量

    34905
  • RTL
    RTL
    +关注

    关注

    1

    文章

    385

    浏览量

    59763
  • UVM
    UVM
    +关注

    关注

    0

    文章

    182

    浏览量

    19167

原文标题:什么是形式验证(Formal 验证)

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

收藏 人收藏

    评论

    相关推荐

    浅析形式验证的分类、发展、适用场景

    Formal Verification:利用数学分析的方法,通过算法引擎建立模型,对待测设计的状态空间进行穷尽分析的验证
    的头像 发表于 08-25 09:04 1673次阅读
    浅析<b class='flag-5'>形式</b><b class='flag-5'>验证</b>的分类、发展、适用场景

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

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

    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 3986次阅读
    深层解析<b class='flag-5'>形式</b><b class='flag-5'>验证</b>

    新思科技凭借突破性机器学习威廉希尔官方网站 将形式属性验证性能提高10倍

    新思科技宣布,推出一种基于人工智能(AI)的最新形式验证应用,即回归模式加速器。作为新思科技VC Formal®解决方案的组成部分,VC Formal采用最先进的机器学习算法,将设计和
    的头像 发表于 09-06 11:13 5828次阅读

    从C/C++到RTL,提速100倍的形式化验证加快AI算法到芯片的迭代

    VC Formal数据通路验证应用支持HECTOR威廉希尔官方网站 广泛的市场采用
    的头像 发表于 06-28 08:38 5080次阅读

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

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

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

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

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

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

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

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

    谈谈Formal验证中的Equivalence Checking

    Lec形式验证想必ICer们都很熟悉,尤其是中后端的IC工程师,在正常逻辑综合生成网表过后或DFT插入mbist等可测试逻辑综合后,需要对综合后产生的网表与综合前的RTL代码进行等效逻辑Lec验证
    的头像 发表于 04-08 09:22 4295次阅读

    Formal Verification的基础知识

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

    聊聊形式验证中的SVA

    SVA,即SystemVerilog Assertion,在simulation和Formal都有极为广泛的应用,这里介绍一些基本的概念和常用的语法。
    的头像 发表于 06-14 09:31 1811次阅读
    聊聊<b class='flag-5'>形式</b><b class='flag-5'>验证</b>中的SVA

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

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

    Formal Verify形式验证的流程概述

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