for(int i = 0; i < cfg.ram_num; i++) begin
wr_addr = cfg.ram[i].addr;
for(int j = 0; j < cfg.wr_num; j++) begin
`uvm_do_on_with(seq, p_sequencer.sqr, {seq.data_id == j ;
seq.ram_id == ram_inx[i] ;
seq.ram_addr == cfg.ram[i].addr[j];})
end
end
报错代码:如上。
解决方法:
- 方法一:seq.ram_addr==wr_addr[j];
- 方法二:seq.ram_addr==local::cfg.ram[i].addr[j]。
知识点:内嵌约束中,约束体中变量名的查找顺序默认是从被随机化对象开始查找的,用local::可以显示声明该变量来源于外部,而非被随机化的对象。