verilog中的错误:使用系统verilog&n; N位向量的警告?

时间:2016-08-18 13:17:20

标签: verilog

我正在使用编译器Icarus,而我正在以4:1的方式执行Mux。

代码如下:

module mux (in,out,select);

input   [3:0] in;
input   [1:0] select;
output  reg out;

always@(select or in)
begin
    if (select == 2b'00)

        out = in[0];
    end 

    else if (select == 2b'01)
    begin
        out = in[1];
    end

    else if (select == 2b'10)
    begin   
        out = in[2];
    end

    else if (select == 2b'11)
    begin
        out = in[3];
    end

end
endmodule

但是我从compilator那里收到了这条消息:

enter image description here

我的问题是,问题是因为我在内部使用位格式"如果"代替表达" int"表达?

Sincerilly。 NIN。

2 个答案:

答案 0 :(得分:2)

您的代码存在的问题是您正在编写2b'00而不是2'b00,并且Icarus会因为您正在编写SystemVerilog代码而感到困惑,这也不正确。因此要么修复你的文字,要么像摩根发布的那样更有效地编写你的代码。

答案 1 :(得分:1)

尝试(使用verilog 2005或更高版本):

module mux (  
  input       [3:0] in,
  input       [1:0] select,
  output  reg       out
);
  always @* begin
    out = in[select];
  end
endmodule