HDL et vérification
Apprenez les bases de Verilog et SystemVerilog avec des QCM : code synthétisable, affectations bloquantes et non bloquantes, latches non voulus, machines à états, testbenches et assertions.
HDL et vérification : points clés
Les circuits numériques sont décrits dans des langages de description matérielle (HDL) comme Verilog et SystemVerilog. Le code ressemble à un programme, mais il décrit un matériel qui fonctionne de façon concurrente. Les HDL ont leurs propres règles : quelles constructions peuvent être synthétisées en circuits, quand utiliser des affectations bloquantes ou non bloquantes, et comment des conditions manquantes créent des latches non voulus.
La correction d'un circuit se vérifie avec un testbench qui applique des stimuli en entrée. De l'écriture de machines à états et de la vérification automatique de propriétés par assertions jusqu'à la mesure de la complétude de la vérification par la couverture et à la génération de circuits à partir de C par synthèse de haut niveau, ce thème couvre les bases de la conception et de la vérification en HDL.
Toutes les questions sur HDL et vérification (50)
- Quelle est la grande différence entre une description en HDL comme Verilog et un programme logiciel en C ou autre ?
- Quel est l'objectif de l'utilisation de module en Verilog ?
- Quelle est la différence entre les types wire et reg en Verilog ?
- Quel circuit représente l'instruction assign Verilog ci-dessus ?
- Quel circuit la synthèse logique produit-elle à partir de la description Verilog ci-dessus ?
- Quel est le comportement de l'affectation non bloquante (<=) en Verilog ?
- Dans la description ci-dessus, juste avant le front montant d'horloge, a=0 et b=1. Quelles sont les valeurs de a et b après le front montant ?
- Voulant un registre à décalage à deux étages, on a écrit le code ci-dessus avec des affectations bloquantes (=). Quel problème survient ?
- Quelle est la règle générale d'usage des types d'affectation en Verilog ?
- Que signifie l'écriture « always @(*) » en Verilog ?
- Voulant un circuit combinatoire, on a écrit le code ci-dessus. Quel problème peut survenir ?
- Voulant un circuit combinatoire, on a écrit le code ci-dessus. Que produit la synthèse logique ?
- Quelle combinaison de cause et de remède explique l'apparition d'un verrou dans la description ci-dessus ?
- Quelle écriture est couramment utilisée pour éviter les verrous non voulus dans un bloc always combinatoire ?
- Parmi les descriptions Verilog suivantes, laquelle ne devient pas un circuit et est ignorée par la synthèse logique (description destinée à la simulation) ?
- Quel circuit obtient-on en synthétisant la description ci-dessus, qui compte les 1 dans d sur 8 bits ?
- Quel est le type et le comportement de la réinitialisation dans la description ci-dessus ?
- Quelle est la différence entre réinitialisation synchrone et asynchrone ?
- Dans un circuit à réinitialisation asynchrone, pourquoi synchronise-t-on la levée de la réinitialisation (passage de 0 à 1) sur l'horloge par deux bascules avant de la distribuer ?
- Quelle est la structure de base d'une machine d'états décrite en HDL ?
- Dans la description de machine d'états ci-dessus, pourquoi écrit-on « next = state; » en tête du deuxième bloc always ?
- Quelle est la caractéristique d'une machine d'états de type Mealy ?
- Quelle est la caractéristique du codage one-hot des états d'une machine d'états ?
- Pour une machine d'états à trois états, quelle combinaison donne le nombre de bascules nécessaires pour mémoriser l'état (codage binaire / codage one-hot) ?
- Avec le compteur 4 bits ci-dessus, si count vaut 15 au front montant d'horloge, que devient count ?
- En Verilog, on additionne les signaux a et b de 8 bits et l'on affecte le résultat au signal s de 8 bits (assign s = a + b;). À quoi faut-il prendre garde ?
- Voulant que a vaille -1 signé, on a écrit le code ci-dessus, et gt vaut 1. Pourquoi ?
- Quelle est la combinaison des valeurs de la logique à quatre états utilisée en simulation Verilog ?
- En simulation, un registre sans réinitialisation vaut initialement X. Que se passe-t-il vraisemblablement dans la puce réelle ?
- Dans la description ci-dessus, lorsque sel vaut X (indéterminé), la simulation Verilog sélectionne b pour y. Pourquoi cette propriété pose-t-elle problème en vérification ?
- Quel énoncé est généralement correct au sujet des descriptions trois états produisant Z (haute impédance) en HDL ?
- Quelle est la définition du banc de test utilisé en vérification HDL ?
- Quelle est la période de l'horloge générée par la description de banc de test ci-dessus (unité de temps de 1 ns) ?
- Dans un banc de test, modifier les entrées du circuit par affectation bloquante au même instant que le front montant d'horloge peut poser problème. Quelle combinaison de raison principale et de remède est correcte ?
- Quelle est la caractéristique d'un banc de test autovérifiant ?
- Quel est l'objectif de l'utilisation en vérification d'un modèle de référence (modèle doré) écrit en C ou autre ?
- Quel est l'objectif principal de l'export des résultats de simulation dans un fichier au format VCD ou analogue ?
- Dans les tests à entrées aléatoires, pourquoi enregistre-t-on la graine (seed) du générateur aléatoire ?
- Quelle est la définition de la vérification aléatoire contrainte de SystemVerilog ?
- Quelle est la définition des tests de non-régression pratiqués en conception de circuits ?
- Quel est l'avantage du type logic de SystemVerilog ?
- Quel est l'avantage d'utiliser always_ff ou always_comb de SystemVerilog à la place du always de Verilog ?
- Quel est l'avantage d'écrire un module avec parameter comme ci-dessus ?
- Quel est le rôle de l'instruction generate ci-dessus ?
- Quel est le rôle des outils de lint utilisés en vérification HDL ?
- Quel est l'objectif principal d'une simulation avec informations de délai sur le circuit après synthèse logique ou placement-routage (netlist au niveau portes) ?
- Comment appelle-t-on la forme ci-dessus, où la sortie d'un circuit combinatoire revient à sa propre entrée sans passer par une bascule, et pourquoi faut-il l'éviter ?
- Comment la description ci-dessus est-elle généralement traitée lors de la synthèse logique pour FPGA ?
- Pour un circuit combinatoire, quelle comparaison est correcte entre une longue chaîne de if/else if et une instruction case à conditions mutuellement exclusives ?
- Quelle est la différence entre les opérateurs d'égalité « == » et « === » en Verilog ?
Comparatifs sur ce thème
- Verilog vs VHDL : les différences entre les deux HDLVerilog et VHDL comparés dans un tableau : origine, syntaxe, typage, sensibilité à la casse, fonctions de vér…
- Affectation bloquante (=) vs non bloquante (<=) en VerilogAffectations bloquante (=) et non bloquante (<=) comparées : mise à jour, dépendance à l'ordre, logique combi…
- Reset synchrone vs asynchrone : timing, horloge et relâchementResets synchrone et asynchrone comparés : moment d'action, besoin d'horloge, glitches, analyse temporelle, re…
Autres thèmes de Systèmes informatiques
- Arithmétique des ordinateurs IEEE 754, virgule fixe, erreur d'arrondi
- ISA et assembleur RISC-V, modes d'adressage, conventions d'appel
- Compilateurs Analyse syntaxique, SSA, optimisation, registres
- Éditeurs de liens, chargeurs et exécutables ELF, symboles, relocalisation, liaison dynamique
- Système d'exploitation et matériel Interruptions, appels système, défauts de page
- Hiérarchie mémoire Cache, remplacement, trois types de défauts
- Multicœur et synchronisation MESI, instructions atomiques, barrières mémoire
- Programmation GPU Warps, mémoire partagée, coalescence, occupation
- Pile matérielle et logicielle de l'IA Inférence/entraînement, quantification, roofline
- Systèmes embarqués et firmware GPIO, UART/SPI/I2C, RTOS
- Interfaces d'E/S et bus PCIe, USB, SerDes, CXL
- Analyse des performances Loi d'Amdahl, CPI, goulots d'étranglement
- Sécurité matérielle Canaux auxiliaires, secure boot, TEE, PUF
- Gestion de l'énergie DVFS, power gating, états de veille