Verständnisfrage: Wie kommen große Routingdelays zustande?

Gast #4548912
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!
Angehängte Dateien:
Gast #4549034
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.
Gast #4549083
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...
#4549313
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.
Gast #4579060
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.
Persönliche Seite #4585125
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.
Persönliche Seite #4585127
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.
Gast #4585132
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

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