Lab Conception numérique : Verilog, VHDL et yosys dans une VM Ubuntu privée
Ce lab donne à chaque élève les outils d’un concepteur de circuits numériques dans une seule VM Ubuntu. Icarus Verilog et GHDL simulent des circuits écrits en Verilog et en VHDL, et yosys transforme une conception en portes logiques. L’élève décrit un circuit, le simule avec un banc de test, lit une table de vérité ou un chronogramme, et termine des conceptions que des bancs de test cachés notent.
Rien n’est installé sur l’ordinateur de l’élève et aucune carte n’est nécessaire. Les outils sont les vrais, iverilog, vvp, ghdl et yosys, installés depuis l’archive d’Ubuntu. Un chronogramme se lit en texte avec vcd2txt, ou se dessine avec vcd2svg et s’ouvre sur le port 8000 du lab, faute de visionneuse sur un bureau.
Ce que les élèves apprennent
Comment on décrit et on teste un circuit. Un demi-additionneur est fourni et un additionneur complet est à écrire, en Verilog puis en VHDL, pour voir le même circuit dans les deux langages. Un compteur montre ce que fait une horloge : ses signaux sont enregistrés dans un fichier VCD et lus comme des lignes de texte. Ensuite l’élève termine un compteur 4 bits avec validation et remise à zéro synchrone, et compte les portes que yosys en tire, ce qui montre qu’une bascule retient un bit et qu’un verrou est une erreur.
Les cinq parties
D’abord un circuit combinatoire en Verilog : lire la table de vérité d’un demi-additionneur, puis écrire un additionneur complet. Deuxièmement une horloge et un chronogramme : un compteur fourni, son fichier VCD, vcd2txt et vcd2svg. Troisièmement le même additionneur complet en VHDL avec les trois étapes de GHDL, analyser, élaborer et exécuter. Quatrièmement un compteur avec validation et remise à zéro, terminé par l’élève. Cinquièmement yosys, avec hdl gates, pour voir combien de cellules une conception demande. Tout ce que l’élève modifie est dans le dossier hdl, et README.md dans le dossier personnel dit quoi faire et ne donne aucune réponse.
Le lancer dans votre navigateur
Les labs VM se donnent comme tâche de lab dans un module, et l’exemple se trouve sur la page du lab. La machine est petite : un processeur, 1 Go de mémoire et 10 Go de disque. Les simulateurs n’en utilisent que quelques mégaoctets.
- Ajouter le lab. Dans un module que vous enseignez, ajoutez une tâche et choisissez la carte Lab VM Ubuntu. La page affiche une courte description de la machine au lieu d’un fichier compose.
- Partir de l’exemple. La page propose des labs prêts à l’emploi pour démarrer. Choisissez Digital design. Utiliser un exemple remplace le texte, et Annuler rend le vôtre.
- Publier et démarrer votre propre copie. Publiez, puis Démarrez. Le script setup du lab installe Icarus Verilog, GHDL et yosys depuis l’archive d’Ubuntu et écrit les commandes d’aide, les fichiers de travail et le README, au premier démarrage de la VM, en quelques minutes.
- Ouvrir le terminal. Ouvrez son terminal et lisez README.md dans le dossier personnel. Le port 8000 du lab montre le dossier des images que l’élève dessine.
Une leçon de base sur ce lab
Digital Design Basics est une petite leçon donnée dans ce lab, une VM Ubuntu. Elle a une accroche, un objectif « Je peux », des mots-clés, une question de départ, une vérification après chaque idée, une erreur courante et une vérification finale, et chaque étape a un bouton Exécuter qui tape sa commande dans le terminal de la machine. L’élève lit un demi-additionneur, le simule et lit sa table de vérité, lance un compteur et lit son chronogramme en texte, puis simule le même demi-additionneur en VHDL avec GHDL.
La leçon regarde autour d’elle et laisse à l’élève la tâche propre au lab, l’additionneur complet et le compteur : elle ne donne donc aucune réponse.
Comment il est noté
Le lab a une vérification. Elle s’exécute sur une copie de la machine enregistrée et compile trois fichiers de l’élève, full_adder.v, full_adder.vhd et counter4.v, avec des bancs de test que l’élève ne voit jamais. Chaque banc de test contient un modèle de référence et le compare à la conception, celle du compteur avant et après chaque front d’horloge, si bien qu’une remise à zéro non synchrone est repérée. Le banc de test affiche une ligne de résultat avec un nombre que la vérification tire à chaque fois, donc une conception ne peut pas afficher elle-même la bonne ligne, et une conception qui appelle finish ou system est refusée. Ensuite yosys doit lire la conception sans verrou, et le compteur doit avoir des bascules et pas plus de cellules qu’une conception simple. La première ligne de ce que la vérification a affiché dit pourquoi.
- Le distribuer. Attribuez le lab comme n’importe quelle tâche, avec une échéance si vous le souhaitez. Chaque élève reçoit une VM à lui, conservée d’une séance à l’autre.
- Lancer la vérification. Sur la ligne d’un élève dans la liste de la classe, appuyez sur Lancer la vérification. Elle démarre une copie de sa machine enregistrée, qui n’est pas sauvegardée ensuite, exécute le script de vérification du lab en root et indique s’il a réussi, ce qu’il a affiché et quand. L’élève n’est pas informé du résultat.
- Noter. Lisez la première ligne de ce que la vérification a affiché : elle dit ce qui ne va pas, par exemple des contrôles cachés qui ont donné une mauvaise sortie ou une conception qui fabrique un verrou. Renvoyez le travail avec un motif s’il faut aller plus loin.
La définition sur GitHub
Le fichier est toute la définition du lab, le texte même que la plateforme exécute : taille, port, script setup, commandes d’aide, fichiers de travail, README et vérification. Copiez-le et changez les circuits ou les bancs de test pour faire un lab plus long.
Essayer ce lab, et ce qu’il coûte
Un compte personnel gratuit permet de suivre les leçons de base de ce lab, avec chaque mois assez de crédit gratuit pour suivre la plupart des leçons, sans carte. Pour une classe, un établissement a ses 365 premiers jours gratuits pour 50 élèves au plus, puis paie par élève et par an, tous les labs compris et les enseignants gratuits.
Questions fréquentes
- Le lab demande-t-il une licence ou une carte ?
- Non. Icarus Verilog, GHDL et yosys sont libres et dans l’archive d’Ubuntu. Ils sont installés au démarrage de la VM de l’élève, et nous n’en distribuons aucun. Aucune carte n’est nécessaire, puisque rien n’est placé ni routé.
- Pourquoi lire les chronogrammes en texte ?
- Une visionneuse graphique demande un bureau, qu’une VM en terminal n’a pas. Le lab lit un fichier VCD en lignes de texte avec vcd2txt et dessine une image avec vcd2svg. Ubuntu 26.04 fournit GHDL avec le moteur GCC, qui compile le banc de test en programme : ghdl -e écrit donc un exécutable à côté des fichiers.
- Les élèves peuvent-ils casser quelque chose ?
- Seulement leur propre copie. La machine d’un visiteur sans compte joint l’archive d’Ubuntu et rien d’autre, et si un élève abîme un fichier, hdl reset le remet comme il a été donné.
- Le lab a-t-il été testé dans une vraie VM d’élève ?
- Le script setup, les commandes de la leçon et la vérification, avec chaque façon de la tromper, ont été exécutés dans un vrai conteneur Ubuntu 26.04 qui tient lieu de VM, sur une machine arm64. Une VM d’élève démarrée, qui sert les images depuis une unité systemd sur le port 8000, et les paquets amd64 des machines des élèves méritent un essai avant un cours.