在这种情况下不能编写自动变量'trans'

时间:2019-07-08 18:11:25

标签: system-verilog test-bench

我试图编写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

“ trans.c <= vif.c”行中发生错误。

似乎无法写入自动变量'trans'。在将“ trans”从自动更改为全局(静态?)后,它开始工作了。有人知道为什么吗?

1 个答案:

答案 0 :(得分:2)

根据标准:

  

对自动变量进行非阻塞分配是非法的。

请勿在自动变量<=上使用非阻塞分配trans,而应使用=。或在循环外声明trans以使其静态。或将其声明为static