验证的方法

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

一、概述

  • 在开展验证时有一整套的工具箱,根据设计的特点选用不同的验证方法,最终取得满意的效果。
  • 实际的验证工作中,需要通过多种语言、方法、工具实现验证,比如仿真验证会协同形式验证一同来完善功能覆盖率,也有可能通过语言和脚本之间的整合来最终完成一项验证流程。
  • 目前的阶段,已经无法依赖单一的工具、语言或者方法来达到验证的完备性。

二、主要方法分类

1、动态仿真

  • 该方式是通过测试序列激励生成器给入待测设计适当的激励,伴随着仿真时间,进而判断输出是否符合预期。
  • 需要仿真器配合,比较结果和仿真波形,最终判定测试用例是否通过。
  • 按照激励生成方式和检查方法,可以将动态仿真进一步划分为定向测试随机测试参考模型检查断言检查

2、静态检查

不需要仿真、波形激励,通过工具的辅助即可发现设计中存在的问题。

语法检查:
  • 如大多数编译器自带的功能一样,验证工具一旦需要建立模型,无论是针对动态仿真还是静态检查,都需编译器对目标语言提供语法检查。
  • 仿真编译器会帮助检查语法错误,如拼写、声明、引用、例化、连接、定义等等常见的语法错误。
  • 不同的仿真工具对于语言标准的解释也可能存在偏差。
语义检查:
  • 语义检查是在设计可行性上做深入检查的。
  • 语义检查是通过专用的工具来协助完成的,语义检查包括的范围有常见的设计错误、影响覆盖率收敛的问题、可能会产生X值以及受其影响的设计部分。
  • 静态检查可以在早期发现一些功能实现以外的设计问题,而且有助于完善设计代码,以便提高有效覆盖率以及RTL与网表的逻辑一致性(例如寄存器未初始化或者固定赋值)。
跨时钟域检查:
  • 大多数复杂的设计都拥有不止一个时钟,多个时钟之间也常表现为异步地关系,对于设计中的不同功能模块如果被不同的时钟驱动,那么就会形成不同的时钟域
  • 对于单一时钟域的模块而言,它的设计方式和验证环境都较为简单。拥有多时钟域的硬件,它的跨时钟域的逻辑通讯就需要考虑同步的问题。
  • 之所以需要考虑到不同时钟域的信号采样问题,是因为当时钟域A的信号进入时钟域B被采样时,每个周期都会有相对时钟B不同的延迟,这种随机性可能会导致建立时间或者保持时间无法满足,进而导致不可预期的功能失败。
  • 跨时钟域问题无法通过常规的验证方法分析,例如动态仿真,也不能被静态时序分析判断出来。
  • 跨时钟域检查方法可以在早期的RTL阶段来识别出跨时钟域的通信电路上面是否有合适的同步处理,所以跨时钟域(CDC)就是为了保证所有CDC信号都能够得到正确的同步
形式验证:
  • 等价检查(EC):用来保证两个电路的行为是等价的,可以用来检查不同抽象级的电路是否一致,例如RTL级和网表。
  • 属性检查(PC):又称为模型检查(MC)。电路的行为通过验证语言来描述其属性,随后通过静态方式来证明在所有状态空间下都满足该条件,否则举出反例来证明设计行为不符合属性描述。

3、虚拟模型

  • 虚拟模型即高抽象级硬件模型软件模型可依赖虚拟模型在早期开发,并且将反馈交给硬件设计。
  • 通过虚拟模型,硬件可以更早地获取软件反馈对设计进行修改。这种硬件和软件更紧密的协作方式,可以贡献体现更多的优势,例如利用虚拟模型获取的性能数据可以对硬件早期结构提供参考意见,或者判断硬件和软件的协同任务是否可以满足功耗目标。
  • 在目前多核的手机移动平台上,一个增长的需求就是将不同的任务合理分配到多核上面来取得更好的性能,而这种软件层面的评估就可以在虚拟建模阶段完成。
  • 通过多项虚拟建模的技术,例如协同设计协同仿真和验证,在早期就可以发现设计缺陷,使得修改这些缺陷可以在相对容易实施的阶段完成。
    在这里插入图片描述

