Altifigence Academy
Conception numériqueGratuit · Fondamentaux

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.

SystemVerilogConception de modulesBancs de test
Mon apprentissage

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

  1. 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.

  2. 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.

  3. 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.

  4. É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.

  5. 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.

  6. 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.

  7. 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é.

  8. 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.

Votre choix s’applique à ce navigateur. Modifiez-le à tout moment en bas de page.