Forum: FPGA, VHDL & Co. Verständnisfrage: Wie kommen große Routingdelays zustande?


von Hans (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

Ich habe mal eine Verständnisfrage zum Zustandekommen großer 
Routingdelays im FPGA.

folgende einfache Ausgangslage:
Input_PIN --> FPGA --> IBUFDS --> FLIP_FLOP --> Output_PIN
(FPGA: SPARTAN6)

Im Anhang sieht man ein Bild vom FPGA mit dem gerouteten Signal zwischen 
dem IBUFDS und dem Ausgangsflipflop (liegt im IOB). Dazu das Timing.

Es zeigt sich, dass das Signal 10ns (reines Routing) benötigt um diese 
Strecke zurückzulegen. Meine Frage lautet: Warum braucht das Signal so 
lange? Natürlich muss es einen recht langen Weg zurücklegen, aber wenn 
man voraussetzt, dass ein Signal mit (ganz grob) etwa halber 
Lichtgeschwindigkeit läuft, sollte die Verzögerung doch kürzer sein (bei 
c/2 braucht das Signal etwa 2ns pro 30cm)

Welche Faktoren spielen da rein? Wie kann man sich diese Zeit erklären?
Mir geht es nur um das Verständnis.

Danke und Grüße!

von Bitwurschtler (Gast)


Lesenswert?

Kapazitive Last:

zwar ist eine "Ladung" flott am Gate des Transistors, aber eine alleine 
genügt nicht um die Kapazität zu "füllen" und so das "hohe" Potential zu 
erreichen das der Umschaltvorgang benötigt. Es müssen also viele 
"Ladungen" zum/vom Gate gebracht werden, was dauert - da durch die 
dünnen Querschnitte nur eine begrenzte Anzahl v. "Ladungen" 
transportiert wird.

von Hans (Gast)


Lesenswert?

Bitwurschtler schrieb:
> Kapazitive Last:
>
> zwar ist eine "Ladung" flott am Gate des Transistors, aber eine alleine
> genügt nicht um die Kapazität zu "füllen" und so das "hohe" Potential zu
> erreichen das der Umschaltvorgang benötigt. Es müssen also viele
> "Ladungen" zum/vom Gate gebracht werden, was dauert - da durch die
> dünnen Querschnitte nur eine begrenzte Anzahl v. "Ladungen"
> transportiert wird.

Danke für die Rückmeldung!
In diese Richtung wäre auch mein Ansatz gegangen. Gibt es da eigentlich 
eine Hausnummer wie groß der Kapazitätsbelag so einer Leitung in etwa 
ist?

Was mich auch interessieren würde (nur aus akademischem Interesse) : 
Kann man sich eigentlich die Länge einer Leitung in ISE irgendwo 
anzeigen lassen? Im FPGA-Editor habe ich nichts gefunden...

von Hans (Gast)


Lesenswert?

Nachtrag: Statt Kapazitätsbelag wäre eher die Impedanz interessant...

von Mh. M. (mhm)


Lesenswert?

Hans schrieb:
> Bitwurschtler schrieb:
>> Kapazitive Last:
>>
>> zwar ist eine "Ladung" flott am Gate des Transistors, aber eine alleine
>> genügt nicht um die Kapazität zu "füllen" und so das "hohe" Potential zu
>> erreichen das der Umschaltvorgang benötigt. Es müssen also viele
>> "Ladungen" zum/vom Gate gebracht werden, was dauert - da durch die
>> dünnen Querschnitte nur eine begrenzte Anzahl v. "Ladungen"
>> transportiert wird.
>
> Danke für die Rückmeldung!
> In diese Richtung wäre auch mein Ansatz gegangen. Gibt es da eigentlich
> eine Hausnummer wie groß der Kapazitätsbelag so einer Leitung in etwa
> ist?

Dazu ergänzend, weil ich mir nicht sicher bin, ob das bereits so 
rüberkam: Wenn man nach der Synthese im Device View die Routes ansieht, 
dann kommt das erstmal so rüber, als seien das lediglich metallisierte 
Bahnen die da direkt bestimmte Punkte miteinander verbinden (im 
vorliegenden Fall mehr oder minder einen Input auf ein FlipFlop auf 
einen Output). Dies stimmt jedoch nicht ganz: immer, wenn man im Device 
View einen Übergang zwischen horizontalen und vertikalen (in diesen 
beiden Richtungen verlaufen die metallisierten Bahnen im FPGA) Bahnen 
sieht, dann befindet sich dort ein Switch Block, welcher die Verbindung 
herstellt. Und diese Switchblöcke bestehen natürlich aus irgendwelchen 
Schaltern, die ein gewisses Propagationdelay in den Signalpfad 
einbringen. Im gesamten Routingdelay stellt also die reine 
Signallaufzeit in Kupfer vermutlich nur einen kleinen Teil dar.

von J. S. (engineer) Benutzerseite


Lesenswert?

Die Schalter machen am Signal fast garnichts. Die frischen das Signal 
sogar auf, wenn sie aktiv sind und beschleunigen die Information. Das 
maßgenliche im Silizium ist die Kapazität und damit die Fläche (und bei 
den fest verdrahtenten FPGAs = feste Breite damit im Wesentlichen die 
Länge einer Leitung).

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

jaja und propagation Delay ist eine Weltverschwörung...

von Tim (Gast)


Lesenswert?

Beschleunigen..Nja, sicher wird es effektiver sein mehrere buffer zu 
nehmen falls dem einen die Puste ausgeht. Ich glaube auch das man hier 
auch nicht zu lang sein darf um nicht in die Reflektionsproblematik zu 
kommen. 100fs gibt sicher jeder buffer

von Weltbester FPGA-Pongo (Gast)


Lesenswert?

Tim schrieb:
> Beschleunigen..Nja, sicher wird es effektiver sein mehrere buffer zu
> nehmen falls dem einen die Puste ausgeht.

Du meinst parallele Buffer und Zweige, nehme ich an.

> 100fs gibt sicher jeder buffer
Die Schaltzeiten, also das, was man ohne Last den Gates anlasten kann, 
liegt sogar noch höher, als nur 100 Femto, aber trotzdem sind diese 
irrelevant, weil es rein von der Last abhängt, ob daraus Pico oder gar 
Nanosekunden werden. Das Transistorgate hat quasi gar keine Kapazität im 
Vergleich zu der Leitung dorthin.

Relevant sind letztlich die Leitungen von dort weg. In aktuellen FPGAs 
bewegen sich die Taktfrequenzen um die 200MHz-400MHz von daher sind 
Werte von rund 100ps oval all relevant. Werte unter 10ps liegen im 
Bereich des Jitters. Daher werden die Interconnetions so dimensioniert, 
dass sie eine genügend große Anzahl von Leitungen mit rund 100ps treiben 
können. Meht geht dann über Parallelisierung.

Die andere Frage, wie man das macht, wurde schon beantwortet: Die 
Treiber bestehen aus mehreren Verstärkern hintereinander. Die Methodik 
spiegelt sich auch im ASIC design wider:

Statt einer langer direkter Leitung in der Kombinatorik, baut man einen 
Buffer ein, der die Leitungen teilt und die Schaltzeiten grob halbiert, 
da die effektive Schaltzeit mit der Leitungslänge im Quadrat geht und 
das Addieren des Buffers nix kostet.

Als ein Beispiel hätten wir hier eine rund 3mm lange Steuerleitung auf 
einen Ausgang, die 3x gepuffert wurde, um sie von fast 4ns auf gut 1ns 
zu drücken:

Vorher  : 1x180ps + 3690 ps = 3.87 ns
Nachher : 3x180ps +  410 ps = 0.95 ns

Im FPGA geht das freilich nicht so einfach, weil die Schalter und Buffer 
fest verbaut sind, was die Sache unflexibel macht.

von J. S. (engineer) Benutzerseite


Lesenswert?

Mw E. schrieb:
> jaja und propagation Delay ist eine Weltverschwörung...

Auch wenn du es nicht glauben willst, die Verzögerungen kommen durch die 
Leitung und nicht durch die Schaltzeiten. Da stecken letztlich 
Transistoren drin, die binnen Picosekunden schalten. Auch die 
verketteten Verstärker in den IO-Zellen, die am meisten zu treiben 
haben, haben Anstiegszeiten von weit unter 1ns.

von J. S. (engineer) Benutzerseite


Lesenswert?

Hans schrieb:
> Was mich auch interessieren würde (nur aus akademischem Interesse) :
> Kann man sich eigentlich die Länge einer Leitung in ISE irgendwo
> anzeigen lassen? Im FPGA-Editor habe ich nichts gefunden...

Ich nehme nicht an, dass der Hersteller ausgerechnet dazu konkrete 
Angaben machen wird. Wozu auch? Die Zeit ist ja das Entscheidende und da 
ist der fan out wichtig, wie schon dargestellt wurde.

von Duke Scarring (Gast)


Lesenswert?

Hans schrieb:
> Was mich auch interessieren würde (nur aus akademischem Interesse) :
> Kann man sich eigentlich die Länge einer Leitung in ISE irgendwo
> anzeigen lassen? Im FPGA-Editor habe ich nichts gefunden...
Du meinst in mm?
Ich denke nein. Aber mit den Laufzeiten aus dem FPGA-Editor und der 
Die-Größe (nach dem kleinsten Gehäuse suchen), sollte man schon eine 
gute Abschätzung hinbekommen.

Duke

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.