HDL et vérification

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 ?

always @(*)
    if (sel) y = a;
    else     y = b;
  1. AParce que y vaut toujours X et que la simulation s'arrête
  2. BParce que lorsque sel vaut X, la puce réelle sélectionne aussi toujours b
  3. CParce que X est traité comme « faux » et qu'une valeur déterminée, b, est produite, si bien que l'erreur d'un sel indéterminé devient invisible en simulation
Afficher la réponse et l'explication

Réponse : C. Parce que X est traité comme « faux » et qu'une valeur déterminée, b, est produite, si bien que l'erreur d'un sel indéterminé devient invisible en simulation

L'instruction if de Verilog traite une condition X comme fausse et exécute la branche else. y prend donc la valeur déterminée b, et l'erreur d'un sel indéterminé est masquée en simulation. Dans le circuit réel, sel vaut 0 ou 1, et a peut aussi être sélectionné. C'est l'optimisme X ; on y remédie en adoptant des écritures qui propagent le X ou en ajoutant des assertions détectant les X.

S'entraîner sur ce thème Retour au thème

Autres questions sur HDL et vérification

  1. Quel énoncé est généralement correct au sujet des descriptions trois états produisant Z (haute impédance) en HDL ?
  2. Quelle est la définition du banc de test utilisé en vérification HDL ?
  3. 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) ?
  4. 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 ?
  5. Quelle est la caractéristique d'un banc de test autovérifiant ?

Comparatifs sur ce thème