A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

MO801: Tópicos em Arquitetura e Hardware 1 Tópicos em System-Level Design Sandro Rigo 2 o Semestre.

Apresentações semelhantes


Apresentação em tema: "MO801: Tópicos em Arquitetura e Hardware 1 Tópicos em System-Level Design Sandro Rigo 2 o Semestre."— Transcrição da apresentação:

1 MO801: Tópicos em Arquitetura e Hardware http://www.ic.unicamp.br/~sandro 1 Tópicos em System-Level Design Sandro Rigo sandro@ic.unicamp.br 2 o Semestre de 2006 Projeto de Sistemas Usando SystemC

2 MO801: Tópicos em Arquitetura e Hardware http://www.ic.unicamp.br/~sandro 2 História... SystemC: modelar hardware e software usando C++ Setembro/99: Primeiro release (0.9) público Janeiro/00: Versão 1.0 (Somente RTL) Julho/01: Versão 2.0 (eventos, canais, portas) 2005: Versão 2.1 2006: Padrão IEEE 1666

3 MO801: Tópicos em Arquitetura e Hardware http://www.ic.unicamp.br/~sandro 3 O que é SystemC SystemC: Uma biblioteca de classes C++ e um kernel de simulação Por que C++ é inadequado para modelar hardware? –Não suporta noção de eventos sequenciados no tempo –Não suporta concorrência –Tipos primitivos são inadequados para descrever hardware. Exemplo: tri-state (Z)

4 MO801: Tópicos em Arquitetura e Hardware http://www.ic.unicamp.br/~sandro 4 O que é SystemC SystemC estende C++ sem alterar a semântica da linguagem Ambiente de programação fica inalterado –Normalmente usa-se GCC para compilar os modelos –O executável gerado é a chamada especificação executável do sistema

5 MO801: Tópicos em Arquitetura e Hardware http://www.ic.unicamp.br/~sandro 5 O que é SystemC Principal objetivo? Aumento de produtividade. –Desenvolvimento simultâneo de HW/SW em alto nível de abstração usando a mesma linguagem –Exploração de particionamento HW/SW –Verificação funcional desde os primeiros estágios –Reuso de modelos anteriores –Especificação executável do sistema –SystemC não tem o objetivo de substituir HDLs em nível RTL!

6 MO801: Tópicos em Arquitetura e Hardware http://www.ic.unicamp.br/~sandro 6 Linguagens * Fonte: SystemC from the Ground Up Concorrente Direto

7 MO801: Tópicos em Arquitetura e Hardware http://www.ic.unicamp.br/~sandro 7 Complexidade X Abstração * Fonte: SystemC from the Ground Up

8 MO801: Tópicos em Arquitetura e Hardware http://www.ic.unicamp.br/~sandro 8 Arquitetura de SystemC * Fonte: SystemC from the Ground Up

9 MO801: Tópicos em Arquitetura e Hardware http://www.ic.unicamp.br/~sandro 9 A Linguagem SystemC Adiciona suporte à modelagem de hardware a C++ fornecendo: –Um modelo de tempo –Tipos de dados –Hierarquia de módulos –Gerenciamento de comunicação entre módulos –Modelo de concorrência

10 MO801: Tópicos em Arquitetura e Hardware http://www.ic.unicamp.br/~sandro 10 Padrão para Diagramas em SystemC * Fonte: SystemC from the Ground Up

11 MO801: Tópicos em Arquitetura e Hardware http://www.ic.unicamp.br/~sandro 11 Tempo 64 bits de resolução Classe sc_time (SC_FSEC, SC_SEC) Tempo global é avançado pelo kernel sc_clock

12 MO801: Tópicos em Arquitetura e Hardware http://www.ic.unicamp.br/~sandro 12 Tipos de Dados inteiros (largura em bits): sc_int<> ponto fixo: sc_fixed<> lógica: sc_logic (0,1,X,Z), sc_bit não oferece suporte a modelagem de circuitos analógicos

13 MO801: Tópicos em Arquitetura e Hardware http://www.ic.unicamp.br/~sandro 13 Que tipo usar? * Fonte: SystemC from the Ground Up Tipos de FP e ponto- fixo não são sintetisáveis ! Ferramentas de síntese normalmente exigem tipos sc_* !

14 MO801: Tópicos em Arquitetura e Hardware http://www.ic.unicamp.br/~sandro 14 Hierarquia e Estrutura Classe SC_MODULE Contém os processos registrados e chamados pelo kernel Hierarquia se dá pela instanciação de módulos dentro de módulos Equivalente ao “ENTITY” do VHDL

15 MO801: Tópicos em Arquitetura e Hardware http://www.ic.unicamp.br/~sandro 15 Comunicação Modelada através de canais Canais podem representar mecanismos simples, como um fio ou uma FIFO, ou também implementar esquemas mais complexos Fornecidos: sc_mutex, sc_signal<>, sc_fifo Módulos conectam-se aos canais através das portas: sc_port<> Canais implementam interfaces (sc_interface) Mesmo mecanismo de classes abstratas em C++

