Les bogues critiques sont corrigés. Habituellement, ils sont corrigés avant que le produit n'entre en production. À moins que vous n'utilisiez les premiers échantillons, vous ne verrez peut-être jamais les pires bugs.
La correction des bogues est difficile et coûteuse. Il ne s'agit pas simplement de changer une ligne de code RTL. Si vous faisiez cela, vous devrez resynthétiser, refaire la disposition physique, modifier la disposition pour résoudre les problèmes de synchronisation, acheter un tout nouvel ensemble de masques, produire de nouvelles tranches, tester les tranches (normalement), valider les nouveaux correctifs et éventuellement caractériser ou qualifier à nouveau le produit. Cela prend des mois et coûte cher. Pour cette raison, nous essayons de corriger les bogues directement dans la mise en page (de préférence sur une seule couche métallique). C'est plus rapide et moins cher que de recommencer à partir de la synthèse RTL, mais ce n'est toujours pas bon.
Si nous corrigeons un bogue critique de toute façon, pourquoi ne pas corriger tous les autres bogues aussi? Encore une fois, cela prend du temps - du temps pour trouver et implémenter un correctif, du temps pour relancer les tests de vérification de conception. Ce délai signifie qu'il faudra plus de temps pour commercialiser le prochain produit. Et en attendant, vous trouverez presque certainement plus de bogues dans votre produit actuel si vous regardez bien. C'est une bataille perdue. La correction des bogues est encore plus difficile sur un produit qui est sorti depuis longtemps, car les gens doivent plonger dans l'ancien design pour comprendre ce qui se passe. Comme le dit Null, les clients devront peut-être requalifier votre produit dans leur système. Si votre produit est encore en développement, le report de la mise en production peut entraîner un glissement des horaires des clients, ce qui les rend très mécontents.
Normalement, les bogues qui restent ne se produisent que dans des configurations étranges, causent des problèmes très mineurs, ont des solutions de contournement faciles ou tout ce qui précède. Ils ne sont tout simplement pas assez mauvais pour en valoir la peine. Et si vous réutilisez un module matériel sur le produit suivant, vos clients existants auront déjà la solution de contournement dans leur logiciel.
Les chaînes d'outils logiciels sont un autre facteur. Si un module persiste assez longtemps, votre chaîne d'outils pourrait changer suffisamment pour que refaire les anciens tests de validation devienne un projet majeur en soi. Et vous ne pouvez probablement pas simplement charger les anciens outils, car vous ne payez plus pour la licence du site. Mais tant que vous ne changez pas le module, vous pouvez continuer à le copier et à le coller dans de nouveaux MCU.
Le logiciel est également un problème côté client. Si votre correction de bug rompt la compatibilité en arrière de quelque manière que ce soit, tous vos clients devront mettre à jour leur code, dont ils n'auront peut-être même plus les outils.
En tant que personne travaillant dans le développement de microcontrôleurs, je peux vous dire que nous aimerions tous corriger chaque bogue. Mais essayer de le faire retarderait le développement de manière imprévisible, ennuierait les clients, coûterait une tonne d'argent, et à la fin de tout cela, nous échouerions probablement.