Silicon Bugs, Errata Sheets

27

In vielen (den meisten ??, allen ??) Mikrocontrollern, die ich in den letzten Jahren verwendet habe, gibt es manchmal einige Fehler auf Siliziumebene, und die Hersteller stellen den Ingenieuren die Errata-Sheets zur Verfügung, in denen beschrieben wird, mit welchem ​​unerwarteten Verhalten sie konfrontiert sind.

Warum beheben sie diese "Bugs" nie? Da das Produkt immer noch hergestellt wird und die meisten Probleme dadurch nicht behoben werden, wirkt es sich nicht auf die vorherigen Implementierungen aus. Warum wird es dann nicht einfach überarbeitet? In vielen Fällen ist das Produkt möglicherweise stabilisiert, die meisten Fehler sind aufgetreten und es liegt möglicherweise ein erheblicher Teil der Produktlebensdauer vor ihm.

Ist es so schwierig (technisch)? Teuer?

Fotis Panagiotopoulos
quelle
4
Weil das Beheben von Fehlern schwierig sein kann.
Ignacio Vazquez-Abrams
Manchmal schon.
Brhans
7
Außerdem müssten sie einen neuen Satz von Masken für die Siliziumproduktion herstellen. Die Masken können einer der teureren Teile des Prozesses sein.
Tom Carpenter
@ IgnacioVazquez-Abrams Keine Fehlerbehebung ist einfach, sie zu finden ist der schwierige Teil, aber im obigen Fall haben sie den schwierigen Teil bereits durchlaufen ...
Fotis Panagiotopoulos
5
Rückwärtskompatibilität. Entwickler können einen Silizium-Fehler ausnutzen, egal ob er bewusst ist oder nicht. Neulich gab es eine Frage zu diesem Thema, jemand bekam einen alten Versionscontroller und sein Programm weigerte sich zu arbeiten . Erst nach sorgfältigen Überprüfungen stellte sich heraus, dass die Teilenummer seines Geräts keinen zusätzlichen Hinweis enthielt A. Es stellte sich heraus, dass es dokumentiert wurde, aber es verwirrt die Menschen.
Hippie

Antworten:

28

Kritische Fehler werden behoben. Normalerweise werden sie repariert, bevor das Produkt in Produktion geht. Wenn Sie keine frühen Beispiele verwenden, werden Sie möglicherweise nie die schlimmsten Fehler sehen.

Das Beheben von Fehlern ist schwierig und teuer. Es wird nicht nur eine Zeile RTL-Code geändert. Wenn Sie das getan haben, müssen Sie das Layout neu synthetisieren, das physische Layout wiederholen, das Layout optimieren, um Timing-Probleme zu beheben, ein ganz neues Maskenset kaufen, neue Wafer produzieren, die Wafer (normalerweise) testen, die neuen Fixes validieren und möglicherweise charakterisieren oder qualifizieren Sie das Produkt erneut. Dies dauert Monate und kostet eine quälende Menge an Geld. Aus diesem Grund versuchen wir, Fehler direkt im Layout zu beheben (vorzugsweise auf einer einzigen Metallebene). Dies ist schneller und billiger als bei der RTL-Synthese, aber es ist immer noch nicht gut.

Wenn wir trotzdem einen kritischen Fehler beheben, warum nicht auch alle anderen Fehler beheben? Auch dies erfordert Zeit - Zeit, um einen Fix zu finden und zu implementieren. Zeit, um die Design-Verifikationstests erneut durchzuführen. In diesem Fall dauert es länger, bis das nächste Produkt auf den Markt kommt. Und in der Zwischenzeit werden Sie mit ziemlicher Sicherheit mehr Fehler in Ihrem aktuellen Produkt finden, wenn Sie genau hinschauen. Es ist eine verlorene Schlacht. Das Beheben von Fehlern ist für ein Produkt, das schon lange nicht mehr verfügbar ist, noch schwieriger, da die Leute sich mit dem alten Design auseinandersetzen müssen, um herauszufinden, was los ist. Wie Null sagt, müssen Kunden möglicherweise Ihr Produkt in ihrem System erneut qualifizieren. Wenn sich Ihr Produkt noch in der Entwicklung befindet, kann eine Verzögerung der Produktionsfreigabe dazu führen, dass Kundenpläne verrutschen, was die Kunden sehr zufrieden stellt unglücklich macht.

Normalerweise treten die Fehler, die zurückbleiben, nur in seltsamen Konfigurationen auf, verursachen sehr geringfügige Probleme, lassen sich leicht umgehen oder haben alle oben genannten Probleme. Sie sind einfach nicht schlimm genug, um die Mühe wert zu sein. Und wenn Sie ein Hardwaremodul für das nächste Produkt wiederverwenden, haben Ihre bestehenden Kunden die Problemumgehung ohnehin bereits in ihrer Software.

