0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

RAL寄存器模型操作指南

sanyue7758 来源:芯片学堂 2023-07-12 09:37 次阅读

寄存器模型操作,指的是通过寄存器模型对RTL中寄存器进行读写访问,或者同步寄存器模型与RTL中寄存器的值。对寄存器模型的操作,可以通过调用模型提供的方法来实现。这些方法的调用,建立在已经完成寄存器模型的构建和集成到验证环境的基础上。

本文将展开介绍寄存器模型访问上的一些内容,包括寄存器域段的成员值、寄存器的前后门访问以及具体各种访问方法图示。

01 寄存器域段

按照前文介绍UVM寄存器模型基础时的描述,寄存器域段(uvm_reg_field)是构造寄存器模型最小的功能单元。这也就意味着,寄存器的值,是由多个域段的值拼接起来的。那么,在介绍寄存器的访问方法之前,有必要先看看寄存器的域段都是怎么存放值的。

从uvm_reg_field类型定义的源码可以看到,跟域值相关的成员变量有这么几个:value, m_mirrored, m_desired, m_reset[“HARD”]。它们的数据类型均为uvm_reg_data_t,其实也就是UVM对bit unsigned [`UVM_REG_DATA_WIDTH-1:0]的类型重命名。

e681b9c2-1ffc-11ee-962d-dac502259ad0.png

尽管除value以外其他三个成员都是local可见的,但是知道这些local成员的存在和意义,对理解和使用后面要介绍的操作方法会有很大的帮助。

02 前后门访问

寄存器的前门访问(front door access),指的是Testbench所发出的寄存器操作,都会被转换成总线事务,并实际驱动到DUT的总线上,会占用总线和消耗总线周期。换句话说,这种寄存器访问方式跟其他硬件组件访问寄存器一样,是从”明面“上对寄存器进行访问。

寄存器的后门访问(back door access),指的是用户通过仿真器,对DUT中指定路径的寄存器信号进行改写或读取。这种寄存器访问方式不需要消耗仿真时间,毕竟”走后门“总是要比走前门要方便快捷很多。后门访问的前提是,在建立寄存器模型的时候,指定了对应寄存器在DUT中的路径(HDL_path)。

e6d04b28-1ffc-11ee-962d-dac502259ad0.png

后门访问带来的坏处是,这种直接改写和读取寄存器的操作不会被反映成总线行为,也就无法覆盖到寄存器访问涉及到的总线系统,以及总线上其他相关的逻辑模块。举个栗子,后门访问可以掩盖掉总线系统上本来存在着的地址译码错误。总结起来:除一些特殊的测试场景,寄存器的访问少走后门,多走前门。

下一小节介绍寄存器模型操作方法的同时,也会提到哪些是对寄存器的前门访问,哪些是后门访问。

03 寄存器模型方法

寄存器模型方法有很多,大致如下图所示。由于方法较多,本文就不再列出这些方法的原型,有需要的读者完全可以通过UVM提供的类型手册找到非常详细的函数原型和说明。

e73eb25c-1ffc-11ee-962d-dac502259ad0.png

对寄存器的访问方法,无非是对DUT中寄存器,或者是对寄存器模型中各个成员值的改写或读取。因此,可以整理出每种方法对这些值的影响(见下图),然后总结出来常用场景下的操作组合。下图中彩色渐变格式表示操作的开始。

wKgZomSuBFyAETcNAAChHDkW6mc053.jpg

在大多数的应用场景,对寄存器的访问完全可以通过write(value) & read()这样的组合来完成,也可以选用set(value)先修改期望值,然后在通过update()函数去做同步。这样的好处是,如果RTL寄存器的值已经是我们的期望值,那么就不会也没有必要再浪费总线资源去重新配置一遍。





审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    30

    文章

    5028

    浏览量

    117719
  • RTL
    RTL
    +关注

    关注

    1

    文章

    377

    浏览量

    59064
  • UVM
    UVM
    +关注

    关注

    0

    文章

    181

    浏览量

    18964
  • HDL语言
    +关注

    关注

    0

    文章

    46

    浏览量

    8869
  • DUT
    DUT
    +关注

    关注

    0

    文章

    180

    浏览量

    11997

原文标题:RAL寄存器模型操作图鉴

文章出处:【微信号:处芯积律,微信公众号:处芯积律】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    寄存器是什么?怎么操作寄存器点亮LED灯?

    寄存器,是集成电路中非常重要的一种存储单元,通常由触发器组成。在集成电路设计中,寄存器可分为电路内部使用的寄存器和充当内外部接口的寄存器这两类。
    的头像 发表于 07-21 16:59 2973次阅读
    <b class='flag-5'>寄存器</b>是什么?怎么<b class='flag-5'>操作</b><b class='flag-5'>寄存器</b>点亮LED灯?

    UVM寄存器模型的常规方法有哪些呢?

    在应用寄存器模型时, 除了利用它的寄存器信息, 还可以利用它来跟踪寄存器的值。
    的头像 发表于 11-25 09:27 745次阅读
    UVM<b class='flag-5'>寄存器</b><b class='flag-5'>模型</b>的常规方法有哪些呢?

    如何构建UVM寄存器模型并将寄存器模型集成到验证环境中

    模型操作图鉴(前后门访问API),以及寄存器覆盖率的收集。01 寄存器模型概述为什么要对寄存器
    发表于 09-23 14:29

    寄存器操作方法_对寄存器操作的通用方法总结

    本文主要详解寄存器操作方法以及对寄存器操作的通用方法总结,具体的跟随小编来了解一下。
    的头像 发表于 05-22 15:53 2.1w次阅读

    使用寄存器的逻辑操作指令是什么?

    操作系统中硬件相关的部分集中体现在汇编指令和对寄存器操作中,因此我们对ARM体系结构的介绍也围绕ARMv8-A的汇编指令和寄存器来展开。
    的头像 发表于 06-18 15:49 3444次阅读

    C语言位操作在(单片机)寄存器中的应用

    C语言位操作寄存器中的应用本文参考另一篇博客写成附链接,个人感觉内容过多不便于吸收,就写了这篇博客。整体思想:设置一个位就是设置该位为1,清除就是设置该位为0寄存器操作的要求:特定位
    发表于 11-29 10:06 8次下载
    C语言位<b class='flag-5'>操作</b>在(单片机)<b class='flag-5'>寄存器</b>中的应用

    C语言:寄存器操作

    C语言:寄存器操作
    发表于 01-13 12:56 6次下载
    C语言:<b class='flag-5'>寄存器</b><b class='flag-5'>操作</b>

    STM32的寄存器操作

    STM32的寄存器操作在使用STM32单片机编程时一般都用ST给的库函数编程,库函数编程的底层就是对单片机寄存器操作,库函数就是一系列寄存器
    发表于 01-13 15:43 18次下载
    STM32的<b class='flag-5'>寄存器</b><b class='flag-5'>操作</b>

    简化UVM寄存器模型的使用教程

    当我开始使用UVM RAL时,我无法理解UVM基类库对更新Desired和Mirror 寄存器的解释。觉得使用的术语并不能准确地反映里面的真实的意思。花了一些时间后,我想出了一个表格,它可以帮助我理解寄存器
    的头像 发表于 01-30 15:25 1643次阅读
    简化UVM<b class='flag-5'>寄存器</b><b class='flag-5'>模型</b>的使用教程

    简述RAL寄存器模型基础

    RAL(Register Abstract Layer,寄存器抽象层),通常也叫寄存器模型,顾名思义就是对寄存器这个部件的建模。本文要介绍的
    的头像 发表于 02-14 16:55 2346次阅读
    简述<b class='flag-5'>RAL</b><b class='flag-5'>寄存器</b><b class='flag-5'>模型</b>基础

    VersaClock 6 系列寄存器描述和编程指南

    VersaClock 6 系列寄存器描述和编程指南
    发表于 03-15 19:12 0次下载
    VersaClock 6 系列<b class='flag-5'>寄存器</b>描述和编程<b class='flag-5'>指南</b>

    RAL寄存器模型操作图鉴

    寄存器模型操作,指的是通过寄存器模型对RTL中寄存器进行读写访问,或者同步
    的头像 发表于 05-17 09:01 557次阅读
    <b class='flag-5'>RAL</b><b class='flag-5'>寄存器</b><b class='flag-5'>模型</b><b class='flag-5'>操作</b>图鉴

    简化UVM寄存器模型的使用

    当我开始使用 UVM RAL 时,我无法理解 UVM 基类库对更新所需值和镜像值寄存器的值有什么看法。我还认为,所使用的术语没有准确反映其意图。花了一些时间后,我想出了一个表,帮助我了解寄存器
    的头像 发表于 05-29 10:15 752次阅读
    简化UVM<b class='flag-5'>寄存器</b><b class='flag-5'>模型</b>的使用

    VersaClock 6 系列寄存器描述和编程指南

    VersaClock 6 系列寄存器描述和编程指南
    发表于 07-05 20:54 0次下载
    VersaClock 6 系列<b class='flag-5'>寄存器</b>描述和编程<b class='flag-5'>指南</b>

    寄存器模型Register Model学习笔记

    UVM的寄存器模型是一组高级抽象的类,用来对DUT中具有地址映射的寄存器和存储器进行建模。
    的头像 发表于 07-11 09:20 760次阅读
    <b class='flag-5'>寄存器</b><b class='flag-5'>模型</b>Register Model学习笔记