UVM寄存器模型——手写Ralf问题debug

寄存器模型是UVM中至关重要的一部分,如果没有寄存器模型,那么验证平台对于DUT内寄存器的访问方式将十分有限,对DUT运行状态的把控也会变得更为复杂。

图片

在验证过程中,scoreboard或者其他验证组件经常需要了解当前时间某个寄存器的值,以此来调控激励的输入或者进行数据的比对。如果不使用寄存器模型,那只能够通过启动sequence的方式,给DUT的交互端口特定的地址和操作信号,获取寄存器的值。这种方法不仅十分繁琐,而且在某些情况下会提高测试用例的编写难度。 

寄存器模型其实就是DUT内各个寄存器的“拷贝文件”,而且它还能够根据DUT的变化,及时更新内部属性值,达到和DUT内部寄存器同步的目的。这就要求寄存器模型有和真实寄存器类似的结构、相同的属性以及一定的访问方法,这样才方便理解和使用。UVM中的寄存器模型分为了三个级别:uvm_reg_field、uvm_reg以及uvm_reg_block,如下图所示。

图片

uvm_reg_field 是寄存器模型中最基本的单位,对应着真实寄存器中的域。

uvm_reg_field 可以拥有不同的比特长度,定义不同的名称和属性;uvm_reg 与 DUT中的寄存器相对应,每个 uvm_reg 至少包含一个 uvm_reg_field;uvm_reg_block 则 属于比较大的单位,其中可以包含多个 uvm_reg,也可以包含多个 uvm_reg_block,block一般可以涵盖模块级 DUT 中的全部寄存器。

每个寄存器模型除了拥有用来表征寄存器的三级结构外,还需要uvm_reg_map

来实现地址上的映射。DUT 中的每个寄存器都会有对应的地址,用来给外部访问 提供依据。同样,在寄存器模型中,验证人员要在 uvm_reg_map 里添加各个 uvm_reg的访问地址,为寄存器模型前门访问提供相关的信息。

为了方便管理,UVM 在寄存器模型中规定了四种属性来描述寄存器信息。也 就是说,对于 DUT 中的每个寄存器,寄存器模型都会使用四个变量从不同的角度 对寄存器的值进行记录。这四种属性分别为 m_reset、m_mirrored、value 以及m_desired。 

其中m_reset用来储存寄存器的复位值,m_mirrored用来存储寄存器的镜像值,m_desired 用来存储期望值,这三个变量都属于本地变量,不能够直接从外部进行 访问,需要使用寄存器模型提供的方法,常用的访问方法如下表所示。而 value属性属于 public 类型,可以从外部直接访问,主要用于功能覆盖率或者域的随机 等方面。寄存器属性常用方法如下:

图片

最后,由于寄存器模型中存储数据的格式和在验证平台中使用的格式不一致,所以需要一个adapter模块负责格式转换,使寄存器模型能够和 sequencer 实现数据交互。寄存器模型在验证环境中的应用结构如下图所示。

图片

景芯SoC全流程训练营验证的VIP学员问:自己写的Ralf文件编译OK,为啥仿真有错?

图片

uvm-1.1/reg/uvm_reg.svh(1296) @ 0: reporter [RegModel] 

Field DLAB overlaps field RESERVED_8 in register "UART_LCR"

答:景芯训练营要求大家一切从底层撸,搞清楚设计、验证、DFT、后端的底层逻辑,所以Ralf文件我也要求学员自己写。回到VIP学员问题本身,很明显ralf文件写错了,具体错在哪里,欢迎知识星球查看答案!

如下,field DLAB 7是1bit 学员定义为2bit了,导致fIeld RESERVED_8变成了@9,而不是@8。

图片

修改ralf,然后重新生成reg_model,大家参考训练营文档执行即可。

图片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/631444.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Python】图像批量合成视频,并以文件夹名称命名合成的视频

