UVM寄存器的ralf文件及其内容

目录

1 UVM寄存器模型的生成命令

1.1 寄存器模型操作

2  RALF 文件的语法构成

2.1 field 语法

2.2 register 语法

2.3 block语法

2.4 system语法

2.4.1 模块例化多次

3 由ralf生成的 ral_XXX.sv 内容说明

4 相同名字的register在不同block的写法

5 参考


1 UVM寄存器模型的生成命令

即如何通过 ralf 文件生成生成 ral_model.sv 的命令

ralgen [options] -t topname -I dir -uvm {filename.ralf}

其中:
        -t:指定block或者system中顶层模块的名字;
        -uvm:指定生成的ral文件用的是UVM验证方法学
        -I:指定ralgen搜索源Tcl文件的目录的可选列表
        filename.ralf:指定包含ralf描述信息的文件名称.ralf后缀可以不加,但是还是建议加上.
可选参数:
        -b:提供完成的hdl_path,可以为register和memory生成后门访问代码;
        -B:生成具有字节粒度的ralf模型
        -f file_name:指定存储ralf参数的文件

1.1 寄存器模型操作

2  RALF 文件的语法构成

RALF 描述是一个Tcl 8.5文件。因此,可以使用循环和变量等编程构造来快速而简洁地构造大型寄存器集和内存定义。可以使用Tcl source命令来执行多个和分层注册规范管理。此外,还可以使用Tcl表达式来指定寄存器偏移值、基值和寄存器名称。RALF的构造包括几个部分:

  • field

  • register

  • regfile

  • memory

  • virtual register

  • block

  • system

实例:vlan.ralf
register vlan{
        bytes 2;
        field add {
                bits 11;
                reset ‘hff;
                access rw;
        }
        field inc {
                bits 1;
                reset ‘h1;
                access rw;
        }
}

block vlan_regmodel {
        bytes 2;
        register vlan_edit @'ha;
}

system vlan_top_regmodel {
    bytes 1;
    block vlan_regmodel[2] @’hF0000 +’h01000;
}

2.1 field 语法

field 定义了寄存器连续 bit 的最小集合。不同的 field 串联构成寄存器。

field add/inc:域段名字;

bits:指定此域段的位宽;如果未指定,默认为1。此属性只能指定一次。

reset:设置复位值;

access:设置域段的读写属性;

2.2 register 语法

寄存器定义了字段的连接。寄存器用于寄存器文件和寄存器块中。

vlan:寄存器名字

bytes 2:寄存器总位宽,byte为单位,如果所有field位宽之和大于此 bytes 生成 ral 文件时会报错;如果没有添加 bytes,那么系统会自动计算所有 bits 之和,然后找到最小正整数*8>=所有域短之和,例如所有域段是12bit,那么系统会用16bit来存储这个寄存器数据。

left_to_right:默认情况下,字段从寄存器的最低有效位开始连接。如果指定了此属性,字段将从寄存器的最重要部分开始连接,但从最低重要部分对齐。当使用从左到右的规范样式时,第一个字段不能指定位偏移量:第一个字段的偏移量取决于其他字段之间的大小和间距。

2.3 block语法

块定义了一组寄存器和存储器。寄存器被连接成块。一个块可以有多个物理接口。寄存器和内存可以在块内的物理接口之间共享。

vlan_regmodel:block 的名字

bytes 2:设置寄存器位宽;

register:指示block中添加的寄存器名字,@'ha指示此寄存器的地址是a;

2.4 system语法

系统定义由块或子系统组成的设计。一个系统可以用来创建更大的系统。

vlan_top_regmodel :system的名字

2.4.1 模块例化多次

在实际的应用当中,一个moudle可能会被例化多次,只是每个module的基地址不一样而已,它们的空间大小都是一样的,uvm支持这样的操作:

    block vlan_regmodel[2] @’hF0000 +’h01000;

@后面跟的第一个地址是 vlan_regmodel 第一个的起始地址,而后面跟的第二个地址是每个module之间的间隔。


3 由ralf生成的 ral_XXX.sv 内容说明

从图中可以看出,寄存器的 class 会在名字前面加上 ral_reg_XXX;

field 名字保持不变;

bytes设置寄存器的数据位宽,在new函数中体现;

field位宽、读写属性、复位值在build函数中体现。

block中支持array类型的寄存器,生成的时候同样会是array类型方便访问,寄存器的地址会以数据位宽宽度递增。


 

4 相同名字的register在不同block的写法

在设计当中难免会存在不同模块有相同名字的寄存器,如果按照之前的先用register设置寄存器相应的域段,然后再将register添加到block当中的方法,在生成ral文件时会报名字一样的错误.遇到此类错误,可以修改ralf文件的格式,将寄存器的例化和域段的例化都放到block内。

5 参考

UVM寄存器模型(一) —— ralgen脚本_hh199203的博客-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/hh199203/article/details/118612011?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168568771716800211555112%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=168568771716800211555112&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-2-118612011-null-null.142%5Ev88%5Econtrol,239%5Ev2%5Einsert_chatgpt&utm_term=ralgen%20-F%20-B%20-T&spm=1018.2226.3001.4187

uvm ralf文件学习_weixin_39662684的博客-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/weixin_39662684/article/details/109328919?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-1-109328919-blog-118726416.235%5Ev36%5Epc_relevant_default_base3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-1-109328919-blog-118726416.235%5Ev36%5Epc_relevant_default_base3&utm_relevant_index=2

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
UVM(Universal Verification Methodology)寄存器模型是一用于验证芯片寄存器功能的标准方法。它提供了一个统一的、可重用的框架,用于建立和管理寄存器模型,以及执行寄存器访问和验证。 UVM寄存器模型的主要组成部分包括寄存器模型、寄存器层次结构、寄存器操作和寄存器验证环境。 1. 寄存器模型:UVM寄存器模型是一个抽象的表示,用于描述芯片内部的寄存器寄存器字段。它提供了一种结构化的方式来定义寄存器的属性、寄存器字段的位宽和访问权限等。 2. 寄存器层次结构:UVM寄存器模型支持多层级的寄存器结构,可以通过层级关系来描述芯片内部的寄存器模块和子模块。这样可以更好地组织和管理寄存器模型,并提供寄存器之间的相互作用和访问。 3. 寄存器操作:UVM提供了一系列的API,用于执行寄存器读写操作。通过这些API,可以向寄存器模型发送读写请求,并获取响应。同时,还可以对寄存器的访问进行配置和控制,如重置、写入默认值等。 4. 寄存器验证环境:UVM寄存器模型可以与其他验证环境进行集成,以验证寄存器功能的正确性。通过使用事务级建模(TLM)接口,可以将寄存器操作与其他验证组件进行交互,并进行功能验证、覆盖率分析和错误注入等。 总之,UVM寄存器模型提供了一种规范化的方法来描述和验证芯片寄存器功能。它具有可重用性、灵活性和扩展性,并能与其他验证组件进行集成,从而提高验证效率和可靠性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值