내 코드는 두 개의 파일로 구성됩니다. 하나의 파일에는 모든 모듈이 있고 하나의 파일에는 테스트 벤치가 있습니다. 내가 테스트 벤치에서 시뮬레이션을 실행하려고 할 때, 나는 나의 모듈 중 하나에이 라인에 해결되지 않은 참조 오류가 발생합니다 :Verilog 코드가 컴파일되지만 시뮬레이션이 실행되지 않는 이유는 무엇입니까?
Add_half (p[3], g[3], in_a[3], in_b[3]);
이 줄 내 테스트 벤치 호출 모듈에서 발생합니다.
무엇이 문제 일 수 있습니까?
이것은 테스트 벤치 용 코드입니다. `타임 스케일 1NS은/
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
코드입니다 100PS
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 정의)와 오류 메시지 및 사용중인 도구를 모두 게시 한 경우 매우 유용합니다. –
내가 얻는 오류 메시지는 "해결되지 않은 참조가 Add_half"입니다. 나는 Modelsim을 사용하고있다. –
"Add_half (p [3], g [3], in_a [3], in_b [3]) 문을 포함하는 코드 게시 : " –