4、硬件加速

  • SoC的设计体量越来越大,仿真速度成为制约验证进度的重要障碍。
  • 由于仿真速度的限制,一些真实的用例也无法在RTL级仿真很快地呈现结果。硬件团队需要将耗时很长的软件进行分析。
  • 一般需要等到硬件设计初步稳定,进而将其映射到可配置的硬件加速平台上面,这种方式相比于RTL仿真速度已经有了质的提升
  • 目前硬件加速方式分为两种,即FPGA专用的模拟器
  • FPGA主要是为了软件开发提供平台,而模拟器是为了硬件和软件协同验证和整个系统的测试。

5、效能验证

移动时代,硬件提升性能的方式:

  • 提升原有处理器性能、存储器空间、数据总线带宽或者采取多核处理方式。
  • 增加额外的协处理器,或者新的功能模块(例如Video/GPU单元)。
  • 在后端允许的情况下提高工作时钟频率。
  • 提升工艺流程。

随着性能的提升,能耗也会逐步提高。主要针对硅前设计阶段进行效能验证,涉及的流程可分为两个部分:

  • 功能验证:主要采用PA(主要包括有UPF或者CPF)方式,提高与仿真器结合模拟电源域的开关进行设计检查。
  • 功耗预测与优化:通过第三方功耗分析工具结合仿真数据,进行功耗预测,并且给出分析结果

技能技术
在这里插入图片描述

6、性能验证

  • 性能验证中离不开大量的运算或者数据传输
  • 在产品定义过程中,对于系统的运算和数据传输都有要求,如果可以在产品实现阶段尽早地得出一些性能有关数据,不但可以帮助提前验证硬件性能是否满足要求,在进度允许的情况下还可以修改硬件设计完善其性能。
  • 这种将性能测试提前的方式也可以使得硅前验证硅后测试采用一致的测试用例,从而得出可比对的性能数据
  • 性能验证是用来衡量一个系统在特定工作负载下它的响应能力稳定性,同时性能报告也可以用来分析和优化系统的质量标准,例如可靠性和资源使用能力。
  • 性能验证是一门实用的计算机科学工程方法,在软件工程测试中分类较多,譬如有负载测试、压力测试、浸泡测试、尖峰冲击测试、配置测试、隔断测试等。

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

相关文章

两步验证: 使用Python接入Google Authentiator

Google Authenticator 文章目录 Google Authenticator简介原理HOTPTOTP 实现生成密钥计算时间片HMAC-SHA1运算生成二维码校验 使用参考资料 简介 用户常常会在不同的网站使用相同的密码,一但一个网站账户的密码泄露,就会危及到其它使用相同密码的账户。…

用Abp实现两步验证(Two-Factor Authentication,2FA)登录(三):免登录验证

文章目录 原理修改请求报文配置JwtBearerOptions生成Token校验Token修改认证EndPoint修改前端登录登出 最终效果项目地址 免登录验证是用户在首次两步验证通过后,在常用的设备(浏览器)中,在一定时间内不需要再次输入验证码直接登录…

两步教你在Vue中设置登录验证拦截!

Hello,你好呀,我是灰小猿,一个超会写bug的程序猿! 今天在做vue和springboot交互的一个项目的时候,想要基于前端实现一些只有登录验证之后才能访问某些页面的操作,所以在这里总结一下实现该功能的一个解决方…

HTTPS实战之单向验证和双向验证

(全文太长,太懒不想看,-_-b 那就直接拉到底部看总结 ) 前面的文章中,提到了,https是在TCP协议与http之间加了一个控制安全传输的SSL协议,也就是说,直接运行在TCP之上的HTTP是普通的…

验证基础-验证方法

目录 动态仿真 静态检查 虚拟模型 硬件加速 效能验证 UVM简介 验证的方法主要分为六种: ※ 动态仿真(dynamic simulation) ※ 静态检查(formal check) ※ 虚拟模型(virtual prototype) ※…

用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…