UVM-前门访问和后门访问

2023-12-31 11:18
文章标签 访问 uvm 后门 前门

本文主要是介绍UVM-前门访问和后门访问,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前门访问: 通过寄存器配置总线SPI(如APB协议、OCP协议、I2C协议)来对DUT进行操作,前门访问操作只有两种方式:读和写操作
后门访问: 是与前门访问相对的操作,从广义上讲所有不通过DUT的总线而对DUT内部的寄存器或者存储器进行存取的操作都是后门访问,利用UVM DPI(uvm_hdl_read()、uvm_hdl_deposit()),而不通过物理总线访问
1.前门访问

  • 第一种uvm_reg::read()/write(),在传递时,用户需要将参数path指定为UVM_FRONTDOOR。除了status和value两个参数需要传入,其他参数可采用默认值
1.寄存器模型提供的方法
//reg_model寄存器模型实例名,reg寄存器实例名
reg_model.reg.write(status, value, UVM_FRONTDOOR, .parent(this));
reg_model.reg.read(status, value, UVM_FRONTDOOR, .parent(this));
  • 第二种uvm_reg_sequence::read_reg()/write_reg(),在使用时,也要将path指定为UVM_FRONTDOOR
2.uvm_reg_sequence预定义方法
read_reg(rgm.ss, status, data, UVM_FRONTDOOR);
write_reg(rgm.ss, status, data, UVM_FRONTDOOR);

2.后门访问

1.确保寄存器模型在建立时将各个寄存器映射到DUT一侧的HDL路径

