Initialization 如何在Verilog中为任务中的reg赋值?

Initialization 如何在Verilog中为任务中的reg赋值?,initialization,task,verilog,assign,Initialization,Task,Verilog,Assign,我已经面对了这个错误。虽然我搜索了整个网络,但我没有找到好的答案 我想为任务中的注册表分配一个条件值。 错误是: 错误:VCP2648控制单元任务。v:(60,50):Reg初始值设定项必须是常量:DR==10'b0000000000?1'b1:1'b0”; 我为产生此错误的任务编写的代码如下: task Registers_Inc_Generator(output PC_inc,DR_inc,AC_inc, input [7:0]D,T, input[5:0]B, input[9:0] AC,

我已经面对了这个错误。虽然我搜索了整个网络,但我没有找到好的答案

我想为任务中的注册表分配一个条件值。 错误是:

错误:VCP2648控制单元任务。v:(60,50):Reg初始值设定项必须是常量:DR==10'b0000000000?1'b1:1'b0”; 我为产生此错误的任务编写的代码如下:

task Registers_Inc_Generator(output PC_inc,DR_inc,AC_inc, input [7:0]D,T, input[5:0]B, input[9:0] AC,DR, input R,Z);
reg isDR_Zero=(DR==10'b0000000000)?1'b1:1'b0;
reg isAC_Zero=(AC==10'b0000000000)?1'b1:1'b0;
endtask

如果有人能帮助我,我将不胜感激。谢谢。

错误消息是不言自明的。当您

reg isDR_Zero=(DR==10'b0000000000)?1'b1:1'b0;
您正在初始化变量。您只能将变量初始化为常量值。您必须先声明变量,然后将其赋值:


错误消息是不言自明的

reg isDR_Zero=(DR==10'b0000000000)?1'b1:1'b0;
您正在初始化变量。您只能将变量初始化为常量值。您必须先声明变量,然后将其赋值:


您还可以在初始化时避免使用三元运算符。您可以执行类似于-isDR_Zero=DR==10'h0;isAC_Zero=AC==10'h0;您也可以在初始化时避免使用三元运算符。您可以执行类似于-isDR_Zero=DR==10'h0;isAC_Zero=AC==10'h0;