SV class 操作ref 变量问题
时间:10-02
整理:3721RD
点击:
本人初学,请教一下弱智问题:验证模型全局有一个大的内存,定义了一个大的数组模拟
各个类中的某些方法会读写这个大内存。目前用ref在方法内不能操作外边的大内存数据,请问这是什么问题 。这种情况要怎么做?
bit [7:0] mem [bit[31:0]]
class a;
bit [7:0] mem [bit[31:0]];
integer i;
function new(ref bit [7:0] mem [bit[31:0]]);
this.mem=mem;
endfunction
function mem_ini();
for(i=0;i<256;i++)
mem[i]=i;
endfunction
endclass
各个类中的某些方法会读写这个大内存。目前用ref在方法内不能操作外边的大内存数据,请问这是什么问题 。这种情况要怎么做?
bit [7:0] mem [bit[31:0]]
class a;
bit [7:0] mem [bit[31:0]];
integer i;
function new(ref bit [7:0] mem [bit[31:0]]);
this.mem=mem;
endfunction
function mem_ini();
for(i=0;i<256;i++)
mem[i]=i;
endfunction
endclass
你用引用(ref)以后,又用this.mem = mem做复制。你在mem_ini里面的操作都是针对复制后的memory,当然不会影响到ref的mem了。应该直接在mem_ini的参数里面用ref mem,不需要internal mem变量。
多谢,明白
建议如果是verification的话,不要使用这么大的reg数组,可以使用联合数组来实现,效率更高!
、