目录

0.前言

1.前门访问

2.后门访问

2.1路径设置

2.2操作类型


0.前言

在UVM学习笔记—寄存器模型的搭建及使用中提到过前门访问和后门访问的概念,这篇文章将会详细的阐述一下这2种访问方式

1.前门访问

前门访问操作就是通过寄存器配置总线(如APB总线)来对DUT进行操作,因此其在波形上可见。无论在任何总线协议中,前门访问操作只有两种:读操作和写操作;前门访问实际上是一个贴合实际的访问方式,因为对于流片回来的芯片,其访问方式只能通过物理总线访问。

对于前门访问的读操作的执行过程在白皮书P230-231有详细的描述,在此不再copy,这里将整个过程画一个草图示意:

当在某个component或者seq中调用寄存器模型通过前门访问向DUT发起读操作时,寄存器模型产生uvm_reg_bus_op的变量,该变量通过adapter转换成sqr能接收的transaction类型交给sqr,sqr再交给driver,driver驱动到DUT上,然后得到读取的数值,该数值放入rsp中然后调用item done,该rsp直接返回到adapter的bus2reg中进行转换回uvm_reg_bus_op变量被reg model接收;为何需要用到rsp来返回,这里涉及到seq,sqr和driver的握手机制,后续会另写一篇文章讲解。

2.后门访问

后门访问是通过设置好每个寄存器的路径进行访问的,而且不消耗仿真时间,但因为未通过总线进行读写因此无法在波形上体现出来。

那么为何要存在后门访问这种形式呢?考虑到2点:一是当需要验证成百上千个寄存器时,通过前门访问需要消耗大量的时间,效率并不高;二十如果对于一个16位的计数器(计数时钟上升沿的个数),想要验证其在16'hffff时再加1是否会回到16'h0000,如果通过前门访问需要1位1位累加,这需要相当长的时间,但如果通过后门访问直接修改位16'hffff再开启时钟则瞬间就能验证完这个验证点。

2.1路径设置

后门访问最关键的就是要设置好每个寄存器的路径,那么该如何设置呢?

在​UVM学习笔记—寄存器模型的搭建及使用​中讲搭建reg block时,对于每个寄存器有一个configure操作:

class reg_block extends uvm_reg_block;······invert.configure(this, null, "invert");//第三个参数即后门访问路径······
endclass

而在base test时有一个设置绝对路径的操作:

function void base_test::build_phase(uvm_phase phase);
······
rm.set_hdl_path_root("top_tb.my_dut");
······
endfunction

这两个路径合起来就是invert寄存器的路径,实际验证中这个路径类似于如下:

 

2.2操作类型

前面的前门/后门操作都有读写两种操作:

