Verliog Modelsim错误2388.已在此范围内声明

时间:2017-05-03 16:32:41

标签: verilog declaration modelsim

这是我的Verilog代码。当我尝试编译时,我在Modelsim中遇到2个错误。

**错误(可抑制):/ home / ece4514 / mul1.v(6):( vlog-2388)'p'已在此范围(mul1)中声明。 **错误(可抑制):/ home /ece4514 / mul1.v(8):( vlog-2388)'c'已在此范围内声明(mul1)。

module mul1(output [103:0] p, 
        output [51:0]  c, 
        input [51:0]   x,
        input [51:0]   y); 
reg [103:0]p;
reg [103:0]a;
reg c;
integer i; 

always @(x , y)
begin 
  a=x;
  p=0; // needs to zeroed
  for(i=0;i<104;i=i+1)
  begin
    if(y[i])
      p=p+a; // must be a blocking assignment
    a=a<<1;
  end

  for(i=103;i>=0;i=i-1)
  begin
    if (p[i])
        c=p[i:i-51];
        break;
    end

  end
endmodule

我需要做出哪些改变?

1 个答案:

答案 0 :(得分:0)

您正在使用Verilog-2001样式端口声明和Verilog-2001 / SystemVerilog样式。对于较新的样式,有关端口的所有信息都在标题中。

module mul1(output reg [103:0] p, 
        output reg [51:0]  c, 
        input [51:0]   x,
        input [51:0]   y); 

reg [103:0]a;
integer i; 

旧样式只有标题中的标识符,后来您声明了方向和类型。