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

Ce que décrit un HDL

Un langage de description matérielle décrit des circuits plutôt qu'une suite d'instructions. Chaque instruction assign, chaque bloc always et chaque instance de module représente du matériel qui fonctionne en permanence : l'ordre du code n'implique donc pas un ordre d'exécution. Les conceptions sont généralement écrites au niveau transfert de registres (RTL) : des registres mis à jour sur les fronts d'horloge, avec une logique combinatoire qui calcule leurs valeurs suivantes. Les principaux langages sont Verilog, son extension SystemVerilog, et VHDL, plus fortement typé. Seul un sous-ensemble synthétisable de chaque langage se traduit en portes ; le reste sert à la simulation et à la vérification.

Écrire du RTL synthétisable

Les blocs cadencés comme always @(posedge clk) deviennent des bascules et utilisent par convention des affectations non bloquantes (<=). Les blocs combinatoires doivent utiliser @(*) ou always_comb avec des affectations bloquantes (=) et affecter chaque sortie sur chaque chemin, par exemple avec un cas par défaut, faute de quoi la synthèse infère un latch. Une boucle for est déroulée en matériel parallèle : une boucle sur huit bits devient huit additionneurs. Les machines à états combinent un registre d'état, une logique d'état suivant et une logique de sortie. Les sorties trois états sont réservées aux broches bidirectionnelles externes ; la sélection interne utilise des multiplexeurs.

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.

Le HDL dans le flot de conception

Le HDL se situe entre la spécification et la netlist au niveau portes. Les ingénieurs écrivent le RTL à partir de la spécification et le simulent, puis la synthèse logique le projette sur les cellules de la bibliothèque de la fonderie, guidée par le kit de conception de procédé (PDK) et les contraintes temporelles. C'est cette description du comportement qui rend possibles les grandes conceptions : même un additionneur 32 bits nécessiterait une table de vérité de 2⁶⁴ lignes. La synthèse de haut niveau élève encore l'abstraction en générant du RTL à partir de C ou de C++, tandis que les outils FPGA prennent le même HDL et le projettent sur des tables de correspondance (LUT) au lieu de cellules standard.

S'entraîner : questions sur Langage de description matérielle

Quel langage de description matérielle est principalement utilisé en conception RTL ?

  1. AVerilog HDL ou VHDL
  2. BHTML
  3. CSQL
Afficher la réponse et l'explication

Réponse : A. Verilog HDL ou VHDL

En conception RTL, on décrit dans un langage de description matérielle comme Verilog HDL (et son extension SystemVerilog) ou VHDL comment les données circulent entre registres à chaque cycle d'horloge. Contrairement aux langages logiciels, les traitements décrits fonctionnent simultanément et en parallèle sous forme de circuit. HTML est un langage de description de pages Web et SQL un langage de requête de bases de données ; ils ne permettent pas de décrire des circuits.

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.

« Langage de description matérielle » dans les explications

Questions mentionnant « Langage de description matérielle » (2)

  1. Quel langage de description matérielle est principalement utilisé en conception RTL ?
  2. Quel est l'ordre correct du flot de conception d'un LSI numérique courant ?

Comparatifs incluant ce terme

Termes associés

RTL (niveau transfert de registres) Verilog SystemVerilog Synthèse logique Netlist Placement-routage Tape-out Affectation bloquante Affectation non bloquante Banc de test (testbench)

Retour au glossaire