28 votos

Errores de silicona, hojas de erratas

En muchos (¿la mayoría?, ¿todos?) de los microcontroladores que he utilizado en los últimos años, a veces hay algunos errores a nivel de silicio, y los fabricantes proporcionan a los ingenieros las hojas de erratas, describiendo el comportamiento inesperado que pueden encontrar.

¿Por qué no arreglan nunca estos "errores"? Puesto que el producto se sigue fabricando, y en la mayoría de los casos la solución del problema no afectará a las implementaciones anteriores, ¿por qué no se limitan a revisarlo? En muchos casos el producto puede estar estabilizado, la mayoría de los errores pueden haber sido encontrados, y puede tener una parte importante de su vida útil por delante.

¿Es tan difícil (técnicamente)? ¿Es caro?

4 votos

Porque arreglar los errores puede ser difícil.

1 votos

A veces lo hacen.

8 votos

También les obligaría a fabricar un nuevo conjunto de máscaras para la producción de silicio. Las máscaras pueden ser una de las partes más caras del proceso.

30voto

Al pacino Puntos 415

Los errores críticos se arreglan. Normalmente se arreglan antes de que el producto entre en producción. A menos que utilices las primeras muestras, es posible que nunca veas los peores errores.

Corregir los errores es difícil y caro. No se trata sólo de cambiar una línea de código RTL. Si se hiciera eso, habría que volver a sintetizar, rehacer el diseño físico, ajustar el diseño para solucionar cualquier problema de sincronización, comprar un conjunto de máscaras completamente nuevo, producir nuevas obleas, probar las obleas (normalmente), validar las nuevas correcciones y posiblemente caracterizar o calificar el producto de nuevo. Esto lleva meses y cuesta una cantidad de dinero angustiosa. Por eso, intentamos corregir los fallos directamente en la maqueta (preferiblemente en una sola capa de metal). Esto es más rápido y barato que volver a empezar desde la síntesis RTL, pero sigue sin ser bueno.

Si vamos a arreglar un fallo crítico de todos modos, ¿por qué no arreglar también todos los demás fallos? Una vez más, esto lleva tiempo: tiempo para idear e implementar una solución, tiempo para volver a realizar las pruebas de verificación del diseño. Ese tiempo significa que se tardará más en sacar el siguiente producto al mercado. Y mientras tanto, es casi seguro que encontrarás más errores en tu producto actual si buscas lo suficiente. Es una batalla perdida. Arreglar los errores es aún más difícil en un producto que lleva mucho tiempo en el mercado, ya que la gente tiene que bucear en el diseño antiguo para averiguar qué está pasando. Como dice Null, es posible que los clientes tengan que recalificar tu producto en su sistema. Si el producto está todavía en desarrollo, retrasar la salida a producción puede hacer que los clientes se retrasen, lo que hace que los clientes muy Desafortunado.

Normalmente, los bugs que se dejan sólo ocurren en configuraciones extrañas, causan problemas muy pequeños, tienen soluciones fáciles, o todo lo anterior. No son lo suficientemente malos como para que merezca la pena. Y si se reutiliza un módulo de hardware en el siguiente producto, los clientes actuales ya tendrán la solución en su software.

Las cadenas de herramientas de software son otro factor. Si un módulo permanece el tiempo suficiente, su cadena de herramientas puede cambiar lo suficiente como para que rehacer las antiguas pruebas de validación se convierta en un proyecto importante en sí mismo. Y probablemente no puedas cargar las herramientas antiguas, porque ya no estás pagando por la licencia del sitio. Pero mientras no cambies el módulo, puedes seguir copiando y pegando en nuevos MCUs.

El software también es un problema para el cliente. Si su corrección de errores rompe la compatibilidad con versiones anteriores de alguna manera, todos sus clientes tendrán que actualizar su código, para lo cual es posible que ya no tengan las herramientas necesarias.

Como alguien que trabaja en el desarrollo de microcontroladores, puedo decir que a todos nos encantaría arreglar todos los errores. Pero intentar hacerlo retrasaría el desarrollo de forma imprevisible, molestaría a los clientes, costaría una tonelada de dinero y, al final de todo, seguiríamos fracasando probablemente.

1 votos

+1, especialmente por mencionar que los clientes existentes ya tendrán implementadas las soluciones.

13voto

Aif Puntos 4603

Generalmente es por el gasto.

Siempre existe el riesgo de romper algo más cuando se "arregla" un fallo. Por eso, el fabricante suele tener que volver a calificar y caracterizar completamente el dispositivo para asegurarse de que el "arreglo" no ha introducido un fallo diferente (y quizá aún más indeseable). Eso supone dinero y tiempo (que, para el fabricante, también es dinero). También significa que el fabricante tiene empleados que arreglan un producto existente en lugar de desarrollar uno nuevo.

En una nota relacionada, a veces los clientes también requieren la recalificación del dispositivo arreglado en su(s) producto(s) para asegurarse de que la corrección de errores no rompe algo en su sistema Tampoco. Eso les cuesta dinero y tiempo, y los clientes pueden no estar dispuestos a aceptar esos costes: seguirán exigiendo la versión "con errores".

