我试图编写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”从自动更改为全局(静态?)后,它开始工作了。有人知道为什么吗?
答案 0 :(得分:2)
根据标准:
对自动变量进行非阻塞分配是非法的。
请勿在自动变量<=
上使用非阻塞分配trans
,而应使用=
。或在循环外声明trans
以使其静态。或将其声明为static
。