co oznacza symbol rury „|” przed zmienną

10

Analizuję kod verilog i znalazłem coś podobnego

wire z = |a & b;

podczas symulacji kod zachowuje się tak samo

wire z = a & b;

więc zastanawiałem się, jakie jest znaczenie |symbolu (fajki)? Czy ma to wpływ na symulację / syntezę?

Ulli
źródło

Odpowiedzi:

17

Jest to nieco mądry operator redukcji . |a & boznacza, że ​​zastosujesz logiczne OR do wszystkich bitów a(tworząc pojedynczy bit), a następnie wykonasz logiczne AND tego bitu i b. |anie ma wpływu, gdy ajest pojedynczym bitem.

Niemniej jednak dość często obserwuje się bitową redukcję wartości pojedynczych bitów. Jednym typowym przypadkiem jest automatycznie generowany kod, w którym faktyczna szerokość amoże zależeć od konfiguracji. Inną możliwością jest to, że jest to starszy kod, w którym akiedyś było kilka bitów. Gdy astał się wartością jednobitową, linia ta była technicznie poprawna, więc pozostawiono niepotrzebnego operatora redukcji.

Dmitrij Grigoriew
źródło