• Nenhum resultado encontrado

Tutorial 3D e sagaas: instalação e uso

N/A
N/A
Protected

Academic year: 2021

Share "Tutorial 3D e sagaas: instalação e uso"

Copied!
9
0
0

Texto

(1)

Tutorial 3D e sagaas: instalação e uso

Neste tutorial será apresentado como instalar o 3D [3], e o SAGAAs (State Asignment using Gentic Algorithm for Asinchronous Circuits) [5], em ambiente Linux, e como usá-los.

Neste tutorial, as linhas destacadas de cinza e iniciadas pelo símbolo $: $ comando

Esse formato será utilizado para indicar que é um comando sendo executado em um terminal no Linux. Requisitos: - Linux - GCC - make - hfmin - espresso - mincov

Para a instalar o 3D: basta invocar o comando make, dentro da pasta dos arquivos do 3D:

$ make

Após a etapa de compilação, uma listagem no diretório corrente irá aparecer os seguintes novos arquivos, aqui destacados em verde. Dependendo da versão do seu Linux, talvez seja necessário atribuir permissões para que esses arquivos sejam executados.

$ chmod a+x 3D formatout backannotate merge-PLAs-II checkshortckt HFMIN logiceqn logicgen stateassign logicgen2 stateassign2

Figura 1. Listagem do diretório após a compilação do 3D

Para que o programa seja localizado pelo sistema em qualquer lugar, o caminho da pasta onde o programa se encontra, deve ser adicionado nas variáveis de ambiente. Por exemplo, para distribuição usada neste tutorial:

(2)

Adicione no arquivo aberto a seguinte linha: export PATH=/home/jameshd/3D-src:$PATH

A Figura 2. Mostra o arquivo já com a linha adicionada, a seguir o arquivo deve ser salvo. O editor utilizado foi o gedit, podendo ser substituído por outro de sua preferência. Para que seja reconhecido o novo caminho adicionado, o terminal (caso esteja aberto) deverá ser fechado e aberto novamente.

Figura 2. Variavéis de ambiente

Pronto, o 3D já está instalado.

A instalação do SAGAAs é simples, basta adicionar o caminho da pasta onde o arquivo binário SAGAAs e o GetEquations, no arquivo path, conforme realizado na instalação do 3D. É necessário atribuir a permissão para execução dos dois arquivos:

$ chmod a+x sagaas GetEquations

Como mencionado acima, na parte de requisitos, o 3D e o SAGAAs, usam o hfmin [1], para realizar a minimização lógica. O hfmin por sua vez, usa o espresso e o mincov [4]. Nesse caso, se você tiver o minimalist [2], instalado na sua máquina, já está tudo pronto para usar o 3D. O minimalist vem com o hfmin, o espresso e o mincov. Mesmo assim, caso não tenha basta adicionar o hfmin, espresso e o mincov, na pasta onde o 3D foi instalado, que o 3D irá funcionar normalmente.

(3)

3D e o SAGAAs, são ferramentas que realizam o assinalamento de estado livre de corrida crítica. O uso dessas ferramentas se procede da seguinte forma:

SAGAAs: sintetiza para a arquitetura máquina de Huffmam com saída realimentada. O formato do arquivo de entrada (front-end), é o formato da especificação XBM [3], como no exemplo da Figura 3, mostra a especificação scsi-init-send-1.nouc, que será utilizada. ;scsi-init-send-1 input cntgt1 0 input fain 0 input ok 0 input rin 0 output aout 0 output frout 0

0 1 ok+ rin* | frout+ 1 2 fain+ rin* | frout- 2 3 rin+ fain- | aout+ 3 6 [cntgt1-] rin- | aout-

6 0 ok- rin* |

3 4 [cntgt1+] rin- | aout- frout+ 4 5 fain+ rin* | frout-

5 3 rin+ Fain- | aout+

O formato do arquivo de entrada, pode ser do tipo arquivo.txt, arquivo.bms ou arquivo.nounc.

Após, o arquivo com a especificações estiver criado, a partir do diretório, em que a especificação se encontra, execute o seguinte comando no terminal:

$ sagaas arquivo.bms ou

$ sagaas arquivo.nouc ou

$ sagaas arquivo.txt

Caso exista algum erro na especificação, será apresentado no terminal o erro e a linha em que foi encontrado. Quando não houver mais erros, o programa irá apresentar algumas mensagens na tela referente as etapas realizadas, e no final será apresentado dois arquivos (back-end).

O programa sempre irá criar três arquivos de saída. Se o arquivo de entrada for o arquivo.nounc, no final da execução do programa, haverá os seguintes arquivos na pasta:

