# Sistema em um chip

Um sistema em um chip (em inglês system on a chip ou system-on-chip, sigla SoC) se refere a todos os componentes de um computador, ou qualquer outro sistema eletrônico, em um circuito integrado (chip). Ele pode conter funções digitais, analógicas, mistas e, muitas vezes, de radiofrequência - RF; tudo em apenas um. Uma típica aplicação é na área de sistemas embarcados.
As características de um SoC assemelham-se às de um microcontrolador. Normalmente, microcontroladores possuem menos que 100K de RAM (apenas poucos Kilobytes), e frequentemente são sistemas de chip único. Enquanto o termo SoC é usado várias vezes para processadores mais potentes, capazes de executarem programas como o Windows ou o Linux, nas quais necessitam de memórias externas (flash, RAM) para funcionarem, e que são usados com vários periféricos acoplados. A grande maioria dos sistemas que se rotulam System-on-chip possuem uma conotação técnica maior de que a realidade: aumentam a integração do chip para reduzir os custos de fabricação e tornar disponíveis sistemas mais compactos. Muitos são complexos demais para se ajustarem em apenas um chip construído com um processo otimizado para apenas uma das funções do sistema.
Quando não há praticidade para construir uma determinada aplicação SoC, uma alternativa é o sistema em um encapsulamento (System in package (SiP), em inglês), abrangendo vários chips em um único encapsulamento. E, em larga escala, acredita-se que o SoC possui um custo menor que o SiP, quando aumentada a produção, por ser mais simples de realizar o agrupamento.
Outra opção, por exemplo, como visto na maioria dos telefones celulares e no Beagleboard, é o "pacote em pacote" empilhando durante a montagem do cartão. O chip SoC inclui processadores e números digitais periféricos; e vem em uma grade de bolas, pacote com conexões inferiores e superiores. As bolas inferiores conectam o cartão e vários periféricos, com as bolas superiores em um anel segurando um barramento de memórias usado para acessar NAND flash e DDR2 RAM. Pacotes de memória podem vir de vários fornecedores.

## Conteúdo

1. Estrutura;
2. Fluxo de projeto;
3. Fabricação.

### Estrutura

Um típico SoC consiste de:
- Um microcontrolador; e um microprocessador ou núcleo(s) DSP. Alguns SoCs, chamados sistema multiprocessador no chip (MPSoC), incluem mais do que um processador de núcleo.
- Blocos de memória, incluindo um sistema de ROM, RAM, EEPROM e memória flash.
- Cronometragem de fontes, incluindo osciladores e anéis de bloqueio de fase.
- Periféricos, incluindo contra temporizadores, temporizadores em tempo real e geradores de redefinição de ativação.
- Interfaces externas, incluindo os padrões da indústria, tais como USB, FireWire, Ethernet, USART e SPI.
- Interfaces analógicas, incluindo ADCs e DACs.
- Reguladores de tensão e circuitos de gerenciamento de energia.
Estes blocos são ligados por qualquer proprietário ou barramento padrão da indústria, tais como o AMBA da ARM Holdings; controladores de rota de dados DMA direto entre interfaces externas e memória; e o processador de núcleo bypassing e thereby aumentando os dados de rendimento do SoC.

### Fluxo de projeto

Um SoC consiste tanto das ferramentas (hardware) descritas acima, quanto do software, controlando do microcontrolador ou núcleos DSP, periféricos ou interfaces. O fluxo de projeto para um SoC pretende desenvolver este hardware e software em paralelo. A maioria dos SoCs são desenvolvidos a partir de blocos de hardware pré-qualificados, para os elementos de hardware descritos acima, juntamente com os drivers de software que controlam a sua operação. De particular importância, há as pilhas de protocolos que orientam interfaces padrão da indústria, como USB. Os blocos de hardware são colocados em conjunto, utilizando ferramentas de CAD. Os módulos do software são integrados usando um ambiente de desenvolvimento de software.
Os chips são verificados quanto a sua exatidão lógica antes de serem enviados para fundição. Este processo é chamado de verificação funcional, e é responsável por uma parcela significativa do tempo e energia gastos no ciclo da vida de design de chips (embora a figura frequentemente citada de 70% seja provavelmente um exagero). Com o crescimento da complexidade dos chips, as línguas de verificação de hardware, como SystemVerilog, SystemC e OpenVera, estão sendo usadas. Bugs encontrados na etapa de verificação são relatados para o designer. Tradicionalmente, os engenheiros têm utilizado simuladores de aceleração, emulação e/ou um protótipo de FPGA para verificar e depurar tanto hardware quanto software para SoC, para projetos prévios de tapeout. Com alta capacidade e tempo de compilação rápida, aceleração e emulação, são poderosas tecnologias que proporcionam ampla visibilidade em sistemas. Ambas as tecnologias, contudo, operam-se lentamente, a fim de MHz, o que pode ser significativamente mais lento - até 100× mais lento - aos SoCs que a frequência de operação. Aceleração e emulação de caixas também são muito grandes e caras - custando até mais que US $1M.
Protótipos FPGA, ao contrário, usam FPGAs diretamente para permitirem que os engenheiros validem e testem, ou perto de, a frequência de operação completa do sistema, com estímulos do mundo real. Ferramentas como Certus são usadas ​​para inserir sondas no FPGA RTL, que fazem sinal disponível para observação. Isto é usado para depuração de hardware, firmware e software através de vários FPGAs com capacidades semelhantes às de um analisador lógico.
Após depurar o hardware do SoC, segue a fase de lugar e rota (Place and route) do projeto de um circuito integrado ou ASIC antes de ser fabricado.

### Fabricação

- SoCs podem ser fabricados por diversas tecnologias, incluindo:
* Full custom;
* Standard cell;
* FPGA.
SoCs projetados geralmente consomem menos energia e têm um custo mais baixo e maior confiabilidade do que os sistemas multi chips que eles substituem. E com menos pacotes no sistema, custos de montagem são bem reduzidos.
No entanto, como a maioria dos projetos VLSI, o custo total é maior para um chip grande do que para a mesma funcionalidade distribuída ao longo de vários chips menores, por causa de rendimentos mais baixos e custos mais elevados de engenharias não recorrentes (NRE).
Exemplos de aplicações:
* Arquitetura ARM: Todos os chips contendo ARM Cortex-A, sejam: Allwinner, Samsung Exynos, MediaTek, Texas Instruments, OMAP, Rockchip, nVidia Tegra, Snapdragon, entre outros.