验证基础-验证方法

article/2025/10/6 14:37:04

目录

动态仿真

静态检查

虚拟模型

硬件加速

效能验证

UVM简介


验证的方法主要分为六种:

        ※ 动态仿真(dynamic simulation)

        ※ 静态检查(formal check)

        ※ 虚拟模型(virtual prototype)

        ※ 硬件加速(hardware acceleration)

        ※ 电源功耗(power consumption)

        ※ 性能评估(performance evaluation) 

动态仿真

        该方式是通过测试序列激励生成器给入待测设计适当的激励,伴随着仿真时间进而判断输出是否符合预期,验证人员需要比较结果和波形来判断测试用例是否通过。

        如果按照激励生成和检查方式,我们可以将动态仿真进一步划分为:

                --定向测试(directed test)

                --随机测试(random test)

                --参考模型检查(reference model check)

                --断言检查(assertion check)

静态检查

        与动态仿真相对的是静态检查,它不需要仿真、波形激励,通过工具的辅助,验证人员即可以发现设计中存在的问题。

        静态检查可以细分更多种类,它们关注的领域也不同,我们将这些方法概括为:

                --语法检查(syntax check)

                --语义检查(linting check)

                --跨时钟域检查(CDC , Cross-clock Domain Check)

                --形式验证(formal verification)

        语义检查和语法检查的区别在于,语法检查主要检查语法是否出现错误,比如例化错误、关键词使用错误等,语义检查在设计可行性上做深入检查的,前提是通过了语法检查。语义检查的工具如Spyglass,可以检查常见的设计错误影响覆盖率收敛的问题、可能会产生X值以及受其影响的设计部分。

         对于跨时钟域的检查,设计中不同的功能模块如果被不同的时钟驱动,那么就会形成不同的时钟域,即如果数据从一个时钟域到另一个时钟域没有做数据同步,那么就可能出现建立时间或保持时间违例而导致逻辑错误。这种跨时钟域问题没法被STA分析到。 通过该方法可以在早期的RTL阶段来识别出跨时钟域的通信电路上面是否有合适的同步处理,所以跨时钟域检查是为了保证所有的CDC信号都能够得到正确的同步,Spyglass就可以支持CDC检查。

        形式验证分为两种:

                等价检查(EC,Equivalence check):用来保证两个电路的行为是等价的,可以用来检查不同抽象级的电路是否一致,例如RTL级和网表。

                属性检查(PC,Property check,又称为模型检查):电路的行为通过验证语言来描述其属性,随后通过静态方式来证明所有状态空间下都满足该条件,否则举出反例来证明设计行为不符合属性描述。    

虚拟模型

        虚拟模型即高抽象的硬件模型,软件模型可依赖虚拟模型在早期开发,并且将反馈交给硬件设计。

        通过虚拟模型,硬件可以更早地获得软件反馈而对设计进行修改。这种软硬件紧密协作的方式有很多优势,比如利用虚拟模型获取的性能数据(带宽等)可以对硬件早期结构提供参考意见,或者判断硬件软件的协同任务是否满足功耗目标。

        目前我们通过多项虚拟建模的技术例如协同设计、协同仿真和验证,试图在早期就可以发现设计缺陷,使得修改这些缺陷可以在相对容易实施的阶段完成。

建模准备:1.芯片定义 2.高级别结构 3.用户用例 4.RTL模块

虚拟模型:1.建模策略 2.将功能描述转化为System C模型 3.将RTL转换为System C模型 4.结构和性能分析。

平台开发:1.虚拟平台 2.结构、性能及功耗报告 3.驱动和固件开发 4.OS、中间件和应用层开发 5.反馈给硬件设计。

硬件加速

        由于仿真速度的限制,一些真实的用例也无法在RTL级仿真很快地呈现结果,这种困难在硅后测试发现问题反馈给硬件团队时更加明显。这意味着硬件团队需要耗时很长的软件进行分析,找到可能的问题,拆分软件场景,进而在硬件仿真上重现。仿真速度的限制使得无法通过仿真在早期测试软件,而这一任务一般交给虚拟模拟型平台或者硬件加速。

        目前业界主要的硬件加速方式分为两种:FPGA和专用的模拟器。模拟器的速度在仿真和FPGA之间,它的特点就是速度比仿真器快的同时还具备软件的特性,可以设置断点查看信号等,更方便debug。

