본문 바로가기

파이썬으로 테스트벤치를 작성하도록 도와주는 파이썬 프로젝트가 있어 일단 킵

이름은 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 지원 시뮬레이터

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

 

실행화면 데모 영상은 홈페이지에 있다.

https://www.cocotb.org/

B로그0간

개발 관련 글과 유용한 정보를 공유하는 공간입니다.