又找到了新的好玩的东西,首先是寄存器信息的标准化编辑
1. 寄存器格式
2. 思路
较为简单,按照SV代码的固定套路写入指定文件夹
寄存器uvm_reg的模板
将上述寄存器信息看做数据库,以每一个寄存器名称作为标识,构建一个寄存器bean,考虑到后续可能还有信息引入,将所有成员变量封装到一个字典中~
字典信息首先包括reg的基本信息:name,address,access
可以看到一个寄存器有多个field且每个feild都对应很多信息,在字典中添加fields项,value为列表,将每个域的字典信息存放到该列表:[{field:en,field_access:RW,。。。},{field:reserved,field_access:RO,。。。}]
自此eg_item的模板构成
寄存器模型uvm_reg_block的模板
- 本质上就是把每个寄存器的信息填入,生成build方法完成每个reg的创建,调用reg的build和configure方法
3. 代码
gitee:https://gitee.com/biongd/rgmGenerate
3.1 pandas对csv的处理:
csv文件名:'0v.csv'
读取csv文件,返回DataFrame类型对象
去除前面几行无用信息:
1
2reader.drop(range(1,2),axis=0,inplace=True)
reader.to_csv('0_0v.csv',index=False)保存文件,删除表头
1
reader.to_csv('0v.csv', header=None)
代码:
1 | import pandas as pd |
效果:
源文件:
处理后:
把最后一行换位reader.to_csv('0_0v.csv',index=False)
,就能把序号给删掉
3.2 csv操作
读:
- reader:按行读,输出嵌套列表,内层列表为每一行的值
1 | #-*-encoding:utf-8-*- |
DictReader:同样是按行读,但是输出的列表内,嵌套的每一行数据用字典保存
注意:第一行数据作为字典的key,每一行的数据都是以这里的key+该行的value保存的
1 | #-*-encoding:utf-8-*- |