Силиконовые жучки, опечатки


27

Во многих (в большинстве, всех) микроконтроллерах, которые я использовал в последние годы, иногда возникали некоторые ошибки уровня кремния, и производители предоставляли инженерам листы с ошибками, описывающими, с каким неожиданным поведением они могут столкнуться.

Почему они никогда не исправляют эти "ошибки"? Поскольку продукт все еще производится, и в большинстве случаев решение проблемы не повлияет на предыдущие реализации, почему они не просто пересматривают его? Во многих случаях продукт может быть стабилизирован, большинство ошибок может быть найдено, и у него может быть значительная часть срока службы продукта до него.

Это так сложно (технически)? Дорогой?


4
Потому что исправление ошибок может быть трудным.
Игнасио Васкес-Абрамс

Иногда они делают.
brhans

7
Это также потребовало бы от них создания нового набора масок для производства кремния. Маски могут быть одной из самых дорогих частей процесса.
Том Карпентер

@ IgnacioVazquez-Abrams Исправить ошибки нетрудно, найти их - сложная часть, но в приведенном выше случае они уже прошли сложную часть ...
Fotis Panagiotopoulos

5
Обратная совместимость. Разработчики могут использовать кремниевую ошибку независимо от того, сознательно она или нет. На днях возник вопрос по этой теме: кто-то получил контроллер старой версии, а его программа отказалась работать . Только после тщательных проверок выяснилось, что номер детали его устройства лишен дополнительного следа A. Оказалось, что это задокументировано, но это смущает людей.
Джиппи

Ответы:


28

Критические ошибки исправляются. Обычно они исправляются до того, как продукт поступит в производство. Если вы не используете ранние образцы, вы, возможно, никогда не увидите худших ошибок.

Исправление ошибок сложно и дорого. Это не просто изменение одной строки кода RTL. Если вы это сделаете, вам придется повторно синтезировать, переделать физический макет, настроить макет, чтобы исправить любые проблемы с синхронизацией, купить новый набор масок, произвести новые пластины, протестировать пластины (как правило), проверить новые исправления и возможно, охарактеризовать или квалифицировать продукт снова. Это занимает месяцы и стоит много денег. По этой причине мы стараемся исправлять ошибки непосредственно в макете (желательно на одном слое металла). Это быстрее и дешевле, чем начинать заново с синтеза RTL, но все равно не очень хорошо.

Если мы исправляем критическую ошибку в любом случае, почему бы не исправить все остальные ошибки? Опять же, это занимает время - время, чтобы найти и внедрить исправление, время, чтобы повторно запустить тесты проверки проекта. Это означает, что для выхода следующего продукта на рынок потребуется больше времени. А тем временем вы почти наверняка найдете больше ошибок в вашем текущем продукте, если вы будете выглядеть достаточно усердно. Это проигрышная битва. Исправить ошибки еще сложнее в продукте, который давно отсутствовал, поскольку людям приходится углубляться в старый дизайн, чтобы понять, что происходит. Как говорит Налл, клиентам, возможно, придется переквалифицировать ваш продукт в своей системе. Если ваш продукт все еще находится в разработке, задержка выпуска продукта может привести к сбою графиков работы клиентов, что делает их очень несчастными.

Обычно ошибки, которые остаются, возникают только в странных конфигурациях, вызывают очень незначительные проблемы, имеют простые обходные пути или все вышеперечисленное. Они просто не достаточно плохи, чтобы стоить хлопот. И если вы повторно используете аппаратный модуль в следующем продукте, ваши существующие клиенты уже будут иметь обходной путь в своем программном обеспечении.

Программные наборы инструментов являются еще одним фактором. Если модуль задерживается достаточно долго, ваша цепочка инструментов может измениться настолько, что повторное выполнение старых проверочных тестов само по себе станет важным проектом. И вы, вероятно, не можете просто загрузить старые инструменты, потому что вы больше не платите за лицензию сайта. Но до тех пор, пока вы не измените модуль, вы можете продолжать копировать и вставлять его в новые микроконтроллеры.

Программное обеспечение также является проблемой на стороне клиента. Если ваше исправление каким-либо образом нарушает обратную совместимость, все ваши клиенты должны будут обновить свой код, для чего у них может даже не быть инструментов.

Как человек, который работает в разработке микроконтроллеров, я могу вам сказать, что мы все хотели бы исправить каждую ошибку. Но попытка сделать это непредсказуемо задержала бы разработку, раздражала бы клиентов, стоила бы кучу денег, и в конце концов, мы все равно, вероятно, потерпели бы неудачу.


1
+1, особенно за упоминание о том, что существующие клиенты уже будут иметь обходные пути.
Ноль

13

Это вообще из-за расходов.

Всегда есть риск сломать что-то еще, когда вы «исправляете» ошибку. Из-за этого изготовителю обычно необходимо полностью переквалифицировать и повторно характеризовать устройство, просто чтобы убедиться, что «исправление» не внесло другую (и, возможно, даже более нежелательную) ошибку. Это означает деньги и время (которые для производителя также являются деньгами). Это также означает, что у производителя есть сотрудники, которые ремонтируют существующий продукт вместо разработки нового.

