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 |