uvm之寄存器模型

2023-11-09

寄存器模型的意义

寄存器模型,字面理解,跟参考模型类似。就是为工程里的寄存器提供一个参考模型。
这个模型里,包括各个寄存器字段描述、寄存器、寄存器组、寄存器地址映射等信息。

有如下好处:

  • 寄存器模型建立的目的,初始目的,是为了验证寄存器配置过程的。
  • uvm里提供内置sequence,可以实现后门访问的路径检查、寄存器初始值的检查、寄存器读写属性的检查等。
  • 寄存器模型里,有一套标准的访问接口,暂且叫做reg接口;可以通过uvm_adapter实现apb到reg的接口转换,以及reg到apb的接口转换。ps:其中apb是apb协议的事务接口,而非apb协议的信号接口。
  • 增加了后门访问机制。带来的好处是,不消耗仿真时间;提供直接访问hdl path的方式,而非DUT apb接口信号方式,所以能够做的事情更多,比如强制改变某寄存器的初始值等。
  • 寄存器模型,可以跟寄存器描述文档对应。所以,可以根据寄存器模型,更新寄存器描述文档;又或者根据寄存器描述文档,更新寄存器模型。最终实现,寄存器描述文档与设计代码的准确对应。
  • 有了寄存器模型,任意uvm_component都可以很方便的获取寄存器的状态值。比如reference model组件。

寄存器模型的搭建

  • reg_model的定义
    • uvm_reg的定义
      • uvm_reg_field,寄存器字段的实例化
      • reg_field的configure
    • uvm_reg_block的定义
    • uvm_reg,寄存器的实例化
      • reg的configure
      • build
      • default_map,地址映射
  • uvm_adapter的定义

    • reg2bus
    • bus2reg
  • base_test的定义

    • reg_model的实例化以及初始化【为什么不在env里实例化?个人理解,reg_model的实例化需要紧接初始化步骤,初始化的步骤,更适合放在base_test里。好像uvm实战里,在uvm_env层次里定义了reg_model的指针,全局系统里,都是利用uvm_env里的这个reg_model指针进行的connect;有了这一步骤,使得reg_model看起来是uvm_env层次下的一个组件。】【reg_model为什么不是uvm树形结构的组件?因为它没有在env里实例化。:)】
    • adapter实例化
    • 寄存器模型的default_map在uvm验证环境方面的设置
    • 寄存器模型在base_test和sequencer做connect_phase的连接。
  • virtual sequence
    寄存器的写操作,一般都在virtual sequence里发起。当然,virtual sequence也可以发起寄存器的读操作。
    • uvm_reg_mem_hdl_paths_seq(需要后门访问)
    • uvm_reg_hw_reset_seq
    • uvm_reg_access_seq(需要后门访问)
    • p_sequencer.p_rm.rab_ctrl.write(status,32’hffffffff,UVM_FRONTDOOR);
      p_sequencer.p_rm.rab_ctrl.read(status,value,UVM_FRONTDOOR);
  • 其它组件访问寄存器,主要是发起寄存器的读操作。比如reference model
    • uvm_reg不需要实例化,提供一个指针即可。当然,在uvm_env层次里,要定义该指针与virtual sequencer之间的连接(实际上采取了两步骤,第一步骤,指针与reg_model实例的build_phase挂接;第二步骤,reg_model实例与virtual sequencer之间的connect_phase连接)。
    • p_rm.rab_ctrl.read(status,value,UVM_FRONTDOOR);
  • 上述步骤,实现了reg_model的前门访问。至于后门访问,是通过7.3.5章节实现的。

寄存器模型的FAQ

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

