Naprawiono błędy krytyczne. Zwykle są one naprawiane, zanim produkt wejdzie do produkcji. Jeśli nie używasz wczesnych próbek, nigdy nie zobaczysz najgorszych błędów.
Naprawianie błędów jest trudne i kosztowne. To nie tylko zmiana jednej linii kodu RTL. Jeśli to zrobisz, będziesz musiał ponownie zsyntetyzować, przywrócić fizyczny układ, dostosować układ, aby naprawić problemy z synchronizacją, kupić cały nowy zestaw masek, produkować nowe płytki, testować płytki (normalnie), sprawdzać nowe poprawki i ewentualnie scharakteryzuj lub zakwalifikuj produkt ponownie. Zajmuje to miesiące i kosztuje niepokojącą kwotę pieniędzy. Z tego powodu staramy się naprawiać błędy bezpośrednio w układzie (najlepiej na pojedynczej metalowej warstwie). Jest to szybsze i tańsze niż rozpoczynanie od syntezy RTL, ale nadal nie jest dobre.
Jeśli i tak naprawiamy błąd krytyczny, dlaczego nie naprawić wszystkich innych błędów? Ponownie, zajmuje to dużo czasu - znalezienie i wdrożenie poprawki, czas na ponowne uruchomienie testów weryfikacji projektu. Ten czas oznacza, że wprowadzenie następnego produktu na rynek potrwa dłużej. A w międzyczasie prawie na pewno znajdziesz więcej błędów w swoim obecnym produkcie, jeśli wystarczająco mocno spojrzysz. To przegrana bitwa. Naprawianie błędów jest jeszcze trudniejsze w przypadku produktu, który był dostępny od dawna, ponieważ ludzie muszą zagłębić się w stary projekt, aby dowiedzieć się, co się dzieje. Jak mówi Null, klienci mogą być zmuszeni do przekwalifikowania twojego produktu w swoim systemie. Jeśli Twój produkt jest wciąż w fazie rozwoju, opóźnienie wydania produkcyjnego może spowodować przesunięcie harmonogramów klientów, co czyni klientów bardzo niezadowolonymi.
Zwykle błędy, które zostają, występują tylko w dziwnych konfiguracjach, powodują bardzo drobne problemy, mają łatwe obejścia lub wszystkie powyższe. Po prostu nie są wystarczająco źli, aby być wartymi kłopotów. A jeśli ponownie użyjesz modułu sprzętowego w następnym produkcie, Twoi dotychczasowi klienci i tak będą mieli obejście tego oprogramowania.
Kolejnym czynnikiem są łańcuchy programowe. Jeśli moduł utrzymuje się wystarczająco długo, łańcuch narzędzi może się zmienić na tyle, że ponowne wykonanie starych testów sprawdzania poprawności stanie się poważnym projektem. I prawdopodobnie nie możesz po prostu załadować starych narzędzi, ponieważ nie płacisz już za licencję na witrynę. Ale dopóki nie zmienisz modułu, możesz kopiować i wklejać go do nowych MCU.
Oprogramowanie jest również problemem po stronie klienta. Jeśli twoja poprawka w jakikolwiek sposób psuje zgodność wsteczną, wszyscy twoi klienci będą musieli zaktualizować swój kod, co może nawet nie mieć już narzędzi.
Jako ktoś, kto pracuje nad rozwojem mikrokontrolerów, mogę powiedzieć, że wszyscy chcielibyśmy naprawić każdy błąd. Ale próba zrobienia tego opóźniłaby rozwój w nieprzewidziany sposób, denerwowała klientów, kosztowała masę pieniędzy, a na koniec nadal prawdopodobnie ponieślibyśmy porażkę.