我已经读过某些地方,对于类对象,动态数组等动态对象,不允许使用非阻塞分配。
我的示例代码是
class dyn_class;
logic a;
function void put();
a <= 1'b1;
endfunction
endclass
module TB();
dyn_class dyn_obj = new();
initial
dyn_obj.put();
endmodule
弹出的错误是 错误VCP7049&#34;对动态对象的非阻塞分配:this.a。&#34; &#34; testbench.sv&#34; 7 14
有人能说出为什么会这样吗?
我还在某处读过,有人建议在下一版本中删除此规则。
模拟器是edaplayground。
答案 0 :(得分:1)
1800-2012 LRM取消了针对类成员的NBAs的限制。但是,限制目标自动变量和动态大小的数组仍然存在。 (这样可以在删除具有挂起事件的对象时简化内存管理。)
Modelsim从2012年发布的10.2版开始支持此功能。