2014-03-27 121 views
0

嘿我試圖在Verilog中使用生成函數,代碼編譯成功,但無法模擬。Verilog生成語句問題

我得到以下錯誤:

Illegal output or inout port connection for "port 'sum'". 
Illegal output or inout port connection for "port 'carry'". 

誰能告訴我什麼我做錯了。感謝

module test(input wire [2:0] a, 
     input wire [2:0] b, 
     output reg [2:0] s, 
     output reg [2:0] c); 

genvar i; 
generate 
for(i=0;i<3;i=i+1) 
    adder_half inst(.sum(s[i]),.carry(c[i]),.a(a[i]),.b(b[i])); 
endgenerate 

endmodule 

module adder_half(
    output sum,carry, 
    input a,b 
    ); 
xor(sum,a,b); 
and(carry,a,b); 

endmodule 
+0

顯示您的測試平臺。 – toolic

+0

我沒有做過一個,我直接使用了該工具的(ModelSim)模擬選項。 – user3185902

+0

我不使用modlsim,我不能重現您的錯誤。儘量不要將你的輸出聲明爲'reg'。 – toolic

回答

2

reg類型只用於程序的分配,但是實例的連接被處理更像連續分配。

從輸出中刪除reg關鍵字。變化:

output reg [2:0] s, 
    output reg [2:0] c); 

到:

output [2:0] s, 
    output [2:0] c);