The cocotb project is proud to announce the immediate release of cocotb version 1.8.0. This release focuses on bug fixes and reliability improvements, with some notable additions as well.

One highly visible change is the expanded assertion rewriting. When an assert statement fails, cocotb displays (with the help of pytest) the actual values that made the assertion fail, not only the variable names. This mechanism is called “assertion rewriting,” and is now enabled not only for the test module (the one passed with the MODULE environment variable), but also for code in other modules (e.g., helpers, bus adapters, etc.).

A notable addition is the cocotb runner, a Python-based replacement for the Makefile-based build system to trigger a simulation run. The runner is experimental at this point and focuses on cocotb’s own need to run tests. However, we encourage you to give it a try and let us know if things are going in the right direction to work for your project as well. The new section Building HDL and Running Tests in the cocotb documentation will get you started.

As usual, many of the changes were simulator-specific.

Users of Aldec’s Riviera-PRO simulator will be pleased to hear that cocotb user @Forty-Bot found (after many years) a small coding error that lead to a number of signals in a design not being discovered by cocotb. That’s fixed now, and aligns the set of discovered signals with other simulators.

Life got easier for our Icarus Verilog users: without the ability to pass a command-line option, dumping waveforms in Icarus Verilog traditionally required the addition of some lines of Verilog code to the design. That’s no longer necessary: Set WAVES=1 when running make and cocotb will take care of the rest.

Verilator, the open source Verilog simulator, is adding more and more features known from event-based simulators. These features are enabled by passing the --timing flag when running Verilator, and cocotb can now better interact with the resulting simulation. A number of further changes improved the interaction with Verilator even more, making cocotb and Verilator suitable for many use cases again with the latest release. We know that many cocotb users would love to see better Verilator integration. Work is ongoing, but gated by the amount of people available to do the work – so if you’re in a position to help out, please do so!

A much more detailed description of all changes in this first 1.8 release can be found in the release notes. Cocotb is a community project under the umbrella of the FOSSi Foundation. Thanks to all sponsors of the FOSSi Foundation the cocotb project can make use of a continuous integration system which runs proprietary simulators in a compliant way.

We are very thankful to Aldec for providing a license for Riviera-PRO, and to Siemens EDA for providing a license for Questa, which enables us to continuously test cocotb against these simulators to ensure they continue to be well integrated.

Please reach out to Philipp at philipp@fossi-foundation.org if you or your company want to support cocotb, either financially to help pay for costs such as running our continuous integration setup, or with in-kind donations, such as simulator licenses.

To close this release announcement, here are some statistics:

  • 111 files changed, 2984 insertions(+), 1351 deletions(-)
  • 124 commits
  • 28 code contributors

Out of those 28 contributors, 17 made their first-ever cocotb pull request! Welcome to the cocotb project, and we hope to see even more from you going forward!

These numbers are impressive and showcase the power of the free and open source collaboration model. To be able to sustain this amount of change and the high-quality review process behind it we are happy to have an active group of maintainers caring for cocotb and its users. Thank you, and thanks to the whole cocotb community for coming together to create this unique piece of software.

And now, go and enjoy the best release of cocotb so far!

If you have questions or issues with this release head over to the issue tracker or open a GitHub discussion.