Fluxo de Projeto Completo para Síntese Automática de Circuitos
Transcrição
Fluxo de Projeto Completo para Síntese Automática de Circuitos
FLUXO DE PROJETO COMPLETO PARA SÍNTESE AUTOMÁTICA DE CIRCUITOS INTEGRADOS NO AMBIENTE MENTOR GRAPHICS Leonardo Londero de Oliveira, Diego Caldas Salengue, João Baptista, André Aita Universidade Federal de Santa Maria – PPGEE – Grupo de Microeletrônica [email protected], [email protected], [email protected], [email protected] RESUMO Neste artigo, apresentamos um fluxo de projeto completo para síntese automática de circuitos integrados utilizando o ambiente e os pacotes oferecidos pela ferramenta Mentos Graphics. Este fluxo de projeto parte da especificação de um circuito e todos os módulos que ele deve conter, lançando-se mão para tanto da descrição de uma máquina de estados. Após, inicia-se a etapa de descrição do código em VHDL que implemente o comportamento do circuito especificado. Os resultados que apresentamos mostram uma maneira rápida e confiável de se gerar um layout de um circuito testado e pronto para prototipação. FLUXO DE PROJETO COMPLETO PARA SÍNTESE AUTOMÁTICA DE CIRCUITOS INTEGRADOS NO AMBIENTE MENTOR GRAPHICS Leonardo Londero de Oliveira,Diego Caldas Salengue, João Baptista, André Aita Universidade Federal de Santa Maria – PPGEE – Grupo de Microeletrônica [email protected], [email protected], [email protected], [email protected] In this paper we present an entire design flow to automated synthesis of integrated circuits. This design flow uses many tools inside the Mentor Graphics Environment. We start from design details of a circuit. For this, we use a state machine. After that, a VHDL code is write to implement the desired behavioral of the state machine. The results we present show a quick and reliable way to generate a verified layout of a circuit ready to prototype. artigo, suas especificações e máquina de estados. A seção 3 descreve as especificações do circuito, bem como sua implementação utilizando a linguagem VHDL. Ainda nesta seção são apresentadas os resultados de simulação utilizando o simulador lógico ModelSim. A Seção 4 passa para a implementação do circuito em FPGA e resultados da funcionalidade do mesmo. O detalhamento do processo de síntese física para o nível de transistores e a geração do layout são tratados na Seção 5. Finalmente, na Seção 6 nós concluímos este artigo, discutindo as principais contribuições e trabalhos futuros. 1. INTRODUÇÃO 2. PROJETO LÓGICO Os circuitos integrados digitais podem ser divididos em dois grandes grupos, quais sejam: CI’s de uso geral como microprocessadores ou microcontroladores e CI’s de aplicação específica chamados de ASICS – Application Specifc Integradted Circuits) [ 1 ]. Estes últimos são utilizados quando os requisitos de desempenho tais como velocidade, área ou potência dissipada, não podem ser atingidos com o uso de CI’s de propósito geral. Uma das razões listadas acima para a escolha pelo projeto de um ASIC, velocidade de projeto, implica no uso de metodologias de projeto estruturadas. Tais metodologias se caracterizam por: uma seqüência de tarefas que levam da especificação inicial do ASIC até o seu layout; um conjunto de ferramentas de CAD para suportar cada uma das tarefas; uma biblioteca de células pré-caracterizadas em função das quais o esquema lógico (netlist) é composto. O ponto de partida para a especificação da funcionalidade do circuito é o esquema lógico do ASIC ou através de linguagens formais de descrição de hardware (hardware description languages, HDL). Dependendo da complexidade do circuito, gerar um esquema a partir de suas características pode ser uma tarefa difícil e demorada. Para facilitar desta tarefa foram criados diferentes programas de síntese automática de circuitos digitais, os quais auxiliam o projetista a sintetizar o ASIC partir da descrição do comportamento do circuito através de uma linguagem formal de descrição de hardware, o VHDL por exemplo. Este artigo esta organizado como segue. A próxima seção apresenta o circuito a ser trabalhado neste Nesta seção, detalharemos o processo de definição do circuito a ser trabalhado. Com o objetivo de percorrer todas as etapas do processo foi escolhido um circuito de aplicação prática descrito sob o nível comportamental. O circuito descreve o comportamento de uma máquina de estados responsável pelo gerenciamento do controle de acesso de pessoas a um determinado recinto, visando atender especificações de segurança. A Figura 1 apresenta o diagrama simplificado do circuito, contendo os principais processos envolvidos. Um processo de reset está presente e é acionado em qualquer tempo, interrompendo qualquer dos processos em execução. Neste processo de reset, diversas variáveis são setadas e o sistema é redirecionado à etapa de início. Por motivos de visualização este processo não está mostrado. É possível com o comportamento do diagrama da Figura 1 digitar senhas de até quatro dígitos para, de acordo com os valores armazenados, o programa proceder à comparação e liberar ou não o acesso. Existe uma memória para armazenamento de até cem senhas. É possível gravar ou apagar uma senha em qualquer posição de memória, numerada de 0 a 99. Para tanto, deve-se proceder antes a um controle de acesso que é a inserção da senha do administrador, a qual também pode ser alterada. ABSTRACT início erro=0 abrir=0 N aguar da 3s gravar=1 ? btn=1 ? aguar da 3s Y Y guarda código btnx rec_pass<=001 entrar senha abrir=1 erro=1 Y btn=1 ? concatena rec_pass<=010 N algum combina ? guarda código btnx Y compara senha adm btn=1 ? compara senhas N combina ? Y guarda código btnx Y Y s_position=1 or s_apaga=1 ? N Y s_apaga<=1 erase_sw=1 ? btn=1 ? N Y N guarda código btnx adm_sw=1 ? rec_pass<=011 digitar senha Y utilizadas por sistemas de CAD, como por exemplo o Leonardo Spectrum ou Xilinx Foundation, é inserir restrições de temporização para caminhos críticos. Estas restrições são utilizadas pela síntese física, gerando-se mensagens de erro caso não seja possível sintetizar o sistema com as restrições impostas. A simulação funcional verifica a temporização detalhada do sistema, podendo ser funcional ou detalhada. A simulação funcional é feita durante a etapa de captura do projeto, utilizando atraso zero (ou unitário). A simulação funcional detalhada utiliza dados provenientes da síntese física, como elementos parasitas de roteamento (back annotation). Quaisquer conexões adicionais que não foram incluídas nas restrições de temporização também podem ser inspecionadas durante a análise estática, porém podem não atender necessariamente às especificações determinadas pelo projetista, uma vez que estas não são “vistas” pela síntese física. É importante restringir todos os caminhos críticos, a fim de permitir que a ferramenta de posicionamento /roteamento determine o lugar mais eficiente e mais otimizado para os componentes do projeto. grava nova Y rec_pass=001 ? rec_pass<=100 digitar senha VHDL Comportamental ou Estrutural N Y rec_pass=011 ? s_position<=1 Simulações no ModelSim N Y rec_pass=100 ? N Síntese Lógica no Leonardo Spectrum Figura 1. Diagrama comportamental simplificado do circuito 3. FLUXO DE PROJETO De acordo com as especificações adotadas na seção anterior para o circuito em questão, procedemos à escrita do código VHDL do mesmo. Antes disso, apresentamos o fluxo de projeto com todas as etapas a serem percorridas conforme mostrado na Figura 2. O primeiro passo é a descrição VHDL do circuito. Pode-se utilizar para este tipo de síntese tanto uma descrição estrutural quanto uma comportamental. Uma vez tendo disponível a descrição, a próxima etapa é a verificação. Este estágio consiste de duas etapas principais: análise de timing e simulação funcional. A verificação do projeto deve ser feita minuciosamente, e uma pesquisa ampla dos caminhos críticos pode indicar ao projetista onde ele pode aumentar o desempenho. A etapa de análise de timing realiza a análise estática da temporização, determinando se o projeto atende ou não o desempenho desejado, através da análise dos caminhos críticos do circuito. Uma forma de guiar as ferramentas Formato EDIF edif2eddm Xilinx ISE 4.2i View point EDDM Bitstream IC Station IMpact Layout FPGA Simulações Elétricas no ELDO formato gds2 Foundry Figura 2. Fluxo de projeto adotado rec_pass=010/<=011 (adm_sw=0) ou rec_pass=010/<=100 (adm_sw=1) ou rec_pass=000 s_position<=1 posição btnx=0 btnx=0 btnx=0 btnx=0 rec_pass=011 s1 rec_pass<=001 grava_sw=1 início btnx=1 btnx=1 s2 s3 btnx=1 s_position=1 ou s_apaga=1 arruma s_position=1 s_apaga=1 gravar s4 btnx=1 conca tena rec_pass=000 ou rec_pass=001/<=010 [s_apaga<=1] (adm combina E compara erase_sw=1) rec_pass=100 grava senha reset apaga senha Figura 3. Máquina de estados do circuito proposto Figura 4. Simulação Lógica no ModelSim Além do código principal, é necessária a escrita de um programa que implemente o teste do circuito com as entradas desejadas. O termo testbench, em VHDL geralmente se refere ao código utilizado para criar uma seqüência predeterminada de entradas para um circuito e, opcionalmente, observar suas saídas. É comumente implementado, através das própria linguagem VHDL, podendo incluir arquivos externos ou rotinas C [ 3 ]. O testbench que foi escolhido aqui simular as etapas iniciais pelas quais o circuito deve passar no momento em que é submetido à alimentação inicial. A Figura 3 apresenta a máquina de estados do circuito. Da mesma forma que no diagrama da Figura 1, não está aqui representado o estado de reset considerando todas as suas ocorrências possíveis. Entretanto, em qualquer estado, uma vez acionado o reset, o circuito executará oc comandos programados para este estado. A descrição do testbench procede conforme simulação apresentada na Figura 4. Num primeiro instante, após o reset, a chave GRAVAR habilita o sistema à execução do procedimento para gravar uma nova senha. A simulação indica o acionamento de quatro vezes consecutivas do botão 3 (btn3), simulando desta forma a inserção da senha do administrador. Após é acionada a chave ENTER que verifica se a senha digitada confere com a senha do administrador armazenada na memória. O próximo passo é a inserção efetiva da senha, que nesta simulação indica o acionamento de quatro botões na ordem apresentada (btn1 – btn2 – btn3 – btn4). Finda a digitação da nova senha é necessário informar qual a posição de memória (dentre 100 disponíveis) que ela ocupará. A última parte da simulação refere-se à digitação da senha armazenada e verificação troca de nível lógico 0 para 1 do sinal de saída ABRIR. Diversos outros testes verificando as outras opções do programa foram simuladas. 4. IMPLEMENTAÇÃO FPGA A síntese deste circuito em FPGA foi realizada com a restrição de que o hardware deveria ser operacional com uma freqüência de pelo menos 25MHz. Uma vez vencida a etapa de simulação lógica do circuito, procede-se à geração do arquivo edif pelo programa Leonardo Spectrum. Com o arquivo edif, passamos a utilização do programa da XILINX ISE 4.2i e iniciamos um novo projeto escolhendo o dispositivo Spartan XCS10 PC84. A placa de prototipação (Figura 5) utilizada é a DIGILAB XLA, fabricada pela Digilent. Foram utilizadas 5 chaves, 4 botões e 8 leds para verificar a lógica sintetizada. O clock utilizado para o teste do circuito implementado foi de 25MHz, aproveitando o circuito de clock existente na placa. Figura 6. Roteamento entre as CLB’s para FPGA Spartan XCS10 após processo de síntese. O mesmo procedimento de simulação implementado com o testbench foi realizado com a FPGA. A Figura 7 mostra a última situação de teste da Figura 4, onde uma senha, previamente armazenada foi testada e verificado o nível lógico do sinal de saída ABRIR. É interessante salientar que, conforme previsto nas especificações de projeto descritas no diagrama da Figura 1, o sinal ABRIR permanece em nível lógico 1 por apenas 3 segundos. Para a aquisição dos sinais foi utilizado o sistema de trigger do osciloscópio Agilent 54622 e a plataforma de acesso à FPGA. Figura 5. Placa DIGILAB XLA de programação e teste utilizada no projeto Com o programa da XILINX, gera-se um arquivo denominado bitstream. Este arquivo contém as informações necessárias para o roteamento interno das CLB’s (Configurable Logic Blocks) para que a FPGA execute o comportamento desejado. Utiliza-se então o software IMpact para descarregar este arquivo no circuito de programação do dispositivo FPGA. Conforme pode ser visto na Figura 6, um grande número de CLB’s foi utilizado, bem como uma lta densidade de roteamento foi necessária, totalizando 96% de ocupação lógica da FPGA. Figura 7. Resultados experimentais obtidos a partir da implementação do circuito em FPGA 5. IMPLEMENTAÇÃO ASIC Como na síntese para FPGA, o software Leonardo Spectrum também foi utilizado para a obtenção do formato intermediário em nível lógico (EDIF) e também foi especificada uma restrição de que com um clock de no mínimo 25 MHz, o hardware se mantenha operacional. Neste projeto foram utilizadas as células padrão da biblioteca AMI 0.5µm TYP, disponibilizada no design kit ADK, para a síntese do circuito. A partir do arquivo em formato EDIF é necessário criar um view point, que fornece a conexão entre as diversas ferramentas no ambiente Mentor Graphics. Este view point (EDDM) é gerado através de um script Unix (edif2eddm), também disponível do design kit ADK. A criação do view point é necessária para a geração automática do layout na ferramenta IC Station. O view point conecta a célula a ser gerada no IC Station com o arquivo EDIF gerado pelo Leonardo Spectrum. O layout do circuito proposto, apresentado na Figura 8, foi gerado com uma área de 1290 µm X 1530 µm relativa ao núcleo do circuito. Depois do layout ser gerado é possível extrair o modelo SPICE para simulações elétricas. A partir desta extração verificou-se que o circuito foi implementado com 13699 transistores. . os vetores de teste submetidos. São necessárias outras técnicas de teste aqui não abordadas para proceder a este tipo de simulação. 6. AGRADECIMENTOS Este projeto é financiado pelo Conselho Nacional de Desenvolvimento Científico e Tecnológico – CNPQ/Brasil e Fundação de Amparo à Pesquisa do Estado do Rio Grande do Sul – FAPERGS/Brasil. 7. CONCLUSÕES Nós apresentamos um fluxo de projeto para síntese de circuitos integrados utilizando uma ferramenta de CAD comercial, ambiente Mentor Graphics. Neste artigo, passamos por testes lógicos de simulação através do testbench e por resultados experimentais em FPGA. De acordo com os resultados apresentados, foi possível finalizar o processo com um circuito em nível de transistores obtido através de síntese automática e pronto para fabricação (Figura 8) sob o processo AMI 0.5u. Como trabalhos futuros, esperamos implementar a visualização das funções para melhor interação com o usuário através de um display LCD. Será aumentado ainda o número de dígitos de cada senha e será implementada uma comunicação serial do módulo com um computador utilizando um programa para o gerenciamento de senhas e transmissão de dados via Internet. Após concretizadas estas etapas, o circuito gerado será submetido à MOSIS para prototipação. 7. REFERÊNCIAS [1] Rozo, Antonio García, Sistemas Digitales Elementos para un Diseño a Alto Nivel, Quebecor Impreandes, Colômbia, 1999. [2] Ashenden, Peter J., The Designer’s Guide do VHDL, Morgan Kaufmann Publishers, USA, 1996. [3] Bergeron, J. Writing Testbenches: Functional Verification of HDL Models. Kluwer Academic Publishers, Norwell, MA, 2000. Figura 8. Layout obtido a partir da síntese da descrição VHDL contento os PAD’s de entrada e saída. As simulações elétricas de circuitos muito grandes, não são realizáveis do ponto de vista prático, devido à necessidade por parte dos simuladores, como o ELDO, de um tempo muito grande de simulação para realizar todos [4] RUSHTON, Andrew, VHDL for Logic Synthesis Second Edition, John Wiley & Sons, England, 1998