UVM验证平台搭建一:reg model 生成

  • Post author:
  • Post category:其他






一、概述

在做验证时,寄存器模型是验证平台中必不可少的,而且项目更新,寄存器也需要跟着进行更新,所以需要快速的生成UVM寄存器模型,本文采用VCS中的ralgen来实现:

1.根据spec中寄存器的描述,用ods、CSV、XML等来描述寄存器信息;

2.根据寄存器描述文件通过脚本批量生成.ralf格式的寄存器文件;

3.通过VCS中的ralgen命令生成UVM register model。

本文通过表格来描述寄存器的相关信息,然后通过python写好的脚本,来解析该表格生成ralf文件。最后通过ralgen命令读取ralf文件生成验证平台需要的寄存器模型。下面以spi模块为例,介绍寄存器生成的过程。



二、寄存器描述表格

  • 寄存器名称、地址和复位值的描述
reg_name reg_addr reg_rst
spi_cr1 0 0000
spi_cr2 4 0700
spi_sr 8 0002
spi_dr c 0000
spi_crcpr 10 0007
spi_rxcrcr 14 0000
spi_txcrcr 18 0000
spi_i2scfgr 1c 0000
spi_i2spr 20 0000
  • spi_cr1寄存器总各个bit位的描述

spec中spi_cr1寄存器各位的信息:

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
bidimode bidioe crcen crcnext dff rxonly ssm ssi lsbfirst spe br[2] br[1] br[0] mstr cpol cpha
rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

通过表格来描述spi_cr1寄存器的bit位信息如下(其他寄存器类似):

bit_name bit_site bit_width bit_access
cpha 0 1 rw
cpol 1 1 rw
mstr 2 1 rw
br 3 3 rw
spe 6 1 rw
lsbfirst 7 1 rw
ssi 8 1 rw
ssm 9 1 rw
rxonly 10 1 rw
crcl 11 1 rw
crcnext 12 1 rw
crcen 13 1 rw
bidioe 14 1 rw
bidimode 15 1 rw



三、生成.ralf寄存器文件

通过实现写好的python脚本,读取寄存器描述表格,生成.ralf文件。

部分.ralf结果如下:

在这里插入图片描述

在这里插入图片描述

具体.ralf文件格式以及其他option请参考ralf user guide



四、ralgen生成寄存器模型

生成RAL model命令:

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

  • -t topname

    RALF文件中顶层模块或者系统的名称,生成的RAL model文件名称为ral_topname.sv
  • -uvm

    声明是UVM方法学
  • -I dir

    realgen搜索源文件的可选目录列表
  • filename.ralf

    .ralf后缀不是必须的

    最后通过ralgen命令生成的spi_reg_model文件,部分内容如下:

    在这里插入图片描述

生成寄存器模型后就可以集成到验证环境中,使用了!后续如果项目更新只要更新下表格中的寄存器描述信息,然后直接运行脚本,就可以直接快速生成新的寄存器模型。

相关参考文档:

ralf和ralgen参考文档



版权声明:本文为houshidai原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。