# System-on-a-chip

Un system on a chip (o system-on-a-chip, abbreviato SoC, lett. "sistema su circuito integrato"), nell'elettronica digitale, è un circuito integrato che in un solo chip contiene un intero sistema, o meglio, oltre al processore centrale, integra anche un chipset ed eventualmente altri controller come quello per la memoria RAM, la circuiteria input/output o il sotto sistema video.
Un singolo chip può contenere componenti digitali, analogici e circuiti in radiofrequenza in un unico integrato. Questa tipologia di integrati viene utilizzata comunemente nelle applicazioni embedded, date le dimensioni ridotte che essi raggiungono con l'integrazione di tutti i componenti. Una alternativa è costituita da system in package (SiP), ovvero un singolo package che racchiude in sé diversi circuiti integrati.

## Storia

Intel, aveva tentato già nel 2001 di sviluppare un SoC, grazie al progetto Timna (destinato ai PC economici) ma che venne poi abbandonato per questioni strategiche in favore del primo Pentium M Banias che era sempre un processore tradizionale. Successivamente Intel non ha più parlato di SoC nelle sue presentazioni alla stampa o al pubblico, continuando a percorrere uno sviluppo hardware tradizionale. Altre compagnie tuttavia presentarono alcuni prodotti SoC e tra queste una delle più attive negli anni è stata VIA che li destinava però soprattutto per il settore embedded.
Nel 2007 Intel è tornata a parlare di SoC con il progetto Tolapai, destinato anch'esso proprio al settore embedded, e che integra al suo interno il controller della memoria RAM e la circuiteria di input/output. Tolapai quindi è un processore perfettamente integrato con il chipset, e in particolare sia con il Northbridge, sia con il southbridge. Quasi contemporaneamente venne annunciato anche il prossimo arrivo del primo processore SoC destinato all'impiego nei sistemi ultra portatili UMPC, Lincroft, che sarà alla base della futura piattaforma Intel Moorestown prevista inizialmente per il 2009.
Altri sistemi SoC famosi sono ad esempio Nvidia Tegra, Qualcomm Snapdragon, MediaTek, Samsung Exynos, ST-Ericsson NovaThor, i.MX di Freescale Semiconductor, Apple Ax ed M1 (anni '20 del 2000) e ZiiLABS di ZMS.

## Struttura

Un tipico sistema SoC comprende:
* Uno o più core di microcontrollori, microprocessori o DSP
* Un modulo di memoria contenente uno o più blocchi di tipo ROM, RAM, EEPROM o Memoria flash.
* Un generatore di clock e un PLL
* Periferiche come contatori, orologi e altro
* Connettori per interfacce standard come USB, FireWire, Ethernet, USART, SPI
* Convertitori digitali-analogici e convertitori analogici-digitali
* Regolatori di tensione e circuiti di gestione dell'alimentazione.
I vari blocchi funzionali sono collegati tramite BUS proprietari o BUS standard come il BUS AMBA progettato da ARM. Una gestione DMA dei trasferimenti tra la memoria e i bus esterni incrementa le prestazioni senza appesantire il processore.

## Progetto

Un Soc è composto dai blocchi descritti sopra ma anche dal software che controlla i vari componenti e li fa interagire. I programmi sono progettati in modo da creare dei flussi paralleli all'interno del chip in modo da seguire un approccio parallelo. Molti SoC sono sviluppati a partire da blocchi standard che descrivono i componenti hardware e dai driver che gestiscono i blocchi. Di particolare importanza sono i driver che gestiscono l'interfacciamento con i bus standard. I moduli hardware sono uniti in un unico integrato tramite strumenti CAD mentre i singoli driver sono uniti in un unico programma tramite opportuni ambienti di sviluppo.
Il progetto di un sistema SoC passa per la fase fondamentale dell'emulazione. I moduli del sistema SoC vengono caricati entro un chip FPGA mentre il programma viene memorizzato dalla RAM dell'ambiente di sviluppo. Questo permette di testare e affinare il chip SoC in modo rapido e semplice dato che l'emulatore replica perfettamente il chip SoC ma consente una modifica rapida dell'hardware modificando semplicemente il programma caricato dall'FPGA. Dopo la fase di emulazione il chip SoC segue le fasi classiche di sviluppo di un chip custom.
Il chip viene sottoposto alla fase di verifica. I linguaggi tipo Verilog e VHDL sono utilizzati per la verifica dell'integrato. Per integrati complessi si utilizzano anche sistemi come SystemVerilog, SystemC e Vera. I difetti e gli errori individuati dalla fase di verifica sono riferiti alla progettazione per le opportune correzioni. Normalmente il 70% del tempo di sviluppo di un chip viene utilizzato durante la fase di verifica.

## Realizzazione

I SoC possono essere realizzati con diverse tecnologie, tra le quali:
* Full custom
* Standard cell
* FPGA
I sistemi SoC normalmente sono dispositivi a basso consumo e a basso costo oltre ad avere un'affidabilità maggiore dei sistemi multichip che rimpiazzano. Il numero ridotto di componenti inoltre riducono il costo di montaggio e le dimensioni del prodotto.
Tuttavia come tutti i progetti VLSI gli elevati costi di sviluppo di soluzioni custom incidono in misura notevole sui costi totali e quindi questi integrati in genere finiscono per costare più di soluzioni basate su integrati generici.

## Produttori

* Actions Semiconductor
* AMD Xilinx
* Analog Devices
* Apple
* ARM Ltd
* ASIX Electronics
* Atmel
* Axis Communications
* Cirrus Logic
* Conexant Systems
* Core Logic
* Cypress Semiconductors
* Infineon Technologies
* Freescale
* Imagination Technologies
* Microchip Technology
* Mistletoe Technologies
* Nokia
* NXP Semiconductors (formerly Philips Semiconductors)
* NuCORE Technology
* NVIDIA Corporation
* Qualcomm
* Renesas
* Samsung
* Sequence Design
* Sharp
* Sigmatel
* Skyworks Solutions Inc
* Silicon Motion
* SoCrates Software India Private Limited
* STMicroelectronics
* Teridian Semiconductor
* Texas Instruments
* Zoran Corporation