uvm

001_uvm_ralgen_ug(Generating a R

2017-02-25  本文已影响0人  500强低级工程师

生成RAL model命令:
ralgen [options] -t topname -I dir -uvm {filename.ralf}

options

生成Ral model到多个文件

命令行选项 -F
可以生成多个独立的寄存器模型文件,一个子模块(ralf文件中的block)一个文件,这些独立的寄存器模型文件可以在子模块的验证环境中重用。
对于最顶层模块(ralf文件中最顶层的block或者system),生成一个顶层用的ral_blkname.sv文件,用`include命令将生成的子模块文件包含进来。
格式如下:
ralgen -uvm -t sys sys.ralf -F
其中顶层system sys下有几类block blk1,blk2,blk3...,会生成几个ral_block文件ral_blk1.sv,ral_blk2.sv,ral_blk3.sv...,同时生成ral_sys.sv文件,在ral_sys.sv文件中`indclude 这几个ral_block文件。

注意:即使是ralf文件中的system对应生成到ral文件中的顶层类也是继承自uvm_reg_block,这一点跟vmm不一样。

命令行选项 -P
与-F选项不同的是,生成的子模块文件名为ral_blk1_pkg.sv,ral_blk2_pkg.sv,ral_blk3_pkg.sv...顶层名为ral_sys_pkg.sv。文件是package形式。

命令行选项 -T
这个选项一定要和-F或者-P一起使用,只生成-t指定的文件。比如ralgen -uvm -t sys sys.ralf -F -T命令只会生成ral_sys.sv文件,尽管sys下有子模块,但不生成ral_blk1.sv,ral_blk2.sv...等文件。

命令行选项 +prunable
这个选项一定要和-F或者-P一起使用,对于子模块的ral_blk1.sv,ral_blk2.sv...而言,没有区别,区别在于ral_sys.sv文件中加入了RAL_PRUNE_blk1,RAL_PRUNE_blk2的宏,把关于ral_blk1,ral_blk2类相关的代码隔开了。
这么做的目的是:对于大型SoCs,顶层的一些测试可能并不需要包含所有子模块的ral_model,用宏隔开,可以灵活的修改,节省编译时间和仿真时间。

后门类

ralgen提供两种方式生成后门。前提是在ralf文件的定义里指定了后门访问的RTL路径

如果有bkdr类(ralgen -b),后门访问通过XMR方式,如果没有通过DPI-C方式,XMR优先级更高,DPI-C是默认方式。

命令选项-gen_vif_bkdr
-b选项生成的后门不能封装到package,因为HDL XMRs在生成的bkdr类里面,如果要想封装成package,加上-gen_vif_bkdr选项,这样会额外生成一个interface文件,HDL路径在这个interface文件里,而bkdr类中会声明interface,然后bkdr类的read,write是通过调用interface里生成的read write任务来访问的。
这个选项必须在有-b选项才可以被使用。
如果-b 和-P同时被使用,则必须也加上这个选项。

上一篇下一篇

猜你喜欢

热点阅读