效能验证

        主要针对硅前设计阶段进行效能验证,涉及的流程可分为两个部分

         --功能验证:主要采用PA(Power Aware)主要包括UPF(unified power format)或者CPF(comment power format)方式,通过与仿真器结合,模拟电源域的开关进行设计检查

        --功耗预测与优化:通过第三方功耗分析工具,结合仿真数据(FSDB/VCD/SAIF)进行功耗预测,并给出分析结果。

        功耗节约技术: 

UVM简介

        UVM(Universal Verification Methodology)的验证方法学通过吸取eRM,AVM,OVM,VVM等之前不同的方法学的优点,集众家之所长。

        所有的验证方法学服务目的都在于提供一些可以重用的类来减轻在项目之间水平复用垂直复用的工作量。

        就验证语言System verilog而言,它的面向对象、随机约束、线程通信管理等核心特性,同时这些特性也为建立一个验证环境提供了足够多的便利。

        UVM面向所有数字设计,涵盖了从模块级芯片级,ASICFPGA,以及控制逻辑、数据通路处理器验证的全部场景。

        UVM的类大致可以分为以下几类:

工厂(factory)类、事务(transaction)和序列(sequence)类、结构创建(structure creation)类、环境组件(environment component)类、通信管道(channel)类、信息报告(message report)类、寄存器模型(register model)类、线程同步(thread synchronization)类、事务接口(transaction interface)类。 


http://chatgpt.dhexx.cn/article/TZpRI5C7.shtml

相关文章

用Abp实现两步验证(Two-Factor Authentication,2FA)登录(一):认证模块

文章目录 原理用户验证码校验模块双因素认证模块改写登录项目地址 在之前的博文 用Abp实现短信验证码免密登录(一):短信校验模块 一文中,我们实现了用户验证码校验模块,今天来拓展这个模块,使Abp用户系统支…

用Abp实现两步验证(Two-Factor Authentication,2FA)登录(二):Vue网页端开发

文章目录 发送验证码登录退出登录界面控件获取用户信息功能项目地址 前端代码的框架采用vue.js elementUI 这套较为简单的方式实现,以及typescript语法更方便阅读。 首先添加全局对象: loginForm: 登录表单对象 twoFactorData: 两步验证数据&#xff0…

快速接入Google两步认证Google Authenticator

(一)介绍 既然来看该文章就应该知道Google的两步认证是干什么的,这边再提供一次app的下载链接 (apkpure搜索谷歌身份验证器) 验证原理讲解: 在数据库中查找该登陆用户之前绑定的32位随机码(该码一般会存入数据库)调用API传入32位…

两步验证 非双重认证

Two-factor authentication must be turned on for your Apple ID. After you turn it on, signing into your developer account will require both your password and access to your trusted devices or trusted phone number. 今天Xcode 真机调试, 突然不正常了. 本着热爱…

google账号异步新设备登录需要两次两步验证问题

备注:华为手机,在谷歌三件套插件已经下载的情况下,还是无法收到数字点击验证 先说下现象,比如你的谷歌账号从别人那购买的,然后辅助电话与邮箱已经全部替换成了自己的信息,一般为了安全我们会开启两步验证&…

谷歌两步验证器身份怎么开Authenticator安卓app下载安装方法教程

国内互联网公司一般采取手机收验证码的方式对账号进行身份验证,增强账号的安全性。但是在国外通常采取使用谷歌两步身份验证器 (Google Authenticator),谷歌谷歌两步身份验证器的方便之处主要体现在: 1.在无网络的情况下也可以使用…

如何开发两步验证功能

什么是两步验证 两步验证,是指用户登录账户的时候,除了要输入用户名和密码,还要求用户输入一个动态密码,为帐户添加了一层额外保护。这个动态密码要么是专门的硬件,要么由用户手机APP提供。即使入侵者窃取了用户密码&a…

兩步验证的原理

被盗号 “您的账号密码有误,请重新输入” 小卢盯着电脑屏幕看了5分钟,心里纳闷,昨天还能登录,怎么今天就密码错误了,难不成我被盗号了?想到这里,小卢赶紧给自己的程序员好友小王打电话。 小卢:“小王,我在XX网站的账号被盗了!” 小王:“确定被盗了?赶紧把密码找…

