FPGA verrechnet sich sporadisch

OP Persönliche Seite #8102838
Lesenswert?
• ▲
▼

Ich habe einen interessanten Effekt:

Ein FPGA auf einer eval-Platine meines Synths scheint einen internen Defekt zu haben. Es verrechnet sich sporadisch - offenbar auf einem ganz bestimmten Bit / Leitung und dies zunehmend bei steigenden Temperaturen. Das gleiche Bitfile macht auf identischen FPGA-Typen gleicher PCBs keine Probleme, auch wenn ich diese künstlich noch wärmer mache.

Theoretisch würde man sofort an ein unerledigtes timing-Problem denken, aber dann sollte sich das eben mit demselben! Bitfile auf anderen FPGAs auch zeigen.

Ein generelles Timing-Problem würde ich daher ausschließen, da dieser Schaltungsteil tief im synchronen Teil steckt, selber für sich unkritisch ist und das design insgesamt weit mehr als 1ns Reserve hat. Ich teste die einzelnen Module immer mit lokalen Testdesigns und bringe sie per FF und harten Constraints immer auf wenigstens 20% mehr Reserve, als später benötigt. Damit müsste das trotz Optimierung passen, soweit der Compiler keine Fehler macht.

Fehlende Constaints können es nicht sein, weil es an der Stelle keinen Taktübergang oder etwas Asynchrones gibt:

Der Schaltungsteil ist eine Komponente aus einem 7-Band-EQ in meinem Synthesizer, die zyklisch mit 192kHz läuft und auf knapp 200MHz getaktet wird. Die Komponente (ein 3rd-order Biquad-Resonator) ist relativ alt, bekannt und durchsimuliert. Sie funktioniert seit Jahren problemlos - u.a. auch in ISE-Designs auf Artix sowie Spartan 6.

Es sollte also nicht wirklich ein design Problem sein.

Wie habe ich es herausgefunden?

Aufgrund der muskalischen Funktionalität hat die Stufe einen Überlaufbegrenzer, welcher im Fall zu hoher Pegel infolge ungünstiger Einstellungen einen digitalen Überlauf verhindert. Zudem gibt es einen sanften Kompressor vor dem Überlauf, der im Übersteuerungsfall weicher limitiert und dem Signal noch etwas Reserve gibt.

Solche Überwacher hat man eigentlich nur in sicherheitskritischen Designs drin, um Rechnungen vor Einflüssen wie RAM-Fehler und Strahlung zu schützen, die ja auch temporär Bits kippen können. Passiert das sehr dumm, bekommt man wegen eines Überlaufs einen niedrigen Wert, den man später nicht mehr als "falsch" erkennen kann. Deshalb bei ich in SIL immer solche Erkenner ein, was sich auch schon bezahlt gemacht hat.

Bei mir ist der hier historisch drin, weil die Schaltung ursprünglich ohne headroom als Rechenreserve gelaufen war. Nun ist sie aus musikalichen Gründen drin, weil die Nutzungseinstellungen grundsätzlich Überschwinger produzieren kann.

Dieser Übersteuerungsschutz hat nun sporadisch angeschlagen, obwohl die GAIN-Einstellungen und das Testsignal noch gar keinen einen Überlauf erzeugen können und in den beiden anderen Testplatinen mit den "Brüdern" des besagten FPGAs auch keinen generieren. Ich kann das durch Testsignale in den Stufen davor genau checken. Außen sieht man es durch Anspringen der "Überlaufdiode" im LED-VU-Meter und bei einem DIRAC kann ich es auch im Sound hören.

Das ist jetzt insoweit interessant, als dass das FPGA bisher nicht auffällig war und auch sonst mit anderen bitfiles keinen Fehler produzierte. Oder sagen wir genauer: Ich habe noch keinen bemerkt! Das wiederum kann daran liegen, daß die vielen folgenden Filter im design, sporadische spikes weggelätten könnten, so wie sie das mit Rundungsfehlern und Verzerrungen infolge von Auflösung und Abtastung tun. Das gilt natürlich nur für solche "Musikschaltungen" die im weiteren Signalpfad Filter haben und deren Daten nicht so leicht zu plausibiliseren sind.


Ohne diesen Überwacher wäre mir das also gar nicht aufgefallen.


Fakt ist, daß die Werte nach einem Multiplizierer und dem anschließenden Register nicht stimmen:

Der 24-Bit-Wert (+/- 8.38xx Mio) kann an der Stelle funktionell nur etwa 7 Mio annehmen, während der Limiter bei 8.25 Mio agiert. Auch der Kompressor springt bei 70% teilweise verfrüht an. Es wird also irgendwann ein Bit high, obwohl es noch low sein müsste.

Ich nehme an, daß es ein Bit im Bereich (21 .. 20) ist, daß unzulässig mit aufaddiert wird. Leider kann ich es nicht testen, weil ich keinen debug core dort einsetzen kann, ohne das design neu zu compilieren. Eine Veränderung des designs führt ja dazu, daß die Schaltung anders realisiert wird und der Defekt sicher woanders auftritt.

Ich kann auch schlecht sagen, wo an welcher Stelle er physikalisch liegen könnte, weil ich nicht 100% sehe, wo genau diese Funktion platziert ist. Es wird ja sehr viel weg- und umsynthetisiert (auch wegen physischer Optimierung) und im FPGA-Editor ist das irgendwie nicht auffindbar.

Hat jemand sowas schon mal gehabt?

Wie gesagt war das FPGA bisher nicht auffällig. Auch mit anderen Designs zeigt es keinen Fehler, wobei die Frage ist, ob man die Problemregion überhaupt erwischt hat. Grundsätzlich müsste sich das bei einem vollen FPGA ja auch mal in einem Ausfall einer Funktion zeigen.

Werde da mal dranbleiben, gfs ein Testdesign dafür machen.

Noch als Info: Das FPGA ist ein Artix 7 mit speed grade 2. Das design hat über 1ns Reserve und synthetisiert auch mit einer versuchsweise eingestellten grade 1 noch. Das design hat ansonsten keine Probleme, ich habe an den Datenübergängen überall Zähler und Debug-Signale, z.B. an den SERDES. Die wären ja meines Erachtens die ersten, die bei Temperatur Probleme machen sollten. Der Fehler tritt auch durchaus bei Zimmertemperatur auf, wenn der FPGA z.B. unter 40° hat.

OP Persönliche Seite #8102861
Lesenswert?
• ▲
▼

Das Verändern des Files durch einen neuen Lauf auf einem anderen Rechner reicht schon. Selbst Synthese auf demselben Rechner sind ja nicht deterministisch wie man inzwischen weiß. Die Rechnerlast durch andere Programme kann den Lauf der Synthese beeinflussen und ein anderes Ergebnis liefern.

Wie vermutet, muss sehr wahrscheinlich diese ganz bestimmte Zelle erwischt werden. Wahrscheinlich eine kaputte LUT. Es könnte allerdings auch das RAM davor sein, weil von dort Filter-Koeffizienten für den FIR-Decimator kommen.

#8102873
Lesenswert?
• ▲
▼

J. S. schrieb:

... Wahrscheinlich eine kaputte LUT. Es könnte allerdings auch das RAM davor sein, weil von dort Filter-Koeffizienten für den FIR-Decimator kommen.

Ein klappriges Bit im RAM künnte man evtl. ja noch per JTAG finden. Bei LUTs sieht es wohl schlechter aus.

Da könntest du nur per RTL-Plan deines Projekts, und "Field Change" versuchen die betroffene LUT zu lokalisieren, und neu zu "verdrahten". ☺

Eigentlich sollte man vom Hersteller Unterstützung erwarten, wie man einen vollständigen Test der FPGA-Komponenten bewerkstelligt. Das wird sich sicher nicht in einem Schritt erledigen lassen.

OP Persönliche Seite #8102875
Lesenswert?
• ▲
▼

Cartman E. schrieb:

Eigentlich sollte man vom Hersteller Unterstützung erwarten,

Ich hatte schon diese Aufgabe, von den Herstellern kommt da nichts. Wir hatten da schon gefragt. Hat auch sicher seinen guten Grund.