uvm之寄存器模型 的相关文章

  • 验证平台,SV 和UVM

    验证 是确保设计和预定的设计期望一致的过程 验证平台 xff1a 被用来应用一个或多个测试激励 xff0c 并将激励发送到设计的输入中 xff0c 激励可通过验证平台产生 xff0c 或者通过手动创建 最后 xff0c 输出进行比较 xff
  • UVM的构造函数new的个人理解

    构造函数new 自己总结的规律 理解 结合UVM实战这本书的阅读理解 归纳一下自己对new函数的个人理解 只是书本前几章阅读后的认知 还不能完善 在此只为记录防丢失 构造函数new 一般类的实例化 包含类的声明和类的构造 比如 my dri
  • UVM中的phase机制

    5 1 phase机制 5 1 1 task phase与function phase UVM中的phase 按照其是否消耗仿真时间 time打印出的时间 的特性 可以分成两大类 一类是function phase 如build phase
  • vcs覆盖率选项

    vcs中常用的收集覆盖率选项如下 1 cm dir
  • 说一说system verilog内建函数$value$plusargs()

    在学习system verilog的时候遇到了一个长的很奇怪的函数 奇怪到啥程度 别的函数都是一个 xxx 这个函数一次来了两个 长的虽然奇怪 但是这个函数的作用很大 首先看一下它的基本格式 value plusargs user stri
  • DUT处理延迟 对Monitor采数和验证环境结束机制的影响分析

    1 问题背景 一句话描述 验证环境中 当激励完成发送时 由于DUT存在处理延迟 monitor在延迟一段时间后才能采集到DUT完整的输出 如何设计验证环境的结束机制 此处的验证环境结束机制 可以认为是main phase的结束控制 但并不单
  • 如何在父uvm_transaction中随机及例化子的uvm_transaction

    Use Case AXI DMA控制器有128个独立的通道 可以并行进行读写操作 首先我们对AXI DMA控制器的top level的事务进行建模 如下 class axi dmac transaction extends uvm tran
  • sequence_item、sequence、sequencer、driver的关系

    框图 简单描述 driver sequencer sequence sequence item 细节理解 最初的验证平台只需要driver即可为什么还需要sequence机制 sequence机制的内部协议 sequence还有很多细节需要
  • uvm_info信息定制

    1 uvm自带的打印信息国语繁重 不利于debug uvm info TESTCASE sformatf my case0 new UVM DEBUG UVM INFO home zl Desktop uvm study template
  • uvm之寄存器模型

    寄存器模型的意义 寄存器模型的搭建 寄存器模型的FAQ 寄存器模型的意义 寄存器模型 字面理解 跟参考模型类似 就是为工程里的寄存器提供一个参考模型 这个模型里 包括各个寄存器字段描述 寄存器 寄存器组 寄存器地址映射等信息 有如下好处 寄
  • UVM::phase的run order

    1 build time bulid connect end of elaboration 2 run time start of simulation run run有分为 pre reset reset post reset pre c
  • UVM环境(env)树形结构

    UVM验证环境的组成 sequencer 负责将数据转给 driver driver 负责数据的 发送 driver 有时钟 时序的概念 agent 其实只是简单的把 driver monitor 和 sequencer 封装在一起 age
  • UVM 寄存器内建测试序列(built-in sequences)

    原文链接 https blog csdn net qq 42419590 article details 121487295 UVM 寄存器内建测试序列 built in sequences 不少有经验的UVM用户可能会忽略UVM针对寄存器
  • Verdi之nTrace/nSchema

    目录 3 nTrace介绍 3 1 启动Verdi 3 2查看Verdi中的设计结构 3 3查看Verdi中的验证结构 3 4 查找模块和trace信号 3 5 查找string 3 6 信号drive load 3 7 快速查看设计有哪些
  • 验证网站列表,持续更新中...

    verificationacademy com verificationguide com chipverify com https www runoob com w3cnote verilog2 sdf html https www th
  • 电力电子转战数字IC——我的IC面试(2022.10.14更新)

    目录 感谢信 HKWS10 14面试 25mins JXC10 13面试 30mins JDSK9 23面试 42mins 快速的自我介绍 介绍一下这个MCDF的项目 你这里写SV搭建的验证环境 和UVM搭建的有什么区别吗 你这里写了覆盖率
  • uvm的config_db

    config db 是用于在各个uvm对象里传递参数 一般参数类型 是interface int等 据说参数必须是静态类型 这个可以在uvm config db相关代码里确认 后来知道 config db还能设置sequence和seque
  • SV 或 UVM 中的正则表达式

    我需要调用哪些函数才能在 Systemverilog UVM 中使用正则表达式 注意 我不是问如何使用正则表达式 只是问方法名称 首先 如果您想使用正则表达式 您需要确保您使用的是与其 DPI 代码一起编译的 UVM 库 即UVM NO D
  • UVM 测试平台 - 将两个不同驱动程序连接到同一接口的“UVM”方式是什么?

    在我的测试平台中 我有一个需要驱动的接口 该接口可以以两种不同的模式驱动 每种模式都有自己的驱动程序协议和事务类型 到目前为止 我已经分别设计了两个 uvm agents 现在 我需要一种方法来交换其中一个或另一个 具体取决于我正在运行的测
  • 从测试台访问 uvm_config_db 的最佳方式?

    我想在我的顶级测试平台中创建一个时钟 其周期可以通过测试进行控制 我所做的是将周期设置到 uvm config db 中并将其返回到测试台中 我必须输入 1 以确保构建阶段已完成 否则 get 返回错误值 module testbench

