10.07.2015 Views

Projeto Moderno de Sistemas Digitais - PCS

Projeto Moderno de Sistemas Digitais - PCS

Projeto Moderno de Sistemas Digitais - PCS

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Projeto</strong> <strong>Mo<strong>de</strong>rno</strong> <strong>de</strong> <strong>Sistemas</strong><strong>Digitais</strong>Edson Midorikawa1Tópicos• <strong>Projeto</strong> Convencional• <strong>Projeto</strong> com HDLs e FPGAs• Fluxo <strong>de</strong> <strong>Projeto</strong> <strong>Mo<strong>de</strong>rno</strong>• Codificação em HDLsAltera DE2Digilent Nexys 32


<strong>Projeto</strong> Convencional• Captura Esquemática– Uso <strong>de</strong> blocos padrão para projeto digital.– Baseado em portas lógicas e outros componentesMSI e SSI.– Bastante usado atéinício da década <strong>de</strong> 90.– Muitos softwares EDA(Electronic DesignAutomation) aindaoferecem suporte(ex. Altera Quartus II).5• Captura Esquemática<strong>Projeto</strong> Convencional– Crítica: uso <strong>de</strong> blocos padrão po<strong>de</strong> ser um “inconveniente”.– Exemplo: projeto <strong>de</strong> contador <strong>de</strong> 5 ou 12 bits• Os blocos padrão para contadores TTL são <strong>de</strong> 4 ou 8 bits.• Solução: subutilização ou cascateamento <strong>de</strong> contadores.© LEGO6


<strong>Projeto</strong> Convencional• Captura Esquemática– <strong>Projeto</strong> com componentes SSI e MSI(CIs e placas <strong>de</strong> circuito impresso)Fonte: Digital Design, 2006, Frank Vahid.7<strong>Projeto</strong> Convencional• Captura Esquemática e Complexida<strong>de</strong>– Problemas para projeto mais complexos.– Suporte a projeto modular e hierárquico.MódulosBus8


<strong>Projeto</strong> Convencional• Captura Esquemática e ASICs– Uso <strong>de</strong> captura esquemática em projeto <strong>de</strong> ASICs(application-specific integrated circuits) foi amplo até adécada <strong>de</strong> 80.– Com o aumento do tamanho (número <strong>de</strong> portas lógicasequivalente) e complexida<strong>de</strong>, a captura esquemática setornou mais um obstáculo do que uma ferramenta paraauxílio ao projeto <strong>de</strong> CIs.– Atualmente projetos <strong>de</strong> ASICs usam HDLs (hardware<strong>de</strong>scription languages - linguagens <strong>de</strong> <strong>de</strong>scrição <strong>de</strong>hardware).Fonte: VHDL Coding and Logic Synthesis with Synopsys, 2000.9<strong>Projeto</strong> com HDLs e FPGAs• Histórico• Mudança na forma <strong>de</strong> projetar circuitos• Baseado em ferramentas EDA• FPGA10


<strong>Projeto</strong> com HDLs e FPGAs• Histórico– Cerca <strong>de</strong> 1977:• primeiras linguagens <strong>de</strong> <strong>de</strong>scrição <strong>de</strong> hardware• ISP (Instruction Set Processor) - Carnegie Mellon University• KARL - University of Kaiserslautern, Alemanha.– Uso inicial na simulação <strong>de</strong> circuitos– Outros:• 1983: ABEL• 1985: Verilog• 1987: VHDL– VHDL:• Proposta do DoD para especificação <strong>de</strong> projetos <strong>de</strong> hardware.• Uso para simulação lógica das propostas.• Posteriormente usado para síntese <strong>de</strong> circuitos.11<strong>Projeto</strong> com HDLs e FPGAs• Mudança na forma <strong>de</strong> projetar circuitos– Com o aumento na complexida<strong>de</strong> <strong>de</strong> circuitos digitais, não émais possível ter um único projetista com a visão global doprojeto.– Desenvolvimento organizado em grupos <strong>de</strong> projeto:• Divisão em módulos distintos;• Grupos <strong>de</strong> projetistas;• Uso <strong>de</strong> ferramentas <strong>de</strong> projeto;• Teste e integração <strong>de</strong> módulos a partir <strong>de</strong> especificações.– Uso <strong>de</strong> linguagens específicas:• HDL (hardware <strong>de</strong>scription language): p.ex: VHDL e Verilog;• SDL (system <strong>de</strong>scription language): p.ex: SystemC.12


