IC验证方法基础

2023-10-26

数字IC的设计流程,如下图所示:

其中讲到形式验证的时候就懵了。当时老师说,其实我也记不太清了,就从网上找了一下:

形式验证(Formal Verification)是一种IC设计的验证方法,它的主要思想是通过使用数学证明的方式来验证一个设计的功能是否正确。

形式验证可以分为三大类:

等价性检查(Equivalence Checking)、

形式模型检查(Formal Model Checking)(也被称作特性检查)

定理证明(Theory Prover)

 

首先我当时很不理解,为什么要做形式验证。老师给了一个答案,为了确认综合后的电路跟你的设计是一致的。电路不也是工具综合出来的吗?为什么不能保证一致性?

老师说工具也是人做出来的,也有可能会出错,所以要确认。好像有一定的道理,当时对形式验证的理解就是这么一个初步概念。

 

后来工作了几年,也做了不少项目,对形式验证的理解可能稍微深刻一点。

 

我们平时做的最多的模拟仿真,就是给各种case的输入,穷尽各种组合,总是希望100%的验证到所有的情况。但是有些情况下,你不太可能达到这一个目的。假如有一个32位的比较器:

比较产生等于、大于、大于的结果。

假设采用一个快速模拟器,每微秒运行一个向量,则用模拟器模拟完全部模拟向量需要的时间为:

              264 (all input patterns) X 10-6

          ---------------------------------------------------  

           3600 (seconds) X 24 (hours) X 365 (days)

                   ≈584,942 years  

显然这是一个不切实际的验证时间。而形式验证使用

严格的数学推理来证明待测试设计的正确性,由于其静态、数学的特性,避免了对所有可能测试向量的枚举,而且能够达到100%无死角的检测。

 

定理证明是形式验证技术中最高大上的,它需要设计行为的形式化描述,通过严格的数学证明,比较HDL描述的设计和系统的形式化描述在所有可能输入下是否一致。这种验证方法需要非常深厚的数学功底,而且不能完全自动化,所以应用案例较少。当然还是有一些例子,例如HOL系统、PVS系统和ACL2系统等,并且都有成功应用案例。Moore等人验证了AMD5K86芯片的除法算法的微码,Brock等验证了Motorola的CAP处理器,Clark等验证了SRT除法算法。

 

模型检验是一种检测设计是否具有所需属性的方法,如安全性、活性和公平性。模型检验所针对的对象是同步时序设计。系统的设计spec用时序状态逻辑公式来描述。而通过对有限状态系统的所有可能的状态空间遍历来证明设计是符合规范的,增强设计者的信心;或者是通过提供违反spec的反例,以帮助设计者来发现早期设计的错误。反例给出的方式是从系统的初始状态出发到“坏”的状态的路径。系统的状态空间能够用有效的抽象符号算法来隐含地描述。抽象符号算法包括有向迁移图、二叉决策图(BDD- binary decision diagram)、合取范式(CNF- conjunctive normal form)等有效手段。

 

目前比较著名的模型检验工具:

Carnegie Mellon大学的符号模型检验工具SMV,

Stanford 研究所的原型验证系统PVS,

U.C.Berkerley的验证和综合工具VIS

和Bell实 验室的软件和协议验证工具Spin等。

 

 

等价性检查用于比较设计的两种实现是否一致,可分为组合等价性检查和时序等价性检查。目前是我们设计验证过程中用得最多的方法。它也是利用数学技术来验证参考设计与改动后的设计等价,主要目的是在一个设计经过变换之后,穷尽地检验变换前后的功能一致性,即证明设计的变换没有产生功能的变化,如下图所示:

等价性检查被广泛应用到设计流程中的各个不同阶段,用于验证不同设计层次之间的功能一致性,

 

或者用来验证RTL级对RTL级、RTL级对门级以及门级实现之间是否等价。

等价性检查的主要优点是比穷举式的模拟仿真更快,通常可在数小时内验证数百万门规模集成电路的一致性,这对模拟仿真是不可能的。比如我们在tapeout前突然因为一个bug改动比较大,看仿真已经来不及了,but怎么能放心的出去呢,只能靠等价性检查。因此,等价性检查工具已经被主流的设计流程所采用。

 

等价性检查的问题是需要一个参考设计作为描述,而如何设计一个理想参考模型(gold design)又是一个很重的任务。此外,等价性验证是为了找出实现的不一致性,而不能找出参考设计原先就可能存在的bug。另外等价性检查不能验证设计对象的时序,只能验证功能,因此它通常需要和时序分析工具配合在一起使用。

 

等价性检查主要是比较两种设计中相应的组合功能块。可以在参考设计中指定比较点,然后比较2种设计在该点的逻辑功能是否等价。比较点可以是输出端口、寄存器、锁存器、黑盒输入pin或被驱动的线网等。

 