Software-Toolketten sind ein weiterer Faktor. Wenn ein Modul lange genug im Bestand bleibt, kann sich Ihre Toolchain so weit ändern, dass das Wiederherstellen der alten Validierungstests zu einem Hauptprojekt für sich wird. Und Sie können wahrscheinlich nicht einfach die alten Tools laden, weil Sie nicht mehr für die Site-Lizenz bezahlen. Solange Sie das Modul nicht ändern, können Sie es weiterhin kopieren und in neue MCUs einfügen.

Software ist auch ein Thema auf Kundenseite. Wenn Ihr Bugfix in irgendeiner Weise die Abwärtskompatibilität beeinträchtigt, müssen alle Ihre Kunden ihren Code aktualisieren, für den sie möglicherweise nicht einmal mehr die Tools haben.

Als jemand, der in der Mikrocontroller-Entwicklung arbeitet, kann ich Ihnen sagen, dass wir alle gerne jeden Fehler beheben würden. Aber dies zu versuchen, würde die Entwicklung unvorhersehbar verzögern, Kunden nerven, eine Menge Geld kosten, und am Ende würden wir wahrscheinlich immer noch scheitern.

Adam Haun
quelle
1
+1, insbesondere um zu erwähnen, dass für bestehende Kunden bereits Problemumgehungen implementiert sind.
Null
13

Es ist in der Regel aus Kostengründen.

Es besteht immer die Gefahr, dass etwas anderes kaputt geht, wenn Sie einen Fehler beheben. Aus diesem Grund muss der Hersteller das Gerät in der Regel vollständig neu qualifizieren und charakterisieren, um sicherzustellen, dass durch die "Korrektur" kein anderer (und möglicherweise noch unerwünschter) Fehler aufgetreten ist. Das bedeutet Geld und Zeit (was für den Hersteller auch Geld ist). Dies bedeutet auch, dass der Hersteller Mitarbeiter ein vorhandenes Produkt reparieren lässt, anstatt ein neues zu entwickeln.

Aus einem ähnlichen Grund verlangen Kunden manchmal auch eine Neuqualifizierung des fest installierten Geräts in ihren Produkten, um sicherzustellen, dass die Fehlerbehebung nichts in ihrem System kaputt macht . Das kostet Geld und Zeit, und die Kunden sind möglicherweise nicht bereit, diese Kosten zu übernehmen - sie fordern weiterhin die "Buggy" -Version.

In einigen Fällen ist es natürlich technisch schwierig, den Fehler zu beheben. In diesem Fall ist die Reparatur sogar noch teurer.

Null
quelle
1
+1 Es ging immer um das Geld und in geringerem Maße um die Ressourcen. Masken sind nicht billig, Backend-Dienste sind nicht billig usw.
Einige Hardware Guy
@ user2813274 xkcd ist so genial.
Null
1
Als ich bei einem Unternehmen an ASICs arbeitete (in RTL, nicht im Layout / Backend), hörte ich, dass ein Maskensatz nördlich von 3 Millionen US-Dollar kosten kann. In einem kleinen Team / Team kann jeder neue Satz von Masken Ihre NRE leicht um 10% erhöhen . Wie auch immer, das ist der Ballpack für Zahlen, die ich in meinen 8 Jahren als Entwickler von Chips gehört habe, ohne jemals in den Kauf des Maskensets involviert zu sein.
Ross Rogers
8

Wenn ein Hauptabnehmer eines Teils es in einem von ihm zertifizierten Entwurf verwendet, z. B. für die Verwendung an Bord eines Flugzeugs oder Raumfahrzeugs, erfordert jede Änderung der in dem Entwurf verwendeten Komponenten eine erneute Zertifizierung des gesamten Entwurfs. Wenn das Design alle Fehler im Silizium in angemessener Weise umgeht, muss der Kunde zur Überarbeitung des Siliziums möglicherweise alle Qualifizierungstests für sein Board wiederholen und die Versorgung mit "nicht festgelegten" und "festgelegten" Teilen aufrechterhalten oder einfach weiterhin das alte Design herstellen. Chiphersteller veröffentlichen ihre Käuferlisten nicht, aber in einigen Fällen kann ein einzelner Kunde einen ausreichend großen Teil der Nachfrage nach einem bestimmten Chip ausmachen, so dass das Unternehmen es ablehnt, irgendetwas zu tun, um diesen Kunden zu stören.