<strong>Projeto</strong> com HDLs e FPGAs• Baseado em ferramentas EDA– Suporte <strong>de</strong> ferramentas <strong>de</strong> projeto:• Síntese <strong>de</strong> circuitos (p.ex. biblioteca <strong>de</strong> módulos, padrões <strong>de</strong> projeto)• Simulação (verificação da lógica, restrições <strong>de</strong> tempo)– Exemplos:• Altera Quartus II• Xilinx ISE Design Suite• Mo<strong>de</strong>lSim da Mentor Graphics– Empresas <strong>de</strong> EDA (fonte: Wikipedia):• $3.85 billion - Synopsys• $2.80 billion - Ca<strong>de</strong>nce• $1.49 billion - Mentor Graphics• $506 million - Magma Design Automation• ¥13.22 billion - Zuken Inc.13<strong>Projeto</strong> com HDLs e FPGAs• Algumas consi<strong>de</strong>rações:– Evolução nos custosFonte: The Simple Art of SoC Design. 2011.14


<strong>Projeto</strong> com HDLs e FPGAs• O aumento nos custos <strong>de</strong> projeto <strong>de</strong> chips mostramque a questão predominante se refere a escrita, teste e<strong>de</strong>puração <strong>de</strong> código.Fonte: The Simple Art of SoC Design. 2011.15<strong>Projeto</strong> com HDLs e FPGAs• HARDWARE = SOFTWARE?Fonte: The Simple Art of SoC Design. 2011.16


<strong>Projeto</strong> com HDLs e FPGAs• Revoluções no projeto <strong>de</strong> hardwareFonte: The Simple Art of SoC Design. 2011.17<strong>Projeto</strong> com HDLs e FPGAs• Fluxo <strong>de</strong>projetocom FPGAsFonte: RTL Hardware Design Using VHDL. Pong P. Chu, 2006.18


<strong>Projeto</strong> com HDLs e FPGAs• FPGA (Field-Programmable Gate Array)– Dispositivo programável no campo (após a fabricação)– Contém alguns milhões <strong>de</strong> transistores conectados pararealizar funções lógicas.– Especificado usando HDLs, como SoCs, ASIPs e ASICs.– Primariamente contém apenas componentes digitais.– Outros tipos:• Mixed signal FPGAs• Field-programmableanalog array (FPAA)19<strong>Projeto</strong> com HDLs e FPGAs• FPGA (Field-Programmable Gate Array)– Desenvolvido em 1985 pela Xilinx.– Arquitetura interna:• CLB (Combinational Logic Block): elementos lógicos.• IOB (Input/Output Block):interfaceamento (buffers)com pinos <strong>de</strong> E/S.• Switch Matrix (chaves <strong>de</strong>interconexões): estruturareconfigurável <strong>de</strong> conexões<strong>de</strong> blocos lógicose <strong>de</strong> E/S.20


<strong>Projeto</strong> com HDLs e FPGAs• Arquitetura interna <strong>de</strong> FPGAs– Consiste <strong>de</strong> centenas ou milhares <strong>de</strong> CLBs e Switch Matrices(SMs) em um arranjo regular <strong>de</strong>ntro do circuito integrado.21<strong>Projeto</strong> com HDLs e FPGAs• Arquitetura interna <strong>de</strong> CLBs:– Lógica programávelcom LUTs (look-up tables).– Reconfigurabilida<strong>de</strong>baseada em SRAMs.– Exemplo:• função comduas variáveis = . + . • configuração consiste noarmazenamento <strong>de</strong> bits <strong>de</strong>configuração em memóriaespecífica.22


<strong>Projeto</strong> com HDLs e FPGAs• Arquitetura interna <strong>de</strong> CLBs:– Associação <strong>de</strong> LUTs (funções com mais variáveis).Fonte: Digital Design, 2006, Frank Vahid.23<strong>Projeto</strong> com HDLs e FPGAs• Arquitetura Interna <strong>de</strong> Switch Matrices:– Configuração também baseada em SRAM.Fonte: Digital Design, 2006, Frank Vahid.24


<strong>Projeto</strong> com HDLs e FPGAs• Arquitetura interna <strong>de</strong> CLBs:– CLBs contém também flip-flops para lógica sequencial.Fonte: Digital Design, 2006, Frank Vahid.25<strong>Projeto</strong> com HDLs e FPGAs• Arquitetura interna <strong>de</strong> CLBs:– Reconfiguração dos flip-flops para lógica sequencial.Fonte: Digital Design, 2006, Frank Vahid.26


<strong>Projeto</strong> com HDLs e FPGAs• Programação <strong>de</strong> FPGAsFonte: Digital Design, 2006, Frank Vahid.27Fluxo <strong>de</strong> <strong>Projeto</strong> <strong>Mo<strong>de</strong>rno</strong>• Desenvolvimento <strong>de</strong> um projeto <strong>de</strong> um circuitointegrado• Etapas genéricas• Baseado em HDLs28