reg_model.INVERT_REG.read(status, value, UVM_FRONTDOOR);//前门读
reg_model.INVERT_REG.write(status, 16'h1, UVM_FRONTDOOR);//前门写reg_model.INVERT_REG.read(status, value, UVM_BACKDOOR);//后门读
reg_model.INVERT_REG.write(status, 16'h1, UVM_BACKDOOR);//后门写

后门访问新增了peek/poke操作:

reg_model.INVERT_REG.peek(status, value, UVM_BACKDOOR);// 通过后门访问方式读取寄存器的值,不关心DUT的行为,即使寄存器的读写类型是不能读,也可以将值读出来
reg_model.INVERT_REG.poke(status, 16'h1, UVM_BACKDOOR);//通过后门访问方式写入寄存器的值,不关心DUT的行为,即使寄存器的读写类型是不能写,也可以将值写进去

对于read clear类型的field,peek读操作不会clear,所以有的时候peek和read操作结果不一样

对于write clear类型的filed,poke操作不会clear,所以有的时候poke和write操作结果不一样

UVM学习笔记—前门访问/后门访问相关推荐

  1. 网络存储 linux 访问,Linux基础教程学习笔记28——使用Samba访问网络存储

    Linux基础教程学习笔记28--使用Samba访问网络存储 SMB用于Windows和类Linux系统直接的文件共享 安装samba client包: [root@linuxidc~]# yum i ...

  2. VBNET学习笔记---MS VBnet数据库访问技术,概念,介绍,发展历程.

    VBNET学习笔记---MS VBnet数据库访问技术,概念,介绍,发展历程. 2013-02-20 1.数据库访问技术 a.JET与DAO JET(Joint Engine Technology)数 ...

  3. UVM学习笔记(五)寄存器

    文章目录 一.reg_model的实现 二.总线bus_agent的实现 三.MCDF的REG硬件实现 四.Adapter & Predictor实现 4.1 Adapter实现 4.2 Ad ...

  4. uvm学习笔记----适合新手快速学习

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ofH8i8OK-1635320932444)(C:\Users\lenovo\AppData\Roaming\Typor ...

  5. UVM学习笔记—寄存器模型的搭建及使用

    目录 0.前言 1.DUT中的寄存器是什么? 2.为什么需要寄存器模型? 3.如何搭建寄存器模型 3.0基本概念 3.1搭建一个reg(将reg filed加入到reg) 3.2搭建一个reg blo ...

  6. Android NDK学习笔记4:JNI访问Java构造函数

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/119348263 本文出自[赵彦军的博客] 文章目录 方式一:NewObject 方 ...

  7. Android NDK学习笔记3:JNI访问Java属性、方法

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/119209444 本文出自[赵彦军的博客] 文章目录 Java 类型和JNI符号对比 ...

  8. 安卓学习笔记:安卓11访问/读写 Android/data 目录

    省流提示:采用android studio工具开发,记录一次低级的开发,避免以后忘记或者踩坑. 最近有个业余项目开发到一小半,过程中需要读写 Android/data目录的文件,采用常规的文件操作总是 ...

  9. 【学习笔记】数据链路层——随机访问介质访问控制(ALOHA、CSMA、CSMA/CD、CSMA/CA),截断二进制指数规避算法

    文章目录 小前言 一. ALOHA协议 纯ALOHA协议 时隙ALOHA协议 ALOHA对比 CSMA协议 定义与分类 ① 1-坚持CSMA ② 非坚持CSMA ③ p-坚持CSMA 总结 CSMA/ ...

最新文章

  1. linux下epoll如何实现高效处理
  2. 详解iBaits中SqlMapClientTemplate的使用
  3. 常用的HTTP状态码
  4. iOS 从相机或相册获取图片并裁剪
  5. canal布在mysql端还是服务端_canal使用入坑,亲测 !!!!
  6. centos通过yum的方式快速安装jdk1.8
  7. 本地可以ping远程的服务器,但服务器不能ping本地
  8. 证件照尺寸及背景颜色值
  9. 零基础应如何学习UI设计
  10. Bill Gates和Elon Musk推荐,人工智能必读的三本书 -《终极算法》,《超级智能》和《终极发明》
  11. 直播间人气互动软件教程
  12. 如何用QT做串口调试助手Qseriaport类的使用
  13. 最佳 Maya 免费建模插件!
  14. cad lisp 二次抛物线_用Cad画二次抛物线.doc
  15. 把backtrader改造成金融强化学习回测引擎
  16. 音频均衡器 matlab code,急求高手 设计声音均衡器 滤波器
  17. Leetcode 92反转链表
  18. 【GlobalMapper精品教程】004:生成标准经纬网图幅(1:100万)案例教程
  19. oracle JOB 的创建列子
  20. 随想录·算一算买车的账

热门文章

  1. 二次元闯入“直播带货”,B站难溅大水花?
  2. 推特开发者账号申请 Academic 学术【推特开发者文档V2系列6】——tweepy4 获取推文的点赞列表
  3. oracle数据库new关键字,Oracle筑表关键字解释
  4. Huber鲁棒损失函数
  5. 数据60秒 | 金仓K宝带你秒懂数据库(下)
  6. 【运维面试】谈谈你对CDN的了解
  7. 新手必看!超有用的Apple Watch设置技巧分享
  8. Linux 离线安装 FTP客户端
  9. hashmap hash冲突怎么解决_HashMap原理
  10. Orac and Factors