System verilog 自动变量';trans';无法在此上下文中编写

System verilog 自动变量';trans';无法在此上下文中编写,system-verilog,test-bench,System Verilog,Test Bench,我试图编写systemVerilog模拟代码。然而,当我试图向类“trans”写入一些值时,它显示了这个错误。有人知道如何解决这个问题吗 “trans”类已包含在内 task main; forever begin transaction trans; gen2driv.get( trans ); @( posedge vif.clk ); vif.valid <= 1;

我试图编写systemVerilog模拟代码。然而,当我试图向类“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
任务主体;
永远开始
交易交易;
gen2driv.get(trans);
@(posedge vif.clk);
vif.有效来自标准:

对自动变量进行非阻塞赋值是非法的

不要使用标准中的非阻塞分配

对自动变量进行非阻塞赋值是非法的


不要使用非阻塞赋值
错误发生在“trans.c”行,似乎无法写入自动变量“trans”。在我将“trans”从自动更改为全局(静态?)后,它工作了。有人知道为什么吗?错误发生在“trans.c”行,似乎无法写入自动变量“trans”。在我将“trans”从自动更改为全局(静态?)后,它起了作用。有人知道为什么吗?