随机推荐

  • 计算机网络(数据链路层、帧的概念、透明传输、差错检测、数据链路层可靠传输协议、滑动窗口、解决发送帧出错的协议)

    文章目录 数据链路层 帧的概念 透明传输 差错检测 数据链路层可靠传输协议 滑动窗口 连续 ARQ 协议 解决发送帧出错的协议 数据链路层 数据链路层的功能 为网络层提供服务 链路管理 数据链路的建立 维持和释放 寻址 保证每一帧都能正确到
  • 解决轮播图图片大小不一的问题!

    要把大小不一样的图片做成整齐排列的轮播 如果直接固定宽高会把图片伸缩变形的 不固定又会让图片不整齐 用ps截图截成一样的大小难度系数略高 看似头大的问题 现在解决 只需2步 1 假如有4张图 我们就先写4个一样大小一样的div 给div设置
  • Pytest:fixture组件的简单使用方法

    fixture 可以构建测试准备阶段的步骤和数据 下面使用简单的案例演示 coding utf 8 Time 2021 10 2 13 49 Author PythonKimo File test 002 py import pytest
  • 如何在宽河道安装雷达流量计

    一 安装要求 设备安装方式采用野外一体化机架和不锈钢机箱方式 在机架直立杆腰部合适高度安装机箱 通讯天线等模块 机箱要求能可靠锁住 通讯模块天线等能合理 牢固地安装在机架上 太阳能板避免高大建筑物或树木遮挡 各安装点能在水平和垂直方向具备一
  • 嵌入式IDE(2):KEIL中SCF分散加载链接文件详解和实例分析

    在上一篇文章IAR中ICF链接文件详解和实例分析中 我通过I MX RT1170的SDK中的内存映射关系 分析了IAR中的ICF链接文件的语法 对于MCU编程所使用的IDE来说 IAR和Keil用得比较多 所以这一篇文章就来分析一下Keil
  • selenium自动化测试框架

    一 Selenium自动化测试 基于python 1 Selenium简介 1 1 Selenium是一款主要用于Web应用程序自动化测试的工具集合 Selenium测试直接运行在浏览器中 本质是通过驱动浏览器 模拟浏览器的操作 比如跳转
  • css常见问题1——解决css中数字和英文不换行的问题

    一 问题 1 问题描述 如果说文本是中文的话自动换行 不过当我们把文本换成数字或者字母就不会换行 2 问题展示 二 解决办法 1 原代码如下 ul li background color 4CB02A width 400px color f
  • Ubuntu下将python从2.7.12升级到3.5.2

    Python2 7版本升级到Python3 5 随着Python版本由2 x版本升级到3 x版本 原有的一些方法和模块在新的Python环境中已经不能使用 但是Ubuntu16 0中的Python版本依旧还是2 7版本 那么Ubuntu中P
  • Systemd中环境变量设置

    问题 不想把密码硬编码在代码里面 思路 让应用程序从环境变量中读取密码 SysV Service Environment MYSQL PASSWD sss 修改了Sys V的配置文件记得 要重新加载Sys V配置 sudo systemct
  • Altium Designer -- EMC/EMI电路设计经验

    一 基本概念 参看 电磁兼容原理及应用 讲的相当的不错 连接打不开 参看网盘 随着科学技术的不断发展 各种电气和电子设备已广泛应用于国民经济的各个部门以及人们的日常生活中 电气和电子设备在正常运行的同时 也往外发射有用或无用的电磁能量 这些
  • 【数据结构】二维数组的行优先、列优先存储问题

    今天同学问我一道感觉很基础的数据结构问题 虽然答案做对了 但是原理一直比较迷 仔细看了一下题 原来是自己把自己绕进去了 在此记录一下 大佬如果有更好的方法 可以在评论区留言 不定期更新 先给出行优先和列优先的计算公式 设数组为A m n m
  • 线程池学习笔记

    最大线程数只有在队列满了以后才开始工作 任务最大容量 最大数量 等待队列最大数量 超过则拒绝执行 会需要自己写拒绝策略 不然会抛出异常 如下图 如果将核心线程池数量设置成0 最大线程数量为int最大值 则适用场景为不可控的无法预估到底有多少
  • 2017-7-18 2-4 编写函数squeeze(s1,s2), 将字符串s1中任何与字符串s2中字符匹配的字符都删除。

    include
  • java虚拟机内存参数设置,reservedcodecachesize虚拟机jvm参数详解与调优说明

    一 reservedcodecachesize参数介绍 该参数是JvM虚拟机调优中调整内存大小的一个设置参数 值得大小设置直接影响到Code Cache的大小 而jvm编译的代码有常常存放在Code Cache中 而Code Cache的空
  • vue+ElementUI el-table表格再次封装集成多级表头合并单元格(表头分组、多级表头合并)及render渲染列

    1 此功能已集成到TTable组件中 2 实现思路 使用递归组件 源码
  • C++STL之各种容器的使用场景

    1 总结相关容器的使用场景 1 vector的使用场景 只查看 而不频繁插入删除的 因为频繁插入删除会造成内存的不断搬家和删除 使用场景比如软件历史操作记录的存储 我们经常要查看历史记录 比如上一次的记录 上上次的记录 但却不会去删除记录
  • OpenWRT 程序开机启动

    原理 bin sh etc rc common指定了执行该脚本的方式 必须 START 95 代表该脚本的启动顺序为95 注意 不是第95个执行的脚本 而是一个级别 数字越小 启动的越早 start 启动服务 stop 停止服务 resta
  • keil5 Debug调试报错“No CPU DLL specified under “Options for Target - Debug‘!”

    正常测试某个读写测试示例 结果Debug出弹窗如下图 最后解决方式如下 点击 魔术棒 Debug 在Driver DLL中填入 SARMCM3 DLL 点击ok 再次进行调试 问题解决
  • mysql(六)多列索引之索引顺序问题

    使用索引常见的错误是 为每列创建单独的索引 或者按照错误的顺序创建多列索引 多列索引 多列索引 是指在创建索引时所关联的字段不是一个字段 而是多个字段 虽然可以通过所关联的字段进行查询 但是只有查询条件中使用了所关联字段中的第一个字段 多列
  • uvm之寄存器模型

    寄存器模型的意义 寄存器模型的搭建 寄存器模型的FAQ 寄存器模型的意义 寄存器模型 字面理解 跟参考模型类似 就是为工程里的寄存器提供一个参考模型 这个模型里 包括各个寄存器字段描述 寄存器 寄存器组 寄存器地址映射等信息 有如下好处 寄