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中一个内存位置的实际值

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

    关注

    30

    文章

    5028

    浏览量

    117721
  • 镜像
    +关注

    关注

    0

    文章

    153

    浏览量

    10587
  • DUT
    DUT
    +关注

    关注

    0

    文章

    180

    浏览量

    11997

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

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

收藏 人收藏

    评论

    相关推荐

    FAS368M的信号及内部寄存器说明

    FAS368M的信号及内部寄存器说明图2中FAS368M的主要信号和控制逻辑如下:·ACK、ATM、BSY、CD、IO、MSG、REQ、RST、SD0~15、SDP0~1、SEL及其差分信号,都是
    发表于 06-02 09:34

    51内部寄存器总结

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

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

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

    FPGA寄存器的初始是什么?

    FPGA内部寄存器的上电初值是什么? 有说是低的,有说是高的, 也有说和器件相关的,还有些人说是不确定. 对于一个系统来讲, 那么用户在意的到底是什么呢?
    发表于 11-11 16:59

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

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

    ADG3308电平转换,读取PA内部寄存器数据时波形出现失真

    ADG3308把MCU 3.3V转换成PA 1.8V的双向电平转换IC实现,但是发现读取PA内部寄存器数据时,波形出现失真,完成数据错误,请各位大神指点一下,感谢!图纸和波形如下:
    发表于 01-22 22:18

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

    嗨,我写了一个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

    怎么通过仿真的方式知道单片机内部各个寄存器的内容呢?

    通过什么样的方式能够知道单片机内部各个寄存器和变量的?比如说现在我坐红外解码实验,怎么监视内部寄存器和变量的变化?
    发表于 03-24 11:28

    无法读取SC18IS600(spi-i2c 总线桥)的内部寄存器怎么解决?

    我们在 SPI 模式下将 SPC570xx 系列微控制配置到 SC18IS600(spi-i2c 总线桥)。这里我们无法读取SC18IS600的内部寄存器。你能帮我一下吗?
    发表于 06-06 08:59

    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>

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

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