一个文件夹中有多个子文件夹,子文件夹中有多张图像。如何把批量把子文件夹中的图像合成视频,视频名称是子文件夹的名称,生成的视频保存到指定文件夹,效果记录。 代码 import os import cv2def create_video_from_images(image_f…

位运算概述

首先 位运算这个东西在考试中十分容易考,所以要多多看一看位运算的相关知识,多刷一刷题之类的。 位运算的概念 位运算就是二进制数据进行运算的运算符。 注意:通常我们用二进制补码来表示,补码的符号位也是要参与运算的。 通常的…

番外篇 | 一文读懂卷积神经网络(CNN)的基础概念及原理

前言:Hello大家好,我是小哥谈。卷积神经网络(Convolutional Neural Network,CNN)是一种深度学习模型,主要用于图像识别和计算机视觉任务。本文旨在对卷积神经网络进行详细的讲解,从基本原理到实际应用,帮助读者全面了解CNN的工作原理、优势和基本组成等,以及其在现实生…

HNU-算法设计与分析-作业3

第三次作业【动态规划】 文章目录 第三次作业【动态规划】<1>算法实现题 3-1 独立任务最优解问题<2>算法实现题 3-4 数字三角形问题<3>算法实现题 3-8 最小m段和问题<4>算法实现题 3-25 m处理器问题 <1>算法实现题 3-1 独立任务最优解问题 ▲问…

巴伦电路的原理及设计

本文档是针对Appcad帮助文档及si4468等电路设计内容的整合&#xff0c;参考了其中的内容。 1.巴伦的传输线与集总电路转换简述 巴伦是一种在平衡和非平衡电路连接之间进行转换的电路。balun 一词是由 BALanced 和UNbalanced 两个词的缩写衍生而来的首字母缩写词。不平衡连接也…

svn如何远程访问?

svn&#xff08;Subversion&#xff09;是一种版本控制系统&#xff0c;广泛应用于软件开发领域。它能够追踪文件和目录的变化&#xff0c;记录每个版本的修改内容&#xff0c;并允许多人协同开发。svn的远程访问功能允许开发人员可以在不同的地点访问和管理代码&#xff0c;提…

AIGC时代已至,你准备好抓住机遇了吗?

一、行业前景 AIGC&#xff0c;即人工智能生成内容&#xff0c;是近年来人工智能领域中发展迅猛的一个分支。随着大数据、云计算、机器学习等技术的不断进步&#xff0c;AIGC已经取得了显著的成果&#xff0c;并且在广告、游戏、自媒体、教育、电商等多个领域实现了广泛应用。…

24年湖南三支一扶报名流程图及报名照片要求

24湖南三支一扶报名流程图&#xff0c;照片要求☑️ ✔️报名时间&#xff1a;5月15日9:00至5月23日17:00 ✔️报名方式 报考人员登录市州人力资源社会保障局官网、市州人事考试网等查看各地公告&#xff0c;按要求报名。 ✔️报名流程&#xff08;湖南各地市单独报名&…

EtherCAT通信特点_7

一个 EtherCAT 数据帧足以完成所有节点控制数据的发送和接收。 question&#xff1a;数据会不会超过限制&#xff1f; 一个 EtherCAT 数据帧足以完成所有节点控制数据的发送和接收&#xff0c;这种高性能的运行模式克服了前面章节描述的各种问题&#xff01; EtherCAT 主站发送…

分布式计算、并行计算、网格计算、边缘计算

分布式计算 分布式计算是一种计算方法&#xff0c;它将一个大型的计算任务分解成多个子任务&#xff0c;并将这些子任务分布在网络上的多台计算机&#xff08;节点&#xff09;上同时执行。这些节点通过通信网络协同工作&#xff0c;共同完成任务。每个节点可以独立处理自己的…

VS2022如何添加现有项

以 想在队列里&#xff0c;使用堆栈的.c&#xff0c;.h文件 为例 目录 1.复制堆栈的.c&#xff0c;.h文件 ​编辑 2.打开队列所在项目的文件夹 3.粘贴堆栈的.c&#xff0c;.h文件 4.在头文件和源文件添加相应的堆栈的.c&#xff0c;.h文件 1.复制堆栈的.c&#xff0c;.h文件…

【Python探索之旅】元组

元组的作用 遍历 修改 元组运算符 索引和切片 加法运算符 重复运算符 比较运算符 完结撒花 前言 元组(tuple)是一种静态的(immutable)或者说是不可变(unchangeable)的数据结构&#xff0c;里面的元素按照一定的顺序排列。它是静态的&#xff0c;所以元组里的元素不能被…

Nginx企业级负载均衡:技术详解系列(1)

你好呀&#xff0c;我是赵兴晨&#xff0c;文科程序员。 最近&#xff0c;我注意到关于Nginx的文章总是能吸引到异常多的流量。这让我意识到&#xff0c;或许大家对这个话题有着浓厚的兴趣。既然如此&#xff0c;我决定将更多关于Nginx的深度内容与大家分享。 在接下来的时间…

[数据集][目标检测]肺结节检测数据集VOC+YOLO格式1186张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;1186 标注数量(xml文件个数)&#xff1a;1186 标注数量(txt文件个数)&#xff1a;1186 标注…

【LAMMPS学习】十、LAMMPS辅助工具(1)

10. 辅助工具 LAMMPS 被设计为用于执行分子动力学计算的计算内核。设置和分析模拟通常需要额外的预处理和后处理步骤。此类工具的列表可以在 LAMMPS 网页上的以下链接中找到&#xff1a; 前/后处理 外部 LAMMPS 软件包和工具 Pizza.py 工具包 Pizza.py 的最后一个链接是桑迪…

英伟达发布 VILA 视觉语言模型,实现多图像推理、增强型上下文学习,性能超越 LLaVA-1.5

前言 近年来&#xff0c;大型语言模型 (LLM) 的发展取得了显著的成果&#xff0c;并逐渐应用于多模态领域&#xff0c;例如视觉语言模型 (VLM)。VLM 旨在将 LLM 的强大能力扩展到视觉领域&#xff0c;使其能够理解和处理图像和文本信息&#xff0c;并完成诸如视觉问答、图像描…

在springboot项目中自定义404页面

今天点击菜单的时候不小心点开了一个不存在的页面&#xff0c;然后看到浏览器给的一个默认的404页面 后端的程序员都觉得这页面太丑了&#xff0c;那么怎么能自定义404页面呢&#xff1f; 很简单&#xff0c;在我们的springboot的静态资源目录下创建一个error包&#xff0c;然…

开发属于自己的Spring Boot Starter-18

为什么要开发专用的Spring Boot Starter Spring在通常使用时&#xff0c;一般是通过pom.xml文件中引入相关的jar包&#xff0c;然后再通过application.yml文件配置初始化bean的配置&#xff0c;但随着项目越来越复杂或是项目组中的应用数量越来越多&#xff0c;可能会带来几个…

邦注科技 即热式节能模温机的原理及应用介绍

模温机是一种用于控制模具温度的设备&#xff0c;它在各种工业领域中发挥着重要作用&#xff0c;特别是在塑料加工行业中。以下是关于模温机的原理及应用的详细介绍&#xff1a; 原理 模温机的工作原理主要是通过加热和冷却功能&#xff0c;维持模具温度在一个恒定的范围内。…

Redis - hiredis源码安装和接口使用介绍

一、hiredis源码安装说明 本文创作基于 hiredisv1.2.0版本 1.简介 hiredis是一个用于与Redis交互的C语言客户端库。它提供了一组简单易用的API&#xff0c;使开发人员可以轻松地连接到Redis服务器&#xff0c;并执行各种操作&#xff0c;如设置和获取键值对、执行命令、订阅和…