Warum kompiliert design_vision meinen Carry-Lookahead-Addierer in einen Ripple-Carry-Addierer?

An meiner Schule haben wir Synopsis "design_vision" in den Computerräumen. Ich weiß nicht, wie ich eine der Funktionen verwenden soll, also ist es für mich nur ein Werkzeug zum Zeichnen von Schaltplänen.

Aus Neugier habe ich in Verilog einen 8-Bit-Carry-Lookahead-Addierer von Hand codiert und dann design_vision gebeten, ihn zu kompilieren. Das Ergebnis sieht sehr nach einem Ripple-Carry-Addierer aus.

Jetzt verwendet der Ripple-Carry-Addierer weniger Gates, aber er ist so viel tiefer. Warum bevorzugt design_vision den Ripple-Carry?

Antworten (2)

Wenn der Ripple-Carry-Addierer weniger Gates hat und Zeitbeschränkungen erfüllt, warum sollte der Synthesizer ihn nicht bevorzugen? In vielen Fällen besteht die effizienteste Methode zur Generierung einer Carry-Kette darin, eine Mischung aus Ripple-Carry- und Lookahead-Einheiten zu verwenden. Wenn beispielsweise ein 32-Bit-Addierer mit einem Timing-Budget von 16 Gate-Verzögerungen implementiert wird, kann das Rendern als zwei Elf-Bit-Abschnitte und ein Zehn-Bit-Abschnitt weniger Gates erfordern als die schnellstmögliche Anordnung, während das Timing immer noch eingehalten wird Anforderungen.

Ich würde vorschlagen, herauszufinden, wie man mit Zeitbeschränkungen spielt; Ich würde vermuten, dass Sie unabhängig davon, ob Sie in einem Ripple-Carry- oder Carry-Lookahead-Addierer entwerfen, feststellen würden, dass die vom Compiler generierte Mischung aus Ripple- und Lookahead-Carry mit den angegebenen Einschränkungen variieren würde. Wenn Sie eine bestimmte Anordnung der Übertragslogik beibehalten möchten, können Sie dem Compiler explizit mitteilen, dass bestimmte Signale generiert werden sollen (da dies sowieso ein fiktives Design ist, ist es möglicherweise eine gute Möglichkeit, sie an E / A-Pins zu leiten). Ich nehme an, ein Compiler könnte immer noch entscheiden, die P- und G-Signale zu ignorieren, selbst wenn er gezwungen wäre, sie zu generieren, aber hoffentlich wäre er schlau genug, dies nicht zu tun.

Auf welche Technologie zielten Sie ab?

Wenn es sich um ein FPGA handelte, war der Synthesizer möglicherweise so schlau, dass er wusste, dass Ripple Carry effizienter ist (in Bezug auf die LUT-Anzahl und wahrscheinlich auch die Leistung), da die Carry-Kette kostenlos vorhanden ist.