Forum: FPGA, VHDL & Co. Filter läuft trotz timing violation


von Martin O. (ossi-2)


Lesenswert?

Ich realisiere IIR Filter mit dem red Pitaya (Zynq7010).
Die Filter arbeiten mit einer Abtastrate von 125MHz=8ns Takt.

Laut VIVADO habe ich eine timing-violation und der krit- Pfad
hat eine Länge von 9.5 ns ( d.h. 1.5ns zu langsam).

Der krit. Pfad besteht aus 7 CARRY4 units gefolgt von einem DSP48
Multiplizierer gefolgt von nochmal 7 CARRY4 units. Die CARRY4 chains 
stammen aus 25 Bit Addierern. Der krit. Pfad besteht also aus 
Addition+Multiplikation+Addition.

Wenn ich das Filter mit Testsignalen teste, scheint es 
erstaunlicherweise
einwandfrei zu funktionieren. Ich frage mich warum.

Mögliche Ursachen sind:

a) Die Pfadberechnung von VIVADO ist pessimistisch, und in Wirklichkeit
ist der krit. Pfad kürzer als 8ns.

b) Die Daten bei den Filtertests führen gar nicht dazu, dass der
krit. Pfad eine Rolle spielt.

c) Die Berechnungen sind tatsächlich teils fehlerhaft, aber die Fehler
sind so klein oder selten, dass man sie beim Filtertest nicht bemerkt.

Was glaubt ihr ist der Grund? Gibt es weitere Theorien?
Wie konstruiert man zu einem kritischen Pfad Testdaten, die
den krit. Pfad benutzen?

von Schlumpf (Gast)


Lesenswert?

a) = sehr wahrscheinlich
b) = durchaus möglich
c) = durchaus möglich
d) Weitere Möglichkeit: Dein Design ist an dieser Stelle unkritisch, da 
du z.B. die Daten nicht beim nächsten Takt verwendest, sondern ein 
Steuersignal hast, welches dazu führt, dass da ein Takt "Luft" entsteht.
Sowas könnte man dann durch mit einem Multicycle-Constraint 
"entspannen"..
Aber das ist natürlich abhängig von deinem Design.

Btw: Ich habe oft während der Entwicklungsphase irgendwelche 
Zwischenstände meines Designs am Laufen, die Timing-Errors aufweisen und 
habe mir nie nen Kopf darüber gemacht, warum es trotzdem lief.
Sondern eher im Hinterkopf behalten, dass ich mich nicht wundere, falls 
es NICHT läuft.

Für das endgültige Design habe ich dann natürlich schon geschaut, dass 
es keine Timing-Errors mehr gibt.

von daniel__m (Gast)


Lesenswert?

Martin O. schrieb:
> a) Die Pfadberechnung von VIVADO ist pessimistisch, und in Wirklichkeit
> ist der krit. Pfad kürzer als 8ns.

äußerst wahrscheinlich. Der Pfadberechnung ist für die kleinste erlaubte 
Betriebsspannung bei gleichzeit höchster Temperatur durchgeführt. Beide 
Punkte sind bei der Entwicklung eher unüblich.

In diesem Fall hilft es meist, den FPGA deutlich zu erhitzen, um das 
Fehlverhalten zu provozieren.

von hart aber weise (Gast)


Lesenswert?

Martin O. schrieb:
> a) Die Pfadberechnung von VIVADO ist pessimistisch, und in Wirklichkeit
> ist der krit. Pfad kürzer als 8ns.

Die signallaufzeit ist von der Die- temperatur und der Corespannung 
abhängig. Die Timing-analyse läuft da meist unter worst case 
(Corespannung unteres Limit, Temp kurz vor Maximum) während das target 
im grassgrünen bereich (alles easy  spannung und T im Otpimum) läuft. 
Für die timinganalyse sollte man die zu verwendete Temp. und die 
Corespannung angeben können zumindest als best Case Worst case scenario. 
Lass mal best case durchrechnen.

Und selbst bei verletzten timing (Hold und setup) muss nicht gleich das 
FF schlagartig falsche Werte speichern. Die Wahrscheinlichkeit für 
fehler steigt eben. Und selbst das kann man in grenzen abmildern. bspw. 
durch  Gray statt binary counter.

Frag mal einen Overclocker woran er erkennt das der Chip wirklich am 
Limit taktet.

von Fpga I. (fpga-ing)


Lesenswert?

Ein weiterer Grund könnte der Speedgrade Deines FPGA sein. FPGA 
Hersteller garantieren typischerweise eine Mindestgeschwindigkeit.

Gibt es beispielsweise die Speedgrades 1,2,3 wobei 3 der langsamste sei, 
kann es durchaus sein, dass Du ein Speedgrade 1 oder 2 Baustein 
bekommst, auf dem dann Speedgrade 3 draufsteht.

In Deinem Timing Report findest Du typischerweise auch, bei welchem 
Baustein der Worst Case auftritt.

Gruß FPGA-Ing

von FPGA-Ingenieur (Gast)


Lesenswert?

Fpga I. schrieb:
> Gibt es beispielsweise die Speedgrades 1,2,3 wobei 3 der langsamste sei,
> kann es durchaus sein, dass Du ein Speedgrade 1 oder 2 Baustein
> bekommst, auf dem dann Speedgrade 3 draufsteht.

Na, DAS möchte ich ja mal erleben! Ist ja dank der Label-Fälscher eher 
anders herum.

Kann es sein, dass die Timings aufgrund der Neuheit bei Vivado sehr 
pessimistisch ausgelegt sind?

von Thomas T. (warhammerth)


Lesenswert?

Also diese Timings sind ja meistens für den worst case ausgelegt. Also 
z.B. bei maximaler Temperatur. Es kann schon sein, wenn du den FPGA mit 
85° (oder wie hoch auch immer) betreibst, dass du dann Fehler bekommst.
Bei Raumtemperatur spielen ein paar Prozentkeine große Rolle.

von FPGA-Ingenieur (Gast)


Lesenswert?

Wie groß sind denn da überhaupt die Unterschiede? Da ich wirksam die 
Temperatur eines FPGAs steuern konnte und es der Synthese mitgegeben 
hatte, tat sich nicht viel. Konkret hatte ich mal die Temperatur des 
FPGA auf maximal 50 Grad limitieren können, weil er in einem gekühltem 
System mit maximal 20 Grad läuft (25 Übertemperatur gemessen) aber es 
sprangen keine 10% Frequenzreserve raus - von wegen FFs einsparen oder 
kleineren SpeedGrade nehmen.

von P. K. (pek)


Lesenswert?

FPGA-Ingenieur schrieb im Beitrag #4347415:
> aber es sprangen keine 10% Frequenzreserve raus

Selektier neben der tieferen Temperatur auch gleich auch das Device mit 
dem langsameren Speedgrade und schau was die Synthese meint.

Wenn Du nur die Temperatur anpasst, muss ich der Fitter einfach weniger 
Mühe bei der Optimierung geben (wenn  das Ziel, sprich Timing Closure, 
erreicht ist, macht das Tool nicht mehr weiter auch wenn noch Reserve 
wäre).

von genervt (Gast)


Lesenswert?

FPGA-Ingenieur schrieb im Beitrag #4343471:
> Fpga I. schrieb:
>> Gibt es beispielsweise die Speedgrades 1,2,3 wobei 3 der langsamste sei,
>> kann es durchaus sein, dass Du ein Speedgrade 1 oder 2 Baustein
>> bekommst, auf dem dann Speedgrade 3 draufsteht.
>
> Na, DAS möchte ich ja mal erleben! Ist ja dank der Label-Fälscher eher
> anders herum.

Das ist gängie Praxis bei den Halbleiterherstellern.

Du fertigst einen Type und misst dann aus, wie schnell der kann. Wenn 
deine Ausbeute gut ist, könntest du mehr auf Speedgrade 1 labeln als du 
von dem Speedgrade verkaufen könntest, was machst du also: Du labelst 
die als Speedgrade 2 und so weiter...

von Klar Texter (Gast)


Lesenswert?

genervt schrieb:
> Du fertigst einen Type und misst dann aus, wie schnell der kann.

Njein, es wird nicht gemessen wie schnell der Chip ist sondern es wird 
getestet ob er die Prüfung für den bestimmten speedgrad besteht. werden 
also 10k St. -2  und 100k-1 gefordert wird solange auf -2 getestet bis 
die 10k aussortiert sind, dann nur noch auf -1. So ein Test braucht auch 
seine Zeit, die spart man sich. und so gelangen einige -2 chip die als 
-1 gelabelt sind auf den markt. Blöderweise weiss man nicht ob jetzt der 
-1 einer ist der beim -2 Test aussortiert wurde oder nie auf -2 getestet 
wurde. Oder wie oben beschrieben marketingtechnisch ge-down-gradet 
wurde.

MfG,

von Johannes O. (jojo_2)


Lesenswert?

FPGA-Ingenieur schrieb im Beitrag #4343471:
> Fpga I. schrieb:
>> Gibt es beispielsweise die Speedgrades 1,2,3 wobei 3 der langsamste sei,
>> kann es durchaus sein, dass Du ein Speedgrade 1 oder 2 Baustein
>> bekommst, auf dem dann Speedgrade 3 draufsteht.
>
> Na, DAS möchte ich ja mal erleben! Ist ja dank der Label-Fälscher eher
> anders herum.

Das habe ich aber auch schon mehrmals gelesen. Stell dir folgendes vor:
Der Hersteller bekommt bei der Fertigung 50% Speedgrade A (langsam) und 
50% Speedgrade B (schnell) heraus.
Die Käufer kaufen nun aber 75% Speedgrade A und nur 25% benötigen 
wirklich Speedgrade B. Was machst du jetzt? Letztendlich hättest du sehr 
viele Speedgrade B Chip übrig, bei Speedgrade A kannst du nicht liefern. 
Also druckst du einfach Speedgrade A auf die schnelleren Chips drauf. 
Denn es ist ja nur spezifiziert, wie schnell der Chip MINDESTENS ist.


Die Beobachtung des OPs, das Design läuft trotz Timing-Violations, hatte 
ich auch schon zahlreiche Male während der Entwicklung. Ist also 
durchaus "normal" dass es in Grenzen gut funktioniert.

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.