arquivo.nounc arquivo_lcc.nounc arquivo_lcc.unc arquivo_lcc.eqn O arquivo_lcc.nounc é apenas uma cópia do arquivo.nounc.

(4)

O arquivo_lcc.unc (ver Figura 4), contém a especificação com o assinalamento livre de corrida crítica. As variáveis de estados inseridas pela ferramenta SAGAAs são ss00, ss01 e ss02; sendo esse o formato padrão de inserção de variáveis pela ferramenta. Só para constar que, na especificação XBM o comentário é representado por um ‘;’ não início da linha. Outra observação, é que quando na transição aparece duas barras, o ciclo de máquina utilizado [3]: (input → stateVar → output), muda-se as entradas, em seguida as variáveis de estado, e finalmente as saídas.

;...Mostrando... ;Input 4 Output 2 Var_state 3 ;Transitions 8 ;states 7 ;Cod: 001101100000010000100 input cntgt1 0 input fain 0 input ok 0 input rin 0 output aout 0 output frout 0 output ss00 0 output ss01 0 output ss02 0 ;Decisao cntgt1 ;State 0 1 2 3 4 5 6

0 1 ok+ rin* | frout+

1 2 fain+ rin* | frout- ss00+ 2 3 rin+ fain- | aout+

3 6 [cntgt1-] rin- | ss01+ | aout- 6 0 ok- rin* | ss00- ss01-

3 4 [cntgt1+] rin- | ss00- ss02+ | aout- frout+ 4 5 fain+ rin* | frout- ss00+ ss02-

5 3 rin+ fain- | aout+

(5)

O arquivo_lcc.eqn (Figura 5), contém as equações de próximo estado gerado pelo hfmin.

Para saber o número de produtos e literais, basta digitar no terminal: $ contPL scsi-init-send-1_lcc.eqn

A Figura 6, apresenta a saída do programa, para o exemplo utilizado. Somando um total de 12 produtos e 41 literais.

Figura 6. Total de produtos e literais obtido pela ferramenta contPL aout = aout ss00 ss01' + aout ss01' ss02' + fain' ok rin ss00 ss01' frout = fain' ss00' ss02 + fain' ok aout' ss00' ss00 = fain + ok ss01 + ok aout' ss00 + cntgt1' aout ss02' + ok rin ss00 ss01' ss01 = ok ss01 + cntgt1' rin' aout ss02' ss02 = fain' ss02 + cntgt1 rin' aout ss01'

(6)

3D: sintetiza para GC e máquina de Huffman com saída realimentada. O arquivo de entrada (front-end) do 3D deve ter obrigatoriamente a extensão arquivo.nounc.

Para o GC, basta passar o parâmetro -f antes do nome do arquivo. A Figura 7, mostra a especificação biu-dma2fifo que será utilizada como exemplo.

$ 3D –f arquivo.nounc

Obs: Para realizar a síntese para a arquitetura máquina de Huffman com saída

realimentada, o comando não utiliza o parâmetro -f. O arquivo de entrada, e os arquivos gerado na saída (back-end), tem os mesmos nomes.

$ 3D arquivo.nounc input ok 0 input cntgt1 0 input frin 0 input dackn 1 output dreq 0 output faout 0

0 1 ok+ frin* | dreq+ 1 2 [cntgt1+] frin* dackn- | dreq- 1 5 [cntgt1-] frin* dackn- | dreq- 2 3 frin+ dackn+ | faout+ 3 4 frin- | dreq+ faout- 4 2 [cntgt1+] frin* dackn- | dreq- 4 5 [cntgt1-] frin* dackn- | dreq- 5 6 ok* frin+ dackn+ | faout+ 6 0 ok- frin- | faout- Figura 7. Especificação biu-dma2fifo.nounc

(7)

A saída do 3D (back-end), cria uma quantidade muito grande de arquivos. Mas, os importantes são:

biu-dma2fifo.unc – contém a especificação livre de corrida crítica, para a arquitetura desejada, nesse caso, para o GC, como mostrado na Figura 8. Para o exemplo utilizado, o 3D inseriu as variáveis zzz00, zzz001 e zzz02, e, esse é o formatado de variáveis utilizado pela ferramenta para inserir varáveis de estado.

biu-dma2fifo.enc – a Figura 9, contém a codificação dos layers [3]. O número 3, representa a quantidade de variáveis de estado inseridas.

input ok 0 input cntgt1 0 input frin 0 input dackn 1 output dreq 0 output faout 0 output zzz00 0 output zzz01 0 output zzz02 1

