V0 第11节 验证环境组件

2023-12-10 19:39
文章标签 组件 环境 验证 v0

本文主要是介绍V0 第11节 验证环境组件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 激励发生器

  • Simulator (激励发生器)是验证环境的重要部件,在一些场合中,它被称为driver(驱动器)、BFM(bus function model,总线功能模型),behavioral(行为模型) 或者 generator(发生器)
  • Simulator的主要职责是模拟与DUT相邻设计的接口协议,只需要关注如何模拟接口信号,使其能够以真实的接口协议来发送激励给DUT
  • Simulator 不应该违反协议,但不拘束于真实的硬件行为,还可以给出丰富的只要协议允许的激励场景
  • 比真实硬件行为更丰富的激励,会使得在模块级的验证更加充分,因为它不但可以验证硬件普通的接口时序,还模拟出更多复杂的、在更高系统级别无法产生出来的激励场景
  • Simulator的接口主要是同DUT连接,此外,也有时钟和复位信号的输入,确保生成的数据同DUT的接口一侧是同步的关系
  • Simulator还可以有其它的配置接口用来控制接口数据的生成
  • Simulator也可以有存储接口数据生成历史功能,这可以用来在仿真运行时或者结束后查看接口数据,方便统计或者调试

1.1 激励器组件结构框图

在这里插入图片描述

1.2 Channel Initiator 组件

  • 从simulator同DUT的连接关系来看,我们可以将其进一步分为两种:initiator(发起器)和responder(响应器)
  • 由于channel 从端接口协议上有握手信号,我们需要遵照接口时序,确保chx_ready为低时,保证chx_data和chx_valid保持不变
  • 相邻数据之间没有数据包的限制,所以相邻数据之间的关系较弱,但也应该考虑数据之间是否有空闲周期,以及整体数据的传输速率设定
  • 由于每一个数据从端都有对应的FIFO缓存数据,所以也需要考虑如何使得FIFO的状态可遍历,例如,典型的FIFO状态可以分为empty,full以及中间状态即有数据存储但未写满,要使得FIFO可以触发这些状态,我们就应该控制channel initiator的传输速率

2.监测器

  • Monitor (监测器)的主要功能是用来观察DUT的边界或者内部信号,并且级过打包整理传送给其它验证平台的组件例如checker 比较器
  • 从监测信号的层次来划分monitor的功能,它们可以分为观察DUT边界信号和观察DUT内部信号

2.1 监测器组件结构框图

在这里插入图片描述

  • 如果没有特殊的需要,我们应采取灰盒验证的策略(非白盒)
  • 观察的内部信号应当尽量少,且应当是表示状态的信号,不建议采集中间变量信号的原因在于,这些信号的时序,逻辑甚留存性都不稳定, 这种不稳定对于验证环境的收敛是有害的

3. 比较器

  • 无论是从实现难度,还是从维护人力上来讲,checker(比较器)都应当是最需要时间投入的验证组件
  • checker肩负了模拟设计行为和功能检查的任务
  • 缓存从各个monitor收集到的数据
  • 将DUT输入接口侧的数据汇集给内置的reference model(参考模型)reference model 在这里扮演了模拟硬件功能的角色,也是需要较多精力维护的部分,因为验证者需要在熟悉硬件功能的情况下实现该模型,而又不应参考真实硬件的逻辑
  • 通过数据比较的方法,检查实际收集到的DUT输出端接口数据是否同reference model产生的期望数据一致
  • 对于设计内部的关键功能模块,也有相对应的线程进行独立的检查
  • 在检查过程中,可以将检查成功的信息统一纳入到检查报告中,便于仿真后的查询,如果检查失败,也可以采取暂停仿真同时报告错误信息的方式,进行在线调试
  • 线上比较 online check:在仿真时收集数据和在线比较,并且实时报告
  • 线下比较 offline check: 将仿真时收集到的数据记录在文件中,在仿真结束后,通过脚本进行数据比较
    在这里插入图片描述

3.1 比较器组件结构框图

在这里插入图片描述

