본문 바로가기

FPGA 공부

Verilog file 단독 simultaion 해보기

2024.09.06

아직 TestBench나 Simulation등을 정확히 이해하지 못하고 있으며 GPT나 유튜브를 보며 실험 중이다. 따라서 내가 서술하는 내용은 정확하지 않을 가능성이 매우 높다.

`timescale 1ns / 1ps  // 시뮬레이션 시간 단위와 정밀도를 설정

module js_240906;
    reg clk;  // 클럭 신호를 저장할 레지스터 선언

    // Clock generation process
    initial begin
        clk = 0;  // 초기 클럭 신호를 0으로 설정
        forever #5 clk = ~clk;  // 5ns마다 클럭 신호를 토글 (0 -> 1, 1 -> 0)
    end

    // Testbench process
    initial begin
        $display("Simulation start time: %d", $time);  // 시뮬레이션 시작 시간 출력
        #0;  // 즉시 실행 (지연 없음)
        $display("Clock initialized to 0 at time: %d", $time);  // 클럭 신호 초기화 시간 출력

        #100;  // 100ns 대기
        $display("Simulation end time: %d", $time);  // 시뮬레이션 종료 시간 출력
        $finish;  // 시뮬레이션 종료
    end

endmodule 

위의 코드는 내가 사용한 코드로 Design Source로 들어가있다.

  • 알아본 결과 이런 TestBench용 코드를 Design Source에 넣는 것은 옳지 않은 행위라고 한다. 그 이유는 Design Source는 하드웨어의 디자인 정의 파일이기에 하드웨어 Logic이 구현하고 FPGA에 다운로드할 설계를 포함하는 것이기 때문이다.
  • 신기했던 점은 내가 설정한 이름이 나의 module명으로 바뀐다.
  • sim file을 넣지 않았음에도 자동적으로 코드가 들어간다.

  • Run Simulation을 눌러보니 아래와 같은 창이 나왔다.

  • 밑에도 TestBench에 대한 창이 나왔다.

// Testbench process
    initial begin
        $display("Simulation start time: %d", $time);  // 시뮬레이션 시작 시간 출력
        #0;  // 즉시 실행 (지연 없음)
        $display("Clock initialized to 0 at time: %d", $time);  // 클럭 신호 초기화 시간 출력

        #100;  // 100ns 대기
        $display("Simulation end time: %d", $time);  // 시뮬레이션 종료 시간 출력
        $finish;  // 시뮬레이션 종료
    end

해당 부분에 의해 나온 것으로 확인 했다.

다음에는 Design Source를 제대로 정의하고 그 코드에 맞는 Simultaion Source를 넣어봐야겠다!

  • TestBench: 하드웨어 설계를 검증하는 데 사용되는 파일로, 하드웨어 모듈을 인스턴스화하고 입력 신호를 제공하며 출력을 모니터링함
  • Simulation: 하드웨어 설계의 동작을 소프트웨어로 모델링하고 검증하는 과정
  • Design Source: 실제 하드웨어로 구현될 설계를 정의하는 파일
  • Simulation Source: 시뮬레이션을 위해 사용하는 파일로, 테스트 벤치와 시뮬레이션 설정을 포함

'FPGA 공부' 카테고리의 다른 글

# FPGA IP와 Verilog 활용 수업 요약  (0) 2024.09.09
FPGA TestBench 및 기초 지식  (3) 2024.09.08
FPGA 구성 기본 요소  (0) 2024.09.03
Xilinx FPGA - PS, PL 영역  (0) 2024.08.27
Xilinx FPGA시작 - Hello World!  (0) 2024.08.27