验证的分类及相关工具

目录

    • 1.验证方法的分类
      • 1.1动态验证
      • 1.2.静态验证
    • 2.动态验证及相关工具
      • 2.1.电路级仿真工具
      • 2.2.逻辑仿真工具
    • 3.静态验证及相关工具
      • 3.1 形式验证工具
      • 3.2 静态时序分析工具

SOC设计中验证包含以下几个方面:

  • 验证原始描述的正确性
  • 验证设计的逻辑功能是否符合设计规范的要求
  • 验证设计结果的时序是否符合原始设计规范的性能指标
  • 验证结果是否包含违反物理设计规范的错误

1.验证方法的分类

验证的方法答题可分为两类:动态验证和静态验证。

1.1动态验证

动态验证也叫仿真,是指从电路的描述提取模型,然后将外部激励信号或数据施加于此模型,通过观察该模型在外部激励信号作用下的实时响应来判断该电路系统是否实现了预期的功能。方针目前最常用时间驱动的方法,也在发展周期驱动的方法。

1.2.静态验证

静态验证是指采用分析电路的某些特性是否满足设计要求的方法,来验证电路的正确与否,形式验证是近几年来兴起的一种验证方法,它需要有一个正确的模型作为参考,把待验证的电路域正确的模型进行比较,并给出不同版本的电路是否在功能上等效的结局,它利用理论证明的方法来验证设计结果的正确性。
比较动态验证和静态验证,各有优势和不足。动态仿真主要是模拟电路的功能行为,必须给出适当的激励信号,然后很难选择激励来达到覆盖电路所有功能的目的,同时动态仿真很耗费时间,静态验证是针对模拟电路所有的工作环境,检查电路是否满足正常的性能指标,此类验证只限于数字逻辑电路,其准确性低于动态仿真,偶尔还会提供错误信息。

2.动态验证及相关工具

仿真流程如图 3-1所示,仿真环境包括电路描述的输入、仿真控制命令和仿真结果的显示等3 部分。
仿真工具首先要把用户的描述转换为内部表示,即建立模型。激励波形可以同电路描述一起
输入,也可以在仿真开始之后通过控制命令输入,或者单独建立激励波形文件输入。控制命令包括初始值设置、仿真时间指定、仿真过程控制、仿真中断设置、观察仿真状态、设置某些信号或变量值,以及指定继续仿真等。在交互式仿真方式下,控制命令交互输入;在批处理式仿真方式下,控制命令常由控制命令文件(脚本)一次输入。仿真结果主要为各外部输出
端和其他观察点的输出波形,以及其他一些检查结果信息。做验证工作的人应该根据所验证的电路的应用环境给出足够多的激励信号,以验证该电路是否可以正确的工作。当所验证的电路非常复杂时,很难把电路在各种条件下的工作情况都验证到,并且验证的时间将直接影响项目的开发周期。这时,就要求验证人员凭经验给出比较有代表性的
激励信号,以尽量少的激励来验证电路的全部功能。如图 3-2所示,d=a&bc为电路描述,a、b、c的输入值情况为激励描述,欲验证该设计逻辑的完全正确,只需使激励信号实现3个输入信号的8种不同组合即可。动态验证的工具很多,主要有电路级仿真工具,如SPICE、TimeMil、NanoSim,以及逻辑仿真工具,如VCS、Verilog-XL、NC Verilog、Modelsim等。
在这里插入图片描述

2.1.电路级仿真工具

此类仿真工具模拟晶体管级的电路行为特性,主要用于模拟电路的设计。
(1)SPICE
SPICE作为一种通用的电路描述与仿真语言,最早由加州大学伯克利分校于1972年发明。SPICE是20世纪80年代世界上应用最广的电路设计软件,1998年被定为美国国家标准。因为它的精确性、多功能性和对用户开放,SPICE已经成为电子电路模拟的实施标准。SPICE电路可以模拟电路中实际结构的物理行为,给电路设计者带来了极大的方便。众多的 EDA公司对其进行了商业化开发,并在伯克利标准版本的基础上进行了扩展和改进,当今流行的各种 EDA 软件,如 HSPICE、PSPICE、Or CAD、Electronics Workbench 等都是基于 SPICE 开发的。
(2)NanoSim
NanoSim是Synopsys公司开发的,一个针对模拟、数字和混合信号设计验证的品体管级仿真工具。它是一个稳定而简单易用的工具,为几百万门的片上系统设计提供了较高的仿真能力。对于 0.13微米或更小工艺下的设计,它可以达到类似于SPICE的精度。NanoSim 结合了TimeMill 和 PowerMill 中最先进的仿真技术,在单独的一个工具里就可以同时完成时序分析和功耗分析。

