我遇到了这个错误。虽然我寻求全网,但我找不到好的答案。
我想将条件值分配给任务中的reg。 错误是这样的:
错误:VCP2648 Control_Unit_Tasks.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
如果有人帮助我,我将不胜感激。感谢。
答案 0 :(得分:2)
错误消息非常明显。当你有
reg isDR_Zero=(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);
begin
reg isDR_Zero;
reg isAC_Zero;
isDR_Zero=(DR==10'b0000000000)?1'b1:1'b0;
isAC_Zero=(AC==10'b0000000000)?1'b1:1'b0;
end
endtask