我在verilog中的错误不是有效的左值

问题描述 投票:0回答:1

这是 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
verilog
1个回答
0
投票

您将

o
信号声明为
wire
,这意味着您无法在
initial
块中对其进行赋值。

删除此行后,错误就会消失:

            o = in1 + in2;
© www.soinside.com 2019 - 2024. All rights reserved.