MyHDL est un framework Python permettant de modéliser et simuler des designs de type RTL. La convertion des designs MyHDL en VHDL et/ou Verilog est également possible.
Contrairement à Migen, il n’y a pas de « mini-langage ». Tout est écrit en Python standard avec l’aide des classes, fonctions et décorateurs spécifiques ajoutées par le framework.
MyHDL est très à l’aise dans la modélisation de concepts : En simulation pure, tout est possible ou presque.
Par exemple, une FIFO peut être simulée à l’aide d’une liste et d’un compteur. Il est bien évident que ce n’est pas convertible en VHDL ou Verilog. Une fois le concept validé, les éléments du design seront codés de façon à ce qu’ils soient convertibles.
En simulation, les données de simulation peuvent être exportées dans un fichier au format vcd. Ce fichier sera lu par un logiciel adapté (GtkWave par exemple) qui affichera les formes d’ondes des signaux du design.
Beaucoup de librairies Python peuvent aider à la mise au point des designs. Matplotlib peut afficher des courbes dérivées des données de simulation. Lors de la conception de filtres photo, PIL permet de lire des images pour les injecter dans le design en cours de simulation. Bien d’autres possibilités s’offrent au concepteur.