我的代碼由兩個文件組成。一個文件包含所有模塊,一個文件包含測試臺。當我嘗試運行在試驗檯上模擬中,我得到了我的模塊之一在這條線的未解決的引用錯誤:我的測試平臺調用模塊中發生Verilog代碼編譯但爲什麼不能運行?
Add_half (p[3], g[3], in_a[3], in_b[3]);
這條線。
可能是什麼問題?
這是測試平臺的代碼。 `時間表1ns的/ 100PS
module CARRYLOOKAHEAD_TB;
reg [3:0] in_a_tb;
reg [3:0] in_b_tb;
reg in_c0_tb;
wire [3:0] s_tb;
wire c4_tb;
CarryLookAheadAdder DUT (.in_a(in_a_tb), .in_b(in_b_tb), .in_c0(in_c0_tb), .out_s(s_tb), .out_c4(c4_tb));
initial
begin
in_a_tb = 4'b0000;
in_a_tb = 4'b0001;
in_c0_tb = 1'b0;
#50
in_a_tb = 4'b0000;
in_a_tb = 4'b0001;
in_c0_tb = 1'b1;
#50
in_a_tb = 4'b0001;
in_a_tb = 4'b0001;
in_c0_tb = 1'b0;
#50
in_a_tb = 4'b1111;
in_a_tb = 4'b0001;
in_c0_tb = 1'b0;
#50
in_a_tb = 4'b1111;
in_a_tb = 4'b0000;
in_c0_tb = 1'b1;
#50 $stop;
#20 $finish;
end
endmodule
這是模塊
module Add_half (sum, c_out, a, b);
input a, b;
output c_out, sum;
assign sum = a^b;
assign c_out = a & b;
endmodule
代碼這是得到由試驗檯名爲
module CarryLookAheadAdder (in_a, in_b, in_c0, out_s, out_c4);
input [3:0] in_a;
input [3:0] in_b;
input in_c0;
output reg [3:0] out_s;
output reg out_c4;
reg [3:0] p;
reg [3:0] g;
reg [3:0] c;
[email protected](in_a, in_b, in_c0)
begin
out_s[0] = (in_a[0]^in_b[0])^in_c0;
Add_half (p[3], g[3], in_a[3], in_b[3]);
Add_half (p[2], g[2], in_a[2], in_b[2]);
Add_half (p[1], g[1], in_a[1], in_b[1]);
Add_half (p[0], g[0], in_a[0], in_b[0]);
out_c4 = c[4];
out_s[3] = p[3]^c[3];
out_s[2] = p[2]^c[2];
out_s[1] = p[1]^c[1];
out_s[0] = p[0]^c[0];
end
endmodule
如果您發佈了所有有問題的代碼(Add_half的定義)以及錯誤消息和您正在使用的工具,這將非常有幫助。 – 2011-03-09 04:13:37
我收到的錯誤消息是「未解決的對Add_half的引用」。我正在使用Modelsim。 – 2011-03-09 04:24:03
發表包含語句「Add_half(p [3],g [3],in_a [3],in_b [3]); 」 – 2011-03-09 05:27:56