cocotb-cocotb是一個基於協程的協同仿真庫,用於用Python編寫VHDL和Verilog測試臺。-Chris Higgs, Stuart Hodgson Installation U...

cocotb-cocotb是一個基於協程的協同仿真庫,用於用Python編寫VHDL和Verilog測試臺。-Chris Higgs, Stuart Hodgson

發佈:2020-12-23 13:35:13.969124

做者:Chris Higgs, Stuart Hodgson

做者郵箱:

首頁:https://docs.cocotb.org

文檔:None

下載連接

cocotb is a coroutine based cosimulation library for writing VHDL and Verilog testbenches in Python.html

Documentation Status Build Status PyPI Gitpod Ready-to-Code codecov

Installation

Cocotb requires:python

  • Python 3.5+
  • A C++11 compiler
  • An HDL simulator (such as Icarus Verilog)

After installing these dependencies, the latest stable version of cocotb can be installed with pip.git

pip install cocotb

!!! Windows Users !!! See here for installation instructions.github

For more details on installation, including prerequisites, see the documentation.shell

For detail on how to install the development version of cocotb, see the lastest documentation.app

Usage

As a first trivial introduction to cocotb, the following example "tests" a flip-flop.dom

First, we need a hardware design which we can test. For this example, create a file dff.sv with SystemVerilog code for a simple D flip-flop. You could also use any other language a cocotb-supported simulator understands, e.g. VHDL.electron

// dff.sv

`timescale 1us/1ns

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

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

endmodule

An example of a simple randomized cocotb testbench:async

# test_dff.py

import random
import cocotb
from cocotb.clock import Clock
from cocotb.triggers import FallingEdge

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

    clock = Clock(dut.clk, 10, units="us")  # Create a 10us period clock on port clk
    cocotb.fork(clock.start())  # Start the clock

    for i in range(10):
        val = random.randint(0, 1)
        dut.d <= val  # Assign the random value val to the input port d
        await FallingEdge(dut.clk)
        assert dut.q == val, "output q was incorrect on the {}th cycle".format(i)

A simple Makefile:測試

# Makefile

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

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

In order to run the test with Icarus Verilog, execute:

make SIM=icarus

asciicast

For more information please see the cocotb documentation and the wiki.

Tutorials, examples and related projects

For more related resources please check the wiki and the list of projects depending on cocotb.

Copy from pypi.org

查詢時間:14.024ms
渲染時間:14.152ms

本文同步分享在 博客「zhenruyan」(other)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索