Equações das saídas
5.8 Síntese Lógica Sequencial Assistida por Computador
5.8.3 SIS – Sequential Interactive Synthesis
Para concluir a apresentação da sequência das ferramentas de desenvolvimento utilizadas para sintetizar a unidade de controlo da máquina de venda automática vão ser agora mostrados os resultados obtidos com o SIS (Sequential Interactive Synthesis) [Sis92]. Tal como já foi referido acima, esta ferramenta foi desenvolvida em Berkeley como um conjunto de aplicações de investigação. As suas vantagens principais são:
• ser de domínio público e disponibilizar o código fonte,
• possuir os formatos abertos de entrada e saída das aplicações, o que a torna extensível e facilita a interacção com outras ferramentas;
• por comparação com os resultados obtidos nas secções anteriores, os algoritmos implementados podem ainda hoje ser considerados bastante actuais e até avançados.
A sua maior desvantagem relativamente às anteriores é o interface, uma vez que toda a interacção com o utilizador é realizada por intermédio de comandos. No entanto, para utilizadores experientes esta é também uma vantagem importante por permitir a elaboração de ficheiros de comandos que permitem automatizar determinadas tarefas e assim conseguir uma utilização mais eficiente da ferramenta.
Além das capacidades de síntese de circuitos sequenciais síncronos e assíncronos através de ferramentas e comandos para minimização e codificação de estados e manipulação de diagramas de transição de estados e grafos de transição de sinal, incorpora as ferramentas de minimização lógica de dois níveis “Espresso” e multi-nível “misII” já utilizadas na secção 5.7 para realizar a optimização automática da parte combinatória de uma unidade de controlo. Na execução das experiências cujos resultados são apresentados nesta secção são relevantes apenas a aplicação de codificação de estados para circuitos multi-nível “Jedi” e os comandos de minimização lógica, já que o modelo comportamental da unidade de controlo da máquina de venda automática encontra-se já minimizado em termos do número de estados.
O ponto de partida para utilizar esta ferramenta na síntese de uma unidade de controlo é a elaboração de um ficheiro no formato kiss2 que descreve o seu comportamento e que é basicamente uma tabela de transição de estados em que podem ser utilizados os símbolos “0”, “1” e “-“ nos vectores de entrada e de saída. Opcionalmente, esta descrição pode ser inserida num ficheiro no formato “blif” (Berkeley Logic Interchange Format) que pode ser utilizado para atribuir nomes às entradas e saídas do circuito ou interligar a unidade de controlo com outros componentes. A descrição “kiss2” da unidade de controlo da máquina de venda automática é apresentada na Figura 5.28 e resulta de pequenas alterações realizadas na tabela de transição de estados apresentada no capítulo anterior.
Na realização das experiências foram utilizados dois tipos de codificação de estados: automática de comprimento mínimo e one-hot. No primeiro caso os códigos dos estados foram atribuídos automaticamente pela aplicação “Jedi”, tendo-se realizado dois tipos de optimização: área e atrasos. A listagem das codificações utilizadas encontra-se na Tabela 5.8.
Neste caso não foi possível obter esquemáticos dos circuitos gerados devido a alguns problemas das ferramentas utilizadas para converter os modelos em VHDL estrutural numa representação gráfica. Ao contrário das ferramentas anteriores foi possível completar o projecto da unidade de controlo desde a sua especificação até à sua implementação numa FPGA XC6200. O modelo estrutural resultante da síntese foi simulado com a aplicação VeriBest VHDL 15.01 tendo-se obtido resultados análogos aos apresentados no capítulo anterior.
.model MaqVenda
.inputs M50 M100 Continuar Cancelar .outputs Lata Troco Devolucao Rejeicao .start_kiss .i 4 .o 4 .r EInicial 1--- EInicial E50 0000 01-- EInicial E100 0000 00-- EInicial EInicial 0000 ---1 E50 ECancelada 0000 1--0 E50 E100 0000 01-0 E50 E150 0000 00-0 E50 E50 0000 ---1 E100 ECancelada 0000 1--0 E100 E150 0000 01-0 E100 E200 0000 00-0 E100 E100 0000 ---1 E150 ECancelada 0001 --10 E150 ELata 0001 --00 E150 E150 0001 ---1 E200 ECancelada 0001 --10 E200 ELataTroco 0001 --00 E200 E200 0001 ---- ELata EInicial 1001 ---- ELataTroco EInicial 1101 ---- ECancelada EInicial 0011 .end_kiss .end
Figura 5.28 – Descrição comportamental da unidade de controlo da máquina de venda automática no formato kiss2 inserido num ficheiro blif.
Estados Automatica One-Hot
EInicial 111 10000000 E50 110 01000000 E100 100 00100000 E150 000 00010000 E200 001 00001000 ELata 011 00000100 ELataTroco 101 00000010 ECancelada 010 00000001 Tipos de Codificação
Tabela 5.8 – Listagem das codificações de estado utilizadas no SIS.
A Figura 5.29 mostra as representações físicas dos três circuitos obtidos após a implementação com as ferramentas de mapeamento, implantação e interligação da FPGA XC6200 ((a) optimização da área; (b) optimização dos atrasos; (c) one-hot). As duas primeiras opções de síntese utilizam codificações de comprimento mínimo.
(a) (b) (c)
Figura 5.29 – Representação física da unidade de controlo após a implementação com o XACT6000. Circuito sintetizado com (a) optimização da área; (b) optimização dos atrasos; (c)
codificação de estados one-hot.
Da observação da Figura 5.29 é fácil concluir que o circuito sintetizado com optimização dos atrasos é aquele que ocupa uma área maior. Os resultados obtidos em termos de área do circuito e frequência máxima de funcionamento para cada uma das opções de síntese encontram-se resumidos na Figura 5.30. De notar que ao contrário do que sucedeu com o Leonardo Spectrum, neste caso existe coerência entre os parâmetros do circuito e o tipo de optimização escolhida. Em termos de área, o circuito que utiliza codificação de estados one-hot é pior do que o optimizado para área, mas melhor do que o sintetizado com optimização dos atrasos.
A análise temporal do circuito foi realizada após a sua implementação, pelo que os valores são reais, ao contrário do que acontece com os casos anteriores em que os resultados obtidos devem ser considerados apenas como primeiras aproximações. A diferença de uma ordem de grandeza a menos nas frequências de funcionamento, relativamente aos circuitos sintetizados com as ferramentas anteriores e mapeados em componentes de bibliotecas para ASICs, deve-se aos atrasos provocados pelos elementos de comutação da FPGA.
Em termos de frequência de funcionamento a codificação de estados one-hot é aquela que fornece os melhores resultados, podendo proporcionar um bom compromisso entre a frequência de funcionamento e a área ocupada, para além de possuir um processo de síntese bastante simples. Além disso, uma vez que cada transição de estado só depende de uma variável de estado, o número médio de entradas por porta lógica é menor do que quando se usa uma codificação de comprimento mínimo, que é um factor bastante importante em tecnologias de implementação de pequena granulosidade e com poucas entradas por porta lógica, como é o caso da arquitectura de FPGAs XC6200. Durante o projecto desta unidade de controlo constatou-se ainda que no circuito sintetizado com optimização dos atrasos só foi possível concluir com sucesso a sua implementação após algumas iterações, o que não sucedeu com os restantes dois circuitos.
A maior desvantagem da codificação de estados one-hot é necessitar de um elevado número de flip-flops. Contudo, a partir do momento em que o número de primitivas combinatórias utilizadas num circuito é superior ao número de flip-flops e em cada célula pode ser combinada uma porta lógica com um flip-flop esta desvantagem é anulada. De notar que na família XC6200 é impossível utilizar separadamente as componentes combinatória e sequencial de uma célula. Outro argumento a favor da utilização da codificação de estados one-hot em unidades de
controlo virtuais é o facto de somente uma parte do circuito estar implementada em hardware, o que contribui para uma diminuição do número de flip-flops necessários.
Com base nos resultados obtidos, o método de codificação escolhido para implementar unidades de controlo na FPGA XC6200 foi o one-hot. De notar que estas conclusões foram baseadas apenas num exemplo de uma FSM e que conclusões mais precisas só seriam possíveis obter com a utilização de um conjunto adequado de máquinas de teste, também vulgarmente designadas por benchmarks. No entanto, este não era o objectivo deste capítulo. Além disso, estas conclusões são também suportadas pelos resultados publicados em [OliLauSkl98, Sklyarov00].
Tipo de Codificação Área do Circuito Freq. de Funcionamento (MHz)
Automática (área) 42 13,4
Automática (atraso) 56 18,3
One-Hot 49 22,3
Automática
(área)
Automática (atraso) One-Hot
Área do Circuito
Freq. de Funcionamento (MHz)
Figura 5.30 – Sumário dos resultados da síntese da unidade de controlo da máquina de venda automática obtidos com o SIS em termos de área do circuito e frequência de funcionamento
para diferentes opções de síntese.