初始化Verilog中的数组错误
问题描述:
当我初始化数组sbox
时,出现语法错误。请帮助我。初始化Verilog中的数组错误
reg [7:0] sbox[15:0];
sbox = '{
8'h63, 8'h7c, 8'h77, 8'h7b,
8'hf2, 8'h6b, 8'h6f, 8'hc5,
8'h30, 8'h01, 8'h67, 8'h2b,
8'hfe, 8'hd7, 8'hab, 8'h76
};
这实际上是sbox。错误它是表示:
near "=": syntax error, unexpected '=', expecting IDENTIFIER or TYPE_IDENTIFIER
我用ModelSim仿真
答
您使用的数组赋值语法是唯一在SystemVerilog
有效,而不是Verilog
。
所以你的编译器需要支持这个,你需要告诉编译器该文件是SystemVerilog。大多数编译器(包括modelsim)将基于扩展名假定文件类型,例如, .v == Verilog
和.sv == SystemVerilog
,而其他人需要一个开关。
另外,从toolic回答指出,你需要放置在initial
块分配,或者你可以声明与分配相结合,这样的:
reg [7:0] sbox[15:0] = '{
8'h63, 8'h7c, 8'h77, 8'h7b,
8'hf2, 8'h6b, 8'h6f, 8'hc5,
8'h30, 8'h01, 8'h67, 8'h2b,
8'hfe, 8'hd7, 8'hab, 8'h76
};
答
分配应该是一个initial
或always
块内:
module tb;
reg [7:0] sbox[15:0];
initial begin
sbox = '{
8'h63, 8'h7c, 8'h77, 8'h7b,
8'hf2, 8'h6b, 8'h6f, 8'hc5,
8'h30, 8'h01, 8'h67, 8'h2b,
8'hfe, 8'hd7, 8'hab, 8'h76
};
end
endmodule
你会屈尊透露你说的那些语法错误实际上是**说**? –
我只和VHDL一起工作了很短时间(甚至没有使用数组),但一般来说:数组中最后一个'''',''; * * *可能是你的罪魁祸首。 – dualed
@HenningMakholm靠近“=”:语法错误,意外的'=',期待IDENTIFIER或TYPE_IDENTIFIER 这是它显示的错误 – nbsrujan