跳转到主要内容

cocotb是一个基于协程的协同仿真库,用于在Python中编写VHDL和Verilog测试平台。

项目描述

cocotb 是一个基于协程的协同仿真库,用于在Python中编写VHDL和Verilog测试平台。

Documentation Status CI PyPI Gitpod Ready-to-Code codecov

安装

cocotb的当前稳定版本需要

安装这些依赖项后,可以使用pip安装cocotb的最新稳定版1.x版本。

pip install 'cocotb == 1.*'

有关安装的更多详细信息(包括先决条件),请参阅文档

有关安装cocotb的开发版本的详细信息,请参阅未来版本预览文档

!!! 总线和测试组件 !!! 可重用总线接口和测试组件最近已移动到cocotb-bus软件包。您可以通过添加bus额外安装来同时轻松安装这些组件:pip install cocotb[bus]

使用方法

作为对cocotb的第一次简单介绍,以下示例“测试”了一个触发器。

首先,我们需要一个可以测试的硬件设计。对于此示例,创建一个名为dff.sv的文件,其中包含用于简单D触发器的SystemVerilog代码。您也可以使用任何其他cocotb支持的模拟器理解的语言,例如VHDL。

// dff.sv

`timescale 1us/1ns

module dff (
    output logic q,
    input logic clk, d
);

always @(posedge clk) begin
    q <= d;
end

endmodule

一个简单的随机cocotb测试台示例

# test_dff.py

import random

import cocotb
from cocotb.clock import Clock
from cocotb.triggers import RisingEdge
from cocotb.types import LogicArray

@cocotb.test()
async def dff_simple_test(dut):
    """Test that d propagates to q"""

    # Assert initial output is unknown
    assert LogicArray(dut.q.value) == LogicArray("X")
    # Set initial input value to prevent it from floating
    dut.d.value = 0

    clock = Clock(dut.clk, 10, units="us")  # Create a 10us period clock on port clk
    # Start the clock. Start it low to avoid issues on the first RisingEdge
    cocotb.start_soon(clock.start(start_high=False))

    # Synchronize with the clock. This will regisiter the initial `d` value
    await RisingEdge(dut.clk)
    expected_val = 0  # Matches initial input value
    for i in range(10):
        val = random.randint(0, 1)
        dut.d.value = val  # Assign the random value val to the input port d
        await RisingEdge(dut.clk)
        assert dut.q.value == expected_val, f"output q was incorrect on the {i}th cycle"
        expected_val = val # Save random value for next RisingEdge

    # Check the final input on the next clock
    await RisingEdge(dut.clk)
    assert dut.q.value == expected_val, "output q was incorrect on the last cycle"

一个简单的Makefile

# Makefile

TOPLEVEL_LANG = verilog
VERILOG_SOURCES = $(shell pwd)/dff.sv
TOPLEVEL = dff
MODULE = test_dff

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

要使用Icarus Verilog运行测试,请执行

make SIM=icarus

asciicast

有关更多信息,请参阅cocotb文档我们的维基

教程、示例和相关项目

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分发

cocotb-1.9.1.tar.gz (300.5 kB 查看哈希值)

上传时间

构建分发

cocotb-1.9.1-cp312-cp312-win_amd64.whl (523.3 kB 查看哈希值)

上传时间 CPython 3.12 Windows x86-64

cocotb-1.9.1-cp312-cp312-win32.whl (491.8 kB 查看哈希值)

上传时间 CPython 3.12 Windows x86

cocotb-1.9.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.2 MB 查看哈希值)

上传时间 CPython 3.12 manylinux: glibc 2.17+ x86-64

cocotb-1.9.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (4.1 MB 查看哈希值)

上传时间 CPython 3.12 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

cocotb-1.9.1-cp312-cp312-macosx_10_9_x86_64.whl (629.2 kB 查看哈希值)

上传时间 CPython 3.12 macOS 10.9+ x86-64

cocotb-1.9.1-cp311-cp311-win_amd64.whl (523.1 kB 查看哈希值)

上传于 CPython 3.11 Windows x86-64

cocotb-1.9.1-cp311-cp311-win32.whl (491.7 kB 查看哈希值)

上传于 CPython 3.11 Windows x86

cocotb-1.9.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.2 MB 查看哈希值)

上传于 CPython 3.11 manylinux: glibc 2.17+ x86-64

cocotb-1.9.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (4.1 MB 查看哈希值)

上传于 CPython 3.11 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

cocotb-1.9.1-cp311-cp311-macosx_10_9_x86_64.whl (629.0 kB 查看哈希值)

上传于 CPython 3.11 macOS 10.9+ x86-64

cocotb-1.9.1-cp310-cp310-win_amd64.whl (523.1 kB 查看哈希值)

上传于 CPython 3.10 Windows x86-64

cocotb-1.9.1-cp310-cp310-win32.whl (491.7 kB 查看哈希值)

上传于 CPython 3.10 Windows x86

cocotb-1.9.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.2 MB 查看哈希值)

上传于 CPython 3.10 manylinux: glibc 2.17+ x86-64

cocotb-1.9.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (4.1 MB 查看哈希值)

上传于 CPython 3.10 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

cocotb-1.9.1-cp310-cp310-macosx_10_9_x86_64.whl (629.1 kB 查看哈希值)

上传于 CPython 3.10 macOS 10.9+ x86-64

cocotb-1.9.1-cp39-cp39-win_amd64.whl (523.2 kB 查看哈希值)

上传于 CPython 3.9 Windows x86-64

cocotb-1.9.1-cp39-cp39-win32.whl (491.7 kB 查看哈希值)

上传于 CPython 3.9 Windows x86

cocotb-1.9.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.2 MB 查看哈希值)

上传于 CPython 3.9 manylinux: glibc 2.17+ x86-64

cocotb-1.9.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (4.1 MB 查看哈希值)

上传于 CPython 3.9 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

cocotb-1.9.1-cp39-cp39-macosx_10_9_x86_64.whl (629.1 kB 查看哈希值)

上传于 CPython 3.9 macOS 10.9+ x86-64

cocotb-1.9.1-cp38-cp38-win_amd64.whl (523.1 kB 查看哈希值)

上传于 CPython 3.8 Windows x86-64

cocotb-1.9.1-cp38-cp38-win32.whl (491.7 kB 查看哈希值)

上传于 CPython 3.8 Windows x86

cocotb-1.9.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.2 MB 查看哈希值)

上传于 CPython 3.8 manylinux: glibc 2.17+ x86-64

cocotb-1.9.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (4.1 MB 查看哈希值)

上传于 CPython 3.8 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

cocotb-1.9.1-cp38-cp38-macosx_10_9_x86_64.whl (629.0 kB 查看哈希值)

上传于 CPython 3.8 macOS 10.9+ x86-64

cocotb-1.9.1-cp37-cp37m-win_amd64.whl (523.5 kB 查看哈希值)

上传于 CPython 3.7m Windows x86-64

cocotb-1.9.1-cp37-cp37m-win32.whl (491.9 kB 查看哈希值)

上传于 CPython 3.7m Windows x86

cocotb-1.9.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.2 MB 查看哈希值)

上传于 CPython 3.7m manylinux: glibc 2.17+ x86-64

cocotb-1.9.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (4.1 MB 查看哈希值)

上传于 CPython 3.7m manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

cocotb-1.9.1-cp37-cp37m-macosx_10_9_x86_64.whl (628.8 kB 查看哈希值)

上传于 CPython 3.7m macOS 10.9+ x86-64

cocotb-1.9.1-cp36-cp36m-win_amd64.whl (539.4 kB 查看哈希值)

上传于 CPython 3.6m Windows x86-64

cocotb-1.9.1-cp36-cp36m-win32.whl (484.8 kB 查看哈希值)

上传于 CPython 3.6m Windows x86

cocotb-1.9.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl (948.4 kB 查看哈希值)

上传于 CPython 3.6m manylinux: glibc 2.5+ x86-64

cocotb-1.9.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl (877.0 kB 查看哈希值)

上传于 CPython 3.6m manylinux: glibc 2.5+ i686

cocotb-1.9.1-cp36-cp36m-macosx_10_9_x86_64.whl (627.0 kB 查看哈希值)

上传于 CPython 3.6m macOS 10.9+ x86-64

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页