NBA的动态对象

时间:2015-01-05 19:45:08

标签: system-verilog

我已经读过某些地方,对于类对象,动态数组等动态对象,不允许使用非阻塞分配。

我的示例代码是

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。

1 个答案:

答案 0 :(得分:1)

1800-2012 LRM取消了针对类成员的NBAs的限制。但是,限制目标自动变量和动态大小的数组仍然存在。 (这样可以在删除具有挂起事件的对象时简化内存管理。)

Modelsim从2012年发布的10.2版开始支持此功能。