1.根据reg.csv(寄存器的SPEC)文件生成一个reg.ralf文件,这个文件有特定的脚本生成(我目前不会),当然也可以自己手写(如果寄存器比较小)

 

寄存器的SPEC

reg.ralf文件

 2.".ralf"文件的格式

register UARTDT { //关键字 寄存器名

bytes 4; //指定寄存器的大小(单位是 byte)

left_to_right; //指定寄存器中的(下面列举的)域(field)怎么排布的

field not_defined{ //关键字 域名

bits 16; //域的大小(单位是 bit)

access ro; //域的访问方式

reset 'h0; //域的复位值

}

field rev {

bits 4;

access ro;

reset 'h0;

}

field ...

}

register UARTRSR {

...

}

block uart_reg { //关键字 寄存器块名

bytes 4; //每个寄存器占用空间大小

register UARTDR @'h000; //关键字 寄存器名 寄存器的地址

register UARTRSR @'h0004;

...

}

 3.有reg.ralf文件之后,编写一个生成寄存器模型的Makefile文件

genreg:

ralgen -t uart_reg -uvm reg.ralf -o uart_regmodel

//ralgen 是vcs生成寄存器模型的命令

// -t uart_reg 指定顶层的寄存器块名

// -uvm reg.ralf 生成uvm使用的寄存器模型, reg.ralf 是生成模型的输入文件

// -o uart_regmodel 指定输出的寄存器模型的文件名为 uart_regmodel.sv

4.直接在terminal上 make genreg 便可产生寄存器模型文件,如需要修改文件内容,可以在gvim底部命令行中输入 :%s/123/abc/g 命令,将文件中的123全部更改为abc

推荐文章

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。