파이썬으로 테스트벤치를 작성하도록 도와주는 파이썬 프로젝트가 있어 일단 킵
이름은 cocotb 라고 하네
공식 사이트는 여기
https://docs.cocotb.org/en/stable/index.html
cocotb
cocotb is a COroutine based COsimulation TestBench environment for verifying VHDL and SystemVerilog RTL using Python.
일단 지원되는 시뮬레이터 종류는 다음과 같다.
cocotb 기본 골격
A typical cocotb testbench requires no additional HDL code. The DUT is instantiated as the toplevel in the simulator without any HDL wrapper code.
순수한 파이썬 코드로 작성할 수 있다는 장점을 가지고 있네.
샘플 코드는 아래와 같다.
# test_my_design.py (extended)
import cocotb
from cocotb.triggers import FallingEdge, Timer
async def generate_clock(dut):
"""Generate clock pulses."""
for cycle in range(10):
dut.clk.value = 0
await Timer(1, units="ns")
dut.clk.value = 1
await Timer(1, units="ns")
@cocotb.test()
async def my_second_test(dut):
"""Try accessing the design."""
await cocotb.start(generate_clock(dut)) # run the clock "in the background"
await Timer(5, units="ns") # wait a bit
await FallingEdge(dut.clk) # wait for falling edge/"negedge"
dut._log.info("my_signal_1 is %s", dut.my_signal_1.value)
assert dut.my_signal_2.value[0] == 0, "my_signal_2[0] is not 0!"
클럭 생성기도 있고, 테스트 메인도 있고 코드가 그렇게 구성되어 있네.
cocotb 실행 방법
설명을 보면 아래 예제와 같이 Makefile 을 만들어 두고 실행을 해야 한다.
# Makefile
# defaults
SIM ?= icarus
TOPLEVEL_LANG ?= verilog
VERILOG_SOURCES += $(PWD)/my_design.sv
# use VHDL_SOURCES for VHDL files
# TOPLEVEL is the name of the toplevel module in your Verilog or VHDL file
TOPLEVEL = my_design
# MODULE is the basename of the Python test file
MODULE = test_my_design
# include cocotb's make rules to take care of the simulator setup
include $(shell cocotb-config --makefiles)/Makefile.sim
Makefile 이 완성이 되었으면 그냥 make 를 하면 실행된다.
혹은 시뮬레이터를 실행할때 선택할 수도 있다.
make SIM=questa
실행화면 데모 영상은 홈페이지에 있다.
'IT > ASIC | FPGA' 카테고리의 다른 글
Verilog - 곱셈이 합성이 되나요? (1) | 2024.02.16 |
---|---|
Xilinx - Vivado RAM 초기화 값 입력 - coe 파일 (0) | 2024.02.15 |
Verilog - RGMII 샘플 코드 - 북마크 (0) | 2024.02.15 |
Verilog - Assignment 할당 구문 - blocking, non-blocking (0) | 2024.02.15 |
Verilog 기초 - case 문 (0) | 2024.02.15 |