En algunos casos, por supuesto, el error es realmente difícil de arreglar técnicamente. En ese caso, es aún más caro arreglarlo.

1 votos

+1 siempre ha sido por el dinero, y en menor medida por los recursos. Las máscaras no son baratas, los servicios de backend no son baratos, etc.

1 votos

0 votos

@user2813274 xkcd es tan impresionante.

8voto

Alex Andronov Puntos 178

Si un comprador importante de una pieza la utiliza en un diseño que ha certificado para, por ejemplo, su uso a bordo de un avión o una nave espacial, cualquier cambio en cualquiera de los componentes utilizados en el diseño requerirá la recertificación del diseño en su conjunto. Si el diseño funciona adecuadamente en torno a todos los fallos del silicio, la revisión del silicio puede requerir que el cliente vuelva a realizar todas las pruebas de cualificación de su placa, mantener un suministro de piezas "no fijas" y "fijas", o simplemente seguir fabricando el antiguo diseño. Los proveedores de chips no publican sus listas de compradores, pero en algunos casos un solo cliente puede representar una fracción lo suficientemente grande de la demanda de un chip concreto como para que la empresa se resista a hacer algo que incomode a ese cliente.

Dicho esto, hay algunas erratas de silicio que siguen apareciendo en las sucesivas generaciones de piezas, algunas de las cuales carecen de soluciones decentes. Probablemente mi mayor problema es una condición de carrera en la lógica de transmisión de la UART en las partes 18Fxx de Microchip que puede causar que transmita bytes NUL falsos si el código intenta transmitir datos en el momento equivocado. La solución sugerida por Microchip es hacer que el código se asegure de no intentar cargar el registro de datos de transmisión entre el momento en que la UART comienza a enviar el bit de parada para un carácter anterior y el momento en que dicha transmisión se completa, pero si las interrupciones están deshabilitadas, el código en un manejador de interrupción de búfer de transmisión vacío generalmente no tendrá ninguna manera de saber cuánto tiempo puede haber transcurrido entre la transmisión de un carácter anterior (que habría causado que la ranura del búfer de transmisión esté disponible) y cuando el manejador de interrupción realmente recibió el control, y por lo tanto no tendrá ninguna manera de saber cuándo necesita abstenerse de la transmisión.

Aunque puedo entender cómo se pueden colar errores como el de la UART de Microchip, la solución no debería ser difícil: Espero que Microchip genere una señal "go" basada en el "AND" de las señales no sincronizadas "transmisión completa" y "carácter cargado", y tenga problemas si la primera señal cambia de estado justo después de la segunda (haciendo que el circuito de búfer de TX pierda la oportunidad de cargar los datos de carácter en un ciclo dado, pero permitiendo que el secuenciador de TX comience una nueva transmisión en ese ciclo); incluso si Microchip no quiere añadir retrasos de sincronización a los casos normales en los que el transmisor está vacío y se carga un carácter, o en los que el transmisor se vacía después de cargar un carácter, el problema podría solucionarse sin afectar al calendario en ninguno de esos casos añadiendo tres puertas NAND y dos latches de sincronización. Sin embargo, desde que se publicó este problema, se han enviado numerosas piezas sin añadir ninguna solución de este tipo.

5voto

bitsmack Puntos 5415

Realmente depende de la empresa y de la complejidad del arreglo. Por ejemplo, vea esto errata para el PIC18F23K22. Puedes ver que había ocho errores conocidos que afectaban a la primera revisión ("A1") del silicio.

En el momento de dar esta respuesta, tienen una revisión "A2" actualizada. De los ocho errores originales, tres de ellos han sido corregidos en esta nueva rev.

Otro factor decisivo es la vida útil del producto. Incluso si un fabricante decide no solucionar un problema específico en una pieza existente, puede "resolver" el problema asegurándose de que los nuevos productos no tengan los mismos fallos.

0 votos

+1, especialmente por mencionar la vida útil del producto.

4voto

krgrant Puntos 11

Puede que ya hayan producido (pero no vendido) miles o millones de circuitos integrados cuando se encuentre un fallo. No los tiran todos sólo por un fallo.

Creo que se puede comparar con la impresión de libros. Los libros se imprimen en cantidades de muchos miles en una sola tirada en poco tiempo (días, semanas). Pero se venden en años o décadas. Los libros no se tiran y se reimprimen en cuanto se encuentra una errata u otro error. También se imprimen hojas de erratas para los libros y se entregan al usuario.

Por supuesto, los fallos conocidos (erratas, errores) se corregirán en la próxima edición.

0 votos

Sí, a eso me refería. Arreglar en la "próxima edición"...

0 votos

Los circuitos integrados no se producen de forma continua, es decir, no al mismo ritmo que se venden. Puede pasar un tiempo, quizá años, hasta la siguiente edición.

0 votos

¡Vaya! Años... ¡Nunca pensé que sus lotes fueran tan grandes!

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X