Gleichwohl wäre das mal ein Thema, ein file zu bauen, das alles im FPGA zum Laufen bringt, belegt und damit funktioniell testbar macht. Wenn ich mir den Resourcenbedarf bei meinem aktuellen design anschaue und überlege, was ich noch alles einbauen kann und was ich schon alles weglassen musste, bin ich da auf einem guten Weg :-)

Persönliche Seite #8106633
Lesenswert?
• ▲
▼

Bei sehr neu erschienenen FPGAs sind die (der Synthese zu Grunde liegenden) timing Modelle oft noch nicht ganz ausgereift. So hatte ich mal ein MAX10 Design, das nur mit einer aelteren Quartus Version timing closure erreichen konnte. Neuere Versionen enthielten neuere Versionen der device support libraries (mit MAX10 relevanten Eintraegen in den change reports) und konnten keine timing closure erreichen. Die Frage ist jetzt, ob die alten Modelle zu optimistisch waren und damit designs erlauben, die die Hardware eigentlich nicht hergibt. Allerdings konnte ich nie nachweisen, dass irgendwelche Fehlfunktionen aufgetreten sind.

: Bearbeitet durch User
OP Persönliche Seite #8106770
Lesenswert?
• ▲
▼

Andi M. schrieb:

Bei sehr neu erschienenen FPGAs sind die (der Synthese zu Grunde liegenden) timing Modelle oft noch nicht ganz ausgereift.

Ja, das ist bekannt - allerdings sind die ja in der Regel pessimistisch ausgelegt und werden dann eigentlich lockerer. Das konnte ich beim Spartan mal beobachten.

Im Weiteren sind meine Artixe lange im Markt und soweit ich das verfolge, hat sich an den Modellen zuletzt nichts mehr geändert. Es ändern sich nur noch die erreichten budgets nach der Implementierung, wenn man andere Vivado-Versionen bemüht. Dann ist "neuer" interessanter Weise nicht "schneller" - siehe Beitrag "Das 3x3 der Vivado-Synthese - ein Vergleich"

Andi M. schrieb:

Die Frage ist jetzt, ob die alten Modelle zu optimistisch waren und damit designs erlauben, die die Hardware eigentlich nicht hergibt.

Ich denke, dass es im Einzelnen vorkommt, dass bestimmte Chargen nicht so viel Ausbeute liefern und man nicht den speed grade Status ändern möchte, weil irgendwo was nicht mehr richtig läuft oder man einen grundsätzlichen Fehler im Prozess entdeckt hat. Dann justieren die schon mal in die andere Richtung.

Was ich dazu im Hinterkopf habe ist der teilweise Wegfall des Display Port Core aus Vivado weil man angeblich festgestellt hat, dass die PLL nicht stabil genug ist, um die SPEC unter allen Randbedingungen zu halten.

Baut man das dennoch, geht es aufs eigene Risiko, oder man muss die Betriebsbedingungen einschränken.

Andi M. schrieb:

Allerdings konnte ich nie nachweisen, dass irgendwelche Fehlfunktionen aufgetreten sind.

Das ist genau dieser Punkt: Die Randbedingungen, die im Timing Modell angenommen werden sind ja min und max für alle Grenzfälle, also schlechteste Spannung und schlechteste Temperatur.

FPGA bei Zimmertemperatur = 50° Chip und stabilen Versorgungen (gleichmäßige mittlere Last) macht keine Problem. Wenn da aber Tansceiver laufen, DDR-Controller rennt und viele Ausgänge rödeln und das Ganze bei 80° Chip, sieht es anders aus.

OP Persönliche Seite #8106775
Lesenswert?
• ▲
▼

Antti L. schrieb:

ne sowas gibt es nicht, ist nicht testbar die FPGA logic, wenns nicht geht hast pech!

Es gibt halt Geräte, die unbedingt funktionieren müssen und keinen FPGA-Fehler haben dürfen. Neben SSE- und SEU-Test in Sachen Strahlung und Thermik muss auch die Logik an sich getestet werden. Wenigstens das konkrete file und die konkret erreichte Implementierung.