2.2.逻辑仿真工具

此类仿真工具可以仿真行为级、RTL 级和门级网表的数字电路,此类仿真的特点灵活、快速、易于调试。算法多数采用事件驱动的方式,目前也有周期驱动的方式。
(1)基于事件的仿真器
这些仿真器捕获事件(在时钟内部或在时钟的边界上),并通过设计进行传播,直到实现一个稳定状态为止。
(2)基于周期的仿真器
该仿真器完全不理会时钟内部发生的事件,而是在每个周期中进行一次信号评估。由于执行时间较短,这类仿真器的运行速度往往较快。
VCSSynopsys 的 VCS 是编译型 Verilog 模拟器,它完全支持标准的 Verilog HDL语言和 SDF,其出色的内存管理能力足以支持千万门级的 ASIC 设计,而其模拟精度也完全满足深亚微米 ASICSign-0f的要求。VCS 结合了周期算法和事件驱动算法,具有高性能、大规模和高精度的特点,适用于从行为级、RTL到带反标的门级电路仿真。
(3)ModelSim
Mentor的 ModelSim仿真器采用直接优化的编译技术、TcTk 技术和单一内核仿真,支持VHDL和 Verilog 混合仿真。

3.静态验证及相关工具

如图3-3所示,静态验证不需要输入激励信息,只需输入电路模型和相关参数及命令,验证工具会自动对该电路模型进行分析,并显示出分析的结果。
由于静态验证是工具自动完成的,不需要人工过多的敢于,所以通常对设计的电路首先进行静态验证,以纠正一些比较明显的错误,然后再动态仿真,确定其具体的行为是否正确。在当前SOC的设计中,静态验证是必不可少的设计手段。
在这里插入图片描述

3.1 形式验证工具

对于某些电路设计的移植,一般不需要对新电路进行仿真,而直接通过 EDA 工具来分析该电路的功能是否与原电路一致,此种验证方法可以大量地减少验证时间,提高电路设计的效率。等效性检查(Equivalence Check)是目前形式验证的主流,用于比较两个电路逻辑功能的一致性。它是通过采用匹配点并比较这些点之间的逻辑来完成等效性检査的。其生成一种数据结构,并将其与相同输入特性曲线条件下的输出数值特性曲线进行比较。如果它们不同,则表示被比较的两个电路是不等效的。工具使用的具体流程如图3-4所示。首先需要给工具提供完整正确的设计、相关的工艺库及准备验证的设计,其次需要对检查过程给定约束条件和设置参数,并确定比较范围和匹配点,如果结果不相等则需要进行诊断。它通常用来比较 RTL 代码与布局布线后提取的网表逻辑功能是否一致,加入扫描链之前与之后的网表在正常工作模式下的功能是否一致,并对 ECO修正之前的网表与ECO 修正之后的网表比较。
此类EDA工具软件如Synopsys公司的Formality及Cadence公司的Encounter Conformal Equivalent Checker等。

在这里插入图片描述

3.2 静态时序分析工具

