Критичні помилки все-таки виправляються. Зазвичай вони фіксуються до того, як продукт вступить у виробництво. Якщо ви не використовуєте ранні зразки, ви, можливо, ніколи не побачите найгірших помилок.
Виправити помилки важко і дорого. Це не просто зміна одного рядка коду RTL. Якщо ви зробили це, вам доведеться перевлаштувати розміри, повторно змінити фізичний макет, налаштувати макет, щоб виправити будь-які проблеми з хронометром, придбати цілий новий набір масок, виготовити нові вафлі, протестувати вафлі (як правило), перевірити нові виправлення та ін. можливо, охарактеризувати або кваліфікувати продукт знову. Це займає місяці і коштує неприємних сум грошей. З цієї причини ми намагаємося виправляти помилки безпосередньо в макеті (бажано на одному металевому шарі). Це швидше і дешевше, ніж починати з синтезу RTL, але це все одно не добре.
Якщо ми все-таки виправляємо критичну помилку, чому б не виправити і всі інші помилки? Знову ж таки, потрібен час - час, щоб розібратися та застосувати виправлення, час для повторних тестів на перевірку дизайну. Цей час означає, що для отримання наступного товару на ринок піде більше часу. А поки ви майже напевно знайдете більше помилок у вашому поточному продукті, якщо будете виглядати досить важко. Це програшний бій. Виправити помилки ще важче на продукт, який вийшов давно, адже людям доводиться занурюватися в старий дизайн, щоб зрозуміти, що відбувається. Як каже Null, клієнтам, можливо, доведеться перекваліфікувати ваш продукт у своїй системі. Якщо ваш продукт ще в розробці, затримка випуску продукції може спричинити ковзання графіків клієнтів, що робить клієнтів дуже нещасними.
Зазвичай помилки, які залишаються лише у дивних конфігураціях, спричиняють дуже незначні проблеми, мають легкі способи вирішення чи все вищезазначене. Вони просто не погані, щоб бути вартими клопоту. І якщо ви повторно використовуєте апаратний модуль для наступного продукту, ваші існуючі клієнти все одно матимуть рішення у своєму програмному забезпеченні.
Ще один фактор - це програмні ланцюги програм. Якщо модуль затримується досить довго, ваша ланцюжок інструментів може змінитися досить, що перезавантаження старих тестів перевірки стає самим важливим проектом. І ви, ймовірно, не можете просто завантажити старі інструменти, тому що більше не платите за ліцензію на сайт. Але поки модуль не змінено, ви можете продовжувати копіювати та вставляти його в нові MCU.
Програмне забезпечення також є проблемою на стороні замовника. Якщо ваша помилка будь-яким чином порушує сумісність назад, всі ваші клієнти повинні будуть оновити свій код, який, можливо, вже не матиме інструментів.
Як хтось, хто працює в розробці мікроконтролерів, я можу вам сказати, що всі ми хотіли б виправити кожну помилку. Але намагання зробити це непередбачувано затягує розвиток, дратує клієнтів, коштує тону грошей, і в кінці всього цього ми все ще, мабуть, не зможемо.