Hat die Implementierung von CSA Vorteile gegenüber der einfachen Verwendung des Multiplikationssymbols beim Synthetisieren?

Ich synthetisiere einige Multiplikationseinheiten in Verilog und habe mich gefragt, ob Sie im Allgemeinen bessere Ergebnisse in Bezug auf Flächen- / Energieeinsparungen erzielen, wenn Sie beim Multiplizieren Ihre eigene CSA mit Booth Encoding implementieren oder wenn Sie einfach das Symbol * verwenden und das Synthesetool übernehmen lassen Kümmert sich um das Problem für Sie?

Antworten (3)

Wenn Ihre Synthesewerkzeuge gut sind, sollten Sie den *-Operator verwenden, angemessene Einschränkungen festlegen und die Werkzeuge die schwere Arbeit erledigen lassen. Dies gilt insbesondere für FPGAs, die sehr schnelle und dichte Multiplikatorzellen sein können. Die Spartan-3-Serie von Xilinx hat zum Beispiel einige sehr schöne 9x9-Multiplikatorzellen. Wenn Sie darauf bestehen, logische Gleichungen für Ihren eigenen CSA-Multiplikator zu schreiben, kann der Synthesizer möglicherweise nicht ableiten, dass Sie wirklich einen Multiplikator benötigen, und das Ergebnis würde viele LUTs verwenden, während die Multiplikatorzellen im Leerlauf sind.

Ja, ich dachte, dass es bei der Optimierung wahrscheinlich zu besseren Ergebnissen führen würde, wenn Sie die Tools wissen lassen, dass Sie einen Multiplikator wünschen, indem Sie den *-Operator verwenden.

Lassen Sie das Synthesetool entscheiden.

Wenn Sie nicht an den Zwischenergebnissen der Multiplikation interessiert sind, werden Sie beim manuellen Vorgehen keine großen Gewinne erzielen. Angesichts der sehr breiten Optimierungsstrategien, die in den heutigen Synthesewerkzeugen vorhanden sind, ist das Beste, was Sie manuell in Bezug auf Leistung/Fläche/Leistung erreichen können, tatsächlich dasselbe (und es besteht eine gute Chance, dass Ihre manuelle Implementierung schlechter sein wird).

Das einzige Szenario (meiner Meinung nach), in dem Sie das Synthesetool nicht für die Multiplikation sorgen lassen, ist, wenn Standardbibliotheken/Module für Multiplikatoren verfügbar sind (Bibliotheken in ASICs, Module in FPGA). Dieser Ansatz wird manchmal in kritischen Teilen der Systeme verwendet (kritisch in Bezug auf Leistung/Fläche/Leistung). Diese Zellen sind auf eine bestimmte Verwendung (auf Layoutebene) zugeschnitten, und es besteht keine Chance, dass RLS besser abschneidet.

Wenn Sie nicht einige interne Knoten Ihres Booth-Codierungsmultiplikators als Ausgänge festlegen, leitet das Synthesetool die Low-Level-Logik ab. Da die Ein- und Ausgaben der beiden Ansätze genau gleich sind, würde ein gutes Synthesewerkzeug sie auf genau die gleiche Weise optimieren, und das Ergebnis wäre nicht anders. Die einzige Möglichkeit, das Synthesetool zur Implementierung eines Booth-Multiplikators zu zwingen, besteht darin, es in mehrere Blöcke aufzuteilen und die Grenzoptimierung zu deaktivieren.