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.