这是 Verilog 代码,我有这个错误( o 不是有效的左值)。有人可以帮助我吗?
module ts ;
reg[3:0] in1,in2;
wire[3:0] o;
integer i,j;
Sommatore4Bit s(.in1(in1), .in2(in2), .out(o));
initial begin
$dumpfile("dump.vcd");
$dumpvars(1);
for (i = 0 ; i < 16; i = i+1 ) begin
for (j = 0; j < 16 ; j = j+1) begin
in1 = i;
in2 = j;
o = in1 + in2;
display;
end
end
end
task display;
$display(" in1 -> %d , in2 -> %d, out %d",in1,in2,o);
endtask
endmodule
module Sommatore4Bit (
input[3:0] in1, input[3:0] in2, output reg[3:0] out
);
always @(in1 or in2) begin
out = in1 + in2;
end
endmodule
您将
o
信号声明为 wire
,这意味着您无法在 initial
块中对其进行赋值。
删除此行后,错误就会消失:
o = in1 + in2;