16 MO801: Tópicos em Arquitetura e Hardware http://www.ic.unicamp.br/~sandro 16 Comunicação * Fonte: SystemC from the Ground Up

17 MO801: Tópicos em Arquitetura e Hardware http://www.ic.unicamp.br/~sandro 17 Concorrência Concorrência na simulação é sempre uma ilusão! Unidades concorrentes são simuladas individualmente –SC_METHOD, SC_THREAD, SC_CTHREAD –São partes de um SC_MODULE e registrados na fase de elaboração pelo kernel A execução de uma unidade é interrompida quando a execução de outra é necessária para o comportamento continuar corretamente alinhado no tempo Eventos são responsáveis por disparar as trocas de contexto

18 MO801: Tópicos em Arquitetura e Hardware http://www.ic.unicamp.br/~sandro 18 Processos SC_METHOD: –Membro de um SC_MODULE onde o tempo não passa entre sua invocação e retorno –São invocados repetidamente pelo kernel SC_THREAD: –São invocados apenas uma vez, mas podem ser suspensas e permitem que o tempo passe antes de continuarem –Similar a threads de software SC_CTHREAD: –Uma SC_THREAD sensível ao clock

19 MO801: Tópicos em Arquitetura e Hardware http://www.ic.unicamp.br/~sandro 19 Componentes de SystemC * Fonte: SystemC from the Ground Up

20 MO801: Tópicos em Arquitetura e Hardware http://www.ic.unicamp.br/~sandro 20 Etapas da Simulação Elaboração: –Instanciação dos componentes –Conexão entre módulos –Registro de processos Simulação –Comportamento é executado Pós-processamento –Opcional –Geração de relatórios, criação de arquivos, etc

21 MO801: Tópicos em Arquitetura e Hardware http://www.ic.unicamp.br/~sandro 21 Arquivo principal #include ”systemc.h ” #include ”modulo.h” int sc_main(int argc, char *argv[ ]) { //Elaboração sc_start(); //Início e término da Simulação //Pós-processamento return 0; //Exit code }

22 MO801: Tópicos em Arquitetura e Hardware http://www.ic.unicamp.br/~sandro 22 SC_MODULE #include ”systemc.h” SC_MODULE(Nome){ //Portas //Membros: instância de canais, variáveis e sub-módulos SC_CTOR(Nome){ //Construtor //Alocação de sub-módulos //Conexão de sub-módulos SC_THREAD(Processo) ; //Registra processo sensitive << Clk.pos( ) ; //Registra lista de sensibilidade //Inicializações em geral } //Declaração e/ou implementação de Processos void Processo(void); }; #define SC_MODULE (module_name) \ struct module_name: public sc_module

23 MO801: Tópicos em Arquitetura e Hardware http://www.ic.unicamp.br/~sandro 23 Construtores Alternativos //FILE: module_name.h SC_MODULE(module_name) { SC_HAS_PROCESS(module_name); module_name(sc_module_name instname[, other_args…]) : sc_module(instname) //Outras inicializações { //Corpo do construtor } }; Útil para ter mais de um parâmetro no construtor

24 MO801: Tópicos em Arquitetura e Hardware http://www.ic.unicamp.br/~sandro 24 Exemplo

25 MO801: Tópicos em Arquitetura e Hardware http://www.ic.unicamp.br/~sandro 25 Módulo Maior #include ”systemc.h” SC_MODULE(Maior) { sc_in A, B; sc_out C; void doMaior ( ){ C.write (A.read ( ) > B.read ( ) ? A.read ( ) : B.read ( ) ) ; } SC_CTOR(Maior){ SC_METHOD(doMaior) ; sensitive << A << B; } };

26 MO801: Tópicos em Arquitetura e Hardware http://www.ic.unicamp.br/~sandro 26 Gerador de estímulos #include ”systemc.h” SC_MODULE(Estimulos){ sc_out A, B; sc_in Clk ; void GeraEstimulos ( ) { A.write(5) ; B.write(7) ; wait() ;... sc_stop ( ) ; } SC_CTOR(Estimulos){ SC_THREAD(GeraEstimulos) ; sensitive << Clk.pos( ) ; } };

27 MO801: Tópicos em Arquitetura e Hardware http://www.ic.unicamp.br/~sandro 27 Arquivo principal #include ”systemc.h ” #include ”maior.h” #include ”estimulos.h ” int sc_main(int argc, char *argv[ ]) { sc_signal sinalA, sinalB, sinalC; sc_clock clock(”Clock”, 10, SC_NS, 0.5); Estimulos est(”Estimulos”); Maior m(”Maior”); est.A(sinalA); est.B(sinalB); est.Clk(clock); m.A(sinalA); m.B(sinalB); m.C(sinalC); sc_start(); return 0; }

28 MO801: Tópicos em Arquitetura e Hardware http://www.ic.unicamp.br/~sandro 28 Fluxo de Compilação Arquivos Fontes (*.cpp,*.H) Arquivos Objeto (*.o) G++ Bibs SystemC STL Executável LD