逻辑锥(logical cone)是一组可驱动比较点的信号,它有n个输入(基本输入,状态点)和一个输出(基本输出,状态点),也可以包含其他逻辑锥,如下图所示:

最右边是一个输出端口,可以将它将作为一个比较点,与参考设计中相应的对象进行比较,比较的过程实际上就是考察它们的逻辑锥是否等价。所以对于报告出来的不匹配的点,我们也可以通过对它们逻辑锥进行分析,来找出具体的原因。

 

因此,等价性检查的具体工作就是比较两种设计中的关键点的等价性并将两种设计中任何不匹配之处标记、报告出来。

 

等价性检查的工具有:

Synopsys的Formality,

Cadence的Incisive Conformal,

Mentor Graphics公司的FormalPro等

而具体的应用例子网上也能找到一些,如果找不到可以在公众号留言邮箱索取啊

 

最后,总结一下模拟仿真和形式验证的比较:

 

形式验证目前还不能完全取代模拟仿真验证。两者各有所长,技术互补,在验证过程中应该结合使用,争取找出设计中所有的bug,哈哈!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

IC验证方法基础 的相关文章

  • ARM SoC漫谈

    作者 xff1a 重走此间路 链接 xff1a https zhuanlan zhihu com p 24878742 来源 xff1a 知乎 著作权归作者所有 商业转载请联系作者获得授权 xff0c 非商业转载请注明出处 芯片厂商向客户介
  • R-Car H3系列SOC芯片与R-Car M3 R8A77961JBP0BA区别

    RENESAS推出的 xff1a R Car H3 系列 SOC 芯片 R8A77951JA00BA xff03 YJ1 xff0c R Car M3 系列 SOC 芯片 R8A77960JA60BG xff03 YJ5 在内核上 xff1
  • 一文看懂IC芯片生产流程:从设计到制造与封装

    origin http forum esm cn com FORUM POST 1000163993 1201257744 0 HTM ga 1 101949507 338942905 1436813394 芯片制造的过程就如同用乐高盖房子
  • IC验证方法基础

    数字IC的设计流程 如下图所示 其中讲到形式验证的时候就懵了 当时老师说 其实我也记不太清了 就从网上找了一下 形式验证 Formal Verification 是一种IC设计的验证方法 它的主要思想是通过使用数学证明的方式来验证一个设计的
  • 数字IC验证学习(一)

    一 数据类型 1 logic logic类型只能有一个驱动 使用wire和reg的地方均可使用logic 但如双向总线等有多个驱动的地方 则不可使用logic 2 二值逻辑 对于二值逻辑变量与DUT中的四值逻辑变量连接时 如果DUT中产生了
  • Verdi 之配置及波形打开

    目录 写在前边 1 verdi的配置 2 波形的产生及打开 写在前边 本部分内容主要对Verdi的学习进行总结 大概分三篇文章进行叙述 1 verdi的配置 1 首先打开 bashrc文件进行环境配置 2 Verdi 配置如下 verdi
  • 时钟抖动(Clock Jitter)和时钟偏斜(Clock Skew)

    系统时序设计中对时钟信号的要求是非常严格的 因为我们所有的时序计算都是以恒定的时钟信号为基准 但实际中时钟信号往往不可能总是那么完美 会出现抖动 Jitter 和偏移 Skew 问题 所谓抖动 jitter 就是指两个时钟周期之间存在的差值
  • RequiredFieldValidator控件验证不能为空时报错多种解决方法以及问题分析

    最近在学asp net 在使用RequiredFieldValidator控件进行验证时 发现报错 界面控件如下图 点击完确定之后按理来说是要报不能为空的提示的但是却报错如下图 经过一番研究发现 也看了其他人的解决方案 总结如下 net 4
  • CMOS到触发器(一)

    1 MOS晶体管结构与工作原理简述 我们或多或少知道 晶体管在数字电路中的主要作用就是一个电子开关 通过电压或者电流 控制这个 开关 开还是关 晶体管大概有两种分类 一种是双极性晶体管 BJT bipolar junction transi
  • HDMI与TMDS接口

    目录 0 Xilinx的HDMI 1 4 2 0 Transmitter Subsystem Product Guide 1 HDMI是新一代的多媒体接口标准 2 HDMI向下兼容DVI 3 TMDS 最小化传输差分信号 4 TMDS编码算
  • vcs+verdi,以及Makefile注意点

    Makefile 命令行之前是以Tab开头的不然会报错 gvim里面强制输入tab 使用Ctr v i 直接使用tab键可能输入不成功 注释用 下面是makefile内容 L8 可选debug debug pp debug pp 使能ucl
  • SoC的开发

    怎么做SoC SoC是干啥的 SoC就是将CPU GPU Uart I2C WiFi Etherne等硬件IP连起来 做到一个芯片上 主要工作有 1 用verilog将这些IP core连起来 在verilog仿真器上进行验证 也要写一些C
  • 【STM32F4】STM32F407+ESP8266连接机智云过程详解

    要求 通过手机上的机智云通用APP 点亮开发板载LED0 LED1 摘要 硬件组成 STM32F407ZGT6 esp8266 乐鑫 软件APP 机智云开发都者中心下载的通用APP Demo Xcom串口调试助手 Keil V5 调试过程详
  • 线路编码(NRZ,NRZI,8B/10B,Manchester等)

    0 前言 编码根据作用和场景不同分为信源编码 信道编码和线路编码 信源编码 降低信源符号之间的相关性和冗余度 通过编码提高每个符号的信息量 具体说 就是针对信源输出符号序列的统计特性来寻找某种方法 把信源输出符号序列变换为最短的码字序列 比
  • 数字SOC设计之低功耗设计入门(六)——门级电路低功耗设计优化

    三 门级电路低功耗设计优化 1 门级电路的功耗优化综述 门级电路的功耗优化 Gate Level Power Optimization 简称GLPO 是从已经映射的门级网表开始 对设计进行功耗的优化以满足功耗的约束 同时设计保持其性能 即满
  • 正则表达式大全

    1 匹配中文 u4e00 u9fa5 2 英文字母 a zA Z 3 数字 0 9 4 匹配中文 英文字母和数字及下划线 u4e00 u9fa5 a zA Z0 9 同时判断输入长度 u4e00 u9fa5 a zA Z0 9 4 10 5
  • 2022芯原芯片设计 笔试题分析和讨论

    2022芯原设计笔试题分析和讨论 以下仅为个人理解和分析 不保证正确 欢迎大家发表自己的想法 讨论出正确答案 企业知识题 1 1 D 芯原的主要经营模式为芯片设计平台即服务 Silicon Platform as a Service SiP
  • 中文姓名、电话、邮箱的正则表达式

    1 中文姓名 如 张三 噶及 洛克业 a zA Z0 9 u4e00 u9fa5 1 10 2 电话验证 如 010 85369999 186199999 0 d 2 3 d 7 8 d 3 5 13 14 15 18 17 d 9 3 电
  • AMBA协议王者归来:揭秘AHB&APB设计奥秘

    AMBA协议已经成为业界的事实标准 因此在市场上有大量可重用的AMBA兼容IP核 IC工程师掌握这些总线 可以更容易地集成来自不同供应商的IP核 降低开发成本 缩短产品上市时间 AMBA 高级微处理器总线架构 定义了高性能嵌入式微控制器的通
  • 深入浅出《Delta-Sigma Data Converters》(可下载)

    在数字信号处理领域 数据转换器是实现模拟与数字世界之间无缝转换的关键组件 而在这个子领域中 Delta Sigma Data Converter s 一书以其全面和深入的内容 为工程师 学者甚至爱好者们提供了一个极其宝贵的资源 今天将为大家

