Cómo diseñar un nuevo chip con poco presupuesto
El gurú del hardware bunnie Huang habla de las herramientas de código abierto que utiliza para diseñar circuitos, y de por qué quiere construir su propio ASIC
Recientemente tuvimos un interesante intercambio con bunnie Huang, gurú del hardware y creador de Chumby, NeTV y el portátil Novena, entre otras cosas. También es autor de Hacking the Xbox, The Essential Guide to Electronics in Shenzhen, y de no uno, sino dos artículos en IEEE Spectrum.
Nos interesaba saber la opinión de Huang sobre si un equipo pequeño y con una financiación modesta -por ejemplo, una startup universitaria- podría producir un chip a medida, de la misma manera que estos grupos crean ahora productos a nivel de placa y software con facilidad.
Las empresas de software, en particular, se benefician de la gran cantidad de código abierto que está disponible para su uso en la construcción de productos comerciales. (Un estudio reveló que la aplicación comercial media contiene un 35% de código abierto). Queríamos saber si los diseñadores de chips también disfrutaban de un rico ecosistema de bloques de construcción de código abierto. ¿O el diseño de chips sigue siendo tan cerrado y desafiante que en realidad es sólo para las grandes empresas establecidas?
IEEE Spectrum: En primer lugar, ¿por qué querría una pequeña empresa producir su propio circuito integrado de aplicación específica (ASIC)? ¿No podría simplemente utilizar una matriz de puertas programable en campo (FPGA) para el producto que está tramando?
Huang: Los FPGA suelen venir en paquetes grandes y toscos y consumen demasiada energía.
Los ASIC son absolutamente necesarios para fabricar cosas como audífonos, dispositivos médicos implantables o comestibles, rastreadores GPS para ser llevados por animales, radios móviles, dispositivos RFID, tarjetas de felicitación electrónicas u otros circuitos desechables de un solo uso.
Otro ejemplo es el circuito integrado de controladores dentro del chip WS2812: ha revolucionado la iluminación al poder crear un LED RGB de un solo paquete con un protocolo en serie incorporado al incrustar un diminuto ASIC con los LED. (De hecho, llegué a conocer al tipo que diseñó la primera variante comercialmente viable de esto.)
Así que definitivamente hay una amplia gama de productos realmente útiles que cambian la industria y que las FPGAs no pueden tocar, principalmente lo que podríamos llamar «cosas baratas y de bajo consumo».
¿Cómo decidirías cuándo usar una FPGA y cuándo crear un ASIC? Eso depende. Las FPGAs desperdician una gran cantidad de silicio en comparación con un ASIC, por lo que el coste mínimo, que depende en gran parte de la superficie de silicio requerida para el chip, es a menudo un orden de magnitud mayor de lo que querrías. Pero fabricar un ASIC tampoco es barato.
En realidad estoy en medio de esta trampa ahora mismo: Estoy tratando de construir la próxima generación de NeTV, que es un motor de procesamiento de vídeo basado en FPGA. Los ASICs que pueden llevar a cabo dicho procesamiento de vídeo cuestan menos de la mitad que una FPGA y pueden hacer un mejor trabajo (en el sentido de que pueden procesar vídeo 4K, mientras que mi solución FPGA tiene un máximo de 1080p). Pero los ASIC existentes no tienen toda la funcionalidad que necesito. Sin embargo, debido a otras limitaciones, simplemente no puedo permitirme crear un ASIC propio para este producto.
Otra categoría de cosas para las que los ASIC son valiosos se encuentra en el extremo opuesto del espectro: las cosas de gama realmente alta. Permítanme explicarlo con una breve anécdota.
Hace un tiempo, leí el artículo sobre la Unidad de Procesamiento de Tensores (TPU) de Google, y pensé: «Maldita sea, quiero eso». Así que empecé a buscar FPGAs para ver lo que se necesitaría para construir algo de capacidad equivalente.
Descubrí que los FPGAs que podrían siquiera empezar a sostener una vela a la TPU de Google cuestan muchos miles de dólares cada uno, además de que requieren licencias de software súper caras. Algunas grandes empresas (como Microsoft) pudieron asociarse con fabricantes de FPGAs y, presumiblemente, Microsoft recibió un descuento bastante considerable. Así que podría crear algún hardware interesante utilizando FPGAs para competir con las TPUs de Google. Pero con FPGAs tan capaces, estás hablando de algo así como 17.000 dólares por un solo chip, al menos para la mayoría de las personas o empresas.
Spectrum: ¿Qué es lo mínimo que alguien podría gastar para crear un ASIC desde cero? Supongamos que el chip es muy sencillo. Imagino que una buena fracción del coste podría ser sólo por el software para diseñarlo, ¿no? Y habría que saber qué reglas de diseño hay que cumplir. ¿Esa información está disponible abiertamente?
Huang: Hace tiempo investigué un poco sobre esto. Hay algunas herramientas de código abierto que podrían llevarlo a cabo. Las reglas de diseño «SCMOS» son las más factibles. Creo que estas son las reglas de diseño que Open-V estaba tratando de utilizar.
En cuanto al software de diseño, puede utilizar una cadena de herramientas de código abierto basada en Magic (Xcircuit, IRSIM, NetGen, Qrouter, y Qflow). O, si te lo puedes permitir, puedes utilizar productos comerciales de código cerrado, como los de Cadence.
He utilizado tanto los flujos de diseño de Magic como los de Cadence. Personalmente, he disfrutado más con el editor de diseño de chips de Magic, pero el software de Cadence es más férreo, ya que se ha utilizado para diseñar tantos chips. Y la herramienta de Cadence para simular los efectos de la resistencia parásita y la capacitancia ha sido bien probada.
Eso no quiere decir que tengas que usar Cadence o similares. Creo que se podría utilizar Magic para construir algunos circuitos integrados que tienen tolerancias muy amplias, el tipo de circuitos integrados que se pueden encontrar dentro de los controladores de LED y tal vez incluso cosas como los audífonos. Podría ser un poco difícil hacer el diseño de RF, porque las herramientas de código abierto para simular los efectos parasitarios podrían no estar a la altura. Pero existe una metodología para perfeccionar los modelos que debería permitir desarrollar un diseño satisfactorio en dos o tres ejecuciones de chips.
Todo sea dicho, hasta quizás el nodo tecnológico de 180 nanómetros (más o menos), se podría utilizar herramientas de código abierto. Sin embargo, si se trata de un nodo más pequeño, hay que hacer cosas muy curiosas con las imágenes de las máscaras y utilizar formas que ya no son simples polígonos. Y los kits de diseño de varios proveedores para conseguirlo son cada vez más cerrados.
180 nm es bastante «grande» para los estándares actuales. Pero si realmente se quisiera colocar alguna combinación especial de circuitos en un solo troquel de silicio, se podría hacer de esta manera. Y podría dar lugar a algunos productos novedosos que, de otro modo, serían imposibles con diseños discretos. Sin embargo, hay que tener en cuenta que el empaquetado a escala de chip a nivel de oblea (WL-CSP) permite a los integradores de placas de circuitos impresos acercarse bastante a lo que usted podría conseguir con su ASIC personalizado.
¿Cuánto costaría hacer ese ASIC personalizado? Estimar el coste de la fabricación de máscaras y chips es difícil porque las listas de precios son confidenciales. Pero las historias que he escuchado sugieren que un ASIC sencillo (digamos uno de unos pocos milímetros cuadrados, fabricado con el nodo tecnológico de 250 nm) podría costar unos cuantos miles de dólares por un par de docenas de muestras.
Ese precio es lo suficientemente convincente como para que una vez jugara con la idea de fabricar una CPU de 8 o 16 bits que fuera totalmente inspeccionable. Podría ser atractiva para aquellos que se preocupan por la seguridad y quieren estar seguros de que no hay nada raro en el microprocesador que utilizan. Me imaginé que mandar a fabricar algo así me costaría unos cuantos miles de dólares. Eso es comparable al coste de desarrollo de cualquier producto, en realidad. Y ciertamente está dentro del rango del bootstrapping.
Spectrum: Bien, digamos que una pequeña empresa emergente utiliza herramientas de diseño gratuitas y encuentra el dinero suficiente para hacer al menos unas cuantas tiradas de producción de chips. ¿Podrían los diseñadores utilizar los diseños de circuitos de código abierto como bloques de construcción, como hacen habitualmente los desarrolladores de software?
Huang: Por el momento, existe un repositorio bastante razonable de bloques de circuitos libres y abiertos especificados a nivel de transferencia de registros (RTL), que es lo que se utiliza normalmente en el diseño de chips digitales. Esto incluye el microprocesador RISC-V pero también diseños como el lm32, el mor1kx, etc.
También hay una buena cantidad de diseños «compatibles con wishbone», incluyendo cosas como puentes Ethernet y UARTs. El proyecto OpenCores tiene una lista bastante razonable de este tipo de bloques, algunos de los cuales han sido incorporados en ASICs (aunque la mayoría de ellos están dirigidos a FPGAs).
En cuanto a señal mixta y analógica, los diseños abiertos son bastante escasos. La parte emocionante de Open-V fue su voluntad de abrir y compartir bloques analógicos y de señal mixta. Estos diseños no pueden aplicarse a nodos tecnológicos de fabricación más avanzados, pero al menos en el rango «SCMOS», hay una posibilidad razonable de que los diseños puedan convertirse en chips que funcionen.
Pero puede pasar mucho tiempo hasta que haya un buen conjunto de bloques de diseño analógico y de señal mixta que se hayan probado en ASICs, por desgracia. Otras cosas que quizá nunca estén realmente disponibles a través de diseños abiertos son los bloques de memoria como SRAM, DRAM, flash y fusibles programables eléctricamente. Esto se debe a que estas cosas requieren un conocimiento íntimo del proceso para ejecutarse -conocimiento que las fundiciones que hacen los chips puede que nunca liberen.
Todo por decir: Un pequeño actor podría ciertamente diseñar su propio ASIC y hacerlo fabricar con nada más que algo de ingenio y unos pocos miles de dólares. Pero no podría crear un diseño sofisticado ni utilizar un nodo tecnológico de última generación.