add_hdl_path("reg_backdoor_access.dut");
chnl0_ctrl_reg.add_hdl_path_slice($sformatf("regs[%0d]", `SLVO_RW_REG), 0, 32);
lock_model();
  • 通过uvm_reg_block::add_hdl_path()将寄存器模型关联到DUT一端
  • 通过uvm_reg::add_hdl_path_slice完成将寄存器模型各个寄存器成员与HDL一侧的地址映射
  • lock_model()函数结尾,结束地址映射关系,保证模型不会被其他用户修改

2.寄存器模型完成HDL路径映射后,利用uvm_reg或uvm_reg_sequence自带的方法进行后门访问

  • uvm_reg::read()/write(),在调用该方法时设置UVM_BACKDOOR的访问方式
  • uvm_reg_sequence::read_reg()/write_reg(),在调用该方法时设置UVM_BACKDOOR的访问方式
  • uvm_reg::peek()/poke()两个方法,分别对应了读取寄存器(peek)和修改寄存器(poke)两种操作,本身只针对后门访问,所以无需设置UVM_BACKDOOR
1. 寄存器模型提供的方法read()/write()
rgm.ctrl.read(status,data,UVM_BACKDOOR,.parent(this));        
rgm.ctrl.write(status,'h11,UVM_BACKDOOR,.parent(this))
2. uvm_reg_sequence预定义方法read_reg()/write_reg()
read_reg(rgm.ss,status,data,UVM_FRONTDOOR);
write_reg(rgm.ss,status,'h22,UVM_FRONTDOOR);
3. 寄存器模型提供的方法peek()/poke()
rgm.ctrl.peek(status,data,.parent(this));    
rgm.ctrl.poke(status,'h22,.parent(this));
前门访问后门访问
通过总线协议访问需要耗时,且在总线访问结束时才能结束前门访问通过UVM DPI关联硬件寄存器信号路径,直接读取或修改硬件,不需要访问时间,零时刻响应
一般读写只能按字(word)读写,无法直接读写寄存器域可以对寄存器或寄存器域直接做读写
依靠监测总线来对寄存器模型内容做预测依靠 auto prediction方式自动对寄存器内容做预测
正确反应了时序关系不受硬件时序控制,对硬件做的后门访问可能发生时序冲突
不受总线时序功能影响通过总线协议,可以有效捕捉总线错误,继而验证总线访问路径

这篇关于UVM-前门访问和后门访问的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

如何搭建并配置HTTPD文件服务及访问权限控制

《如何搭建并配置HTTPD文件服务及访问权限控制》:本文主要介绍如何搭建并配置HTTPD文件服务及访问权限控制的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、安装HTTPD服务二、HTTPD服务目录结构三、配置修改四、服务启动五、基于用户访问权限控制六、

NGINX 配置内网访问的实现步骤

《NGINX配置内网访问的实现步骤》本文主要介绍了NGINX配置内网访问的实现步骤,Nginx的geo模块限制域名访问权限,仅允许内网/办公室IP访问,具有一定的参考价值,感兴趣的可以了解一下... 目录需求1. geo 模块配置2. 访问控制判断3. 错误页面配置4. 一个完整的配置参考文档需求我们有一

C#实现访问远程硬盘的图文教程

《C#实现访问远程硬盘的图文教程》在现实场景中,我们经常用到远程桌面功能,而在某些场景下,我们需要使用类似的远程硬盘功能,这样能非常方便地操作对方电脑磁盘的目录、以及传送文件,这次我们将给出一个完整的... 目录引言一. 远程硬盘功能展示二. 远程硬盘代码实现1. 底层业务通信实现2. UI 实现三. De

python通过curl实现访问deepseek的API

《python通过curl实现访问deepseek的API》这篇文章主要为大家详细介绍了python如何通过curl实现访问deepseek的API,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编... API申请和充值下面是deepeek的API网站https://platform.deepsee

Nginx 访问 /root/下 403 Forbidden问题解决

《Nginx访问/root/下403Forbidden问题解决》在使用Nginx作为Web服务器时,可能会遇到403Forbidden错误,文中通过示例代码介绍的非常详细,对大家的学习或者工作... 目录解决 Nginx 访问 /root/test/1.html 403 Forbidden 问题问题复现Ng

使用Dify访问mysql数据库详细代码示例

《使用Dify访问mysql数据库详细代码示例》:本文主要介绍使用Dify访问mysql数据库的相关资料,并详细讲解了如何在本地搭建数据库访问服务,使用ngrok暴露到公网,并创建知识库、数据库访... 1、在本地搭建数据库访问的服务,并使用ngrok暴露到公网。#sql_tools.pyfrom

Javascript访问Promise对象返回值的操作方法

《Javascript访问Promise对象返回值的操作方法》这篇文章介绍了如何在JavaScript中使用Promise对象来处理异步操作,通过使用fetch()方法和Promise对象,我们可以从... 目录在Javascript中,什么是Promise1- then() 链式操作2- 在之后的代码中使

如何使用Docker部署FTP和Nginx并通过HTTP访问FTP里的文件

《如何使用Docker部署FTP和Nginx并通过HTTP访问FTP里的文件》本文介绍了如何使用Docker部署FTP服务器和Nginx,并通过HTTP访问FTP中的文件,通过将FTP数据目录挂载到N... 目录docker部署FTP和Nginx并通过HTTP访问FTP里的文件1. 部署 FTP 服务器 (

本地搭建DeepSeek-R1、WebUI的完整过程及访问

《本地搭建DeepSeek-R1、WebUI的完整过程及访问》:本文主要介绍本地搭建DeepSeek-R1、WebUI的完整过程及访问的相关资料,DeepSeek-R1是一个开源的人工智能平台,主... 目录背景       搭建准备基础概念搭建过程访问对话测试总结背景       最近几年,人工智能技术

Ollama整合open-webui的步骤及访问

《Ollama整合open-webui的步骤及访问》:本文主要介绍如何通过源码方式安装OpenWebUI,并详细说明了安装步骤、环境要求以及第一次使用时的账号注册和模型选择过程,需要的朋友可以参考... 目录安装环境要求步骤访问选择PjrIUE模型开始对话总结 安装官方安装地址:https://docs.