最近写代码比较多去考虑复用性。
在写uvm里的class的时候,发现一改个名字,就要改挺多东西。
于是尝试了使用宏定义进行简化,代码如下,编译可以通过:
`define data_gen(num, width, name ) `define name_``num name \
`define width_``num width \
`define data_``num `width_``num `name_``num
`data_gen( 0, [12:0], test_name_0 )
`data_gen( 1, [1:0], test_name_1 )
. . . . . .
logic `data_0;
logic `data_1;
这样在量初始化的时候,就可以比较统一了
`name_0 = 0;
`name_1 = 0;
使用uvm的automation 机制也不用很麻烦的改名字
`uvm_field_int( `name_0, UVM_ALL_ON )
`uvm_field_int( `name_1, UVM_ALL_ON )
当然也不影响单独使用
test_name_0 = 11;
test_name_1 = 2;
只是这种写法感觉不规范,查了一下有说define不能嵌套的,所以应该有未知的bug存在。
而且定义1bit的数据要写成 [0:0] 来定义,虽然编译仿真过了,总觉得哪怪怪的。
有什么错误请大家多多指教,有别的复用好方法希望能分享一下。