# Sistema en un chip

Un sistema en chip (SoC, del inglés system on a chip) describe la tendencia cada vez más frecuente de usar tecnologías de fabricación que integran todos o gran parte de los módulos que componen un computador o cualquier otro sistema informático o electrónico en un único circuito integrado o chip.
El diseño de estos sistemas puede estar basado en circuitos de señal digital, señal analógica, o incluso de señal mixta (tanto analógica como digital), y a menudo módulos o sistemas de radiofrecuencia (módulos de comunicación inalámbrica: Wi-Fi, Bluetooth, y otros).
Un ámbito común de aplicación de la tecnología SoC son los sistemas embebidos.
La diferencia principal de un SoC con un microcontrolador tradicional no debe pasarse por alto, puesto que estos rara vez disponen de más de 100 kilobytes de memoria RAM (de hecho, lo más frecuente es que las memorias, tanto la RAM como la flash, de un microcontrolador consten de unos pocos kilobytes), y gran parte de estos son estructuras monochip, mientras que el término SoC es usado para procesadores más potentes y de arquitectura más compleja, como son los que integran los ordenadores y dispositivos actuales que dependen de chips o módulos de memoria externos para ser eficaces.
Para sistemas más grandes y complejos sería impropio hablar de SoC, convirtiéndose el término en tal caso, más en una mera referencia o directiva a seguir que en la propia realidad de estos:
    Aumentar la integración en un mismo chip con el objetivo de reducir costes y construir sistemas cada vez más reducidos (capaces de lo mismo o más que sistemas más antiguos y voluminosos).
Resultaría impropio, principalmente, porque los intereses de la mayoría de los proyectos desarrollados en esta área fijan sus objetivos en diseños tan específicos y complejos que no suelen permitir -debido al coste de estos- la implementación de todo el sistema en un solo chip. Estos suelen ser diseñados expresamente para una optimización en la realización de uno o varios de los procesos que suponen la mayor parte de su rutina cotidiana de funcionamiento.
Una alternativa al diseño y fabricación de un SoC —cuando esto no sea rentable, por ejemplo— para una determinada aplicación es un sistema sistema en paquete o SiP (system in package), que comprende un número determinado de chips ensamblados —no integrados como en un SoC— formando un solo paquete (de ahí el término). A pesar de esto, se estima que la fabricación en gran volumen de SoC será más y más rentable (por unidad) que la de sistemas SiP, debido a que el rendimiento de fabricación unitario para un SoC es mayor y su montaje y empaquetado mucho más sencillos.
Una tercera opción en la integración de sistemas electrónicos (presente, por ejemplo, en móviles de alta gama de hace menos de una década o minicomputadores basados en procesadores OMAP de Texas Instruments), es el apilado de diferentes capas de circuitos al ensamblarse el producto final (package-on-package, o PoP). Consiste, básicamente, en la soldadura de la placa/capa principal —normalmente la que contiene el procesador o circuito integrado primario— con placas superiores e/o inferiores mediante un entramado de esferas metálicas (encapsulado de tipo BGA, acrónimo de Ball Grid Array). Este ensamblado proporciona a la estructura una forma de sándwich a la vez que interconecta el procesador o circuito primario con, por ejemplo, los buses de memoria de una placa y capa diferentes que se apila con la principal. En algunos casos, cada una estas placas o capas independientes que formarán parte del producto final son fabricadas y distribuidas por empresas distintas entre sí, o de las que típicamente fabrican microcontroladores, microprocesadores o SoC.

## Arquitectura

Un SoC estándar está constituido por:
* Un microcontrolador con el núcleo de la CPU. Algunos SoC —llamados multiProcessor system on chip (MPSoC)— son construidos con microprocesadores dotados de varios núcleos o bien más de un microprocesador.
* Núcleo DSP.
* Módulos de memoria (informática) incluyendo parte o todos los tipos de memoria a continuación listados: ROM (memoria de sólo lectura), RAM (memoria de acceso aleatorio), EEPROM (memoria de sólo lectura programable y borrable electrónicamente) y Flash (memorias NAND de acceso muy rápido en comparación con los tradicionales soportes magnéticos).
* Generadores de frecuencia fija como por ejemplo osciladores o lazos de seguimiento de fase o Phase Locked Loops (PLL por sus siglas en inglés).
* Componentes periféricos como contadores-temporizadores, temporizadores/relojes a tiempo real y generadores Power-on Reset (o PoR por sus siglas en inglés, dispositivos que reajustan un sistema electrónico al recibir una señal digital determinada, permitiéndole arrancar desde un estado conocido).
* Controladores de comunicación con interfaces externas normalmente estándar como USB, IEEE 1394/Firewire, Ethernet, UART, o SPI. Nótese que externas implica externas al chip, no necesariamente al dispositivo del que forman parte.
* Controladores de interfaces analógicas, incluyendo conversores ADC y DAC.
* Reguladores de voltaje y circuitos de gestión eficaz de la energía.
Estos módulos están unidos de acuerdo a estándares industriales para la interconexión de buses, aunque pueden seguir directrices de carácter propietario como por ejemplo la especificación AMBA, arquitectura de bus diseñada por ARM.
Controladores DMA dedicados dirigen la información entre interfaces externas y la memoria principal, evitando el paso innecesario de ésta a través del procesador e incrementando así el volumen de trabajo del SoC.