随机推荐

  • MDK 5.14软件仿真时Logic Analyzer添加信号失败解决方法

    在使用MDK 5 14进行软件仿真跟踪GPIO口的输出电平 或类似的目的 时 如果你出现下面的问题 希望本文可以帮助到你 谢谢 如上图 当在Logic Analyzer窗口中通过 Setup 添加跟踪的信号时 出现了下面的问题 Unknow
  • HTML+CSS实现一个管理系统页面的制作

    1 先来看成品效果 2 html的源码 div class head div class head left img src img logo png div div class head right div class head righ
  • 博图/博途(TIA)V13 V14 V15 V16 软件安装教程,适用于新手的傻瓜式安装方法,强推!!!!

    TIA博途提供一个软件集成的平台 在这个平台之上 通过添加不同领域的软件来管理该领域的自动化产品 比如 通过SIMATIC Step7来进行控制器 分布式IO的组态和编程 通过SIMATIC WinCC来对人机界面进行组态 在这里我就以V1
  • 关于51单片机串口中断的理解

    关于51单片机串口中断的理解 关于这个问题找了好几个帖子 都没看到能让我明白的 自己就想了想 又看了看 新手不一定说得对 您凑合着看看 要不对的话 望指正 首先 我们在SCON中设置的时候 一般都会将接收使能位REN置1 其次 串口的收发都
  • Visual Studio VS2022 设置编码为 utf-8

    1 扩展 gt 管理扩展 2 搜索utf8扩展 点击完成安装 重启VS2022就可以生效了
  • ios sdk 穿山甲_GitHub - ArthurKnight/flutter_ad_pangolin_plugin: iOS flutter 穿山甲插件

    Pangolin 前言 在使用本插件前请认真 仔细阅读穿山甲官方文档 本插件将尽量保留SDK内容和各API相关内容 如出现在官方文档以外报错信息可以留言issue 或通过文末联系方式联系作者 注明来意 针对你可能会遇到的问题 在使用过程中可
  • 爬网页不用写代码?什么操作

    实验环境 Python 3 9 12 配置文件格式 爬页面基本是先请求再解析然后再请求然后不断重复 页面结构相对固定的情况下 弄一种配置文件来描述爬取步骤 这样就不用写代码了 想要爬不同的页面只写配置不写代码 所以
  • 基于SM2证书实现SSL通信

    参考链接 基于openssl和国密算法生成CA 服务器和客户端证书 MY CUP OF TEA的博客 CSDN博客 基于上述链接 使用国密算法生成CA 服务器和客户端证书 并实现签名认证 openssl实现双向认证教程 服务端代码 客户端代
  • idea DataGrip 使用图解教程

    日常开发中少不了各种可视化数据库管理工具 如果需要同时能连接多种数据库 大家肯定都会想到 DBeaver Navicat Premium 本文介绍另一个十分好用且强大的工具 DataGrip DataGrip 是 JetBrains 公司推
  • 用串口控制kobuki, 绕过ROS系统

    介绍 下面所做的事情 用串口来控制kobuki底座运动 绕过ros系统 首先测试一下串口命令是否可用 硬件设备 kobuki turtlebot的底座 kobuki usb连接 用usb线将kobuki和电脑连接起来 不是25针的接口 wi
  • vscode配置setting.json文件实现eslint自动格式代码

    一 ESlint Vetur 实现ESlint代码规范 二 重点 旧版本 旧版本配置在setting json 会出现警告 eslint autoFixOnSave true eslint validate javascript langu
  • Python金融大数据分析——第8章 高性能的Pyhon 笔记

    第8章 高性能的Python 8 1 Python范型与性能 8 2 内存布局与性能 8 3 并行计算 8 3 1 蒙特卡洛算法 8 3 2 顺序化计算 8 4 多处理 8 5 动态编译 8 5 1 介绍性示例 8 5 2 二项式期权定价方
  • jenkins编译java项目时无法读取pom.xml文件

    解决方法 勾选build下的启用触发下游项目 构建时阻止下游触发器 Build Enable triggering of downstream projects Block downstream trigger when building
  • 基于Python的论文管理与提交系统-任务分配接收Python爬虫安装数据分析与可视化计算机毕业设计

    更多项目资源 最下方联系我们 目录 一 项目技术介绍 二 项目配套文档 部分内容 资料获取 一 项目技术介绍 该项目含有源码 文档 PPT 配套开发软件 软件安装教程 项目发布教程 包运行成功以及课程答疑与微信售后交流群 送查重系统不限次数
  • 已解决sc delete MongoDB卸载MongoDB拒绝访问。

    已解决sc delete MongoDB卸载MongoDB拒绝访问 文章目录 报错问题 报错翻译 报错原因 解决方法 千人全栈VIP答疑群联系博主帮忙解决报错 报错问题 粉丝群里面的一个小伙伴遇到问题跑来私信我 想卸载MongoDB数据库
  • Hexo博客搭建及配置

    Hexo 是高效的静态站点生成框架 基于 Node js 通过 Hexo 你可以轻松地使用 Markdown 编写文章 除了 Markdown 本身的语法之外 还可以使用 Hexo 提供的 tag 插件 来快速的插入特定形式的内容 Hexo
  • 数据库表的关系

    表与表之间一般存在三种关系 即一对一 一对多 多对多关系 下面分别就三种关系讲解数据库相关设计的思路和思考过程 1 一对一关系 例如 下面的一张表 保存了人的相关信息 有男有女 要求查处所有的夫妻 sql代码 CREATE TABLE IF
  • Maven install报错To see the full stack trace of the errors, re-run Maven with the -e switch.解决

    今天在使用maven进行springCloud的打包jar包时 一直报错 To see the full stack trace of the errors re run Maven with the e switch 首先 我是使用了本地
  • Python学习笔记 面向对象编程

    类和对象 定义类 Python支持面向对象编程 下面是一个例子 我们可以看到 在Python中声明类和其他语言差不多 不过实际上差别还是挺大的 首先 Python没有严格意义上的构造函数 只有一个 init self XXX 函数 该函数和
  • IC验证方法基础

    数字IC的设计流程 如下图所示 其中讲到形式验证的时候就懵了 当时老师说 其实我也记不太清了 就从网上找了一下 形式验证 Formal Verification 是一种IC设计的验证方法 它的主要思想是通过使用数学证明的方式来验证一个设计的