Quelle est la meilleure façon de savoir si un bus contient un unique x dans verilog?
J'ai un banc de test qui suit un bus. Certains des signaux à l'intérieur de l'autobus peut être 1'bx. Pour une variété de raisons, j'ai besoin de savoir si l'un des signaux à l'intérieur de l'autobus sont 1'bx. Quelle est la meilleure façon de tester (pas de synthèse-seulement pour la simulation) si un bus contient tout x? J'avais espéré que je pourrais utiliser une réduction ou puis utiliser ===, mais cela ne semble pas fonctionner. Merci,
D
Pourquoi cette question de down ont voté?
OriginalL'auteur Doov | 2013-07-01
Vous devez vous connecter pour publier un commentaire.
(^bus === 1'bX)
Bit xor le bus, puis vérifier si le résultat est X. Si un bit est X ou Z, alors le résultat sera X.
De savoir qui peu dans le bus a l'erreur:
Le bit à bit ou exclusif (xor) permettra de vérifier l'ensemble du bus, mais il ne dira pas où dans le bus le X ou Z existe. Il est utile si vous ne se soucient pas de connaître l'emplacement de l'X ou Z.
OriginalL'auteur Greg
Vous pouvez utiliser
$isunknown
(introduit dans la norme IEEE Std 1800-2005):Noter que cette traite également
z
commex
.Vous êtes correct. J'ai modifié ma Réponse. Dommage que l'OP n'a pas de fournir des données d'entrée.
La réduction ou de travaux ssi vous n'avez pas de 1s et xs mixte. Si vous essayez quelque chose comme 4'b010x, il va échouer.
Déjà corrigé.
Pour info: sur le plan technique de la norme IEEE Std 1800-2005 (et -2009 seulement besoin de
$isunknow
travail à l'intérieur des assertions. Certains vendeurs n'ont faire une restriction, d'autres n'ont pas. La norme IEEE Std 1800-2012 donné officiellement soutien pour$isunknown
en dehors des affirmations contenues dans l'article 20.9. À la fin de la journée^data===1'bX
et$isunknow
sont équivalentes et juste une question de préférence.OriginalL'auteur toolic