3.2 比较器实现建议

  • 对于复杂的系统验证,我们倾向于集中管理simulator和checker,因为它们两都都需要主动给出激励或者判断结果,也需要较多的协调处理
  • simulator和monitor是一一对应的,我们通常将它们进一步封装在agent单元组件中,而checker则最终集群搁置在中收化的位置

这篇关于V0 第11节 验证环境组件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/478148

相关文章

Java中的Opencv简介与开发环境部署方法

《Java中的Opencv简介与开发环境部署方法》OpenCV是一个开源的计算机视觉和图像处理库,提供了丰富的图像处理算法和工具,它支持多种图像处理和计算机视觉算法,可以用于物体识别与跟踪、图像分割与... 目录1.Opencv简介Opencv的应用2.Java使用OpenCV进行图像操作opencv安装j

mysql-8.0.30压缩包版安装和配置MySQL环境过程

《mysql-8.0.30压缩包版安装和配置MySQL环境过程》该文章介绍了如何在Windows系统中下载、安装和配置MySQL数据库,包括下载地址、解压文件、创建和配置my.ini文件、设置环境变量... 目录压缩包安装配置下载配置环境变量下载和初始化总结压缩包安装配置下载下载地址:https://d

将Python应用部署到生产环境的小技巧分享

《将Python应用部署到生产环境的小技巧分享》文章主要讲述了在将Python应用程序部署到生产环境之前,需要进行的准备工作和最佳实践,包括心态调整、代码审查、测试覆盖率提升、配置文件优化、日志记录完... 目录部署前夜:从开发到生产的心理准备与检查清单环境搭建:打造稳固的应用运行平台自动化流水线:让部署像

vue解决子组件样式覆盖问题scoped deep

《vue解决子组件样式覆盖问题scopeddeep》文章主要介绍了在Vue项目中处理全局样式和局部样式的方法,包括使用scoped属性和深度选择器(/deep/)来覆盖子组件的样式,作者建议所有组件... 目录前言scoped分析deep分析使用总结所有组件必须加scoped父组件覆盖子组件使用deep前言

基于Qt Qml实现时间轴组件

《基于QtQml实现时间轴组件》时间轴组件是现代用户界面中常见的元素,用于按时间顺序展示事件,本文主要为大家详细介绍了如何使用Qml实现一个简单的时间轴组件,需要的可以参考下... 目录写在前面效果图组件概述实现细节1. 组件结构2. 属性定义3. 数据模型4. 事件项的添加和排序5. 事件项的渲染如何使用

gradle安装和环境配置全过程

《gradle安装和环境配置全过程》本文介绍了如何安装和配置Gradle环境,包括下载Gradle、配置环境变量、测试Gradle以及在IntelliJIDEA中配置Gradle... 目录gradle安装和环境配置1 下载GRADLE2 环境变量配置3 测试gradle4 设置gradle初始化文件5 i

Java汇编源码如何查看环境搭建

《Java汇编源码如何查看环境搭建》:本文主要介绍如何在IntelliJIDEA开发环境中搭建字节码和汇编环境,以便更好地进行代码调优和JVM学习,首先,介绍了如何配置IntelliJIDEA以方... 目录一、简介二、在IDEA开发环境中搭建汇编环境2.1 在IDEA中搭建字节码查看环境2.1.1 搭建步

在 VSCode 中配置 C++ 开发环境的详细教程

《在VSCode中配置C++开发环境的详细教程》本文详细介绍了如何在VisualStudioCode(VSCode)中配置C++开发环境,包括安装必要的工具、配置编译器、设置调试环境等步骤,通... 目录如何在 VSCode 中配置 C++ 开发环境:详细教程1. 什么是 VSCode?2. 安装 VSCo

鸿蒙开发搭建flutter适配的开发环境

《鸿蒙开发搭建flutter适配的开发环境》文章详细介绍了在Windows系统上如何创建和运行鸿蒙Flutter项目,包括使用flutterdoctor检测环境、创建项目、编译HAP包以及在真机上运... 目录环境搭建创建运行项目打包项目总结环境搭建1.安装 DevEco Studio NEXT IDE

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica