Critical Path Carry Skip Adder

#5162136
Lesenswert?

Hat jemand hier Erfahrung mit "schnellen" Addieren (Carry Look Ahead, 
Carry Skip, Carry Save, Carry Increment,...) auf nem FPGA?

Wenn ich z.B. einen Carry Skip Adder
https://en.wikipedia.org/wiki/Carry-skip_adder
baue, ist der "längste Pfad" ja nicht mehr der langsamste, kritische, 
weil
geeignete Signale ihn "überholen", d.h. eine Reihe der langen Pfade muss 
ich mit "false path" kennzeichnen. Weiss jemand wie man das systematisch 
macht,  damit in der Pfad-Dauer Berechnung die richtigen Resultate 
kommen?
Gast #5162483
Lesenswert?

Wohl alle Synthesizer/Fitter benutzten bei Addition
die sog. CarryChain, eine Kette aus Carry-Logikelementen.
Die ist hardwired, wärend die meissten deiner Schaltungen
softwired sind (also viel langsamer), d.h. du wirst kaum
die Geschwindigkeit eines buildin Carryadders schlagen
können.

Es gibt aber Tricks, um "schneller" zu sein, konkret
schneller zu Takten: Du schneidest einfach deinen Addierer
in der Mitte durch und führst den ersten Teil im 1. Takt
und den zweiten Teil im 2. Takt aus, damit also einen
Takt Latenz. (oder aber 3/4/etc Teile, lohnt sich aber
nur bei seeehr langen Zahlen, d.h. in der Praxis so gut
wie nie)

Btw.: du kannst die CarryChain auch für viele andere
Operationen nutzen (z.B. Vergleich zweier Signale, mit
einer Konstanten, mit "0" etc.) und so wesentlich schnellere
Implementierungen erreichen als die Herstellertools.
Z.B. ist der Vergleich eines sehr langen Vektors (1000..)
gegen "0" in ein paar ns möglich, die Herstellertools
gehen dabei idR in die Knie. Das ist iE wie Assembler
gegen C-Compiler.
Gast #5162496
Lesenswert?

Sigi schrieb:
> Das ist iE wie Assembler
> gegen C-Compiler.

Schlimmer, denn man man als VHDL-Entwickler einige routing Optionen und 
Resourcen gar nicht aktiv und kontrolliert nutzen, die aber die Synthese 
zur Verfügung hat.

Der nächste Thema ist das timing optimierte Placement. Bauen und Ändern 
führt da kaum zu besseren Ergebnissen.

Der Versuch, low level Addierer zu bauen, ist nur bei PLDs sinnvoll, 
wenn man wirklich reale Verschaltung definiert. Bei FPGAs setzt man eine 
Vorschrift und lässt bauen.

FPGA Entwickler sind heute Bauleiter und keine Maurer mehr. Das Mauern 
geht automatisch.

Das haben manche aber noch nicht mitbekommen. Ganz schlimm ist es an den 
Hochschulen: Da werden immer noch solche Schaltungskonzepte vorgestellt 
und die Studenten gebeten, diese zu optmieren. Und die bauen dann die 
Addier in Matlab. Professoren von vorgestern.
Moderator (Firma: Titel) Persönliche Seite #5162502
Lesenswert?

Weltbester FPGA-Pongo schrieb im Beitrag #5162496:
> Da werden immer noch solche Schaltungskonzepte vorgestellt und die
> Studenten gebeten, diese zu optmieren
In der Praxis gibt es aber realistisch nur 1 Freiheitsgrad: den besseren 
Speedgrade.

Alles drüber raus sind Schaltungstricks, die man dann explizit von Hand 
auskaspert. Und das auch nur an der einen Stelle, wo es klemmt. 
Ansonsten gilt: "schnell genug reicht aus".

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren