автоматическая переменная 'trans' не может быть записана в этом контексте - PullRequest
0 голосов
/ 08 июля 2019

Я пытался написать код симуляции системы Verilog. Однако, когда я попытался записать какое-то значение в класс «trans», он показал эту ошибку. Кто-нибудь знает, как решить эту проблему?

Включен класс "trans".

task main;
        forever begin
            transaction trans;
            gen2driv.get( trans );
            @( posedge vif.clk );
            vif.valid <= 1;
            vif.a <= trans.a;
            vif.b <= trans.b;

            @( posedge vif.clk );
            vif.valid <= 0;
            trans.c <= vif.c;

            @( posedge vif.clk );
            trans.display( "[ DRIVER ]" );
            no_transactions++;
        end
endtask

Ошибка в строке "trans.c <= vif.c". </p>

Кажется, автоматическая переменная 'trans' не может быть записана. После того как я изменил 'trans' с автоматического на глобальный (статический?), Он заработал. Кто-нибудь знает почему?

1 Ответ

2 голосов
/ 08 июля 2019

от стандарта:

Запрещается делать неблокирующие присваивания автоматическим переменным.

не использовать неблокирующее присваивание <= для автоматической переменной trans, используйте = вместо.Или объявите ваш trans вне цикла, чтобы сделать его статичным.Или объявите это как static.

...