HDL et vérification
Voulant un circuit combinatoire, on a écrit le code ci-dessus. Quel problème peut survenir ?
always @(a)
y = a & b;
- Ab est retiré du circuit et y devient égal à a
- BLa synthèse échoue et aucun circuit n'est produit
- CSi seul b change, y n'est pas mis à jour en simulation, ce qui diverge du circuit synthétisé (où y change quand b change)
Afficher la réponse et l'explication
Réponse : C. Si seul b change, y n'est pas mis à jour en simulation, ce qui diverge du circuit synthétisé (où y change quand b change)
Le simulateur n'exécutant le bloc qu'au changement des signaux de la liste de sensibilité, lorsque seul b change, y conserve son ancienne valeur. La synthèse logique, elle, ignore la liste et construit une porte ET d'après le contenu du bloc ; dans le circuit réel, le changement de b se reflète donc sur y. C'est une situation dangereuse où la simulation semble correcte alors que le circuit se comporte autrement. Écrire « @(*) » l'évite.