SV芯片验证之验证环境

这篇具有很好参考价值的文章主要介绍了SV芯片验证之验证环境。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

声明:本内容来自于学习路科验证发布在B站上的免费视频课程后的笔记

一、验证平台testbench

它是整个验证系统的总称,包括:

1、验证结构中的各个组件、组件之间的连接关系、测试平台的配置和控制;

2、编译仿真的流程、结果分析报告和覆盖率检查;

我们主要关注验证平台的结构和组件部分,因为它们会为待测的硬件设计(DUT)提供所需要的各种激励输入,同时也会检查待测硬件设计的功能。

编译compile分为两步:

第一步,编译DUT的RTL文件;

第二步,编译测试平台的TB文件。

sv验证,SystemVerilog,fpga开发

总结:

1、测试平台中的各个验证组件之间相互独立,但需要进行通信;

2、所有的验证平台的验证组件与待测设计DUT之间的连接都是通过接口interface连接的;

3、验证平台中的某些验证组件也需要时钟和复位信号的驱动,比如stimulator、Monitor。

模块级module level和子系统级sub-system level主要用SV和UVM,而到了系统级system level则主要用C。

二、验证环境组件

1、激励发生器stimulator:

也被称为驱动器driver,总线功能模型BFM(bus function model),行为模型behavioral或者发生器generator。

1)它的作用是模拟与待测硬件设计DUT相邻设计的接口协议

我们关注的是如何模拟接口信号,使之能以真实的接口协议来发送激励给DUT。因此,stimulator不能违反该接口协议,但它也不被限制在真实的硬件所规定的行为里(也就是说,只要不违反接口协议,就可以不按照真实的硬件规定来发送激励信号,比如真实的硬件接收激励信号时需要按照一定的频率,信号不连续等来接收),这样就能制造出更多的协议所允许的激励场景来验证DUT,也能验证DUT能否支持更多的接口协议。

这种提供比真实的硬件行为更丰富的激励信号,会让模块级module level的验证更充分,因为它不但验证了硬件接口对普通接口协议的适配场景,还模拟出了更复杂、在更高系统级别无法产生出来的一些场景。

2)它的接口主要同DUT连接,因而它也应该具备时钟和复位(clock/reset)的输入,以此来确保它所生成的数据和DUT接口一侧保持同步的关系。

注:它不是向DUT的内部信号发送激励,它不能修改DUT的内部行为,DUT的内部行为由它本身的各种逻辑综合后来决定的。

3)有些精细的stimulator也有其它的配置接口用来控制接口的数据生成,比如数据的内容。

4)它也可以由存储接口数据并生成历史的功能,这样在仿真运行时或者结束后查看接口数据,方便做统计或者调试。

5)我们可以将stimulator进一步分成以下两种:

发起器initiator:主动发起接口数据传输;

响应器responder:对接口数据的发送请求做出响应(反馈),它本身不会主动发送数据。

2、监测器monitor

它是用来观察DUT的边界或者内部信号,然后将其打包整理后传送给验证平台的其它组件,如比较器checker。

1)观察DUT边界信号:对于系统信号如时钟,可以监测它的频率变化;对于总线信号,可以监测它的传输类型和数据内容,以及检查总线时序是否符合协议(激励发送端的协议有问题,还是DUT本身反馈回的协议有问题)。

2)观察DUT内部信号:从灰盒验证来看,需要探视DUT的内部信号,以此来指导stimulator的激励发送,或者完成覆盖率收集,又或者完成内部功能的检查。

灰盒验证:以黑盒验证的观察边界信号输入输出为主,白盒验证的观察内部关键信号为辅。

验证过程中,应该尽量少地去观察内部信号,而且应该是观察表示状态的信号。观察采集的中间变量信号,它们的时序、逻辑以及留存性(信号保持同一状态?)都不稳定,因而会对验证环境的收敛有害。

 可以通过接口信息计算预测出来的,也应尽量少的去监测内部信号,因为这种方式有悖于假定设计有缺陷的验证思想。我们观测到的内部信号在被环境采纳之前也有必要确认它们的逻辑正确性,这一要求可以通过动态检查或者断言触发的方式来实现。

模块的边界信号变化比较少,内部信号则变化很频繁。

Monitor不可以从stimulator直接获取激励数据,而应该从interface获取数据,因为这样监测到的数据会更准确,比如stimulator发送了一个激励信号,但这个信号不满足接口协议,如果monitor直接从stimulator获取激励信号的话,它就不知道这个信号是否满足接口协议。

 

3、比较器checker

1)它主要负责功能检查和模拟硬件设计行为(参考模型reference model)。

2)会缓存从各个monitor收集到的数据。

3)我们需要checker分析DUT的边界激励,理解数据的输入,并且按照硬件功能来预测输出的数据内容,得到期望数据。这种预测的过程,就发生再reference model中,因此,checker也会被称为predictor。

4)参考模型reference model扮演了模拟硬件功能的角色,它会内置一些缓存,存放monitor从DUT输入端观察到的数据经过功能转换后的期望数据(checker将DUT输入接口侧的数据汇集到内置的参考模型上,按照它所理解的硬件功能进行一定转换后得到期望数据)。