29 MO801: Tópicos em Arquitetura e Hardware http://www.ic.unicamp.br/~sandro 29 Importante !!! Se você nunca trabalhou com SystemC antes, ou caso queira relembrar os principais conceitos, faça o tutorial online da Forte !!! www.forteds.com

30 MO801: Tópicos em Arquitetura e Hardware http://www.ic.unicamp.br/~sandro 30 Caracterização de Modelos Untimed (UTF): –Aplica-se tanto a interface (comunicação) quanto a funcionalidade –Tempo não é utilizado na execução, podendo haver apenas uma ordenação de passos –Normalmente utiliza tipos nativos de C++ A implementação do sistema é puramente algorítmica!!!

31 MO801: Tópicos em Arquitetura e Hardware http://www.ic.unicamp.br/~sandro 31 Caracterização de Modelos Timed Functional (TF): –Aplica-se tanto a interface (comunicação) quanto a funcionalidade –Tempo é utilizado na execução e transporte de dados –Modela latências –Normalmente utiliza tipos nativos de C++ –Pode ser misturado com UTF no mesmo modelo

32 MO801: Tópicos em Arquitetura e Hardware http://www.ic.unicamp.br/~sandro 32 Caracterização de Modelos Bus Cycle Accurate (BCA): –Aplicado à interface (comunicação) –Tempo é preciso em termos de ciclos, normalmente com a presença de um clock no sistema –Não obriga detalhes em nível de pinos –Normalmente inclui tipos nativos de C++ com tipos de SystemC –Transferências de informação são modeladas como transações

33 MO801: Tópicos em Arquitetura e Hardware http://www.ic.unicamp.br/~sandro 33 Caracterização de Modelos Pin Cycle Accurate (PCA): –Aplicado à interface (comunicação) –Tempo é preciso em termos de ciclos, com a presença de um clock no sistema –Obriga detalhes em nível de pinos na descrição da interface –Normalmente inclui tipos nativos de C++ com tipos de SystemC

34 MO801: Tópicos em Arquitetura e Hardware http://www.ic.unicamp.br/~sandro 34 Caracterização de Modelos Register Transfer Accurate (RTA): –Aplicado à funcionalidade –Totalmente temporizado com a presença de um clock no sistema –Interfaces com detalhes em nível de pinos –Descreve as operações para cada registrador, bit e barramento em cada ciclo –Normalmente inclui tipos nativos de C++ com tipos de SystemC –Sinônimo de RTL

35 MO801: Tópicos em Arquitetura e Hardware http://www.ic.unicamp.br/~sandro 35 Tipos de Modelos System Architectural Model (SAM): –Descrevem tanto componentes de hardware como software –São uma especificação executável do sistema –Úteis para exploração de arquiteturas e algoritmos FuncionalidadeInterface UTF

36 MO801: Tópicos em Arquitetura e Hardware http://www.ic.unicamp.br/~sandro 36 Tipos de Modelos System Performance Model (SPM): –Descrevem tanto componentes de hardware como software –São uma especificação executável do sistema temporizada –Úteis para determinação de desempenho em alto nível e estimativas de tempo. Não têm precisão de ciclos. FuncionalidadeInterface UTF ou TF

37 MO801: Tópicos em Arquitetura e Hardware http://www.ic.unicamp.br/~sandro 37 Tipos de Modelos Transaction Level Model (TLM): –Descrevem hardware, sendo uma especificação executável da plataforma –Interface pode ou não ter precisão de ciclos –Funcionalidade não tem precisão de ciclos. FuncionalidadeInterface TF

38 MO801: Tópicos em Arquitetura e Hardware http://www.ic.unicamp.br/~sandro 38 Tipos de Modelos Behavioral Synthesis Model: –Definição condiz com as necessidades das ferramentas da Forte, padrão em behavioral synthesis para SystemC atualmente –Funcionalidade não tem precisão de ciclos. Comportamentos modelados algoritmicamente FuncionalidadeInterface TFPCA

39 MO801: Tópicos em Arquitetura e Hardware http://www.ic.unicamp.br/~sandro 39 Tipos de Modelos Bus Functional Model: –Tipicamente usado para simulação, não síntese –Funcionalidade é normalmente descrita por transações FuncionalidadeInterface TransaçõesPCA

40 MO801: Tópicos em Arquitetura e Hardware http://www.ic.unicamp.br/~sandro 40 Tipos de Modelos Register Transfer Level (RTL): –Descrição detalhada do hardware –Usado para síntese –Modelos escritos em VHDL e Verilog estão normalmente neste nível FuncionalidadeInterface RTAPCA

41 MO801: Tópicos em Arquitetura e Hardware http://www.ic.unicamp.br/~sandro 41 Referências SystemC from the Ground-up - David C. Black e Jack Donovan, Kluwer Academic Press, 2004 Transaction Level Modeling in SystemC – Adam Rose, Stuart Swan, John Pierce, Jean-Michel Fernandez, OSCI TLM Working Group SystemC Tutorial. Forte Design Systems. http://www.forteds.com


Carregar ppt "MO801: Tópicos em Arquitetura e Hardware 1 Tópicos em System-Level Design Sandro Rigo 2 o Semestre."

Apresentações semelhantes


Anúncios Google