Allerdings gibt es einige Silizium-Errata, die in nachfolgenden Teilegenerationen immer wieder auftreten, von denen es einigen anständigen Workarounds fehlt. Wahrscheinlich ist mein größter Ärger, dass der UART in den 18Fxx-Teilen von Microchip unter Race-Bedingungen in der Übertragungslogik fehlerhafte NUL-Bytes überträgt, wenn der Code versucht, Daten zur falschen Zeit zu übertragen. Die von Microchip vorgeschlagene Problemumgehung besteht darin, dass der Code sicherstellt, dass er nicht versucht, das Übertragungsdatenregister zwischen dem Zeitpunkt, zu dem der UART das Stoppbit für ein früheres Zeichen sendet, und dem Zeitpunkt, zu dem die Übertragung abgeschlossen ist, zu laden, aber falls jemals Unterbrechungen auftreten Deaktiviert, Code in einem Interrupt-Handler mit leerem Sendepuffer hat im Allgemeinen gewonnen. '

Ich kann zwar nachvollziehen, wie sich Fehler wie der Microchip-UART-Fehler eingeschlichen haben, aber die Behebung dürfte nicht schwierig sein: Ich gehe davon aus, dass Microchip ein "go" -Signal generiert, das auf dem "AND" von nicht synchronisierter "Übertragung abgeschlossen" und geladenem "Zeichen" basiert "signalisiert und hat Probleme, wenn das erstere Signal seinen Zustand unmittelbar nach dem letzteren ändert (was dazu führt, dass die TX-Pufferschaltung die Chance verpasst, die Zeichendaten in einem bestimmten Zyklus zu laden, dem TX-Sequenzer jedoch erlaubt, in diesem Zyklus eine neue Übertragung zu starten). ; Selbst wenn Microchip keine Synchronisationsverzögerungen zu den normalen Fällen hinzufügen möchte, in denen der Sender leer ist und ein Zeichen geladen ist, oder wenn der Sender leer wird, nachdem ein Zeichen geladen wurde, könnte das Problem behoben werden, ohne dass das Timing in beiden Fällen beeinträchtigt wird dieser Fälledurch Hinzufügen von drei NAND-Gattern und zwei Synchronisations-Latches. Seit der Veröffentlichung dieses Problems wurden jedoch zahlreiche Teile ausgeliefert, ohne dass ein solcher Fix hinzugefügt wurde.

Superkatze
quelle
5

Es kommt wirklich auf das Unternehmen und die Komplexität des Fixes an. Sehen Sie sich zum Beispiel diese Errata an das PIC18F23K22. Sie können sehen, dass es acht bekannte Fehler gab, die die erste ("A1") Revision des Silikons betrafen.

Zum Zeitpunkt dieser Antwort haben sie eine aktualisierte "A2" -Revision. Von den ursprünglichen acht Fehlern wurden drei in dieser neuen Version behoben.

Ein weiterer entscheidender Faktor ist die Lebensdauer des Produkts. Selbst wenn ein Hersteller ein bestimmtes Problem in einem vorhandenen Teil nicht beheben möchte, kann er das Problem dennoch "lösen", indem er sicherstellt, dass neue Produkte nicht dieselben Fehler aufweisen.

bitsmack
quelle
+1, insbesondere für die Angabe der Lebensdauer des Produkts.
Null
4

Vielleicht haben sie bereits Tausende oder Millionen von ICs hergestellt (aber noch nicht verkauft), als ein Fehler gefunden wurde. Sie werfen sie nicht alle weg, nur wegen eines Insekts.

Ich denke, man kann es mit dem Buchdruck vergleichen. Innerhalb kurzer Zeit (Tage, Wochen) werden Bücher in einer Auflage zu Tausenden gedruckt. Aber sie werden innerhalb von Jahren oder Jahrzehnten verkauft. Die Bücher werden nicht weggeworfen und nachgedruckt, sobald ein Tippfehler oder ein anderer Fehler festgestellt wird. Auch für Bücher werden Errata-Sheets gedruckt und dem Benutzer ausgehändigt.

Natürlich werden die bekannten Fehler (Tippfehler, Fehler) in der nächsten Ausgabe behoben.

Quark
quelle
Ja, darüber habe ich gesprochen. Fixing in der "nächsten Ausgabe" ...
Fotis Panagiotopoulos
Die ICs werden nicht kontinuierlich hergestellt, dh nicht in der gleichen Menge, wie sie verkauft werden. Es kann eine Weile dauern, vielleicht Jahre, bis zur nächsten Ausgabe.
Curd
Wow! Jahre? ... Niemals, obwohl ihre Chargen so groß sind!
Fotis Panagiotopoulos
Eigentlich bin ich mir nicht sicher, ob es üblich ist, dass es Jahre von einem Produktionslauf zum nächsten dauert, aber es kann sicher mehrere Jahre dauern, bis alle Produkte eines Produktionslaufs verkauft sind. Natürlich möchte der Kunde über Fehler in den von ihm gekauften Produkten informiert werden.
Curd