当前位置: 首页 > news >正文

UVM RAL后门访问配置

先给一下大致的代码结构,根据代码结构来描述。

//dut结构
module my_dut(...);my_reg U_REG(......);endmodulemodule my_reg(...);//reg1和reg2是一个reg的两个field,reg3单独是一个regreg [15:0] reg1_q;reg [15:0] reg2_q;reg [31:0] reg3_q;endmodule//top_tb
module top_tb;my_reg U_DUT(......);endmodule//uvm_reg
class reg1 extend uvm_reg;...field1;//对应reg1_q...field2;//对应reg2_qvirtual function void build();...//reg1例化和config;...//reg2例化和config;add_hdl_path_slice("reg1_q",0,16);add_hdl_path_slice("reg2_q",16,16);endfunction
endclassclass reg2 extend uvm_reg;...field3;//对应reg3_qvirtual function void build();...//reg3例化和config;endfunction
endclassclass my_block extend uvm_reg_block;...my_reg1;//对应reg1_q和reg2_q的uvm_reg...my_reg2;//对应reg3_q的uvm_regvirtual function void build();...this.my_reg1.configure(this,null,"");this.my_reg2.configure(this,null,"reg2_q");...endfunction
endclass//env
class my_env extend uvm_env;...my_block model;...virtual function void build_phase(...);...model.set_hdl_path_root("top_tb.U_DUT.U_REG");...endfunction
endclass

dut的结构就是my_dut里面例化了my_reg,寄存器就在my_reg中。

首先我们要配置寄存器的位置,即model.set_hdl_path_root("top_tb.U_DUT.U_REG")这一段,指定一下寄存器所在的模块路径,需要注意的是该路径名称是模块例化的名称;

然后是ral的配置,如果一个reg里面有多个field,就需要在uvm_reg里面指定不同field的名称以及其位置,用add_hdl_path_slice语句,其中第一个参数是field的名称,第二个参数是field的起始位置,第三个参数是field的位宽;如果一个reg里面只有一个field,那么就直接在uvm_reg_block中该寄存器的configure的第三个参数里指定该field的名称。如果这个reg里面field的宽度小于reg的宽度,那么两种方法都可以。

设置好后,就直接peek和poke了。

http://www.lryc.cn/news/129930.html

相关文章:

  • 数学建模之“灰色预测”模型
  • 深入探讨 Oxigen:Rust 实现的并行遗传算法框
  • Flink-----Standalone会话模式作业提交流程
  • 算法与数据结构(七)--堆
  • 软件工程概述-架构师(三)
  • 华为手机Outlook手机APP无法登录邮箱,提示[2002]错误代码
  • “深入探究JVM内部结构与工作原理:解析Java虚拟机“
  • windows下redis服务启动及.bat文件中中redis服务的启动
  • 【学习笔记之vue】 Cannot find module ‘node-sass‘
  • POSTGRESQL 关于安装中自动启动的问题 详解
  • Java寻找数组的中心下标
  • ORACLE中判断表是否存在再删除表避免报错与MySql和SqlServer的不同
  • 解决 Maven 创建 Spring Boot 项目时出现 “Cannot access alimaven“ 错误的方法
  • 设计模式——适配器模式
  • 如何区分闰年与平年
  • 中间件(下)
  • LVS-DR的RS进行ARP抑制的原因和LVS持久连接配置
  • 【HarmonyOS】codelab在hvigor版本2.4.2上无法运行问题
  • MySQL- sql语句基础
  • 【目标检测中对IoU的改进】GIoU,DIoU,CIoU的详细介绍
  • 【环境配置】Windows10终端和VSCode下能够直接打开Anaconda-Prompt
  • 稚晖君人形机器人问世:大模型加持,会自己换胳膊,要上生产线造车
  • 变更通知在开源SpringBoot/SpringCloud微服务中的最佳实践
  • 亚马逊产品排名关键因素解析,通过测评干预需要具备哪些条件
  • leetcode原题:绘制直线(位运算)
  • jenkins 安装和通过gitee 拉取PHP项目
  • 解析TCP/IP协议的分层模型
  • ARM M33架构入门
  • CentOS系统环境搭建(四)——Centos7安装Java
  • Arduino MQTT客户端库PubSubClient快速入门