Posted on Leave a comment

Cyrite HDL release 0.1b0

For the past ten years, various research has been done with Python as meta programming language to generate structures that lie someone between hardware and software. CyriteHDL or short cyhdl is the result of attempting to combine a generator paradigm with the beauty and consistency of the MyHDL dialect.

It supersedes ‘jupyosys’, ‘myhdl.v2we’, and other experimental notebook distributions.

The cyhdl API has gone through a few migration steps in order to allow up-porting of MyHDL legacy code under certain boundary conditions:

  • Must provide strict typing in the interface
  • Must compile into a binary
  • Must output in a modular way to classic transfer HDLs (Verilog 2005, VHDL 93 and 08)
  • Must interface easily with existing Verilog or VHDL blackboxes

At the same time, compatibility to proprietary modules had to be preserved. This took quite some testing effort to end up with one maintainable solution. This called for a few sacrifices

  • Some MyHDL constructs are no longer supported in hardware logic, like variables, ShadowSignals and constructs that mix booleans with logic (and did not output correctly to VHDL in MyHDL anyway).
  • Legacy classes like Port signals need to be ported to explicit @container() decorated classes
  • The pyrite.hls package has migrated into cyrite.hls and is no longer downward compatible.

It is released a ready-built container like previous experimental versions, based on a JupyterLab Binder that is run online or using a local docker service. Clicking the Launch button below will start the HOWTO guiding you interactively through creating logic.

Launch button for cyhdl demos

FAQ

  • Can I safely develop proprietary hardware modules with it?
    Yes.
  • Can I distribute compiled simulation models without license?
    Yes.
  • Can I develop own extensions?
    Yes, under certain restrictions. If you redistribute parts of the Cyrite library, you need to sign up for an individiual license agreement.
  • Is this future-safe to develop with it?
    Yes, as long as the Docker services don’t break compatibility, you can run this software for the next decades in this ‘frozen’ state, even if the participating developers die or choose to live without computers in the forest.
  • Will there be releases other than Docker containers?
    Not for the time being. The focus is on education and easy development of logic, not on installation hassles with various operation systems.