checker也有缓存来存放从输出端采集到的数据这样通过数据比较,检查实际从DUT输出端接口收集到的数据是否同RM(reference model)的期望数据一致。

对于DUT内部的关键功能模块,也有相对应的线程进行独立的检查

在检查过程中,可以将检查成功的信息统一纳入到检查报告中,便于仿真后的追溯;如果检查失败,可以暂停仿真同时报告错误信息,进行在线调试。

线上比较(online check):在仿真时边收集数据边比较,并产生实时报告。

线下比较(offline check):将仿真是收集到的数据记录在文件中,仿真结束后,通过脚本或者其它手段进行数据比较。文章来源地址https://www.toymoban.com/news/detail-594020.html

到了这里,关于SV芯片验证之验证环境的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SV重要知识点

    1、#、wait、@三者的区别: 1)关于‘#’ a. 后面可以添加单位时间的耗时语句 b. 后面添加()可以传递参数 2)wait跟@的区别是: @是边沿敏感触发,而wait是电平敏感触发 wait只等待一次,@每时每刻都在等待(不在always限制下) 如何打印各种类型的变量? 结构体指针:%p 八、

    2023年04月12日
    浏览(40)
  • sv,verilog

    在 Verilog 中,敏感列表(Sensitive List)指的是在 always 语句块中使用时钟信号的列表。敏感列表用于指定 always 块所监控的输入信号,在这些信号状态发生变化时, always 块会被触发执行。 在 Verilog 中, always 块有两种敏感列表: 电平敏感列表(Level-Sensitive List):较早的 Ver

    2024年02月04日
    浏览(35)
  • (十二)SV的断言

    断言又被称为监视器或者检验器,在设计验证流程中被广泛使用, 用于描述设计的属(property),可以完美地描述时序相关的状况,用于描述设计期望的行为,从而检验设计实际行为是否与设计意图相符 ,如果允许的设计属性不符合我们的期望,则断言失败;如果被禁止的设计

    2024年02月09日
    浏览(36)
  • SV学习——数据类型(1)

    SV中引入新的数据类型logic,SV作为侧重于验证的语言,并不十分关切logic对应的逻辑应该被综合位寄存器还是线网,因为logic被使用的场景如果是验证环境,那么它只会作为单纯的变量进行赋值操作。 引入的一个新的四态数据类型logic,可以代替reg;但是不能用在双总线和多驱

    2024年01月21日
    浏览(33)
  • SV中的clocking时钟块

    采样时发生竞争 (delta cycle的存在),会导致采样数据错误。为了避免在RTL仿真中发生信号竞争的问题,建议通过非阻塞赋值或者特定的信号延迟来解决同步问题。这里我们介绍使用 clocking时钟块 来决定信号的驱动和采样的方式。 在RTL仿真时,由于无法确定具体电路的延迟

    2024年02月15日
    浏览(38)
  • SV-298XT IP网络广播板 SV-298XT-共公广播音频模块IP网络广播板

    SV-298XT IP网络广播板 SV-298XT-共公广播音频模块IP网络广播板 SV-298XT网络广播模块是一款全数字网络型广播模组,核心部分采用了成熟的私有协议解决方案,性能稳定可靠。支持TCP、UDP、组播协议能针对当前服务器中不同的广播任务设置不同的广播传输方式。以太网传输可实现

    2024年01月15日
    浏览(39)
  • Soem配置汇川SV660N

    本文已参与「开源摘星计划」,欢迎正在阅读的你加入。活动链接:https://github.com/weopenprojects/WeOpen-Star​​​​​​​ 目录 1. ETherCAT 状态机 2. SOEM配置过程 2.1 IP初始态转预运行 2.2 预运行转安全运行 2.3 安全运行转运行 2.4 运行状态 EtherCAT 设备必须支持4 种状态,负责协调主

    2024年02月04日
    浏览(41)
  • SV学习——数据类型(第二章)

    verilog有1995和2001版本,而SV是verilog的延伸,SV发布的时候直接就是3.0,之后可能不再存在verilog,而是统一用SV。SV是完全兼容verilog的。verilog文件以.v结尾,SV文件以.sv结尾。语法是全部兼容的,SV是verilog的扩展和延伸。 verilog中有reg和wire两种数据类型,都是四值逻辑 0,1,x,

    2024年02月10日
    浏览(75)
  • 【system verilog】SV Assertion 断言

    SystemVerilog Assertion(SVA)–断言 一言以蔽之:断言是设计属性的描述。 如果一个在模拟中被检查的属性(property)不像我们期望的那样表现,那么这个断言失败。 如果一个被禁止在设计中出现的属性在模拟过程中发生,那么这个断言失败。 一系列的属性可以从设计的功能描述中推

    2024年02月16日
    浏览(38)
  • (三)SV结构体、枚举类型、字符串

    1、SV结构体与C语言中结构体对应 说明: student:结构体类型名,可以忽略不写的 student1, student2:结构体变量名 内部的变量:成员变量名   但常常用typedef来新定义类型,就是对其他类型取别名,方便定义变量 ,例如:  typedef struct {bit [7:0] r, g, b;} pixel_s1;//pixel_s就是对struct {bit

    2024年02月15日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包