본문 바로가기
728x90
반응형

HW Design/1. Verilog HDL Basic54

[Testbench] 4. initial block procedural block의 type 중 하나 always blocks도 procedural block initial block 이 블록 내에서 작성하는 모든 코드는 시뮬레이션 시 ==한 번만 실행== initial begin // 코드 작성 end initial block ==not synthesizable== 시뮬레이션 목적으로만 사용 신호를 초기화 할 때도 사용 가능 stimulus code를 작성할 때는 거의 항상 이용 Basic example 2 input과 gate를 test 4 가지 input 경우의 수를 신호로 입력해야함. delay operator도 사용해야함. 경우의 수 사이를 delay 신호가 전파될 수 있는 시간이 있어야 하기에 중요. initial begin // input, .. 2024. 1. 13.
[Testbench] 3. Time 모델링 design code 와 testbench code 의 차이점 testbench는 synthesize (합성 가능)에 신경 쓸 필요가 없다. 위의 결과로, 시간을 많이 쓰는 special 구조체를 쓸 수 있다. ==test stimulus 를 만드는 데 매우 중요== delay를 모델링할 수 있는 구조체. # 시간 단위 delay를 모델링 #10 semi-colon (;) 사용 X 이대로 쓰면 컴파일러 오류 발생 가능 ==할당과 같은 코드 줄에 delay를 작성하는 것이 일반적== 스케줄러 역할을 함. 신호 변경이 지연 시간 이후에 이루어지도록 예약 // A 는 10 시간단위 뒤에 1로 할당 #10 a = 1'b1; 2024. 1. 10.
[Testbench] 2. DUT 인스턴스화 testbench 작성의 시작 ==테스트의 top level로써 행동하는 verilog module 만들기== input, output X 테스트벤치 모듈이 완전히 독립적으로 작동해야하기 때문. module (); // 테스트벤치 코드 작성 endmodule : 테스트벤치 모듈 생성 이후 테스트 중인 설계를 instantiate해야 함. 코드를 stimulate하기 위해 신호를 설계에 연결 가능. # ( // parameters가 있으면 여기서 연결 . () ) ( // 모듈 ports에 연결 . (), . () ); 이 작업이 완료되면 FPGA에 stimulus를 작성할 준비가 됨. clock generating, reset, FPGA로 전송할 test data 생성이 포함. 이를 위해 베릴로그 구조체.. 2024. 1. 10.
[Testbench] 1. 테스트벤치의 구조 Verilog 설계 시, testbench 코딩을 통해 예상대로 작동하는지 확인. testbench 코딩 언어 VHDL Verilog System Verilog 업계에서 많이 채택됨. 가장 일반적으로 사용되는 언어. FPGA 설계를 위해 skill을 배우는 것은 중요. 한 번에 한 언어에 집중하자. 이번 글에선 Verilog에 집중. testbench 설계를 더 배우고 싶으면 udemy 등에서 유로 강의도 존재. Architecture of a Basic Testbench Testbench non-synthesizable (합성 불가능한) Verilog 코드로 구성 설계에 대한 입력을 생성하고 출력이 올바른지 확인 Stimulus block 입력 생성 Output Checker 출력 테스트 Stimulu.. 2024. 1. 10.
728x90
반응형