Was bedeutet das Rohrsymbol "|" vor einer Variablen

10

Ich analysiere einen Verilog-Code und habe so etwas gefunden

wire z = |a & b;

Während der Simulation verhält sich der Code genauso wie

wire z = a & b;

Also habe ich mich gefragt, was das |(Rohr-) Symbol bedeutet. Hat es einen Einfluss auf die Simulation / Synthese?

Ulli
quelle

Antworten:

17

Dies ist ein bitweiser Reduktionsoperator . |a & bbedeutet, dass Sie ein logisches ODER auf alle Bits von anwenden a(ein einzelnes Bit erzeugen) und dann ein logisches UND dieses Bits und ausführen b. |ahat keine Auswirkung, wenn aes sich um ein einzelnes Bit handelt.

Trotzdem ist es durchaus üblich, dass einzelne Bitwerte bitweise reduziert werden. Ein typischer Fall ist automatisch generierter Code, bei dem die tatsächliche Breite von avon der Konfiguration abhängen kann. Eine andere Möglichkeit ist Legacy-Code, bei dem aeinmal mehrere Bits vorhanden waren. Als adiese Zeile zu einem Einzelbitwert wurde, war sie technisch immer noch korrekt, sodass der jetzt nicht mehr benötigte Reduktionsoperator beibehalten wurde.

Dmitry Grigoryev
quelle