Microelectrónica (ME) LEEC (opção) Lic. Lic. Engª. AeroEspacial (Aviónica) Tipos de projecto de CIs Marcelino Santos (marcelino.santos@ist.utl.pt) 2004/05
Tipos de projecto de CIs ASIC - Application Specific Integrated Circuit Full custom Standard cell Gate-array Programáveis PAL CPLD FPGA Macro-cell Combinações
Tipos de projecto de CIs digitais Tipo Ano Comentário Transístores 50 Ainda em uso em circuitos de RF e de potência Lógica discreta 60-80 TTL, ECL, NMOS, CMOS PAL 70-80 Programáveis, funcionalidade simples PLD 80-90 Programáveis, funcionalidade limitada CPLD 90 -? Programáveis, funcionalidade complexa FPGA 90 -? (Re)-Programável, lógica muito complexa, baixo custo de desenvolvimento, para volumes limitados ASIC 80 -? Desempenho muito alto, alta complexidade, custo de desenvolvimento elevado, volumes elevados DSP/processor 80 -? Muito flexivel, processamento de dados PAL: Programmable Array Logic PLD: Programmable Logic Device CPLD: Complex Programmable Logic Device FPGA: Field Programmable Gate Array DSP: Digital Signal Processor ASIC: Application Specific Integrated Circuit
Full custom Projecto feito à mão Todas as camadas detalhadas no projecto Circuitos digitais e analógicos Simulação no nível de transístor (analógica) Grande densidade de integração Desempenho elevado Tempo de projecto demasiado elevado IN Gnd Vdd Out
Standard cells Standard cells organizadas em linhas (and, or, flip-flops, etc.) As células são desenvolvidas em full custom (mas não pelo utilizador) Todas as camadas detalhadas no projecto Células digitais e algumas analógicas Simulação de portas lógicas (digital) Densidade média alta Desempenho médio alto Tempo de projecto médio Routing Cell IO cell
Gate-array Transístores pré-definidos interligados por metal Dois tipos: com canais e sea of gates Só detalhadas as camadas de metal Tamanhos de array fixos (normalmente 5-10) Células digitais (and, or, flip-flops,etc.) Simulação de portas lógicas (digital) Densidade média Desempenho médio Tempo de projecto médio Oxide isolation Gate isolation Sea of gates Channel based
Exemplo de Gate-array Porta NAND 2 Usar sempre que possível tr em série A Vdd Porta NAND com gate isolation Vdd Isolar dos vizinhos com transístores cortados B Out A B Out PMOS NMOS Partilhar as extremidades quando ligadas a Vdd ou Gnd Gnd Pode ser partilhado pela porta vizinha Gnd
Lógica programável Inicialmente PAL (Programmable Array Logic) realizados com arrays de ands e ors configuráveis (fusíveis) e registos nas saídas Complex PLDs (CPLDs) incluem múltiplos blocos and or com interligações configuráveis
CPLDs
FPGA = Field Programmable Gate Array Blocos lógicos e de entrada/saída programáveis Interligações programáveis entre blocos lógicos Não há definição de máscaras (dispositivos standard) Só lógica digital Desempenho médio baixo (<50-100MHz) Densidade média (10 Milhões de gates) Programação: SRAM, EEROM, Flash, Anti-fuse, etc Mudanças no projecto fáceis e rápidas Ferramentas de desenvolvimento baratas Baixo custo de desenvolvimento Custo elevado por dispositivo Não é um verdadeiro ASIC (Application Specific Integrated Circuit)
FPGAs Utilização de RAM ou ROM para implementar lógica: Look Up Table (LUT) Inputs Logic Output Address (input) --0000 0 --0001 0 --0010 1 --0011 1 --0100 0 -------- - --1111 0 Data (output) Qualquer função pode ser implementada usando lógica de descodificação de endereços + array de memória Look up tables não conduzem normalmente a uma solução óptima (área e desempenho) LUTs são usadas em aplicações específicas: codificadores, descodificadores e lógica programável em FPGAs
FPGAs Os blocos de lógica são constituídos por LUTs e alguns registos. As interligações são configuráveis através de matrizes de comutação. Há interligações de tipos distintos para sinais: de relógio, locais e que percorrem caminhos longos. Xilinx: Interligação para caminhos longos LUT para implementar lógica ou para usar como memória Switch matrix Seis transístores por ponto de interligação
FPGAs Baseadas em memória SRAM (Xilinx): Configuração controlada por memória estática Configuração carregada em série e associada a uma checksum O FPGA tem que ser reprogramado a partir de um PC ou PROM série quando se liga a alimentação A informação necessária para configurar o FPGA é de Mbits Normalmente há internamente blocos de RAM e multiplicadores disponíveis Há o risco de ocorrerem SEU provocados por radição
Projecto: FPGAs Baseado em síntese e Place and Route automáticos. O desempenho local de blocos pequenos consegue ser elevado. Blocos grandes têm desempenho limitado pelos atrasos nas interligações. Cada arquitectura de FPGA tem blocos funcionais optimizados disponibilizados como macros: Counters, adders, multipliers, FIFO s, etc. É importante usar estes blocos optimizados para conseguir desempenho elevado A estimativa de atrasos é: fixa para LUTs e FFs; ajustada nas interligações de acordo com o comprimento e o número de switches. Se a ocupação da FPGA estiver próxima do limite o place and route torna-se muito demorado.
FPGAs Aplicações: Baixo e médio volume de produção Reconfigurable computing: compilar algoritmos para implementação em hardware de FPGA. (fronteira ténue entre hardwired and soft coded) Prototipagem de ASICs: o projecto de um ASIC sintetizado num conjunto de FPGAs para verificação (com desempenho limitado). Processamento digital de sinais específico não implementável nos DSPs disponíveis. Quando o custo ou tempo de desenvolvimento de uma ASIC não pode ser suportado (paga-se mais por unidade). Algumas FPGA s permitem que os projectos nelas implementados sejam transpostos para ASICs de forma rápida se o volume de produção o justificar.
FPGAs Tendências: Crescente número de FPGA s/cplds com mais funcionalidades e maior desempenho que benificiam das tecnologias actuais Os custos são baixos apesar das áreas serem grandes devido aos elevados volumes de produção Incorporação de blocos IP (microprocessadores, interface PCI, etc.) Incorporação de blocos de IO de muito alto débito (multi gigabit/s) Versões especiais com maior resistência à radiação (para aplicações no espaço)
Macro cell Blocos pré-definidos (Processadores, RAM, etc) Blocos desenvolvidos em full custom (Intellectual Property blocks = IP blocks) Todas as camadas detalhadas no projecto Circuitos digitais e alguns analógios (conversores AD) Simulação de portas lógicas (digital) ou comportamental Densidade alta Desempenho elevado DSP processor Tempo de projecto curto LCD RAM System on a chip (SOC) cont. ADC ROM
Comparação FPGA Gate array Standard cell Full custom Macro cell Densidade média média média alta alta Flexibilidade baixa baixa média alta média Analógico não não não sim sim Desempenho baixo médio alto muito alto muito alto Tempo de projecto baixo médio médio alto médio Custo do projecto baixo médio médio alto alto Ferramentas simples complexas complexas muito complexas complexas Volume baixo médio alto alto alto
CIs de alto desempenho Mistura de full custom, standard cells e macro s Full custom para blocos especiais: Adder (data path), etc. Macro s para blocos standard: RAM, ROM, etc. Standard cells para os restantes blocos digitais Pentium Power PC
Combinações FPGA s com RAM, interface PCI, porta série, processador, ADC, PLL, etc. Gate arrays com RAM, processador, ADC, etc Processor FPGA ou Gate-array RAM