Pre-packaged testbenching tools and reusable bus interfaces for cocotb

cocotb, updated 🕥 2023-02-01 13:55:07



The new home of the cocotb project's pre-packaged testbenching tools and reusable bus interfaces.


Avalon MM Burst Read/Writes

opened on 2023-03-15 11:06:21 by gbowers4

There is a current issue & PR raised relating to Avalon MM burst read/writes - #44.

After implementing these changes the Avalon Memory Model presents a scheduler error - "Write to object {} was scheduled during a read-only sync phase.", similar to that in #8.

The issue is with 337 async def _waitrequest(self): both lines 344 and 349 can cause the above error.

It can be fixed similarly by adding await ReadWrite().

Making readyLatency work for AvalonSTPkts.

opened on 2023-02-01 13:55:06 by gardintrapp

This makes the AvalonSTPkts monitor work with readyLatency in my code. Some more testing is probably wise.

If readyLatency is greater than zero only valid is checked to see if it is a valid cycle. A test is added to check if valid is asserted in an non ready cycle.

Fix AXI signals

opened on 2022-11-18 11:55:59 by delafthi

The _signals/_optional_signals definitions in doesn't seem to conform with the specification. This PR corrects the _signals and _optional_signals definition according to the AMBA AXI and ACE Protocol Specification chapter A9.3.

Additionally, I added missing type annotations.

All test_axi4 tests fail for me. However, they also fail for me without the changes and are probably due to #33. Though, the example test_axi_lite_slave passes.

AXI4LiteMaster: AttributeError: 'NoneType' object has no attribute 'setimmediatevalue'

opened on 2022-06-28 14:53:00 by LeChuck42

I'm instantiating an AXI4LiteMaster in my testbench.

With the default behaviour in cocotb_bus 0.2.1 installed from pypi the following line fails: with AttributeError: 'NoneType' object has no attribute 'setimmediatevalue'

I traced the cause to this function: When first called, obj doesn't yet have the attributes (e.g. axil_AWVALID) populated. The for loop will iterate through the dir, but not find the signal we are looking for and the function will return None as the handle. I noticed that hasattr and getattr are not case sensitive for me. So my current workaround for this is to (counterintuitively) set case_insensitive=False in the call to BusDriver.__init__ so this code doesn't get called.

Add reset to the internal variables of AvalonSTPkts monitor

opened on 2022-06-10 13:43:58 by Losiek

This PR adds a reset of the internal variables of AvalonSTPkts monitor. It prevents the Duplicate start-of-packet received ... error when reset occurs in the middle of a transaction.

Bus.driver doesn't work

opened on 2022-05-20 15:17:27 by xiaochuang-lxc

I use cocotb 1.6.2 to test the Bus.driver() module dut( input [7:0] data_in_data0, input [7:0] data_in_data1, output logic [7:0] data_out_data0, output logic [7:0] data_out_data1 ); always_comb begin data_out_data0=data_in_data1; data_out_data1=data_in_data0; end endmodule

`class dataPkg(object): def init(self,data0,data1) -> None: self.data0=data0 self.data1=data1

@cocotb.test() async def testDemo(dut): dataIn=Bus(dut,"data_in",["data0","data1"]) await Timer(1,'ms'),6)) await Timer(1,'ms')`

the data_in_data0 and data_in_data1 are not assigned by 5 and 6.the not work


0.2.1 2022-01-22 01:27:29

Install this release from PyPi with

python3 -m pip install cocotb-bus == 0.2.1

Changes: - Remove setuptools_scm as a dependency (#40) [Kaleb Barrett]

Full Changelog:

0.2.0 2021-10-20 20:11:53

Install this release from PyPi with

python3 -m pip install cocotb-bus == 0.2.0

Changes: - Improve compatibility with cocotb 1.6 - AXI: Enable case insensitive matching (#19, #29) [Aaron Holtzman, c-93] - Avalon: Don't sample in the postponed region (#26) [Greg Taylor] - Move lock methods to base class by (#23) [Todd Strader]

Full Changelog:

0.1.1 2021-02-01 23:58:49

0.1.0 2021-01-26 16:06:56

testbench bus interface hdl verilog vhdl cocotb