UVM糖果爱好者教程 - 30.后门访问的背后

在之前的文章(通过后门访问寄存器后门访问HDL路径)中,我们使用了configure,add_hdl_path和add_hdl_path_slice,然后这些函数神奇地创建了HDL路径。 作为一名用户,这很好,但作为一名专家,你想知道后面发生了什么吗? 这篇文章将带你窥探一下后门访问的背后。

寄存器块的HDL路径

寄存器块将其HDL路径存储在队列中。 确切地说,它可以有多个队列(在以字符串为键的池中)。 默认键是“RTL”。 例如,您可以在拨打电话时指定按键:

add_hdl_path( string path, string kind = "RTL" );
clear_hdl_path(              string kind = "RTL" );

在那里使用种类参数作为键。 我们可以在配置寄存器块时指定HDL路径:

configure( uvm_reg_block parent = null, string hdl_path = "" );

通过调用add_hdl_path,我们也可以拥有多个HDL路径。如果您有多个HDL路径,您可以一次read/write/peek/poke多个物理寄存器(如果write或poke的值相同)。请注意,即使您有多个读取值,read和peek也只会返回路径上的第一个读取值。下图说明了如何将HDL路径存储在池和队列中。


                                     HDL路径在寄存器块中如何存储

寄存器模型的HDL路径切片

与寄存器块类似,寄存器模型将HDL路径片段存储在队列中,但方式稍微复杂一些。由于切片具有偏移量和大小信息,切片首先被构造为uvm_hdl_path_slice。然后,属于同一个物理寄存器的片被分组到一个uvm_hdl_path_concat对象中。我们可以在队列中有多个uvm_hdl_path_concat。如果您有多个uvm_hdl_path_concat,您可以一次read/write/peek/poke多个物理寄存器(如果write或poke时,则具有相同的值)。请注意,即使您有多个读取值,read和peek也只会返回路径上的第一个读取值。

像寄存器块一样,寄存器模型可以在以字符串为键的池中有多个队列。默认密钥是“RTL”。例如,您可以在拨打电话时指定按键:

add_hdl_path      ( uvm_hdl_path_slice slices[],                      string kind = "RTL" );
add_hdl_path_slice( string name, int offset, int size, bit first = 0, string kind = "RTL" );
clear_hdl_path      (                                                   string kind = "RTL" );

在那里使用种类参数作为关键。请注意,add_hdl_path采用上面提到的uvm_hdl_path_slice的动态数组。该函数创建一个新的uvm_hdl_path_concat来存储指定的切片。同样,如果add_hdl_path_slice的第一个参数为1,则会创建一个新的uvm_hdl_path_concat来存储指定的切片。下图说明了如何将HDL路径存储在池和队列中。


                                     HDL路径在寄存器模型中如何存储

Jelly-Bean寄存器块的HDL路径

现在我们知道背后的数据结构,让我们看看我们的HDL路径是如何存储的。我们创建了三个寄存器块。每个寄存器块都有一个HDL路径。


Jelly-Bean寄存器的HDL路径切片

我们创建了四个寄存器模型,每个模型都有一个HDL路径concat,它具有一个或多个HDL路径片段。

我希望这篇文章能够帮助你更详细地理解HDL路径。

  • 7
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: uvm-1.1a.tar.gz是一个库文件,它是Universal Verification Methodology(UVM)的开源版本,旨在帮助硬件验证工程师实现更高效、更准确的系统级验证工作。该版本的发布包括完整的UVM框架和示例代码,它们可以被应用于各种验证环境中。其中包含了基于SystemVerilog的类库、通用模型、事务级建模器和随机验证,同时也包括了DPI、OVM等不同验证中间件框架的支持。该版本提供了更多的互操作性和可扩展性,让用户能够快速开发和部署大规模验证工作。UVM已经成为ASIC和FPGA验证领域的事实标准,可以在不同的平台和工具上进行移植。因为它的开源特性和流行度,UVM支持社区持续创新和最佳实践的分享,不断提高Verilog验证技术的水平和效率。 ### 回答2: uvm-1.1a.tar.gz是一种开源的验证方法学框架,为现代芯片验证提供了一种完整而灵活的解决方案。它提供了一套可重用的Class Library,包括了各种验证组件,如监控,分析器,交通形成器和交通收集器,并提供了一种现代的验证方法学,包括创建可重用的测试用例和环境。UVM框架是基于SystemVerilog语言的,是目前工业界最常用的验证环境之一。该框架可以帮助芯片设计者和验证工程师更有效地制定验证计划和执行测试,缩短开发周期,提高产品质量和可重复性。同时,UVM也在学术界和研究机构中广泛应用,为芯片验证方法学的研究和发展提供了有力的支持和平台。总之,uvm-1.1a.tar.gz是一个非常有用的开源验证方法学框架,为芯片验证提供了强大的支持和帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值