d ] } À v } u ^ ] u } u µ ] } v ] w / v ( µ µ , Á µ o ì ï · title: microsoft powerpoint -...
TRANSCRIPT
Tópicos Avançados em Sistemas Computacionais: Infraestrutura de HardwareAula 03Prof. Max Santana Rolemberg [email protected] de Engenharia de Computação
POR QUÊ USAR SYSTEMC?
• HDLs são estáveis e dominadas• Modelagem em C/C++ propensa a erros deinterpretação durante a tradução• SystemC permite reuso de verificação, evitareescrver código de verificação• Produtividade aumentada
– Modificar um projeto, mas rápido do que recodificá-lo– Verificar projeto modificado, mas rápido do rqueverificar modificados
Por quê usar SystemC?
3
• SystemC não é uma linguagem– Uma biblioteca de classes e macros para C++
• Primeira versão em 1999 pela Open systemC Initiative• Elimina os erros de conversão C/C++ para HDL• Gera especificações executáveis • Alta velocidade de simulação em nível de sistema• Nem tudo que se escreve em SystemC é transformável em hardware.
– Tudo é simulável– Nem tudo é sintetizável– Nem tudo é prototipável
4
SystemC
Características do SystemC
5
Metodologia de Projeto SystemC
6
Metodologia de ProjetoSystemC
7
Ambiente do SystemC
8
• Toda a implementação é feita em um ambiente C++. E é composta por:– Módulo
• Bloco básico para a construção de hardware• Equivale a module do verilog e entity/architecture do VHDL• Pode conter:
– Processos– Instâncias de outros módulos– Módulos internos– Processos
• Trecho de código executado sequencialmente• Múltiplos processos paralelos/concorrentes
– Portas• Sinal de entrada ou saída
9
Implementação SystemC
Um Sistema em SystemC
10
Um Sistema em SystemC
11
Exemplo de um SystemC
12
• Declaração de módulo• Declaração de processos• Declaração do construtor• Declaração de sinal• Instanciar um módulo• Hierarquia de módulos
13
Estrutura de um SystemC
Declaração de Módulo
14
Declaração de Processos
15
• Os processos são definidos de forma similar a uma função C++• Tipos de processos
– SC_METHOD– SC_THREAD (Proibido em SystemC RTL)
• Se o processo precisa ser instanciado mais de uma vez, deve estar dentro de um módulo.• O disparo de execução de um processo é baseado na definição da lista de sensibilidade
16
Processo
Processo SystemCSC_METHOD• Não mantém um estado interno: quando ativado, executa do início ao fim e retorna o controle para o mecanismo de chamada.• Processo mais rápido• São recomendados para síntese
17
Processo SystemCSC_THREAD• Pode ser suspenso pela chamada de wait() ou suas variantes• Pode suspender ela mesma e continuar a execução mais tarde do ponto onde parou• Tem sua própria thread de operação• Mais lendo que SC_METHOD• Mais utilizados para simulação em níveis mais abstratos
18
• sensitive() ou sensitive_pos() ou sensitive_neg()• Lógica combinacional, incluir todos os sinais de entrada• Lógica sequencial síncrona, incluir só clock e sinais com prioridade sobre este, tais como set/reset assíncronos se existem
19
Lista de Sensibilidade
Declaração do Construtor
20
• Os sinais são usados para comunicação entre processos e/ou módulos• Sinais não possuem direção
21
Declaração de Sinal
• As variáveis devem ser usadas para uso interno do módulo.• Não faça processos se comunicarem via variáveis
22
Declaração de Variáveis
Instanciação e Amarração
23
• O 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 em VHDL)
24
Leitura e Escrita de Valoresem um Processo