静态时序分析技术的许多基本概念与动态仿真不同。静态时序分析技术通过输入一定的设计约束来静态地检查设计的时序功能,而不需要加入相应的测试向量进行逻辑功能仿真。它是建立在同步数字电路设计基础上的,是一种穷尽的分析方法。静态时序分析工具通过路径计算延迟的总和,并比较相对于预定义时钟的延迟,它仅关注时序间的相对关系而不是评估逻辑功能。与动态仿真比,静态时序分析所需的时间很短。
静态时序分析工具首先要接收用户输入,分析网表并将单元映射进目标库中,根据网表生成具有所有路径的列表,接下来,由延迟引擎计算单元和互连值,然后,时序验证引擎计算相对于预定义时钟域的间隙与约束冲突,输出报表与多种可视工具,并可根据用户要求将结果分类。静态时序分析工具可识别的时序故障数要比仿真多得多,包括建立/保持时间、最小和最大跳变延时、时钟脉冲宽度和时钟畸变、门级时钟的瞬时脉冲检测、总线竞争与总线悬浮错误、不受约束的逻辑通道。另外,一些静态时序分析工具还能计算经过导通晶体管、传输门和双向锁存的延迟,并能自动对关键路径、约束性冲突、异步时钟域和某些瓶颈逻辑进行识别与分类。时序分析工具种类很多,如 Symopsys 公司的 Primetime 是业界普遍作为 Sign-of的静态时序分析工具。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/63447.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【HarmonyOs学习日志(14)】计算机网络之域名系统DNS

域名系统DNS 域名系统DNS——从域名解析出IP地址 文章目录 域名系统DNS概述域名到IP地址的解析 互联网的域名结构命名标准 域名服务器域名的解析过程 概述 域名系统DNS(Domain Name System)是互联网使用的命名系统,用来把便于人们使用的机器…

【Python】pandas库---数据分析

大学毕业那年,你成了社会底层群众里,受教育程度最高的一批人。 前言 这是我自己学习Python的第四篇博客总结。后期我会继续把Python学习笔记开源至博客上。 上一期笔记有关Python的NumPy数据分析,没看过的同学可以去看看:【Pyt…

【人工智能学习之HDGCN18关键点修改】

【人工智能学习之HDGCN18关键点修改】 训练部分修改部分 训练部分 请参考文章:【人工智能学习之HDGCN训练自己的数据集】 修改部分 参考源码中25关键点的区域划分,我们将18关键点划分为: 头部: 鼻子左眼和左耳右眼和右耳 上肢…

ARCGIS国土超级工具集1.2更新说明

ARCGIS国土超级工具集V1.2版本,功能已增加至47 个。在V1.1的基础上修复了若干使用时发现的BUG,新增了"矢量分割工具"菜单,同时增加及更新了了若干功能,新工具使用说明如下: 一、勘测定界工具栏更新界址点成果…

华为OD --- 流浪地球

华为OD --- 流浪地球 题目独立实现基本思路代码实现 其他答案实现思路代码实现 题目 独立实现 基本思路 1、首先把题目给出的启动机器初始化成数组, 2、用for循环模拟每隔1s更新这个初始化数组的前后两个机器. (源码中的updateTimeCount函数) 3、for循环每次循环后会检查当前…

DataOps驱动数据集成创新:Apache DolphinScheduler SeaTunnel on Amazon Web Services

引言 在数字化转型的浪潮中,数据已成为企业最宝贵的资产之一。DataOps作为一种文化、流程和实践的集合,旨在提高数据管道的质量和效率,从而加速数据从源头到消费的过程。白鲸开源科技,作为DataOps领域的领先开源原生公司&#xf…

【硬件IIC】stm32单片机利用硬件IIC驱动OLED屏幕

之前操作OLED屏幕都是用GPIO模拟IIC去驱动,最近打算用硬件IIC去驱动,于是写下这个demo,在这个过程中遇到一点小坑,记录一下,本文章非小白教程,所以只突出踩到的坑点,文章中涉及到的OLED也是网上资料写烂的&…

python如何自动加空格

首先,需要进行打开的一个pycharm的软件,可进行双击的打开该软件。 可以看到的是在当前的打开的文件中,格式相对较乱一下。格式不对会格式错误。 然后点击菜单栏中的“code”。 在弹出的下拉菜单中选择“reformat code”选项。 可以看到的是在…

【开源免费】基于SpringBoot+Vue.JS网上订餐系统(JAVA毕业设计)

本文项目编号 T 018 ,文末自助获取源码 \color{red}{T018,文末自助获取源码} T018,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 新…

答题考试系统v1.6.1高级版源码分享+uniapp+搭建测试环境

