cocotb是一个基于协程的协同仿真库,用于在Python中编写VHDL和Verilog测试平台。
项目描述
cocotb 是一个基于协程的协同仿真库,用于在Python中编写VHDL和Verilog测试平台。
- 阅读文档
- 参与其中
- 提交错误/请求增强 (需要GitHub账户)
- 加入Gitter聊天室
安装
cocotb的当前稳定版本需要
- Python 3.6+
- GNU Make 3+
- 一个HDL模拟器(例如 Icarus Verilog、Verilator、GHDL 或 其他模拟器)
安装这些依赖项后,可以使用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
教程、示例和相关项目
- 官方文档中的教程部分
- cocotb-bus,用于预包装测试台工具和可重用总线接口。
- 基于cocotb的USB 1.1测试套件,用于FPGA IP,包含各种开源USB核的测试台。
cocotb-coverage
,功能覆盖和约束随机化的扩展uvm-python
,将UVM 1.2几乎1:1移植到Python- 我们关于扩展模块的维基
- 依赖cocotb的GitHub项目列表
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源分发
cocotb-1.9.1.tar.gz (300.5 kB 查看哈希值)
构建分发
cocotb-1.9.1-cp312-cp312-win_amd64.whl (523.3 kB 查看哈希值)
cocotb-1.9.1-cp312-cp312-win32.whl (491.8 kB 查看哈希值)
cocotb-1.9.1-cp311-cp311-win_amd64.whl (523.1 kB 查看哈希值)
cocotb-1.9.1-cp311-cp311-win32.whl (491.7 kB 查看哈希值)
cocotb-1.9.1-cp310-cp310-win_amd64.whl (523.1 kB 查看哈希值)
cocotb-1.9.1-cp310-cp310-win32.whl (491.7 kB 查看哈希值)
cocotb-1.9.1-cp39-cp39-win_amd64.whl (523.2 kB 查看哈希值)
cocotb-1.9.1-cp39-cp39-win32.whl (491.7 kB 查看哈希值)
cocotb-1.9.1-cp38-cp38-win_amd64.whl (523.1 kB 查看哈希值)
cocotb-1.9.1-cp38-cp38-win32.whl (491.7 kB 查看哈希值)
cocotb-1.9.1-cp37-cp37m-win_amd64.whl (523.5 kB 查看哈希值)
cocotb-1.9.1-cp37-cp37m-win32.whl (491.9 kB 查看哈希值)
cocotb-1.9.1-cp36-cp36m-win_amd64.whl (539.4 kB 查看哈希值)
cocotb-1.9.1-cp36-cp36m-win32.whl (484.8 kB 查看哈希值)
关闭
cocotb-1.9.1.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 21a79c4b5c3d4d7743abd54cfbda387377a2cbdbb8af4b068fbf7745d2f55d8c |
|
MD5 | f07400c360f518708e56e22c67ae3c23 |
|
BLAKE2b-256 | d6bc896a0c04656e02b9abe8f0b6e97c8f54af0d00e83a5fcb8ee03edff06d90 |
关闭
哈希值 用于 cocotb-1.9.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0e514bb390fab574327d8be00643a2afcc8b00db385d9814557bcb772c8f7d63 |
|
MD5 | f6bd40d2cb75e27d1794d1e60fd55d73 |
|
BLAKE2b-256 | b7a1135e2b242699c7cdad0131e6915b82977f39087489bc5cb4d402b304797b |
关闭
哈希值 用于 cocotb-1.9.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0b9a51e6e2afb31049bcd0ae747f30e5aadf72112ee9edaf8fd43d0627c50154 |
|
MD5 | 441fbdfeed8b18ba6540d31460755fdf |
|
BLAKE2b-256 | 1820bccdd94e497ddcd05126b865b75021258b82bece2745684d55922518cde1 |
关闭
哈希值 用于 cocotb-1.9.1-cp312-cp312-macosx_10_9_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 08b97544e0aa1db88c623cfee6626a8e79639894d01f7bfd75b548f5cdf16c71 |
|
MD5 | 33a5eaf169032203a98cadfaa71f2250 |
|
BLAKE2b-256 | 7d7b8244738402d0db727f19a984e28e812389c31e1f6d584819350eafae7387 |
关闭
哈希值 用于 cocotb-1.9.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 2eb9845e31fb17b70952c9da2ed933ffab1b41cd6f7f09a182196c62f3bdc77a |
|
MD5 | 5ab1cb40b7e75d2dffd2f4b56aa458f0 |
|
BLAKE2b-256 | 8a8a28a8a3b08f6b1a08700d5dcc19962e9f52c7e66b08e369e6151e23c85cce |
关闭
哈希值 用于 cocotb-1.9.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c65377e17ccc055bdb46df2b0e4b57dd4ddde62d8d25401e85a9b219576ab0a1 |
|
MD5 | ec396848dde23d71a26a0d2a790e697d |
|
BLAKE2b-256 | c6444a59cb3cc126b80a3369130ed1dd7750e58e658d9c453503c40e46f08b0d |
关闭
哈希值 用于 cocotb-1.9.1-cp311-cp311-macosx_10_9_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 4253035ba1585feb638bbecd05121aef840b4201402796b24a409c2f46ded8c2 |
|
MD5 | 9ed9cc7ee3d508d48cf5d13c53c6602a |
|
BLAKE2b-256 | 0056bfc0d51ce76988306cf07d9c59438b5905531d05b43a45d1bd88abb1234f |
关闭
哈希值 用于 cocotb-1.9.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 777e1ddb203194ea311040ab068c0b4944098a1618c823613331351ac6e31f1f |
|
MD5 | dd23a170140c1db0f8e8234ca83fe5f5 |
|
BLAKE2b-256 | 8c7605185bdd2c3bc1a81b800aa744856d5fca0a900b58781f0f865713c930e0 |
关闭
哈希值 for cocotb-1.9.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | fadcf3d409f36c45ab2ca6486ccafabce6ed69b1fc5f11f0031bcf123f4105e6 |
|
MD5 | b25c2b4c8e3d46cd28245879d741470b |
|
BLAKE2b-256 | b23c8a1f4b92d0c529652611bcbb69e213208ea2d6427395d2aa42cf06a5b9f2 |
关闭
哈希值 for cocotb-1.9.1-cp310-cp310-macosx_10_9_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1bdc70f626be2e2529cf3875a0dd418dfab46fde5f1107ade25d7c28799adb75 |
|
MD5 | ccc2da80c38e9f1c09da7e971bcb0c63 |
|
BLAKE2b-256 | 0119bdd1f81b576454caeada2337cc510fa683945d95daf22897aeeb55d9db4a |
关闭
哈希值 for cocotb-1.9.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 9616e902015800f88407b7e9f1f58d7eaf3696820190082d8d92158bb05503a9 |
|
MD5 | 101807a6e2e05d7d6945abc88d8e32f7 |
|
BLAKE2b-256 | d692fb83a99a6ee3f806b418f29470d38f14935cde14c20e253663a98f451ee5 |
关闭
哈希值 for cocotb-1.9.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d1ab1ed9849258c3956ccca35768d1369bc3e712d67554f6a440cd1fd1df9c53 |
|
MD5 | 7fd8f605ef25518547415e7c84eff448 |
|
BLAKE2b-256 | 0958d9e79bb1f635595cdb9f0d06dce087b8c733cad4d0dbcf5be32c3a08cee4 |
关闭
哈希值 for cocotb-1.9.1-cp39-cp39-macosx_10_9_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c61a1311d33f7e0792fa3baf75de958232dc31ecdbf5d977703b2f015f287ab2 |
|
MD5 | df235e6da4c746b45a7a86019b2fe1fd |
|
BLAKE2b-256 | 18b9ad3ca25cc4da27aa4ed14e19672cfba65d503b9398adef742fc5a830b04f |
关闭
哈希值 for cocotb-1.9.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e5f45e0870e6d2f2af5090dab7c95a961f7b1d53841e6df2a79efd027bea1aa8 |
|
MD5 | a50e5dc1b0602bb7d81351f418f406ac |
|
BLAKE2b-256 | 4bf982718573c983b02b79f2560fa3ddabfaf260a1459fdc8db0d3067d1708ac |
关闭
哈希值 for cocotb-1.9.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | cb4c83dcb57c01a5597ec08e3c120ba24286557b49a0751e61609643e05f1db4 |
|
MD5 | 55ced4ef5200d11deee2cf4cee7d8a42 |
|
BLAKE2b-256 | 5da565992bcbf8edec884de7ed4c595e7eb33467c89672336e0f30f46c764ebb |
关闭
哈希值 for cocotb-1.9.1-cp38-cp38-macosx_10_9_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 8df62a975fc990df7fcc2f2b415dcc1ae9066f913689f9553da374af3d2cd138 |
|
MD5 | fba9b962e31e508b42863ea4cf92ea22 |
|
BLAKE2b-256 | b24157af7c007f682049a7f4b7c4e3b07c925047d6b53e8b5a19e0a9e55d89d0 |
关闭
哈希值 for cocotb-1.9.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | bea58984d94440749194f98e6624d756199387d4c4f0092eb5ed8d784a1d8e95 |
|
MD5 | 7923297e0c16cebba4c7ed6ffd5e70ad |
|
BLAKE2b-256 | 21ede28fe0db7780f831a4d5f6afe2f5df57443d44ecde99b21780614a3b7332 |
关闭
哈希值 for cocotb-1.9.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 55d64dbb863cd884b783dabeaeffa15426ed4b49aa28327e061bcc5677b6cc46 |
|
MD5 | f86ecda068e2d4436d5a76d631bae27a |
|
BLAKE2b-256 | eff5d4c625db1aa206c2cc4e97f274ca87311d2853f3b25e59b7ff61840cec11 |
关闭
哈希值 for cocotb-1.9.1-cp37-cp37m-macosx_10_9_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | aefb2b2378a3906677d295c551732cd1f0d70de30c684b9c6d352ace250e0c54 |
|
MD5 | aa8c22a9333fa0077fcc04c816fb0f84 |
|
BLAKE2b-256 | 0add0722bb345f946713783aee83172dea3edf9437b88027828bd0f5f533f2a5 |
关闭
哈希值 for cocotb-1.9.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 6f8315779b3da611cb6b366c961dd655889feec897add7b11c90f0af0b4811a9 |
|
MD5 | 2ada939804867ec8bbfebed452b6054d |
|
BLAKE2b-256 | 024cbaaa4861aecb3a6dc5331b04c3a4a97a83b384f510207f6bb2ac00dfb0b8 |
关闭
哈希值 for cocotb-1.9.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 7d3a7f405b39a6ad78e1006e3c16edf025209f3ca9d6f04b26a4932a4352997c |
|
MD5 | d4f24cf6422bccb0224fb88f2a1434e8 |
|
BLAKE2b-256 | b58b85a528891a30573eebc3eaa7f7e5717cac237076a0fe2b49ef2fed176fb9 |
关闭
哈希值 for cocotb-1.9.1-cp36-cp36m-macosx_10_9_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0983f70f65af54abba38338a8e99dc42df4c757e6daf8be67414ec086cbd6210 |
|
MD5 | ba72f51fe1de499ca30493ac81344c10 |
|
BLAKE2b-256 | 799b52431d9f4981a82b80ae4a60b683e22ffcecb834cabe30bd64f341598d5f |