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

Documentos relacionados