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;
- AParce que y vaut toujours X et que la simulation s'arrête
- BParce que lorsque sel vaut X, la puce réelle sélectionne aussi toujours b
- 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.