23 / 37 · Concept
Instants d'échantillonnage et causalité dans les chronogrammes
Lire les chronogrammes en séparant stabilisation combinatoire, capture d'horloge et ordre des événements.
Les leçons sont gratuites. Inscrivez-vous pour enregistrer vos progrès.
Une même date contient encore un ordre
Des changements affichés au même instant ne sont pas simultanés sans cause. Dans un simulateur RTL événementiel, les événements actifs et les mises à jour non bloquantesAffectation non bloquante Affectation <= du RTL séquentiel : le membre droit est évalué puis la mise à jour planifiée, permettant aux registres du même front de calculer à partir de l'ancien état. En savoir plus précèdent la stabilisation. Dans le matériel, les changements suivent clock-to-Q et les retards combinatoiresRetard de propagation Temps nécessaire après un changement d'entrée pour que la sortie se stabilise à sa valeur correcte. Équivalence logique et caractéristiques temporelles sont distinctes. En savoir plus. Distinguez ces modèles.
Construisez la prédiction selon application des entrées → évaluation combinatoire → capture au front montantFront montant Instant où l'horloge passe de 0 à 1, distinct du niveau désignant tout l'intervalle CLK=1. En savoir plus → mise à jour de l'état. Vérifiez quand l'outil applique les entrées et enregistre les résultats.
Le calendrier réel des événements et des observations du simulateur doit être confirmé. Les quatre étapes ci-dessous structurent la prédiction ; elles ne représentent pas quatre périodes d'horloge.
- Application des entrées: Modifier a, b et sel
- Évaluation combinatoire: y = sel ? b : a
- Front montant: Capturer y juste avant le front
- Observer après la mise à jour: Comparer sampled_y
Calculer une référence indépendante
Calculez y pour chaque groupe d'entrées et séparez la colonne indiquant le front où q le reçoit. La première ligne où réel et attendu divergent permet de localiser l'erreur : application des entrées, sélection ou stockage.
Distinguer transition et état stable
Si les données sont égales pendant un changement de sélection, la sortie finale doit rester identique, mais des retards internes différents peuvent provoquer un bref glitch. Une transition normale vers une autre valeur n'est pas automatiquement un glitch. Comparaison logique et analyse temporelle physique répondent à des questions distinctes.
Dans un banc de test classique, modifier le stimulus au même front montant que le DUT puis lire immédiatement peut créer une course. Séparez commande et observation, ou utilisez une synchronisation explicite comme un clocking block. Le TP DDS fourni emploie un fichier JSON et les règles à horloge unique de l'outil ; n'y ajoutez pas un banc de test #delay arbitraire.
Essayez vous-même
Si y et sampled_y valent tous deux 1 à la fin, peut-on conclure que tous les cycles intermédiaires sont corrects ?
Lire l’explication
Non. Une sélection inversée ou un stockage décalé d'un cycle peut donner le même résultat final si a=b=1. Comparez l'attendu à chaque front et incluez des changements de sel lorsque a et b diffèrent.