Betrachten Sie einen Ausdruck wie:
assign x = func(A) ^ func(B);
Dabei ist der Ausgang der Funktion 32 Bit breit und x ist ein Draht mit 16 Bit. Ich möchte nur die niedrigsten 16 Bits des resultierenden xor zuweisen.
Ich weiß, dass der obige Code das bereits tut, aber er generiert auch eine Warnung. Der "offensichtliche" Ansatz funktioniert nicht:
assign x = (func(A) ^ func(B))[15:0]; // error: '[' is unexpected
In Ihrem Beispiel schneiden Sie Bits implizit ab.
Durch explizites Abschneiden können häufig die Warnungen in Simulation / Flusen / Synthese entfernt werden.
Eine Möglichkeit, dies inline zu tun, besteht darin, einen Cast-Operator zu verwenden, z.
Dieser Ansatz kann sinnvoll sein, wenn aus dem Kontext ersichtlich ist, dass alle verworfenen Bits Nullen sind.
Wenn einige der Bits ungleich Null sind, würde ich vorschlagen, immer noch ein Zwischennetz wie @dwikle zu verwenden, das in einer vorherigen Antwort vorgeschlagen wurde , da dadurch klarer wird, dass Sie tatsächlich Bits wegwerfen. Hier ist es wieder als Referenz.
quelle
Ich denke, dass dies helfen könnte, den Zeilenzähler niedrig zu halten.
Ich bin mir nicht sicher, ob dies bei Zuweisungen gültig ist.
quelle