我在某处读到,非阻塞赋值不允许用于动态对象,如类对象、动态数组等。
我的示例代码是
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“动态对象的非阻塞赋值:this.a”。"testbench.sv“7 14
有没有人能说出原因?
我还在某处看到有人提议在下一个版本中删除此规则。
模拟器是edaplayground。
发布于 2015-01-07 07:05:04
1800-2012 LRM取消了对以类成员为目标的NBA的限制。然而,针对自动变量和动态调整大小的数组的限制仍然存在。(这使得在删除具有挂起事件的对象时,内存管理变得简单)。
Modelsim从2012年发布的10.2版本开始支持这一点。
https://stackoverflow.com/questions/27786701
复制相似问题