(01)Webrtc::Fec与Nack的二三事

写在前面:要理解Fec与Nack逻辑,我喜欢先从接受端看, 理解了Fec与Nack是如何被使用的,才能更好的明白不同的机制应该怎么用,在什么场合用。 更新丢包逻辑 void PacketBuffer::UpdateMissingPackets(uint16_t seq_num)…

Channel closed; cannot ack/nack

再一次用rabbmitmq的时候遇到了 Channel closed; cannot ack/nack的异常信息,这个可能是因为rabbmitmq默认的模式是自动ack,我没有配置手动ack 然后在代码里又basicack了。 MessageProperties properties message.getMessageProperties();l…

简述WebRTC中的丢包重传Nack的实现

一 简述 接收端发现序列号不连续,发送RTCP FB Nack包,发送端从历史队列中查找该包,再发送RTP包,但WebRTC用的RTX重发该包,ssrc和原视频流不同,pt也不同。 artpmap:96 H264/90000 artcp-fb:96 goog-remb a…

WEBRTC浅析(五)视频Nack包的发送判断逻辑以及数据流

这篇文章是对webrtc 中Nack包发送机制的梳理,主要包括三个部分: 第一部分,介绍RTCP包中,Nack包的规范。 第二部分,介绍在WEBRTC中,Nack发送机制的数据流程图。 第三部分,介绍在WEBRTC中&#xf…

RabbitMQ的ack和nack机制

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、ACK机制二、主动ACK三、手动ACK四、Nack机制五、MQ unack的影响总结 前言 本文主要讨论RabbitMQ消费者的ack和nack机制,并且关注ack和nack使用…

RTCP 协议的 NACK 报文

接收方定时把所有未收到的包序号通过反馈报文通知到发送方进行重传。 相对 ARQ带来的改进:减少的反馈包的频率和带宽占用,同时也能比较及时地通知发送方进行丢包重传。 NACK 报文的定义在 [rfc4585] 文档中定义。 RTCP 的反馈报文包头定义如下&#x…

webrtc nack实现原理

1.nack 简介 webrtc 中nack是最基本的QOS策略,与ack机制不同的地方是nack是接收端检测到丢包时,告知发送端具体丢包的序号,接收端收到nack后从缓存中找到对应的包并发送出去。 2. nack实现 nack rtcp报文格式如上图所示,pt205。P…

webrtc QOS方法一(NACK实现)

一:概述 NACK则在接收端检测到数据丢包后,发送NACK报文到发送端;发送端根据NACK报文中的序列号,在发送缓冲区找到对应的数据包,重新发送到接收端。NACK需要发送端发送缓冲区的支持,RFC5104[2]定义NACK数据包…

认识网络通信中的 ACK、NACK 和 REX

ACK、NACK、 REX在面试或者网络通信的时候,我们可能经常听到和遇到。今天就来详细介绍一下ACK、NACK、 REX。 认识ACK、NACK、 REX ACK:Acknowledgement,它是一种正向反馈,接收方收到数据后回复消息告知发送方。NACK&#xff1a…

WebRTC之NACK、RTX 在什么时机判断丢包发送NACK请求和RTX丢包重传

WebRTC之NACK、RTX 在什么时机判断丢包发送NACK请求和RTX丢包重传 WebRTC之NACK、RTX 在什么时机判断丢包发送NACK请求和RTX丢包重传 WebRTC之NACK、RTX 在什么时机判断丢包发送NACK请求和RTX丢包重传前言一、NACK与RTX的作用1、NACK/RTX的工作机制的流程图2、NACK/RTX涉及到的…

WebRTC 的音频弱网对抗之 NACK

本文梳理 WebRTC 的音频弱网对抗中的 NACK 机制的实现。音频的 NACK 机制在 WebRTC 中默认是关闭的,本文会介绍开启 NACK 机制的方法。 在网络数据传输中,NACK (NAK,negative acknowledgment,not acknowledged) 是数据接收端主动…

流媒体弱网优化之路(NACK)——纯NACK方案的优化探索

流媒体弱网优化之路(NACK)——纯NACK方案的优化探索 —— 我正在的github给大家开发一个用于做实验的项目 —— github.com/qw225967/Bifrost目标:可以让大家熟悉各类Qos能力、带宽估计能力,提供每个环节关键参数调节接口并实现一个json全配置&#xff…