| |
产生ral模型,用以下命令:
Ralgen [options] -t topname -l sv|ov {-I dir} {filename.ralf}
-t topname
顶层模块或系统的描述名
-l sv|ov
指定systemverilog 或openvera作为执行语言,ral 模型产生以ral_topname.sv或ral_topname.vr命名的文件。
-I dir
ralgen搜索源TCL文件的目录文件
Filename.ralf
文件名包含ralf描述符,.ralf后缀名可加可不加,推荐加后缀。对于多个文件而言,指定一个顶层的ralf文件,ralf文件可以通过include TCL选项包含所有其他的文件。
Option
-b
产生寄存器和memory后门访问方式的的代码,需要先指定完全的hdl_path
Generate the back-door access code for those registers and
memories where a complete hdl_pathhas been specified.
-c a
产生地址映射的功能覆盖率模型,-c选项可以指定多次
Generate the “Address Map”functional coverage model. The -c
option may be specified multiple times.
-c b
Generate the “Register Bits” functional coverage model. The -c
option may be specified multiple times.
-c f
Generate the “Field Values”functional coverage model. The -c
option may be specified multiple times.
-e
Generate empty constraint blocks for every abstractclass.
-f <filename>
Specifies all the ralgen options within a file.
定义一个独立的寄存器,寄存器类的名字为regnam,类将被命名为ral_reg_regnam
如果一个名为blkname的block类,包含一个名为regnam的寄存器,该寄存器将会被命名为ral_reg_blknam_regnam。
在一个名为blknam的block中有一定义为filnam的寄存器文件,文件中有一个定义为regnam的寄存器,该寄存器将被命名为ral_reg_blknam_filnam_regnam。
所有的寄存器类都是派生自vmm_ral_reg。
Register Model Class
class ral_reg_CTRL extends vmm_ral_reg;
vmm_ral_field TXE;
vmm_ral_field RXE;
vmm_ral_field PAR;
vmm_ral_field DTR;
vmm_ral_field CTS;
...
endclass: ral_reg_CTRL
Virtual Register Abstraction Class
block blk1 {
memory ram0 { ... }
virtual register dma[256] ram0@0x0000 {
field len { ... }
field bfrptr { ... }
field ok { ... }
}
}
Corresponding abstraction model:
class ral_vreg_blk1_dma extends vmm_ral_vreg;
vmm_ral_vfieldlen;
vmm_ral_vfieldbfrptr;
vmm_ral_vfieldok;
...
endclass: ral_vreg_blk1_dma
class ral_block_blk1 extends vmm_ral_block;
vmm_ral_memram0;
ral_vreg_blk1_dma dma;
...
endclass: ral_block_blk1
Block的基类为vmm_ral_block