Qu'est-ce que Langage de description matérielle ?
Langage permettant de décrire textuellement la structure et le comportement de circuits numériques. Abrégé HDL. Verilog, SystemVerilog et VHDL en sont des exemples ; la synthèse logique les convertit en circuits.
Nom japonais: ハードウェア記述言語
« Langage de description matérielle » apparaît dans 2 questions d'entraînement réparties sur 1 thèmes, dont Flot de conception de circuits intégrés et EDA.
Domaine: HDL et vérification
Vérification avec les HDL
Les mêmes langages servent à construire l'environnement de vérification. Un banc de test (testbench) instancie la conception sous test, génère les horloges, les réinitialisations et les stimuli, et vérifie les sorties ; comme il n'est jamais synthétisé, il peut utiliser des délais, des E/S fichiers et des instructions d'affichage. SystemVerilog ajoute les classes, les stimuli aléatoires contraints, la couverture fonctionnelle et les assertions, et UVM fournit une bibliothèque de classes standard pour des bancs de test réutilisables. Les outils de lint vérifient statiquement le code à la recherche de largeurs incompatibles, de latches inférés et de constructions non synthétisables. La vérification demande souvent autant d'effort que la conception elle-même, voire plus.
Questions fréquentes
Quelle différence entre Verilog et VHDL ?
Tous deux décrivent le matériel au niveau RTL et sont pris en charge par les outils de synthèse et de simulation. Verilog a une syntaxe concise proche du C, tandis que VHDL est plus verbeux et fortement typé ; SystemVerilog étend Verilog avec d'importantes fonctions de vérification.
Un HDL est-il un langage de programmation ?
Il en a l'apparence, mais le code HDL synthétisable décrit du matériel qui fonctionne en parallèle, et non des instructions exécutées dans l'ordre. Chaque ligne coûte de la surface de circuit : les concepteurs raisonnent donc en registres et en logique plutôt qu'en étapes.
Quand utiliser les affectations bloquantes et non bloquantes en Verilog ?
La règle courante est d'utiliser le non bloquant (<=) dans les blocs always cadencés et le bloquant (=) dans les blocs combinatoires. Les mélanger dans un même bloc est une source fréquente d'écarts entre simulation et synthèse.