2017-03-10 12 views
-1

안녕하세요, 저는 Verilog 프로그램을 자일링스에서 작성 중이며 테스트 벤치로 작업 할 수 없습니다.Verilog TestBench 오류

module Lab3(
    input u, 
    input clk, 
    input clrn, 

    output wire a,b,c,d,e,f,g 

    ); 

    wire dff3_combo; 
    wire q_to_q; 


    dff3 d0(
    .ns(dff3_combo), 
    .clr(clrn), 
    .clk(clk), 
    .q(q_to_q) 
     ); 


    combo_circuit combo(
    .q(q_to_q), 
    .u(u), 
    .ns(dff3_combo), 
    .a(a),.b(b),.c(c),.d(d),.e(e),.f(f),.g(g) 
    ); 
    endmodule 

이것은 테스트 벤치에서 시도한 것입니다. 시뮬레이션은 작동하지 않았지만 u_tb, clock_tb 및 clr_tb는 그 값을 유지했습니다.

`timescale 1ns/1ps 

    module testbench (); 
reg u_tb,clr_tb, clock_tb; 
wire a,b,c,d,e,f,g; 


Lab3 L(
.u(u_tb), 
.clk(clock_tb), 
.clrn(clr_tb), 
.a(a),.b(b),.c(c),.d(d),.e(e),.f(f),.g(g) 
); 


always 
begin 
clock_tb = 1'b1; 
#1; 
clock_tb = 1'b0; 
#1; 
end 

initial 
begin 
u_tb = 1; 
clr_tb = 0; 
#1 u_tb = 1; 
#16 clr_tb = 0; 
#20 $finish; 
end 
endmodule 

내 교수는이 테스트 벤치 작성 방법을 알려주지 않았으며 매우 혼란 스럽습니다. 어떤 도움을 주셔서 감사합니다.

감사

+2

"시뮬레이션이 작동하지 않았습니다." 그게 무슨 뜻 이죠? 오류 메시지가 나타 났습니까? 질문을 편집하고 이러한 세부 정보를 추가해야합니다. – toolic

답변

0
대신 일시 중지의 그런 다음이

initial 
    begin 
    clk = 0; 
    #5 
    forever clk = #5 ~clk; 
    end 

처럼 시계를 다시 작성

(# 1) 사용자의 입력 신호 변경의 각 사이에, 대신

repeat (1) @ (posedge clk); 

당신이 원하기 때문에이 시도 클럭 에지 직후에 항상 설정하십시오.

그래서 테스트 proceedure 초기 문은 당신이가는 얻는 경우에 자세한

initial 
begin 
u_tb = 1; 
clr_tb = 0; 
repeat (1) @ (posedge clk); 
u_tb = 1; 
repeat (8) @ (posedge clk); 
clr_tb = 0; 
repeat (5) @ (posedge clk); 
$finish; 
end 

처럼 보일 것입니다.