brazil ip the brazilip network gaph - facin - pucrs síntese e prototipação de sistemas digitais a...
TRANSCRIPT
![Page 1: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/1.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
GAPH - FACIN - PUCRS
Síntese e Prototipação de Sistemas Digitais a partir de SystemC
Ney Laert Vilar Calazans
GAPH - PPGCC - FACIN - PUCRS
1º/03/2004 a 05/03/2005
![Page 2: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/2.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
Sumário
• Introdução - SystemC, Síntese, Prototipação
• Estudos de Caso de Módulos RTL em SystemC
• Usando o Subconjunto Sintetizável de SystemC
• Diretivas de Codificação RTL para SystemC
• Modelagem e Síntese Comportamental
![Page 3: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/3.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
Introdução - SystemC, Síntese, Prototipação
• Projeto a nível de sistema, linguagens sistêmicas e níveis de abstração– apresentação G. Arnout, ESCUG Out/2002
• Nem tudo que se escreve em SystemC é transformável em hardware:– tudo é simulável (em tese!)
• simulação pode não funcionar - timing é importante!
– nem tudo é sintetizável - subconjunto sintetizável de SystemC• o que sintetiza não necessariamente funciona!
– nem tudo é prototipável/implementável• questões tecnológicas + interfaces externas + padrões E/S
![Page 4: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/4.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
Introdução - SystemC, Síntese, Prototipação
• Documentação (Versão 2.0.1 de SystemC)– Synopsys,Inc. Describing Synthesizable RTL in SystemC.
Version 1.2, November 2002. 136p. (Manual Synopsys RTL)– OSCI. Functional Specification for SystemC 2.0. Update for
SystemC 2.0.1. Version 2.0-Q. April 2002. 135p.– OSCI. SystemC Version 2.0 User Guide. Update for SystemC
2.0.1. Version 2.0-Q. 2002. 212p.– OSCI. SystemC 2.0.1 Language Reference Manual. Revision
1.0. 2003. 428p.– Manuais de ferramentas Synopsys: CoCentric SystemC
Compiler, Design Compiler, CoCentric SystemC Studio, CoCentric Fixed Point Designer, etc.
![Page 5: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/5.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
Introdução - SystemC, Síntese, Prototipação
• Porque sintetizar a partir de SystemC?– HDLs são estáveis e dominadas– Specs - C é quase padrão, junto com planilhas, Matlab, etc– Tradução C -> HDL - propensa a erros de interpretação– Reuso de verificação - evita re-escrita de código de
verificação– Produtividade aumentada
• modificar um projeto - mais rápido que recodificá-lo• verificar projeto modificado - mais rápido que verificar recodificado
![Page 6: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/6.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
Introdução - SystemC, Síntese, Prototipação
• Porque prototipar?– Se simulação OK, projeto funciona em hardware?
• NÃO!!!!
– Caminho de simulação perfeita para funcionamento em hardware é longo
– O que ainda pode estar errado?• Timing - freqüência de operação, • Código de verificação insuficiente• Condições iniciais e de contorno - reset, pinagem, clock, etc.
• Prototipação dá garantia muito maior que a implementação final funcionará. Logo, prototipar sempre é a regra!
![Page 7: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/7.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
Introdução - SystemC, Síntese, Prototipação
• Questionário– Quem já programou algo em SystemC? Usando que
ferramentas?– Quem já simulou hardware? Usando que forma de entrada,
que software, que ferramentas?– Quem já simulou algo descrito em SystemC? Usando que
ferramentas?– Quem já prototipou hardware? Usando que forma de
entrada, que software, que plataforma?– Quem já prototipou hardware a partir de descrições de
entrada em SystemC? Usando que software, que plataforma?
![Page 8: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/8.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
Introdução - SystemC, Síntese, Prototipação
• Ambiente a ser usado no curso– Linguagem de entrada - SystemC– Ferramentas de simulação - GTKwave - domínio público
• porque não CoCentric SystemC Studio?
– Ferramentas de Síntese - Design Compiler/CoCentric SystemC Compiler
– Ambiente de prototipação:• CAD ISE da Xilinx (projeto, sínteses lógica e física e configuração)
• Plataformas variadas de prototipação em FPGAs Xilinx (+ SW específico)
– V2MB1000 Insight
– XSV-800 da Xess
– VW300 da VCC
![Page 9: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/9.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
Sumário
Introdução - SystemC, Síntese, Prototipação
• Como criar Módulos RTL em SystemC
• Usando o Subconjunto Sintetizável de SystemC
• Diretivas de Codificação RTL para SystemC
• Modelagem e Síntese Comportamental
![Page 10: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/10.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
Características Gerais de Módulos e Processos
• Módulo (SC_MODULE)– Bloco básico para a construção de hardware– Eqüivale a module Verilog e par entity/architecture VHDL– Pode conter:
• processos• instâncias de outros módulos• member functions (terminologia C++) chamadas por processos ou
módulos internos
• Processos (SC_METHOD)– trecho de código executado seqüencialmente– múltiplos processos paralelos -> concorrência
![Page 11: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/11.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
Características Gerais de Módulos e Processos
Outros módulos podem estar instanciados internamente
![Page 12: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/12.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
Características Gerais de Módulos e Processos
• Registro de processos– Processo - definição similar a member function C++– registro - declaração do tipo de processo no construtor
• SC_METHOD (SC_THREAD proibido em SystemC RTL)
– registro diferencia processo paralelo de outras member functions
– se processo precisa ser instanciado mais de uma vez, deve estar dentro de módulo, senão erro!
• Disparo de execução de processos– baseado na definição da lista de sensitividade– sensitividade - ao nível/à borda (imisturável em processo!)
![Page 13: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/13.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
Características Gerais de Módulos e Processos
• Leitura e escrita de valores por processos– processo pode ler escrever em
• portas (sc_in, sc_out, sc_inout)• sinais internos ao módulo (signal)• variáveis internas (ao processo)
– evitar não-determinismo:• não faça processos se comunicarem via variáveis• usar sinais!!! (Como obrigado em VHDL)
![Page 14: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/14.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
Sintaxe e Semântica de Módulos de Processos
• Usar 1 par de arquivos por módulo (.h e .cc)
• Cabeçalho de módulos– declarações de portas– declarações de sinais internos– declarações de variáveis internas– declarações de processo– declarações de member functions– construtor do módulo
![Page 15: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/15.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
Sintaxe e Semântica de Módulos de Processos
• Portas de um módulo– porta é data member (nomenclatura C++) de um módulo– portas se conectam a sinais de mesmo tipo– tipo de porta deve ser sintetizável!!
![Page 16: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/16.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
Sintaxe e Semântica de Módulos de Processos
• Sinais– usados para comunicação entre processos e/ou módulos– sinais não possuem direção!!
![Page 17: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/17.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
Sintaxe e Semântica de Módulos de Processos
• Variáveis de módulo (data members)– devem ser usadas para uso interno ao módulo apenas!!
![Page 18: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/18.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
Sintaxe e Semântica de Módulos de Processos
• Criando processos em módulos– declarados no
módulo e registrados no construtor deste
– processo - função com tipo void, sem argumentos
![Page 19: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/19.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
Sintaxe e Semântica de Módulos de Processos
• Lista de sensitividade– sensitive() ou sensitive_pos() ou sensitive_neg() -- deprecated
– lógica combinacional - incluir todos os sinais de entrada!– Lógica seqüencial síncrona - incluir só clock e sinais com
prioridade sobre este, tais como set/reset assíncronos, se existem.
Sensitividade ao nível
![Page 20: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/20.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
Sintaxe e Semântica de Módulos de Processos
• Lista de sensitividade incompleta (Errado!!)
• Sensitividade à Borda
![Page 21: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/21.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
Sintaxe e Semântica de Módulos de Processos
• Limitações de listas de sensitividade– não se pode misturar sensitividade ao nível e à borda no
mesmo processo– não se pode usar o tipo sc_logic para sinais de relógio ou
outros sinais sensíveis à borda, usa-se somente o tipo sc_in<bool>
• Member functions– possíveis de serem declaradas em módulos– se não declaradas como processo (SC_METHOD) podem
retornar qualquer tipo sintetizável
![Page 22: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/22.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
Sintaxe e Semântica de Módulos de Processos
• Implementação do Módulo– arquivo .cc /.cpp
• Leitura e escrita de portas e sinais– métodos read() e write() para portas e sinais, = p/ variáveis
![Page 23: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/23.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
Sintaxe e Semântica de Módulos de Processos
• Leitura e escrita de bits de portas e sinais– não se pode ler/escrever bits de portas ou sinais direto– para bits individuais ou faixas, usar variáveis temporárias
![Page 24: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/24.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
Sintaxe e Semântica de Módulos de Processos
• Atribuições de valor a sinais e portas– a atribuição não se concretiza
até que a avaliação do processo seja concluída!
![Page 25: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/25.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
Sintaxe e Semântica de Módulos de Processos
• Atribuições de valor a variáveis– são imediatas!
![Page 26: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/26.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
Estudos de Caso de Implementação de Módulos
• Módulos com processo SC_METHOD único– exemplo de contador combinacional de zeros (paralelo)
• Módulos com múltiplos processos SC_METHOD– exemplo de contador seqüencial de zeros (serial)
• Módulos RTL hierárquicos– ver exemplo do filtro FIR (ver manual Synopsys RTL)
![Page 27: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/27.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
Módulos com Processo SC_METHOD Único
/****count_zeros_comb.h file***/#include "systemc.h"SC_MODULE(count_zeros_comb) { sc_in<sc_uint<8> > in; sc_out<sc_uint<4> > out; sc_out<bool> error; bool legal(sc_uint<8> x); sc_uint<4> zeros(sc_uint<8> x); void control_proc(); SC_CTOR(count_zeros_comb) {
SC_METHOD(control_proc);sensitive << in;
} };/****count_zeros_comb.cpp file****/#include "count_zeros_comb.h"sc_uint<4> count_zeros_comb:: zeros(sc_uint<8> x) {
int count = 0;for (int i=0; i <= 7; ++i) {
if (x[i] == 0)++count;
}return count;
}
void count_zeros_comb::control_proc() { sc_uint<4> tmp_out; bool is_legal = legal(in.read()); error.write(is_legal != 1); is_legal ? tmp_out = zeros(in.read())
: tmp_out = 0; out.write(tmp_out); }bool count_zeros_comb::legal(sc_uint<8> x) { bool is_legal = 1; bool seenZero = 0; bool seenTrailing = 0; for (int i=0; i <=7; ++i) {
if ((seenTrailing == 1) && (x[i] == 0)) {
is_legal = 0; break;} else if ((seenZero == 1)
&& (x[i] == 1)) { seenTrailing = 1;} else if (x[i] == 0) { seenZero = 1;} }
return is_legal;}
![Page 28: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/28.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
Módulos com Múltiplos Processos SC_METHOD
• Ver código SystemC no manual Synopsys RTL
![Page 29: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/29.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
Módulos RTL Hieráquicos
• Passos básicos para a criação de módulos hieráquicos:– criar ponteiros como data members no módulo de nível de
hierarquia mais alto para apontar cada instância de módulo
– alocar os módulos instanciados dentro do construtor do módulo de nível de hierarquia mais alto, dando a cada um nome distinto
– conectar as portas dos módulos instanciados às portas e sinais do módulo de nível de hierarquia mais alto
• Ver exemplos no manual Synopsys RTL– atentar para o uso sintetizável de ponteiros
![Page 30: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/30.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
Sumário
Introdução - SystemC, Síntese, Prototipação
Como criar Módulos RTL em SystemC
• Usando o Subconjunto Sintetizável de SystemC
• Diretivas de Codificação RTL para SystemC
• Modelagem e Síntese Comportamental
![Page 31: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/31.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
Conversão para o Subconjunto Sintetizável
• Lembrando, qualquer código SystemC/C/C++ pode ser simulado!– conversão p/ SystemC sintetizável - apenas no código Hw– recomenda-se o uso de #ifdef e #endif para evitar
alterações. Ex: trace e print
• Nesta parte - especificação dos subconjuntos sintetizáveis de SystemC e C++– ações corretivas - geram código sintetizável a partir de
código não-sintetizável– em muitos casos - nenhuma ação corretiva existe!!– óbvio - testbenches não precisam de conversão jamais!!
![Page 32: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/32.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
Conversão para o Subconjunto Sintetizável
• Construções SystemC não-sintetizáveis
![Page 33: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/33.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
Conversão para o Subconjunto Sintetizável
• Construções C/C++ não-sintetizáveis (1)
![Page 34: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/34.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
Conversão para o Subconjunto Sintetizável
• Construções C/C++ não-sintetizáveis (2)
![Page 35: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/35.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
Conversão para o Subconjunto Sintetizável
• Construções C/C++ não-sintetizáveis (3)
![Page 36: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/36.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
Conversão para o Subconjunto Sintetizável
• Construções C/C++ não-sintetizáveis (4)
![Page 37: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/37.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
Modificação de Dados para Síntese
• Problemas mais comuns:– tipos nativos C/C++ - largura em bits é dependente de
plataforma– C/C++ não suporta operações sobre lógica de 4 valores
(0,1,Z,X)– SystemC - conjunto limitado de tipos com controle de
precisão/largura e operações sobre estes
• Para modificar SystemC para síntese RTL– avaliar - declarações de variáveis, parâmetros formais e
tipos de retorno de funções quanto à largura em bits– isto afeta diretamente o custo do hardware!
![Page 38: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/38.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
Modificação de Dados para Síntese
• Tipos de dados não-sintetizáveis C/C++/SystemC– ponto flutuante - float, double– ponto fixo - sc_fixed, sc_ufixed, sc_fix, sc_ufix– tipos de acesso - ponteiros– tipos arquivo - FILE– streams de entrada e saída - stdout, cout
![Page 39: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/39.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
Modificação de Dados para Síntese
• Tipos de dados recomendados– variáveis/sinais de 1 bit - bool– variáveis/sinais de até 64bits - sc_int, sc_uint– variáveis/sinais com mais de 64bits usados em operações
aritméticas - sc_bigint, sc_biguint– usar sc_logic ou sc_lv para modelar sinais e barramentos
tristate. Comparações com valores Z e X -> não-sintetizáveis
– usar int para contadores em laços– cuidado com tipos nativos C/C++– para restringir tamanho em bits, sc_int<n> ao invés de int
![Page 40: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/40.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
Modificação de Dados para Síntese
• Tipos de dados sintetizáveis (1)
![Page 41: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/41.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
Modificação de Dados para Síntese
• Tipos de dados sintetizáveis (2)
![Page 42: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/42.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
Modificação de Dados para Síntese
• Operadores sobre vetores de bits
![Page 43: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/43.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
Modificação de Dados para Síntese
• Operadores sobre tipos de dados de precisão simples e arbitrária
![Page 44: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/44.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
Modificação de Dados para Síntese
• Tipos enumerados - suportados como em C/C++• Usando agregados - sintetizável desde que todos os
membros o sejam• Tipos C++ - cuidado com a dependência de
plataforma no que diz respeito à largura em bits• Dados membros de um módulo - não usar para
comunicação entre processos
![Page 45: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/45.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
Modificação de Dados para Síntese
• Exemplo de uso incorreto de dados-membro– Problema relacionado a atribuição imediata/deferida
![Page 46: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/46.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
Modificação de Dados para Síntese
• Exemplo de uso correto de dados-membro– Problema relacionado a atribuição imediata/deferida
![Page 47: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/47.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
Recomendações sobre Modificação para Síntese
• Após cada modificação, reverifique o projeto
• Procure avaliar ambos, o impacto na sintetizabilidade e o impacto na qualidade da síntese a cada passo
• Refinamento para RTL é tedioso, propenso a erro e incremental– próxima Seção recomenda diretivas de codificação para
reduzir o problema!
![Page 48: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/48.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
Sumário
Introdução - SystemC, Síntese, Prototipação
Como criar Módulos RTL em SystemC
Usando o Subconjunto Sintetizável de SystemC
• Diretivas de Codificação RTL para SystemC
• Modelagem e Síntese Comportamental
![Page 49: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/49.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
Diretivas de Codificação RTL para SystemC
• Existem diretivas de codificação para três classes de componentes RTL:– inferência de registradores e latches– inferência de buffers tristate– descrição de máquinas de estados finitas (FSMs)
• Aqui - estudo de diretivas de codificação para cada classe acima– ênfase em síntese em prototipação– ergo, de-ênfase em latches
![Page 50: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/50.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
Diretivas de Codificação RTL para SystemC
• Lembrando - SystemC e HDLs (e.g. VHDL, Verilog)– sem construções para definir explicitamente
componentes RTL (registradores, latches, portas lógicas, buffers, etc)
– motivo principal - independência de tecnologia!!– ferramentas específicas de síntese - inferem
componentes RTL!
![Page 51: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/51.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
Inferência de Registradores e Latches
• Regra de base– ao inferir registradores/latches - sinais de
controle/dados controláveis das entradas do projeto– inferir registrador/latch com set/reset assíncronos
facilita inicialização - RECOMENDÁVEL!
• Conjuntos de diretivas para– inferência de flip-flops/registradores– inferência de latches, evitando inferência de latches
![Page 52: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/52.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
Inferência de Registradores
• Flip-flop D simples (FFD)– usar processo (SC_METHOD) sensível a exatamente
uma borda de um sinal de controle– síntese RTL cria FFs para todas as variáveis/sinais
aos quais são atribuídos valores no processo
Componente Inferido
Código
![Page 53: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/53.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
• Flip-flop D com Set ou Reset assíncrono ativo em 1– lembrar - não misturar sensitividade ao nível e à borda– ergo, p/ FFs, usar sensitividade à borda para todos os
sinais de controle (clock, set/reset, etc)
/* Rising-edge-triggered DFF */#include "systemc.h"SC_MODULE (dff3) {
sc_in<bool> in_data, reset;sc_out<bool> out_q;sc_in<bool> clock; // clock portvoid do_dff_pos ();// ConstructorSC_CTOR (dff3) {
SC_METHOD (do_dff_pos);sensitive_pos << clock << reset;
}};void dff3::do_dff_pos () {
if (reset.read()){out_q.write(0);
}else{out_q.write(in_data.read());
}}
Componente Inferido
Código
Inferência de Registradores
![Page 54: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/54.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
Inferência de Registradores
• Flip-flop D com Set e Reset assíncrono ativo em 1– problema aqui é que fazer quando set e reset ativos
simultaneamente - estabelecer prioridade!– Cuidado! Prioridade pode ser garantida via código, e não
pelo processo de inferência - limitações da biblioteca de tecnologia específica
Componente Inferido
Código
![Page 55: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/55.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
Inferência de Registradores
• Flip-flop D com Set ou Reset síncrono– set/reset não aparece na lista de sensitividade!– se componente não existe na biblioteca, inferência usa
lógica combinacional na entrada do FF– notar: código do processo idêntico ao FF com set/reset
assíncrono, só a sensitividade muda • diferente de Verilog/VHDL
Componente Inferido
Código
![Page 56: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/56.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
Inferência de Registradores
• Flip-flop JK– usar comando switch…– codificação similar a FFD com set e reset síncronos
void jkff1::jk_flop() { sc_uint<2> temp;
//temp to create vector temp[1] = j.read( ); temp[0] = k.read( ); switch(temp) { case 0x1: q.write(0);
// write a zerobreak;
case 0x2: q.write(1);// write a 1break;
case 0x3: // toggleq.write(!q.read());break;
default: break;// no change
}}
/* Rising-edge-triggered JK FF */#include "systemc.h"SC_MODULE (jkff1) {
sc_in<bool> j, k;sc_inout<bool> q;// inout to read q for togglesc_in<bool> clk;// clock port// Method for D-flip-flopvoid jk_flop ();// ConstructorSC_CTOR (jkff1) {
SC_METHOD (jk_flop);sensitive_pos << clk;
}};
![Page 57: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/57.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
• Flip-flop Toggle com Set assíncrono– vários outras combinações com exemplos no manual RTL
da Synopsys
#include "systemc.h"
SC_MODULE( tff1 ) {sc_in<bool> set, clk;sc_inout<bool> q; // inout to read q for togglevoid t_async_set_fcn ();SC_CTOR( tff1 ) {
SC_METHOD( t_async_set_fcn);sensitive_pos << clk << set;
}};
void tff1::t_async_set_fcn () {if (set.read()){
q.write(1);}else{
q.write(!q.read());}
}
Componente Inferido
Código
Inferência de Registradores
![Page 58: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/58.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
Inferência de Latches
• Em simulação, uma variável mantém valor até sofrer nova atribuição– latch implementa esta funcionalidade em hardware– freqüentemente, inferência não-intencional, desnecessária e
incorreta de latches - problemas na implementação!!!– principal fonte de problemas: condições não especificadas em
comandos condicionais - EVITAR!!!
• Síntese RTL suporta latches D e SR– aqui, inferência de latch e como evitá-la– extensa lista de exemplos adicionais no manual RTL da
Synopsys
![Page 59: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/59.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
• Latch D inferido a partir de comando if– comando if sem cláusula else leva a inferência de latch!– latches são difíceis de testar, pois são escritos sem sinal
de relógio– hazards combinacionais nas entradas podem causar
mudança - síntese RTL de circuitos combinacionais não garante implementação sem hazard!!
#include "systemc.h"
SC_MODULE( d_latch1 ) {sc_in<bool> in_data;sc_in<bool> clock;sc_out<bool> out_q;
// Method processvoid d_latch_fcn () {
if (clock.read()){out_q.write(in_data.read());}
}// ConstructorSC_CTOR( d_latch1 ) {
SC_METHOD( d_latch_fcn);sensitive << in_data << clock;
}};
Componente Inferido
Código
Inferência de Latches
![Page 60: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/60.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
• Evitando inferência de latches– atribuir um valor a cada sinal para todas as cláusulas de
comando condicional (if, switch, operador condicional ?:)
Componente Inferido
Código
Inferência de Latches
![Page 61: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/61.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
Inferência de Tristates
• Tristate inferido sempre que valor ‘Z’ atribuído a variável• Atribuição deve ocorrer em um comando condicional
(if, switch ou via operador condicional ?:)• Somente os tipos sc_logic e sc_lv suportam o valor
‘Z’
![Page 62: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/62.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
• Tristate simples
Componente Inferido
Código
Inferência de Tristates
![Page 63: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/63.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
• Tristate com controle associado
Inferência de Tristates
Componente Inferido
Código
![Page 64: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/64.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
• Barramento tristate– notar a necessidade do uso de um tipo SystemC resolvido
// Three-state buffer inference// with resolved logic output#include "systemc.h"
SC_MODULE( tristate_ex3 ) {sc_in<bool> in_sela, in_selb;sc_in<sc_logic> in_a, in_b;sc_out_rv<1> out_1;
// first three-state drivervoid tristate_a();
// second three-state drivervoid tristate_b();
// ConstructorSC_CTOR( tristate_ex3 ) { SC_METHOD( tristate_a); sensitive << in_sela << in_a; SC_METHOD( tristate_b); sensitive << in_selb << in_b;}
};
void tristate_ex3::tristate_a() { if (in_sela.read()){
out_1.write(in_a.read()); }else{
out_1.write("Z"); }}
void tristate_ex3::tristate_b() { if (in_selb.read()){
out_1.write(in_b.read()); }else{
out_1write("Z"); }}
Inferência de Tristates
![Page 65: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/65.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
• Tristate com entradas registradas (ou registrador com saída tristate)
#include "systemc.h"
SC_MODULE( tristate_ex4 ) {sc_in<bool> control;sc_in<sc_logic> data;sc_out<sc_logic> ts_out;sc_in_clk clk;// Method for three-state drivervoid tristate_fcn () { if (control.read()){
ts_out.write(data.read()); }else{ts_out.write(’Z’);}
}// ConstructorSC_CTOR( tristate_ex4 ) {
SC_METHOD( tristate_fcn);sensitive_pos << clk;} // note inferred seq logic
};
Componente Inferido
Código
Inferência de Tristates
![Page 66: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/66.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
• Tristate com entradas registradas e sem controle registrado (registrador com saída tristate)– mais comuns que ambas entradas registradas
Inferência de Tristates
![Page 67: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/67.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
Descrição de Máquinas de Estado Finitas
• Descrições devem ser explícitas• FSM = registrador de estado (lógica seqüencial) +
função de transição de estados (lógica combinacional) +
função de saída (lógica combinacional)
• Blocos combinacionais podem ser unidos para reduzir área (ajudar a síntese RTL)
• Entradas e Saídas dependem do estado atual (sempre) e das entradas instantâneas (opcionalmente)
• Implementações - processo seq + processo comb / processo seq + 2 processos comb / 1 processo (Moore)
![Page 68: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/68.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
Descrição de Máquinas de Estado Finitas
• Exemplo do manual Synopsys RTL (Impl. errada!)
• Implementação SystemC do manual corresponde a:
S0
S1
S2- / a=0, b=0
input2==0 /a=0, b=1
input2==1 /a=0, b=1
input1==1 /a=1, b=0
input1==0,input2==0 /a=0, b=0
input1==0,input2==1 /a=1, b=0
reset==1
![Page 69: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/69.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
Sumário
Introdução - SystemC, Síntese, Prototipação
Como criar Módulos RTL em SystemC
Usando o Subconjunto Sintetizável de SystemC
Diretivas de Codificação RTL para SystemC
• Modelagem e Síntese Comportamental
![Page 70: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/70.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
Comparando Modelagens RTL e Comportamental
• Modelagem RTL– conjunto de registradores e a transferência de informações
entre estes– no caminho - lógica combinacional processa as informações – sistema é uma FSM + recursos de armazenamento/
transformação controlados pela FSM– modelo preciso a nível de ciclo de relógio
• Modelagem comportamental– descreve-se a funcionalidade do projeto (algoritmo)– projetista não descreve FSM ou recursos (síntese infere)– independente de tecnologia e arquitetura de implementação
![Page 71: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/71.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
Comparando Modelagens RTL e Comportamental
• Vantagens da modelagem comportamental– modelo é menor– facilita a captura de algoritmos complexos– torna a simulação mais rápida– permite acomodar alterações tardias da especificação– são mais intuitivos de escrever e entender - mais fáceis de
manter– aumenta o reuso de projeto– aumenta produtividade de projeto e a capacidade de
exploração do espaço de soluções de projeto– sintetiza automaticamente acessos a memória síncrona
![Page 72: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/72.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
Definição e Passos: Síntese Comportamental
• Definição (Jung - SNUG 2003 - Coréia do Sul)– Um processo automatizado de refinar um modelo
algorítmico para uma descrição RTL
• Passos– temporizar operações, escalonar cada leitura escrita e
operação em um determinado ciclo de relógio– alocar componentes (registradores e processamento)– criar o bloco de dados com os componentes alocados,
interconectando-os com multiplexadores ou barramentos– criar a FSM de controle e a lógica de controle da interface
de memória
![Page 73: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/73.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
Seleção de Nível de Abstração para Síntese
• Escolha síntese RTL se:– é mais fácil conceber o sistema como uma FSM e um
bloco de dados do que como um algoritmo (e.g. proc)– o projeto deve atender requisitos de altíssimo
desempenho– o subsistema de memória é complexo
(SDRAM/RAMBUS)– o projeto é assíncrono
![Page 74: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/74.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
Seleção de Nível de Abstração para Síntese
• Escolha síntese comportamental se:– é mais fácil conceber o projeto como implementando
um algoritmo, e não a partir de uma micro-arquitetura (e. g. uma transformada rápida de Fourier, filtros, quantização inversa)
– se o projeto possui um fluxo de controle muito complexo (e.g. um processador de rede)
– se o subsistema de memória acessa memórias síncronas simples
![Page 75: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/75.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
Aplicações para Síntese Comportamental
• Comunicação digital - cable modem, telefones celulares, LANs wireless e modems xDSL
• Processamento de imagem e vídeo - câmeras digitais, impressoras e set-top boxes
• Redes - chaves ATM e roteadores de pacotes• DSP - filtros, codecs e equalizadores de canal• Processadores embarcados - controladores de
cache, aceleradores e unidades aritméticas de ponto fixo
![Page 76: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/76.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
Exemplos de Codificação RTL e Comportamental
• Estilo RTL– implementa o projeto como lógica combinacional entre
registradores com descrição explícita do bloco de dados e da FSM de controle
– usa apenas os tipos de dados sintetizáveis de SystemC– usa o subconjunto sintetizável da linguagem C++
• Exemplo do manual Synopsys RTL (FIFO)
![Page 77: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/77.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
Exemplos de Codificação RTL e Comportamental
• Estilo Comportamental– comportamento descrito como algoritmo
• funções usadas para controlar a complexidade do projeto
– se o modelo inicial possui tipos float, etc, deve-se trocá-los para tipos sintetizáveis SystemC
– define-se o protocolo de E/S com precisão ao nível de ciclos de relógio
– usa o subconjunto sintetizável da linguagem SystemC
• Exemplo do manual Synopsys RTL (FIFO)
![Page 78: BRAZIL IP The BrazilIP Network GAPH - FACIN - PUCRS Síntese e Prototipação de Sistemas Digitais a partir de SystemC Ney Laert Vilar Calazans GAPH - PPGCC](https://reader035.vdocuments.com.br/reader035/viewer/2022062623/552fc102497959413d8be74d/html5/thumbnails/78.jpg)
BRAZIL IPBRAZIL IP
The BrazilIP Network
GAPH - FACIN - PUCRS
FIM