赞
踩
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文件
- 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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。