¿Cómo se diseña el hardware? Así trabajan los ingenieros de diseño

¿Cómo se diseña el hardware? Así trabajan los ingenieros de diseño

Josep Roca

Sí alguna vez te has preguntado cómo se diseñan los diferentes procesadores y memorias que hay en tu PC, entonces esto te interesa porque os vamos a explicar de manera directa y rápida cuál es el proceso utilizado hoy en día por todas las empresas del sector, independientemente de cuál sea el tamaño de las mismas y su especialización. Para ello os vamos a hablar de Verilog y VHDL, los dos lenguajes de descripción del hardware y el proceso de creación del mismo, desde la mesa de diseño hasta tu PC.

Los procesadores y memorias que hay dentro de tu PC están compuestos por centenares de millones e incluso miles de millones de transistores en un espacio muy pequeño, lo que los convierte en una superestructura compuesta por otras estructuras también extremadamente complejas.

Transistor

Tal nivel de complejidad y el microscópico tamaño de los procesadores hace que sean necesarias una serie de herramientas a la hora de diseñarlos que les permitan a los ingenieros poder crear dichos sistemas de manera rápida y eficiente, y aquí es donde entran los lenguajes de descripción del hardware.

Lenguajes de descripción del hardware: Verilog y VHDL

Codigo Fuente

Los lenguajes más utilizados para describir el hardware son VHDL y Verilog, los cuales tienen una sintaxis parecida a la de la programación en C, pero en lugar de ejecutar un programa, describen la organización de las diferentes partes del mismo a base de módulos interconectados; cada módulo está descrito de la siguiente manera:

  • Inputs: que son las entradas de datos que tiene el módulo.
  • El código principal que hace dicho módulo con esos parámetros de entrada.
  • El Output que son los datos de salida del módulo.

Por ejemplo, en Verilog, para describir una puerta lógica AND el código sería el siguiente:

module AND_2(output Y, input A, B);
and(Y, A, B);
endmodule;

En cambio, en VHDL los módulos son llamados entidades:

entity andGate is

    port(A : in std_logic;     
         B : in std_logic;      
         Y : out std_logic); 
end andGate;
architecture andLogic of andGate is
 begin
    Y <= A AND B;
end andLogic;

En ambos casos se describe una puerta AND con dos entradas (A,B) y una salida Y.

Puerta AND tabla de verdad

Gracias a estos lenguajes de descripción del hardware, los ingenieros pueden programar módulos que representen diferentes elementos básicos como puertas lógicas, pasando por circuitos combinacionales y secuenciales, y terminando por sistemas extremadamente complejos, todo ello a través de código escrito, lo que les permite reciclar incluso partes repetidas de manera muy rápida.

Las etapas de creación del hardware

Etapas creación hardware

Una vez que el código Verilog o VHDL ha sido escrito se prueba su funcionamiento en un simulador, una pieza de software que les sirve a los ingenieros para monitorizar cada paso en el funcionamiento. En esta etapa el hardware es simulado a muy poca velocidad, ya que lo que se pretende validar es que el código de descripción del hardware ha sido escrito de manera correcta.

El siguiente paso es el del emulador, donde no todas las piezas de hardware en su proceso de diseño pasan por esta etapa sino solo aquellas que van a ejecutar un programa. El concepto del emulador es el mismo que los que utilizamos para emular sistemas antiguos o consolas en nuestros PCs, pero en este caso funcionan a una velocidad muy baja donde el objetivo es probar pequeños extractos de software común para ver el rendimiento de la arquitectura y poder optimizarla.

Array de FPGAs

El tercer paso es trasladar el código Verilog o VHDL a uno o varios FPGAs interconectados entre si donde el hardware se probará a nivel físico, y esto se hace para testear la comunicación del futuro procesador con la memoria y los periféricos externos a los que estará conectado, a la vez que les permite conocer a los ingenieros si las especificaciones de consumo energético están dentro de lo esperado.

Obleas Chips

Estos tres pasos se hacen de manera recursiva hasta tener un diseño completamente funcional, y entonces el archivo Verilog o VHDL es enviado a la fundición para que los chips sean impresos en obleas, momento en el cual se harán las pruebas de calidad y validación antes de la fabricación en masa.

En los inicios no había lenguajes de descripción del hardware

6502 Floorplan

Los primeros diseñadores de procesadores para PC carecían de las herramientas de hoy en día, por lo que tenían que hacer cosas como dibujar sobre el papel el hardware y utilizar el Breadboarding, una técnica que consistía en unificar circuitos electrónicos más simples en un tablero de circuitos a través cables (literalmente).

Breadboards Amiga

Estos circuitos electrónicos más simples que utilizaban en el Breadboarding para crear chips más complejos solían ser chips TTL o CMOS que tenían en su interior elementos básicos del diseño de procesadores como puertas lógicas, sistemas combinacionales, sistemas secuenciales, ALUs, etc. Esto se hacía así porque por aquel entonces no existían los FPGA para poder probar el hardware después de programarlo a través de Verilog o VHDL, por lo que tenían que crear versiones a gran escala de los chips que creaban.

No obstante, a medida que la densidad de transistores fue subiendo se hizo imposible que con poca gente se diseñara un procesador, y poco a poco se fueron adoptando los lenguajes de descripción del hardware y lógica programable de cara al diseño de nuevos procesadores como son los como los PAL, PLA, CPLD y en la parte más compleja los FPGA.