001_uvm_ralgen_ug(Generating a RAL Model)

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

  • -t topname
    RALF文件中顶层模块或者系统的名称,生成的RAL model文件名称为ral_topname.sv
  • -uvm
    声明是UVM方法学
  • -I dir(注意是i的大写,不是L的小写)
    ralgen搜索源文件的可选目录列表
  • filename.ralf
    .ralf后缀不是必须的。对于多个文件的情况,指定顶层的RALF文件,在这个文件通过source来包含其他文件。
    $VCS_HOME/doc/examples/vmm/std_lib/vmm_subenv/oc_ethernet/dual_eth.ralf

options

  • -b
    为声明了完整hdl_path的reg和mem生成后门访问代码
  • -c a
  • -c b
  • -c f
    -c表示coverage,上面三个依次表示“Address Map” “Register Bits” “Field Values”功能覆盖率模型
  • -e
    为每个抽象类生成空约束
  • -f
    在一个文件里声明ralgen选项

生成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路径

  • Cross-module references based backdoors(XMR's)
    ralgen的-b选项生成一组write()/read()接口访问的类(扩展自uvm_reg_backdoor,bkdr后缀)

  • DPI-C based
    ralgen默认的后门选项。在ral_block的类中的build()里register调用add_hdl_path()

如果有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同时被使用,则必须也加上这个选项。

你可能感兴趣的:(001_uvm_ralgen_ug(Generating a RAL Model))