cocotb value cocotb—基础语法对照篇

cocotb---基础语法对照篇

python 复制代码
import cocotb
from cocotb.triggers import Timer
from adder_model import adder_model
from cocotb.clock import Clock
from cocotb.triggers import RisingEdge
import random

@cocotb.test()
async def adder_basic_test(dut):

    """Test for 5 + 10"""
    cocotb.fork(Clock(dut.clk, 10, units='ns').start())
    A = 5
    B = 10

    #dut.A <= A
    #dut.B <= B  # 和下边两行等价
    dut.A.value =A
    dut.B.value =B
    await RisingEdge(dut.clk)
    await RisingEdge(dut.clk)
    assert dut.X.value == adder_model(A, B), "Adder result is incorrect: {} != 15".format(dut.X.value)


@cocotb.test()
async def adder_randomised_test(dut):
    """Test for adding 2 random numbers multiple times"""
    cocotb.fork(Clock(dut.clk, 5, units='ns').start())
    for i in range(10):

        A = random.randint(0, 15)
        B = random.randint(0, 15)

        #dut.A <= A
        #dut.B <= B
        dut.A.value = A
        dut.B.value = B

        await RisingEdge(dut.clk)
        await RisingEdge(dut.clk)

        assert dut.X.value == adder_model(A, B), "Randomised test failed with: {A} + {B} = {X}".format(
            A=dut.A.value, B=dut.B.value, X=dut.X.value)
复制代码
#adder_model.py
def adder_model(a: int, b: int) -> int:
    """ model of adder """
    return a + b
Makefile 复制代码
# Makefile
TOPLEVEL_LANG= verilog
PWD=$(shell pwd)

VERILOG_SOURCES=./adder.v

TOPLEVEL=adder
MODULE= test_adder

SIM=icarus

include $(shell cocotb-config --makefiles)/Makefile.sim

多文件tb, 多文件dut

复制代码
# makefile template

VERILOG_SOURCES = $(PWD)/submodule.sv $(PWD)/my_design.sv
# TOPLEVEL is the name of the toplevel module in your Verilog or VHDL file:
TOPLEVEL=my_design
# MODULE is the name of the Python test file:
MODULE=test_my_design

include $(shell cocotb-config --makefiles)/Makefile.sim
相关推荐
156082072193 小时前
锁相环HMC830的调试
fpga开发
吸纹鸽5 小时前
蓝桥杯FPGA赛道积分赛
fpga开发·蓝桥杯
&Cheems5 小时前
ZYNQ笔记(二十一): VDMA HDMI 彩条显示
笔记·嵌入式硬件·fpga开发
灵风_Brend1 天前
秋招准备——2.跨时钟相关
fpga开发
希言自然也1 天前
FPGA生成随机数的方法
fpga开发
156082072191 天前
QSFP+、QSFP28、QSFP-DD接口分别实现40G、100G、200G/400G以太网接口
fpga开发·信号处理
&Cheems2 天前
ZYNQ笔记(十九):VDMA VGA 输出分辨率可调
笔记·fpga开发
可编程芯片开发2 天前
基于FPGA的PID控制器verilog实现,包含simulink对比模型
fpga开发·verilog·simulink·pid控制器
ThreeYear_s2 天前
基于FPGA控制ADC0832双通道采样+电压电流采样+LCD屏幕显示
fpga开发
ktd0073 天前
`timescale 1ns/1ps的意义
fpga开发