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

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

3天内不再提示

基于DUT内部寄存器值的镜像

芯片验证工程师 来源:芯片验证工程师 2023-06-24 12:02 次阅读

寄存器模型保持着DUT内部寄存器值的镜像(mirror)

镜像值不能保证是正确的,因为寄存器模型只能感知到对这些寄存器的外部读写操作。

如果DUT内部修改了寄存器中的字段,镜像值就会过时(outdated)

寄存器模型可以通过使用uvm_reg_field::mirror(), uvm_reg::mirror(), 或uvm_reg_block::mirror()方法将一个寄存器的镜像值更新为存储在DUT中的值。

更新寄存器中某个字段的镜像也会同时更新同一寄存器中所有其他字段的镜像。更新一个block的镜像会更新它包含的所有寄存器和字段的镜像。

如果使用前门访问,更新一个大block的镜像可能需要大量的仿真时间;而使用后门访问更新不需要消耗仿真时间。

可以通过使用uvm_reg_field::set()uvm_reg::set()方法在不消耗仿真时间向寄存器模型中的写入镜像值,这个镜像值不会反应到DUT中相应字段或寄存器

可以通过使用uvm_reg::update()uvm_reg_block::update()方法更新DUT的寄存器以匹配镜像值。如果新的镜像值与旧的镜像值相匹配,寄存器就不会被更新,从而节省不必要的总线访问。

要想不消耗仿真时间访问一个field或register的当前镜像值,可以使用 uvm_reg_field::get()uvm_reg::get()方法。

Memories是没有镜像的

Memories比较大,所以通常使用稀疏阵列的方法来建模。只有被写入的位置才会被存储起来,然后再读回来。任何未使用的内存位置都不会被建模。

与寄存器不同,memory的行为非常简单,memory镜像将是一个ROMRAM内存模型,所以可以通过提供对内存模型的后门访问来取代。因此,使用uvm_mem::peek()uvm_mem::poke()方法提供与memory镜像完全相同的功能。此外,与基于观察到的读写操作的寄存器镜像不同,使用后门访问的memory镜像总是返回或设置DUT中一个内存位置的实际值

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

    关注

    31

    文章

    5308

    浏览量

    119975
  • 镜像
    +关注

    关注

    0

    文章

    162

    浏览量

    10697
  • DUT
    DUT
    +关注

    关注

    0

    文章

    189

    浏览量

    12329

原文标题:寄存器模型中的Mirroring

文章出处:【微信号:芯片验证工程师,微信公众号:芯片验证工程师】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    LMX2492工作一段时间后微波失锁,并且内部寄存器恢复成上电,为什么?

    加入LMX2492内部寄存器读取功能,先读取正常工作时LMX2492内部寄存器 ,然后等待故障复现。故障复现后我们又读取了LMX2492内部寄存器
    发表于 11-08 08:30

    51内部寄存器总结

    51单片机内部寄存器说明总结
    发表于 08-30 07:27

    Labview通过VXI总线直接访问测量仪器内部寄存器

    VXI总线直接访问测量仪器内部寄存器,从而在线获取干涉仪的距离测量结果,从而与我的位移测量系统作比对。大家如果对激光干涉仪不了解不要紧,请告诉我如何通过VXI总线直接访问测量仪器内部寄存器,有遇上类似情况的吗? 本人对VXI及Labview了解不多,望有人能讨论和帮忙。不
    发表于 05-07 16:30

    请问AD9129内部寄存器的reserved和spi读取的不一样会有什么影响?

    原因不太清楚,在此遇到两个问题:1:芯片内部寄存器的reserved,spi读取的和它不一样会有什么影响?2:芯片中的DLL中的延迟线具体是怎么操作的?最大最小延迟指的什么?da
    发表于 10-11 09:53

    未连接的内部寄存器怎么找

    嗨,我写了一个Tcl脚本来使用Vivado 2014.4合成设计。所有源文件都将添加到项目中。但是我收到了警告。1. [Synth 8-3936]找到未连接的内部寄存器
    发表于 04-16 08:15

    如何访问内部寄存器空间或PCIe?

    你好,我在我的项目中使用XC7VX485T virtex FPGA,并尝试以2.5 GT / s建立PCIe通信,具有X4通道宽度。我知道我需要使用AXI流来访问集成块核心。但我的问题是如何访问内部寄存器空间或PCIe?。如果我需要创建寄存器,我该怎么办?谢谢,马诺
    发表于 08-26 07:14

    DMA内部寄存器的读写方式和应用场合

      DMA内部寄存器的读写方式  基于AXI的DMA对内部寄存器的读写有着相同的方式。在普通传输模式下,DMA内部寄存器都是由处理通过A
    发表于 12-23 17:48

    SPI内部寄存器的相关资料分享

    从零开始学习嵌入式之SPI通信(寄存器)记录一部分SPI内部寄存器记录一部分SPI内部寄存器
    发表于 12-24 07:48

    AD9129芯片内部寄存器的reserved,spi读取的和它不一样会有什么影响?

    原因不太清楚,在此遇到两个问题: 1:芯片内部寄存器的reserved,spi读取的和它不一样会有什么影响? 2:芯片中的DLL中的延迟线具体是怎么操作的?最大最小延迟指的什
    发表于 12-20 07:55

    Cortex-M3 内部寄存器

    寄存器组R0-R12R0-R12,通用寄存器;R0-R12都是32位通用寄存器,用于数据操作;但是绝大多数16位Thumb指令只能访问R0-R7,而32位Thumb指令可以访问所有寄存器
    发表于 11-26 16:21 39次下载
    Cortex-M3 <b class='flag-5'>内部寄存器</b>

    简化UVM寄存器模型的使用

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

    验证环境获取DUT内部信号的方法

    在UVM寄存器模型的操作中,寄存器用于设置DUT状态和芯片状态信息的上报,有前门和后门读写两种方式。
    的头像 发表于 08-19 09:50 866次阅读
    验证环境获取<b class='flag-5'>DUT</b><b class='flag-5'>内部</b>信号的方法

    如何理解 RAMECC FAR 寄存器

    如何理解 RAMECC FAR 寄存器
    的头像 发表于 10-19 18:19 625次阅读
    如何理解 RAMECC FAR <b class='flag-5'>寄存器</b>的<b class='flag-5'>值</b>

    寄存器分为基本寄存器和什么两种

    寄存器是计算机中用于存储数据的高速存储单元,它们是CPU内部的重要组成部分。寄存器可以分为基本寄存器和扩展寄存器两种类型。 一、基本
    的头像 发表于 07-12 10:31 1094次阅读

    详解寄存器模型镜像

    DUT的配置寄存器是实际,reg_model有镜像、期望
    的头像 发表于 10-23 09:43 181次阅读
    详解<b class='flag-5'>寄存器</b>模型<b class='flag-5'>镜像</b><b class='flag-5'>值</b>