2015-01-05 3 views
1

Я где-то читал, что Неблокирующий-присвоение не допускается для динамических объектов, как класс-объектов, динамические массивы и т.д.NBA для динамических объектов

Мой пример кода

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 

Индикатор ошибки Popped up is ERROR VCP7049 «Неблокируемое присвоение динамическому объекту: this.a." "testbench.sv" 7 14

Может ли кто-нибудь объяснить причину, почему это так?

Я также где-то читал, что есть предложение об удалении этого правила в следующей версии.

Симулятор - эдаплай.

+0

Какой компилятор/симулятор вы используете? Ваш образец отлично работает в VCS 2013. – Unn

+0

симулятор edaplayground – user1978273

ответ

1

1800 LRM удаляет ограничение на NBA, которые предназначены для членов класса. Однако автоматические переменные с таргетингом на ограничение и массивы с динамическим размером остаются. (Это упрощает управление памятью при удалении объектов, ожидающих события).

Modelsim поддерживает это начиная с версии 10.2, выпущенной в 2012 году.

Смежные вопросы