傻白入门芯片设计,形式化验证方法学——AveMC工具学习(二十)

news/2025/2/13 2:53:55/

一、形式验证方法学

(一)什么是形式化验证?

形式化验证方法学是使用数学证明的方法,分析设计中所有可能的状态空间来验证设计是否符合预期。形式化验证方法主要有三个方面的应用:定理证明、模型检验和等价性检查

(二)与传统验证的区别?

  • 仿真的验证方法学类似于进行枚举法,每一个测试用例测试一个特定的场景。
  • 形式化验证达到的效果等价于穷举法。形式化验证在实现的时候,并不是真的采取了穷举的方式,而是采取了数理证明的方式来证明在所有的情况下,某些断言一定成立或存在反例不需要用户去生成测试激励,一条属性的真伪结论是基于严格的数学证明——证明为真的属性在任何激励下再进行仿真都不会出错。

二、AveMC工具学习

(一)什么是AveMC?

AveMC是一款高效的用于前端数字集成电路功能验证的EDA软件。不同于传统的仿真验证工具软件,AveMC基于形式化验证方法学,用模型验证(Model Checking)的方法进行完备的功能验证。模型检验不使用用户定义的激励输入,而是用户将电路规格(Sepcification)用设计属性(property)和断言(assertion)描述出来,然后采用数理证明的方式证明设计属性和断言在任何情况下都与RTL设计一致。相比于传统的仿真验证方法学,采用AveMC进行模块级功能验证,具有高效、完备的优势。

(二)AveMC的工作逻辑?

AveMC 前端组件会将待测试的设计 DUT (Design under test,RTL行为级可综合代码)和验证环境(testbench = SVA + 属性 + 一些可综合的Verilog/System Verilog辅助逻辑)一同读入,并对它们进行数学建模。然后将建模结果交给 AveMC 验证引擎进行证明。证明结果会通过文字报告、图形界面波形显示、自动生成仿真复现 testbench 等方式交由用户进行 Debug 和结果统计(通常就是指所有断言/属性的证明结果以及覆盖率报告)。

 (三)AveMC验证应用场景?

在数字前端功能验证领域,AveMC可以应用于以下验证场景:

  1. 模块级验证交付。即在模块级,采用 AveMC 作为主要的验证手段,利用形式化验证方法学完备性的优势,进行完整的功能验证。
  2. Bug Hunting。在某些复杂的关键模块中,采用 AveMC 作为一种辅助的验证手段,尽可能去发现 corner case 中隐藏的 bug。这些 bug 通常很难通过仿真或者其他验证手段发现。
  3. Bug 重现。在系统级或原型验证时发现的 bug,如果是模块的功能 bug,经常需要在模块级进行 bug 重现。AveMC 可以通过自动产生错误波形和 testbench 的方式帮助用户在模块级自动重现 bug。
  4. Bug 修复检验。对 Bug 进行修复之后,可以用 AveMC 进行完备验证,以保证该 bug 修复能够完全修复问题并不会影响其他功能。
  5. 逻辑等价性检查。AveMC 还提供 AveMC SEC检查工具,帮助用户检查在设计经过了修改之后,是否和原有的设计在功能逻辑上保持了一致性
  6. 冗余代码检查。AveMC Coverage 检查工具,可以帮助用户发现 RTL 中的冗余代码

(四)AveMC的多种debug方式?

  • 图形化运行界面
  • 波形查看器 /RTL 查看器:AveMC 提供了图形化界面的波形调试器和 RTL 查看器——AveTrace。AveTrace 以 AveMC的结果作为输入,提供了如下功能:
    • RTL 查看
    • 信号 drive/load 追踪
    • 波形查看
    • 波形和 RTL 联动调试
  • 空泛性检查报告:如果一个属性表达式存在一个冗余的子表达式,子表达式没有影响到整个属性表达式的正确性,那么这个属性就叫空泛性属性,包括:
    • 断言前置条件空泛性检查
    • 断言子序列空泛性检查
  • 覆盖率结果报告:精确检查断言属性的覆盖率状况,帮助提高形式化验证testbench的质量,包括:
    • 代码覆盖率:衡量验证约束的完整性
    • 断言覆盖率:检查断言检查功能的完整性
    • 功能覆盖率:用断言描述的覆盖检查点,用于检查功能覆盖率

http://www.ppmy.cn/news/384305.html

相关文章

leetcode:1822. 数组元素积的符号(python3解法)

难度:简单 已知函数 signFunc(x) 将会根据 x 的正负返回特定值: 如果 x 是正数,返回 1 。如果 x 是负数,返回 -1 。如果 x 是等于 0 ,返回 0 。 给你一个整数数组 nums 。令 product 为数组 nums 中所有元素值的乘积。…

​Java容器的继承关系​

Java容器的继承关系 Collection接口 Collection接口中所定义的方法 int size(); boolean isEmpty(); void clear(); boolean contains(Object element);//是否包含某个对象 boolean add(Object element); Iterator iterator(); boolean containsAll(Collection c);//是否包含另…

强化学习:蒙特卡洛方法(MC)

引入蒙特卡洛方法例子 以抛硬币为例,将结果(正面朝上或反面朝上)表示为作为随机变量 X X X ,如果正面朝上则 X 1 X1 X1 ,如果反面朝上,则 X − 1 X-1 X−1,现在要计算 E [ X ] E[X] E[X]。    我们通常很容易…

百度 flash html5自切换 多文件异步上传控件webuploader基本用法

双核浏览器下在chrome内核中使用uploadify总有302问题&#xff0c;也不知道如何修复&#xff0c;之所以喜欢360浏览器是因为帮客户控制渲染内核&#xff1a; 若页面需默认用极速核&#xff0c;增加标签&#xff1a;<meta name"renderer" content"webkit&quo…

PDF文档用什么软件打开?

PDF文档&#xff0c;在办公领域使用很广&#xff0c;那么&#xff0c;什么软件可以打开PDF文档呢&#xff1f;能打开PDF文档的软件统称为PDF阅读器&#xff0c;但是不同的PDF阅读器&#xff0c;功能相差还是很大的。如何主要用于编辑pdf&#xff0c;那就用adobe pdf或者金山pdf…

用IE浏览器打开pdf文件出来的是空白页面,怎么办?

启动Acrobat Reader并执行“文件”菜单“首选项”子菜单中的“一般”命令&#xff0c;打开“一般首选项”对话框&#xff0c;然后复选其中的“网络浏览器集成”选项(最好一并复选该选项卡中的“允许后台下载”选项&#xff0c;以便加快浏览速度)&#xff0c;最后重新启动IE及Ac…

怎样让 pdf 文件直接下载而非在浏览器里打开

问题&#xff1a;点击 <a href"18禁.pdf">下载</a> 的时候&#xff0c;Chrome 会自动调用内置的 pdf 阅读器打开&#xff0c;我只想让用户下载这个文件&#xff0c;有什么办法呢&#xff1f; 答案&#xff1a;<a href"18禁.pdf" download&g…

用VBA打开PDF文件

Shell "RUNDLL32.EXE URL.DLL,FileProtocolHandler " & myfile, vbMaximizedFocus myfile是PDF文件完整路径