[FAQ] Contributing to MyHDL

A frequent question and comment is how can I contribute to the myhdl project. One of the best ways for a new user to contribute, is to create a blog or website to showcase user generated examples and projects.

One of the first things to do is review why myhdl and what myhdl is not.

The myhdl website, myhdl.org, has a user space where users can add pages, examples, and projects. The myhdl.org site has instructions on how to get started with user pages. Creating user pages is as simple as writing some markdown and creating a pull-request (to site-myhdl). Otherwise, create a repo on github, then submit a link to the user space, add a link to resource and project list (post a link in the comments), or create a post on this forum.

After a user has created an impressive portfolio of examples demonstrating how to conquer the world of complex digital circuit design, a user might want to jump into some myhdl code contributions. The myhdl project is built around a minimalistic philosophy - the myhdl
project provides a canonical set of meta-programming, objects, and functions. Meaning the myhdl project is at a stable state for a wide variety of uses. Many features a myriad of users would like to add can be achieve in the elaboration phase (i.e. the fully executable Python code outside the myhdl generators). Creating packages that add to the myhdl based hardware development stack is a great approach to extend the world of managing complexity.

If a user finds a bug, create a test that clearly exposes the bug and submit a pull-request for the test. Tests are welcome with or without a fix. For more information see the development guide and writing tests notes.