0 1 ok+ frin* | dreq+

1 2 [cntgt1+] frin* dackn- | dreq- zzz01+ zzz02- 1 5 [cntgt1-] frin* dackn- | dreq- zzz00+ zzz02- 2 3 frin+ dackn+ | faout+ zzz00+ 3 4 frin- | dreq+ faout- 4 2 [cntgt1+] frin* dackn- | dreq- zzz00- 4 5 [cntgt1-] frin* dackn- | dreq- zzz01- 5 6 ok* frin+ dackn+ | faout+ zzz00- 6 0 ok- frin- | faout- zzz02+ Figura 8. arquivo biu-dma2fifo.unc

* Layer Assignment * 3 A 001 B 010 C 110 D 100 E 000

(8)

biu-dma2fifo.eqn – este arquivo contém as funções set e reset do exemplo utilizado (Figura 10). dreq_Set = frin' faout zzz01 + ok dackn zzz02 dreq_Reset = dackn' faout_Set =

frin dackn dreq' zzz02' faout_Reset = ok' frin' + frin' zzz01 zzz00_Set = frin dackn zzz01 + cntgt1' dackn' zzz02 zzz00_Reset = cntgt1 dackn' zzz01 + frin dackn zzz01' zzz01_Set = cntgt1 dackn' zzz02 zzz01_Reset = cntgt1' dackn' zzz00 zzz02_Set = ok' frin' zzz00' zzz02_Reset = dackn'

(9)

Obs:

O SAGAAs foi testado em um conjunto de 63 benchmarks e usado para sintetizar algumas especificações desde sua implementação, pelos próprios autores e por alunos da disciplina de assíncrono ministrada aqui na instituição. Mesmo assim, na ocorrência de bugs ou quaisquer outras dúvidas sobre esse tutorial, favor entrar em contato: thiagohd@gmail.com

Att.

Tiago da Silva Curtinhas

Referências

[1] R. M. Fuhrer, “Sequential Optimization of Asynchronous and Synchronous Finite-State Machines: Algorithms and Tools,” Ph.D. Thesis, Columbia University, 1999.

[2] R. M. Fuhrer, et al., “Minimalist: An environment for the Synthesis, verification and testability of burst-mode machines,” Technical Report, Columbia University, TR-CUCS-020-99, 1999.

[3] K. Y. Yun e D. L. Dill, "Automatic Synthesis of Extended Burst-Mode Circuits: Part I (Specification and Hazard-.Free Implementation) and Part II (Automatic Synthesis)," IEEE Trans. on CAD of Integrated Circuit and Systems, Vol. 18:2, pp. 101-132, Feb. 1999. [4] E. Sentovich, et al., “SIS: System for Sequential Circuit Synthesis,” Tech. Rep. M92/41,

Electronic Research Laboratory, College Engineering, University of California, Berkeley, 1992.

[5] T. Curtinhas, et al., “A novel state assignment method for Extended Burst-Mode FSM design using Genetic Algorithm,” 27th Symposium on Integrated Circuits and Systems Design, SBCCI, 2014.

Referências

Documentos relacionados

possui a mais ampla distribuição, tanto entre os estados brasileiros quanto na América do Sul. As outras espécies são encontradas principalmente na Bolívia, Paraguai, Argentina

Entretanto, no presente estudo optou-se pelo intervalo de 11 a 14 anos, para verificar possíveis sinais da condição nos segundos molares, visto que Elfrink et al (2012)

O grupo de artistas pesquisadores(as) do Laboratório de Arte e Subjeti- vidades (LASUB) da Graduação e da Pós-Graduação de Artes Visuais da Univer- sidade Federal de Santa Maria

Accordão proferido em 22 de Junho de 1869 / Relação do Porto; apelante, João Bernardo Vaz Pinto de Barbosa e Veiga; apelado, António Teixeira de Queirós. In: Revista de Legislação

A prova do ENADE/2011, aplicada aos estudantes da Área de Tecnologia em Redes de Computadores, com duração total de 4 horas, apresentou questões discursivas e de múltipla

ËÒ×ÊÛÎÍ×ÜßÜ ÒßÝ×ÑÒßÔ ßËÌMÒÑÓß ÜÛ ÓWÈ×ÝÑ Ó WÈ×ÝÑ

- Formação de professor responsável pelo laboratório de informática educacional (LIED) e multiplicador do projeto através do Núcleo de Tecnologia Educacional de Campinas (NTE)..

Note que esta struct possui, além dos campos de dados codigo e preco, um campo adicional que é um ponteiro para uma struct do tipo Produto. É este campo que será utilizado