1.根据reg.csv(寄存器的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文件文章来源:https://www.toymoban.com/news/detail-779345.html
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文章来源地址https://www.toymoban.com/news/detail-779345.html
到了这里,关于使用VCS的ralgen命令产生UVM的寄存器模型的操作步骤的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!