Wenn der FPGA faul ist, könnte man das dann erkennen und die PCB einfach nicht verbauen.

Das Problem tritt aber dann auf, wenn der Test erfolgreich war, weil die defekte Komponente vom aktuellen file nicht genutzt wurde, verbaut wird und im Gerät läuft und dann einer ein update macht! Im verbauten System kann man das PCB nicht mehr im Temperaturschrank testen und auch sonst nicht funktionell vollständig prüfen. Wenn dann durch das geändert bitfile die defekte LUT genutzt wird, tritt im Einzelfall der Fehler auf. Das wäre dann nicht zu verhindern.

Daher wird in Sicherheitssystemen alles doppelt und dreifach aufgebaut.

Damit die Dreifaltigkeit aber 100% funktioniert, wie errechnet, müsste man die FPGAs vollständig testen. Also braucht es meines Erachtens in diesen Anwendungsfällen einen Test in der Produktion mit einem randvoll gefüllten FPGA.

#8106905
Lesenswert?
• ▲
▼

J. S. schrieb:

Fehlende Constaints können es nicht sein, weil es an der Stelle keinen Taktübergang oder etwas Asynchrones gibt: Der Schaltungsteil ist eine Komponente aus einem 7-Band-EQ in meinem Synthesizer, die zyklisch mit 192kHz läuft und auf knapp 200MHz getaktet wird. Die Komponente (ein 3rd-order Biquad-Resonator) ist relativ alt, bekannt und durchsimuliert. Sie funktioniert seit Jahren problemlos - u.a. auch in ISE-Designs auf Artix sowie Spartan 6. Es sollte also nicht wirklich ein design Problem sein.

Wenig zielführend. Statt hier viel Text zu schreiben könntest du ja mal einen Design Checkpoint hochladen.

J. S. schrieb:

Ein FPGA auf einer eval-Platine meines Synths scheint einen internen Defekt zu haben. Es verrechnet sich sporadisch - offenbar auf einem ganz bestimmten Bit / Leitung und dies zunehmend bei steigenden Temperaturen. Das gleiche Bitfile macht auf identischen FPGA-Typen gleicher PCBs keine Probleme, auch wenn ich diese künstlich noch wärmer mache.

Auch baugleiche FPGAs haben eine Streuung. Wenn also das Timing bei einem Exemplar noch funktioniert kann es beim anderen Exemplar Probleme geben. Um dir das zu sagen kennt die Toolchain die Worst Case Bedingungen. Und braucht natürlich die richtigen Constaints.

OP Persönliche Seite #8107597
Lesenswert?
• ▲
▼

Gustl B. schrieb:

einen Design Checkpoint hochladen.

aufgrund der heutigen Möglichkeiten der AI möchte ich darauf verzichten. Da steckt mir zuviel spezielles Knowhow drin, u.a. einige Tricks mit Videotiming (nein an denen liegt es nicht).

Gustl B. schrieb:

Auch baugleiche FPGAs haben eine Streuung. Wenn also das Timing bei einem Exemplar noch funktioniert kann es beim anderen Exemplar Probleme geben.

Ja, aber wie du richtig schreibst:

kennt die Toolchain die Worst Case Bedingungen.

Das timing wird als ok bescheinigt und wie gesagt ist es nur dieses eine FPGA das spukt. Ich habe von den Trenzboards auch noch "frische", die unverbaut waren und auch die funktionieren. Es ist dieses eine FPGA.

#8107643
Lesenswert?
• ▲
▼

Das riecht stark nach Timing-Fehler. Die Frage ist doch: Sind alle Pfade richtig constrained?

Oder gibts gar unconstrained paths? Mal im Timing-Analyzer danach gesucht?

Wie schon erwähnt, sind viele FPGAs etwas schneller, als spezifiziert. Nur verlassen kann man sich nicht drauf!

Wenn es ein Timing-Problem ist, verschwindet der Fehler oft, wenn man das FPGA mit Kältespray abkühlt.

Ich würde nach unconstrained paths suchen und nach falschen constraints.

: Bearbeitet durch User

Antwort schreiben

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.