Fondamentaux de la conception RTL
Décrivez des circuits numériques en SystemVerilog. Étudiez types, largeurs, signe, logique combinatoire et séquentielle, modules, paramètres et generate. Vérifiez limites et défaillances avec des bancs de test indépendants, puis reliez des impulsions périodiques à un accumulateur et conservez des résultats reproductibles.
Ce que vous apprendrez
- Spécifier largeur, signe, source de pilotage, instant de validité et valeur de remise à zéro de chaque signal.
- Séparer les affectations combinatoires complètes des mises à jour d'état cadencées par l'horloge.
- Construire des structures statiques par paramètres et generate, et vérifier les configurations limites.
- Composer des modules par connexions nommées et fonctions.
- Écrire des stimuli sans concurrence indéterminée et des modèles de référence indépendants.
- Distinguer les preuves de compilation, simulation, synthèse et exécution DDS.
Avant de commencer
Ces exercices dans le navigateur utilisent des modèles pédagogiques ; ils ne compilent ni n’exécutent de HDL. Pour exécuter le code séparément, suivez le guide Digital Design Studio de votre système et connectez-vous si l’opération le demande.
Installation et premier démarrage ↗ · Téléchargements ↗Programme
- RTL et contrats de modules
- RTL : décrire des circuits concurrentsConcept
Distinguez l'ordre d'exécution logiciel de la structure matérielle parallèle et précisez état, état suivant et observation.
- Signaux et ports : contrat de largeur, de direction et de tempsConcept
Lire une interface et distinguer les critères de vérification des sorties combinatoires et mémorisées.
- Modules, ports et instances : des connexions contractuellesConcept
Composez des modules combinatoires par ports nommés et vérifiez pilotage unique et limites hiérarchiques.
- Vérification : sortie combinatoire et mémoriséeVérification
Distinguez changement d'entrée et observation du registre.
- Types, largeurs, signe et expressions
- logic, wire, X/Z et largeurs explicitesConcept
Séparez type, pilotage et stockage et vérifiez littéraux, comparaisons, extensions et valeurs inconnues.
- Indices des vecteurs, ordre des bits et signeConcept
Lire les chemins de données en séparant indices, ordre de transmission série et interprétation arithmétique.
- Largeurs des tranches, concaténations et répétitionsConcept
Construire les chemins de données en calculant largeur totale et conditions de conservation des valeurs.
- Complément à deux, extension de signe et dépassementConcept
Distinguer interprétation signée et dépassement d'addition par des équations et contre-exemples.
- Vérification : intervalle et extension expliciteVérification
Vérifiez ensemble largeurs d'entrée et de sortie.
- Logique combinatoire complète en RTL et vérification
- RTL combinatoire et affectations complètesConcept
Exprimer la même fonction avec l'opérateur conditionnel et always_comb, puis repérer les omissions créant un verrou.
- Encodeurs et priorité : choisir une requête parmi plusieursConcept
Distinguer les hypothèses de l'encodeur one-hot et les résultats valid et index d'un encodeur prioritaire.
- Vérification du MUX : tests exhaustifs et propriétésConcept
Vérifier séparément couverture combinatoire et stockage, puis minimiser les contre-exemples.
- Bilan de conception : équivalence de sélection et instant d'observationVérification
Distinguer ce qu'une table de vérité suffit à vérifier et ce qui exige une observation de l'horloge.
- État, affectations et priorité de remise à zéro
- Bascules, enable et priorité des commandesConcept
Définir maintien, chargement et reset par l'état suivant, et éviter un clock gating involontaire.
- Affectations non bloquantes et mise à jour simultanéeConcept
Séparer anciennes et prochaines valeurs pour interpréter correctement pipelines et compteurs RTL.
- Compteurs modulo, saturation et impulsion terminaleConcept
Définir le traitement du maximum et le cycle exact du signal terminal-count.
- Travaux pratiques : reset, rebouclage et invariants du compteurTravaux pratiques
Comparer chaque front à une référence et isoler les effets de l'initialisation, du reset et de la largeur.
- Bilan : largeur, priorité et limites du rebouclageVérification
Évaluer limites et commandes simultanées à partir du contrat de transition.
- Paramètres et génération de structures statiques
- parameter, localparam, $clog2 et configurations limitesConcept
Séparez entrées d'exécution et configuration, puis concevez largeur et terminaison pour N=1 et les non-puissances de deux.
- generate : construire des circuits statiques avec des bouclesConcept
Utilisez genvar et generate-if pour une hiérarchie nommée et vérifiez l'ordre des voies.
- function automatic et expressions réutilisablesConcept
Écrivez des fonctions sans temps simulé et vérifiez largeur, signe et indépendance de la référence.
- Vérification : N=1 et largeurVérification
Séparez largeur minimale et états valides.
- Bancs de test et vérification indépendante
- Instants d'échantillonnage et causalité dans les chronogrammesConcept
Lire les chronogrammes en séparant stabilisation combinatoire, capture d'horloge et ordre des événements.
- Travaux pratiques : un banc qui signale ses propres échecsTravaux pratiques
Séparez DUT, stimuli, référence et vérifications pour tester reset, enable et rebouclage sans course.
- Plan de vérification, couverture et référence indépendanteConcept
Distinguer tests réussis et contrat satisfait, puis intégrer limites, croisements et contre-exemples minimaux.
- Déboguer un compteur avec un contre-exemple minimalConcept
Construire des tests courts distinguant reset, enable et erreurs de rebouclage.
- Vérification : références et coursesVérification
Choisissez attentes indépendantes et lecture après mise à jour.
- Composition de modules et travaux pratiques intégrés
- Machines à états : séparer état, transition et sortieConcept
Construire une FSM depuis sa table et comparer Moore/Mealy, états illégaux et politique de requêtes.
- Projet de synthèse : détecteur de 101 avec recouvrementConcept
Réunir réduction d'état, validité d'entrée, sortie enregistrée et vérification indépendante dans une conception.
- Ready/valid et tampon élastique d'une placeConcept
Définir transferts sans perte ni doublon et entrées/sorties simultanées dans un chemin pouvant s'arrêter.
- Pipeline multiplication-addition et alignement des donnéesConcept
Découper les opérations par registres et aligner données, valid et opérandes auxiliaires par transaction.
- Travaux pratiques intégrés : impulsions périodiques et accumulateur autoriséTravaux pratiques
Spécifiez les transferts utilisant les valeurs précédentes et vérifiez pauses, impulsions consécutives et reset simultané.
- Diagnostics des outils et portée des résultats
- Setup, hold et budget temporelConcept
Séparer chemins maximaux et minimaux et calculer hold indépendamment de la fréquence.
- Frontières de domaines d'horloge et métastabilitéConcept
Comprendre la portée du synchroniseur à deux étages et distinguer niveau, impulsion brève et transfert multibit.
- Compilation, lint et synthèse : portée des diagnosticsConcept
Fixez sources, top et langage et distinguez syntaxe, largeurs, verrous et fonction.
- Traces d'exécution et poursuite des travaux pratiques DDSConcept
Livrez sources, entrées, attentes, échecs et versions pour reproduire la pratique.
- Vérification finale : fonction et preuvesVérification
Distinguez résultats locaux et acceptation de la pratique DDS gratuite.