一.系统介绍 一款基于FastAdminThinkPHPUniapp开发的小程序答题考试系统,支持多种试题类型、多种试题难度、练题、考试、补考模式,提供全部前后台无加密源代码,支持私有化部署 二.测试环境 系统环境:CentOS、 运行环境&#x…

经典电荷泵/Charge pump——1998.JSSC

电路结构 工作原理 M3 and M4 are the series switches, and M5, M6 switch to the highest voltage. If M5 and M6 are missing, having a large capacitor is of absolute necessity, because must always stay between 2 Vin and 2Vin - Uj to avoid switching on the vert…

Swin transformer 论文阅读记录 代码分析

该篇文章,是我解析 Swin transformer 论文原理(结合pytorch版本代码)所记,图片来源于源paper或其他相应博客。 代码也非原始代码,而是从代码里摘出来的片段,配上简单数据,以便理解。 当然&…

GPT-Omni 与 Mini-Omni2:创新与性能的结合

近年来,随着人工智能技术的飞速发展,各种模型和平台应运而生,以满足从个人用户到企业级应用的多样化需求。在这一领域,GPT-Omni 和 Mini-Omni2 是两款备受瞩目的技术产品,它们凭借独特的设计和强大的功能,在…

龙迅#LT7911E适用于EDP/DP/TPYE-C转MIPIDSI应用,支持图像处理功能,内置I2C,主应用副屏显示,投屏领域!

1. 描述 LT7911E 是一款高性能 eDP 转 MIPI D-PHY 转换器,旨在将 eDP 源连接到 MIPI 显示面板。 LT7911E 集成了一个符合 eDP1.4 标准的接收器,支持 1.62Gbps 至 5.67Gbps 的输入数据,以 270Mbps 的递增步长,以及一个 2 端口 D…

C语言——实现求出最大值

问题描述&#xff1a;利用C语言自定义函数求出一维数组里边最大的数字 //利用函数找最大数#include<stdio.h>int search(int s[9]) //查找函数 {int i , max s[0] , max_xia 0;for(i0;i<9;i){if(s[i] > max){max_xia i;max s[max_xia];}}return max; } in…

解锁 draw.io 流程图制作工具Docker私有化部署(2/2)

一、draw.io 流程图制作工具简介 &#xff08;一&#xff09;基础介绍 draw.io 是一款备受青睐的开源流程图软件&#xff0c;它有着诸多优点。首先&#xff0c;其界面十分整洁有序&#xff0c;完全没有广告的干扰&#xff0c;并且所有功能都是免费向用户开放的&#xff0c;这一…

[HNCTF 2022 Week1]baby_rsa

源代码&#xff1a; from Crypto.Util.number import bytes_to_long, getPrime from gmpy2 import * from secret import flag m bytes_to_long(flag) p getPrime(128) q getPrime(128) n p * q e 65537 c pow(m,e,n) print(n,c) # 62193160459999883112594854240161159…

docker run命令大全

docker run命令大全 基本语法常用选项基础选项资源限制网络配置存储卷和挂载环境变量重启策略其他高级选项示例总结docker run 命令是 Docker 中最常用和强大的命令之一,用于创建并启动一个新的容器。该命令支持多种选项和参数,可以满足各种使用场景的需求。以下是 docker ru…

Flink2.0未来趋势中需要注意的一些问题

手机打字&#xff0c;篇幅不长&#xff0c;主要讲一下FFA中关于Flink2.0的未来趋势&#xff0c;直接看重点。 Flink Forward Asia 2024主会场有一场关于Flink2.0的演讲&#xff0c;很精彩&#xff0c;官方也发布了一些关于Flink2.0的展望和要解决的问题。 1.0时代和2.0时代避免…

智能座舱进阶-应用框架层-Jetpack主要组件

Jetpack的分类 1. DataBinding&#xff1a;以声明方式将可观察数据绑定到界面元素&#xff0c;通常和ViewModel配合使用。 2. Lifecycle&#xff1a;用于管理Activity和Fragment的生命周期&#xff0c;可帮助开发者生成更易于维护的轻量级代码。 3. LiveData: 在底层数据库更…