Fluxo <strong>de</strong> <strong>Projeto</strong> <strong>Mo<strong>de</strong>rno</strong>215346879Fonte: Verilog Coding for Logic Synthesis, 2003.29Fluxo <strong>de</strong> <strong>Projeto</strong> <strong>Mo<strong>de</strong>rno</strong>• Passo 1: EspecificaçãoFonte: Verilog Coding for Logic Synthesis, 2003.30


Fluxo <strong>de</strong> <strong>Projeto</strong> <strong>Mo<strong>de</strong>rno</strong>• Passo 1: Especificação– Parte mais importante do fluxo <strong>de</strong> projeto– Definição das característicase funcionalida<strong>de</strong>s– Desenvolvimento daespecificação em VHDL(<strong>de</strong>scrição comportamental)31Fluxo <strong>de</strong> <strong>Projeto</strong> <strong>Mo<strong>de</strong>rno</strong>• Passo 2: Codificação RTLFonte: Verilog Coding for Logic Synthesis, 2003.32


Fluxo <strong>de</strong> <strong>Projeto</strong> <strong>Mo<strong>de</strong>rno</strong>• Passo 2: Codificação RTL– Início da fase <strong>de</strong> projeto– Desenvolvimento da arquitetura a partir da especificação– RTL = register transfer level– Descrição do circuito como uma combinação <strong>de</strong> blocoscombinatórios e registradores– Implementação do projeto com a codificação em código RTLsintetizável33Fluxo <strong>de</strong> <strong>Projeto</strong> <strong>Mo<strong>de</strong>rno</strong>• Passo 3: Testbench e SimulaçãoFonte: Verilog Coding for Logic Synthesis, 2003.34


Fluxo <strong>de</strong> <strong>Projeto</strong> <strong>Mo<strong>de</strong>rno</strong>• Passo 3: Testbench e Simulação– Simulação do código RTL para verificação (funcional)– Testbench = ambiente para simulação, incorporando ageração <strong>de</strong> estímulos e verificação dos resultados (formas <strong>de</strong>onda ou asserções)– Se for <strong>de</strong>tectado um erro no “código” VHDL, o projeto <strong>de</strong>veser <strong>de</strong>bugado e resimulado.35Fluxo <strong>de</strong> <strong>Projeto</strong> <strong>Mo<strong>de</strong>rno</strong>• Passo 4: SínteseFonte: Verilog Coding for Logic Synthesis, 2003.36


Fluxo <strong>de</strong> <strong>Projeto</strong> <strong>Mo<strong>de</strong>rno</strong>• Passo 4: Síntese– Síntese do projeto = conversão do código RTL em portaslógicas– A lógica sintetizada <strong>de</strong>ve ter as mesmas funcionalida<strong>de</strong>slógicas do código RTL– Entradas:• Código RTL• Definição da tecnologia (p.ex. standard cells)• Restrições <strong>de</strong> projeto (p.ex. timing, requisitos <strong>de</strong> carga)– Otimizações possíveis:• Área, consumo <strong>de</strong> energia, velocida<strong>de</strong>37Fluxo <strong>de</strong> <strong>Projeto</strong> <strong>Mo<strong>de</strong>rno</strong>• Passo 5: Análise Temporal Pré-layoutFonte: Verilog Coding for Logic Synthesis, 2003.38


Fluxo <strong>de</strong> <strong>Projeto</strong> <strong>Mo<strong>de</strong>rno</strong>• Passo 5: Análise Temporal Pré-layout– Análise estática <strong>de</strong> tempos do projeto sintetizado– Pré-layout = sem informação da geometria e alocação nochip– Exemplo <strong>de</strong> análise:• Violação <strong>de</strong> tempos <strong>de</strong> setup (preparação) e hold (manutenção)• Correção: inserção <strong>de</strong> blocos <strong>de</strong> atraso39Fluxo <strong>de</strong> <strong>Projeto</strong> <strong>Mo<strong>de</strong>rno</strong>• Passo 6: APR (auto-place-route)Fonte: Verilog Coding for Logic Synthesis, 2003.40


Fluxo <strong>de</strong> <strong>Projeto</strong> <strong>Mo<strong>de</strong>rno</strong>• Passo 6: APR (auto-place-route)– Portas lógicas do projeto sintetizado são alocadas e roteadasno circuito integrado.– Caminho crítico (critical path): <strong>de</strong>vem ser consi<strong>de</strong>radas como<strong>de</strong> alta priorida<strong>de</strong> no processo <strong>de</strong> alocação e roteamento.– Inclui também a síntese da árvore <strong>de</strong> clock. Deve minimizarproblemas <strong>de</strong> clock skew.41Fluxo <strong>de</strong> <strong>Projeto</strong> <strong>Mo<strong>de</strong>rno</strong>• Passo 7: Back annotationFonte: Verilog Coding for Logic Synthesis, 2003.42


