La era que nos viene es la de los aceleradores, es por ello que el tener conocimientos de diseño de hardware cada vez será más importante. Pero, ¿alguna vez te has planteado diseñar chips cómo forma de vida? En este artículo os informamos de lo que necesitáis saber para poder hacerlo y los problemas con lo que os vais a encontrar.
Es normal que hablemos de programadores en el mundo del software, es más, a día de hoy mucha gente tiene empresas basadas en la creación de aplicaciones. Pero, ¿qué hay del hardware? Pues dejad que os diga que es un mundo igual de apasionante, pero totalmente distinto y con sus propias reglas.
Los conocimientos son esenciales para diseñar chips
El diseñar un procesador no es algo sencillo y requiere de conocimientos previos bastante extensos antes de ponerse con ello. En realidad el requerimiento es de cuatro disciplinas diferentes que se complementan entre sí, las cuales son las siguientes:
- Saber de arquitectura de computadores.
- Conocimientos en electrónica digital. Es decir, puertas lógicas, sistemas combinacionales y sistemas secuenciales.
- Obviamente electrónica analógica, para la parte no digital del circuito integrado así como el diseño del PCB.
- Conocimiento de lenguajes de descripción del hardware como pueden ser VHDL y Verilog.
Estas cuatro disciplinas requieren además conocimientos de física y matemáticas de nivel medio como mínimo, es decir, el que se alcanza antes de entrar en la universidad y aunque es posible adquirirlos a partir del autoaprendizaje se recomiendan ciertos conocimientos previos. Hay que tener en cuenta que en muchos países punteros en el diseño de procesadores existe la carrera universitaria titulada Electronic Computing Engineering o ECE que son de varios años lectivos y son ingenierías de alto nivel.
¿Puedo diseñar mi propia CPU o GPU?
La foto que veis arriba de estas líneas es de los diseñadores del MOS 6502, una de las primeras CPUs de 8 bits para PC con poco más de 6000 transistores. Tened en cuenta que a medida que los chips se han ido haciendo más y más complejos se ha ido necesitando más y más personal. A día de hoy un ingeniero especializado en ECE no diseña un procesador entero, tampoco una porción del mismo, sino una parte muy pequeña del mismo.
Obviamente los diseñadores de CPUs y GPUs acaban reciclando buena parte de sus diseños, pero no todos se adaptan al completo al uso de un nuevo nodo de fabricación. Por lo que requieren retoques antes de ser implementados a nuevos diseños. A día de hoy muchos diseños hacen uso de librerías ya existentes y de uso completamente abierto para adaptar las diferentes piezas del procesador.
Eso sí, el precio de la documentación y los archivos Verilog o VHDL de muchos de estos diseños tienen un precio exagerado para un usuario de a pie. Es más, algunas empresas como Cadence no trabajan con particulares, sino con grandes empresas, por lo que si quieres acceder a la tecnología más avanzada para tu diseño entonces tendrás que tener mucho dinero y puede que no te rente.
Entonces, ¿es imposible diseñar chips por uno mismo?
No, no lo es, pero si vas a hacerlo solo para uso particular entonces la mejor opción que puedes hacer es el diseño vía Verilog o VHDL para implementarlo en un FPGA o un CPLD. Con ello te olvidarás de tener que pensar en el resto de partes de la implementación del diseño como es la parte analógica del circuito y el diseño del PCB.
En el caso de que veas que tu diseño es lo suficientemente bueno entonces te puedes plantear venderlo como producto. Para ello tendrás que buscar una fundición que lo fabrique y realizar un pedido mínimo, así como comprar la licencia de uso para adaptar el diseño de tu procesador. Lo cual para una sola persona es una tarea digna de Sísifo. Por lo que te recomendamos que te rodees de un buen equipo para realizar el diseño.
Todo apunta a que veremos FPGAs empotrados en los diferentes SoC, los llamados eFPGA, y con ello se va a crear un mercado en el que los diseños en Verilog y VHDL circulará en la red para diferentes utilidades concretas. El uso de FPGAs para el diseñar chips es cada vez más alto, por ejemplo a la hora de resucitar hardware antiguo de empresas ya muertas se están utilizando FPGAs para ello.