quelle est la signification du symbole de pipe "|" devant une variable

10

J'analyse un code verilog et trouve quelque chose comme

wire z = |a & b;

tandis que la simultanéité du code se comporte comme

wire z = a & b;

alors je me demandais quelle est la signification du |symbole (pipe)? A-t-il un impact sur la simulation / synthèse?

Ulli
la source

Réponses:

17

Il s'agit d'un opérateur de réduction bit à bit . |a & bsignifie que vous appliquez un OU logique à tous les bits de a(produisant un seul bit), puis effectuez un ET logique de ce bit et b. |an'a aucun effet quand aest un seul bit.

Néanmoins, il est assez courant de voir une réduction bit par bit appliquée aux valeurs à bit unique. Un cas typique est le code généré automatiquement où la largeur réelle de apeut dépendre de la configuration. Une autre possibilité est le code hérité où ail y avait une fois plusieurs bits. Lorsqu'elle aest devenue une valeur de bit unique, cette ligne était toujours techniquement correcte, de sorte que l'opérateur de réduction désormais inutile a été laissé.

Dmitry Grigoryev
la source