Fluxo <strong>de</strong> <strong>Projeto</strong> <strong>Mo<strong>de</strong>rno</strong>• Passo 7: Back annotation– Extração <strong>de</strong> características elétricas (RC parasitics) a partir dolayout do circuito integrado.– O atraso <strong>de</strong> propagação <strong>de</strong> uma linha <strong>de</strong> interconexão po<strong>de</strong>ser calculado a partir <strong>de</strong>stas características elétricas.• Linhas longas = atrasos gran<strong>de</strong>s <strong>de</strong> propagação– Etapa importante que antece<strong>de</strong> a análise <strong>de</strong> tempos final docircuito integrado (layout final).• Análises das etapas anteriores eram baseadas em estimativas nãoprecisas <strong>de</strong> atrasos.43Fluxo <strong>de</strong> <strong>Projeto</strong> <strong>Mo<strong>de</strong>rno</strong>• Passo 8: Análise Temporal Pós-layoutFonte: Verilog Coding for Logic Synthesis, 2003.44


Fluxo <strong>de</strong> <strong>Projeto</strong> <strong>Mo<strong>de</strong>rno</strong>• Passo 8: Análise Temporal Pós-layout– Verificação <strong>de</strong> violações <strong>de</strong> tempo reais com a inclusão <strong>de</strong>informação do layout físico do circuito integrado.– Informação <strong>de</strong> atrasos da re<strong>de</strong> <strong>de</strong> interconexão provenientesda etapa <strong>de</strong> back annotation é usada nesta análise.– Se houver alguma violação <strong>de</strong> requisitos, <strong>de</strong>ve-se re<strong>de</strong>finir aetapa <strong>de</strong> alocação e roteamento dos componentes(repetição dos passos até que os requisitos sejamalcançados).45Fluxo <strong>de</strong> <strong>Projeto</strong> <strong>Mo<strong>de</strong>rno</strong>• Passo 9: Verificação LógicaFonte: Verilog Coding for Logic Synthesis, 2003.46


Fluxo <strong>de</strong> <strong>Projeto</strong> <strong>Mo<strong>de</strong>rno</strong>• Passo 9: Verificação Lógica– Última verificação do projeto para analisar o corretofuncionamento do circuito– Usa os mesmos arquivos <strong>de</strong> teste do passo 3 (testbenches).– Resimulação consi<strong>de</strong>rando os tempos <strong>de</strong> atraso reais.47Codificação em HDLs• Estilos <strong>de</strong> codificação em HDL:– Comportamental– Fluxo <strong>de</strong> dados– Estrutural– RTL48


Codificação em HDLsFonte: Verilog Coding for Logic Synthesis, 2003.4950


Codificação em HDLs• Descrição Comportamental– Visão “caixa preta” do sistema em <strong>de</strong>senvolvimento– Uso no teste no nível <strong>de</strong> sistema– “algoritmo” interno → comandos sequenciais5152


Codificação em HDLs• Descrição em Fluxo <strong>de</strong> Dados– Descrição <strong>de</strong> como as entradas e saídas estão conectadasusando componentes primitivos (p.ex. portas),ou seja, comodos sinais (dados) fluem pelo circuito.– Uso <strong>de</strong> comandos concorrentes.– Exemplo: latch SRentity latch isport (s,r : in bit;q,nq : out bit);end latch;architecture dataflow of latch isbeginq


Codificação em HDLs• Descrição RTL (Register Transfer Level)– Usado na síntese <strong>de</strong> circuitos– Subconjunto da linguagem VHDLIEEE Std 1076.6 - IEEE Standard for VHDL Register TransferLevel (RTL) Synthesis55Próximo Módulo• Módulo II: <strong>Projeto</strong> <strong>de</strong> Circuitos <strong>Digitais</strong> com VHDL– Alguns elementos <strong>de</strong> linguagem– Descrição <strong>de</strong> circuitos combinatórios– Introdução aos circuitos sequenciais (flip-flops eregistradores)– Pequenos exemplos– Hands-on com Altera Quartus II• Criação <strong>de</strong> projetos• Compilação• Simulação56


Próximo Módulo• Módulo II: <strong>Projeto</strong> <strong>de</strong> Circuitos <strong>Digitais</strong> com VHDL– Preparação:Leitura da documentação da Altera1. “Quartus II Introduction using VHDL Designs”ftp://ftp.altera.com/up/pub/Altera_Material/9.1/Tutorials/VHDL/Quartus_II_Introduction.pdf2. “Quartus II Simulation using VHDL Designs”ftp://ftp.altera.com/up/pub/Altera_Material/9.1/Tutorials/VHDL/Quartus_II_Simulation.pdf57

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!