## Proceso de diseño

Un SoC está constituido, por una parte, del hardware arriba descrito, y por otra del software que maneja el núcleo/s del microcontrolador, procesador, o DSP, además de los periféricos y puertos o interfaces. Una buena planificación del diseño de un SoC tratará de desarrollar paralelamente la arquitectura física o hardware y el software.
La mayoría de SoC son desarrollados a partir de módulos de hardware básicos previamente probados para la construcción de diversos elementos (listados anteriormente) más complejos junto con los controladores de software que proporcionan las instrucciones para su manejo. De gran importancia son las familias de protocolos de Internet que manejan interfaces universales como el famoso Universal Serial Bus o USB. Los módulos de hardware se posicionan sobre las placas de la manera más óptima (compactando en el espacio disponible la mayor cantidad posible de componentes) con ayuda de herramientas CAD, permitiendo elaborar un diseño previo de la arquitectura que se desea fabricar sin coste adicional. A su vez, los módulos de software se implementan en el sistema final usando potentes herramientas de desarrollo, conocidas como IDE y SDE.
Un paso clave en la confección del SoC es la emulación: el hardware se mapea tal y como será fabricado en una plataforma de emulación basada en un FPGA, que reproduce fielmente el comportamiento del SoC, con el fin de probar los módulos de software. Para ello, estos son cargados en la memoria volátil del emulador.
Una vez puesta a punto, la plataforma es puesta en funcionamiento: tanto el hardware como el software réplicas del futuro SoC arrancan para ser probados y depurados bajo las condiciones más próximas a la máxima velocidad de trabajo del SoC. (La emulación va generalmente precedida de una amplia simulación por software, de hecho, los FPGA son usados principalmente para acelerar alguna parte concreta del proceso de simulación).
Tras la emulación satisfactoria del hardware del SoC, se procede a la fase de posicionamiento y encaminado de la circuitería (para lo cual se utilizan aplicaciones CAD, como ya se ha dicho antes), obteniendo el diseño óptimo para su fabricación en serie.
Los chips son probados y verificados para posibles correcciones lógicas antes de enviarse a fundición definitivamente. Esta tarea se denomina verificación funcional, y garantiza un correcto funcionamiento, tiempo de operación y energía consumida, durante gran parte de su ciclo de vida (aunque el porcentaje del 70 % a menudo asegurado por el fabricante es exagerado). Los HDL como Verilog o VHDL son herramientas comúnmente usadas en el proceso de verificación. Debido a la creciente complejidad de los chips, se están empezando a usar HDL más avanzados como son SystemVerilog, SystemC, e, o OpenVera.
Los bugs encontrados durante la verificación son redactados en un informe enviado al diseñador, para su correspondiente reparación.

## Fabricación

Los SoC pueden ser fabricados usando diferentes tecnologías, incluyendo:
* Diseño a medida
* Diseño basado en celdas estándar
* Diseño basado en FPGA
Un SoC normalmente consume menos energía, tiene un coste inferior y una mayor fiabilidad que los sistemas multichip a los que acaban reemplazando. Así pues, con menos piezas necesarias para el sistema, los costes de material y ensamblado se ven reducidos.
No obstante, como en muchos proyectos VLSI, el coste total inicial es superior para un chip mayor que para la misma funcionalidad distribuida en chips más pequeños, debido a rendimientos más bajos por el reducido tamaño de la tecnología de fabricación, más propensa a fallos, y unos costes NRE más elevados (los costes NRE pueden entenderse como la inversión inicial para el desarrollo, investigación, fabricación y comprobación de un producto nuevo, capital susceptible de no ser recuperado al no estar asegurado el volumen mínimo de ventas para la rentabilidad del producto).