В связи с этим, иногда клиенты также требуют переквалификации фиксированного устройства в своих продуктах, чтобы убедиться, что исправление ошибки не нарушает что-либо в их системе . Это стоит денег и времени для них, и клиенты, возможно, не захотят принять эти расходы - они все равно будут требовать «глючной» версии.

Конечно, в некоторых случаях эту ошибку технически сложно исправить. В этом случае это еще дороже, чтобы исправить это.


1
+1 речь всегда шла о деньгах и в меньшей степени о ресурсах. Маски недешевы, бэкэнд-сервисы недешевы и т. Д.
Некоторое оборудование Гай


@ user2813274 xkcd - это круто.
Null

1
Когда я работал над ASIC в компании (в RTL, а не в макете / бэкэнде), я слышал, что набор масок может стоить к северу от 3 миллионов долларов. В небольшой команде / ассике каждый новый набор масок может легко увеличить ваше NRE на 10%. В любом случае, это бейсбольный пакет для цифр, которые я слышал за 8 лет, занимаясь чип-разработкой, даже не участвуя в покупке маски.
Росс Роджерс

8

Если крупный покупатель детали использует ее в конструкции, которую он сертифицировал, например, для использования на борту самолета или космического корабля, любое изменение любого из компонентов, используемых в конструкции, потребует повторной сертификации конструкции в целом. Если конструкция адекватно работает со всеми ошибками в кремнии, для пересмотра кремния может потребоваться либо то, чтобы заказчик повторил все квалификационные испытания своей платы, поддержание запаса как «нефиксированных», так и «фиксированных» деталей, или просто продолжая изготавливать старый дизайн. Поставщики чипов не публикуют свои списки покупателей, но в некоторых случаях один клиент может представлять достаточно большую долю спроса на конкретный чип, что компания может не захотеть сделать что-либо, чтобы причинить неудобство этому клиенту.

Тем не менее, есть некоторые кремниевые ошибки, которые продолжают появляться в последующих поколениях деталей, некоторые из которых не имеют достойных обходных путей. Вероятно, моя самая большая неприятность связана с состоянием гонки в логике передачи UART в частях MicroFip 18Fxx, которое может заставить его передавать ложные байты NUL, если код пытается передать данные в неподходящее время. Обходной путь для микрочипа заключается в том, чтобы код гарантировал, что он не будет пытаться загрузить регистр передаваемых данных между временем, пока UART начинает посылать стоп-бит для более раннего символа, и временем, когда такая передача завершена, но если прерывания когда-либо происходят отключено, код в обработчике прерываний пустого буфера передачи обычно выигрывает

Хотя я могу понять, как могут появиться ошибки, такие как ошибка Microchip UART, исправление не должно быть сложным: я ожидаю, что Microchip генерирует сигнал «go», основанный на «AND» несинхронизированной «передачи завершен» и «загружен символ» "сигнализирует и имеет проблемы, если первый сигнал меняет состояние сразу после последнего (в результате чего буферная схема TX упускает шанс загрузить символьные данные в данном цикле, но позволяет TX-секвенсору начать новую передачу в этом цикле) ; даже если Microchip не хочет добавлять задержки синхронизации к обычным случаям, когда передатчик пуст и символ загружен, или когда передатчик становится пустым после того, как символ был загружен, проблему можно исправить, не влияя на синхронизацию из этих случаевдобавив три вентиля NAND и две синхронизирующие защелки. Однако с момента опубликования этой проблемы были отправлены многочисленные детали, без каких-либо исправлений.


5

Это действительно зависит от компании и сложности исправления. Например, посмотрите это исправления для PIC18F23K22. Вы можете видеть, что было восемь известных ошибок, которые повлияли на первую («А1») ревизию кремния.

На момент этого ответа у них была одна обновленная версия "A2". Из первоначальных восьми ошибок, три из них были исправлены в этой новой версии.

Другим решающим фактором является срок службы продукта. Даже если производитель решает не устранять конкретную проблему в существующей детали, он все равно может «решить» проблему, убедившись, что в новых продуктах нет тех же ошибок.


+1, особенно за упоминание срока службы продукта.
Null

4

Возможно, они уже произвели (но еще не продали) тысячи или миллионы микросхем при обнаружении ошибки. Они не выбрасывают их все из-за ошибки.

Я думаю, что вы можете сравнить это с книгопечатанием. Книги печатаются тиражом в несколько тысяч экземпляров в течение короткого времени (дни, недели). Но они продаются в течение многих лет или десятилетий. Книги не выбрасываются и не переиздаются, как только обнаружена опечатка или другая ошибка. Также для книг печатаются опечатные листы и передаются пользователю.

Конечно, известные ошибки (опечатки, ошибки) будут исправлены в следующей редакции.


Да, это то, о чем я говорил. Исправление в «следующем издании» ...
Фотис Панайотопулос

Микросхемы производятся не непрерывно, то есть не с той же скоростью, что и продаются. Это может занять некоторое время, может быть, годы, до следующего издания.
Творог

Вот Это Да! Годы? ... Никогда, хотя их партии такие большие!
Фотис Панайотопулос

На самом деле я не уверен, распространено ли это, что от одного производственного цикла к другому уходят годы, но, безусловно, может потребоваться несколько лет, пока все продукты одного производственного цикла не будут проданы. Конечно, клиент хочет получать информацию об ошибках в продуктах, которые он покупает.
Творог
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.