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

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

Electronic System Level Curso PDesigner. 2 Agenda Introdução Principais desafios para o projeto de SoCs IP Cores Electronic System Level (ESL) –Projeto.

Apresentações semelhantes


Apresentação em tema: "Electronic System Level Curso PDesigner. 2 Agenda Introdução Principais desafios para o projeto de SoCs IP Cores Electronic System Level (ESL) –Projeto."— Transcrição da apresentação:

1 Electronic System Level Curso PDesigner

2 2 Agenda Introdução Principais desafios para o projeto de SoCs IP Cores Electronic System Level (ESL) –Projeto Baseado em Plataforma SystemC TLM SPIRIT Consortium PDesigner –Visão geral –Arquitetura –Tutorial –exercícios

3 3 Cenário Design House Oportunidade Especificação Circuito Integrado

4 4 Cenário Especificação Circuito Integrado

5 5 Erros de Projeto

6 6 Janela de Mercado

7 Platforms + Electronic System Level (ESL)

8 8 Plataformas MPSoC Utilização de múltiplos processadores SoCs Alta performance Baixa potência Baixa frequência de clock Utilização de processadores heterogêneos

9 9 Linguagens de Projeto & Tarefas LanguageTask Requirements AlgorithmExploration ArchitectureAnalysis Verification RTL Design Text / UML TransactionLevelSystemC VHDLVerilog HVLs extend & accelerate the RTL design process and enable RTL designers to cross the chasm to system level design AssertionsPSL/SVA SystemVerilog C/C++UntimedSystemC

10 10 What is ESL? SoC Technology System specification Processor core Bus core memory IP (Devices)

11 11 What is ESL? SoC Technology FUNC BEH RTL GATE System specification Abstraction Levels

12 12 What is ESL? SoC Technology FUNC BEH RTL GATE System specification System Abstraction Levels

13 13 What is ESL? UML SysMLMatlab SystemC SystemVerilog SW HW SW HW Synthesizable Simulation Modeling Languages ESL

14 14 Problems UML SysMLMatlab SystemC SystemVerilog SW HW SW HW Synthesizable Simulation Modeling Languages ESL Methodologies & Tools

15 SystemC TLM

16 16 SystemC TLM – Arquitetura Básica Initiator Target sc_portsc_export tlm_transport_iftransport(.) transport() tlm_transport_if virtual RSP transport( const REQ & ) = 0; transport(.) sc_export exports tlm_transport_if for use by outside world RSP transport( const REQ & ) is implemented in the slave tlm_transport_if is the tlm bidirectional blocking interface template class tlm_transport_if : public virtual sc_interface { public: virtual RSP transport( const REQ & ) = 0;

17 17 SystemC TLM (Transaction Level Modeling) Comunicação utilizando chamada de funções Pontos Fortes: –Simplicidade –Rápido e compacto –Integração de modelos de hardware e software –Suporte a reuso de design e verificação de IP –Usabilidade –Transparente a: Nível de Abstração Diferentes arquiteturas de comunicação (barramento, NOC,...) Diferentes protocolos Principais conceitos: –Fluxo de dados Unidirecional x Bidirecional –Requisições e respostas separadas –Blocking x Nonblocking –Uso de sc_port e sc_export

18 SPIRIT Consortium

19 19 SPIRIT Consortium

20 20 SPIRIT Padrão definido por um consórcio de empresas para distribuição de IPs Baseado em XML Descrição de IPs independente de linguagem

21 21 SPIRIT

22 22 SPIRIT Consortium

23 23 SoC Design Tool

24 24 Geradores/Configuradores

25 25 Interações de Objetos IP-XACT

26 26 Bus definition: é um objeto que descreve uma interface interface de barramento (nomes de sinais, direção, largura, uso) e as restrições que se aplicam a estes sinais. Meta Data: é um modo que pode ser interpretado por ferramentas para se descrever diversos aspectos do projeto

27 27 Design: descreve as instâncias de um componente e as interconexões entre as instâncias. As interconexões definem as conexões ponto-a-ponto entre interfaces dos componentes. Gerador/Configurador: são objetos executáveis utilizados para gerar os componentes ou configurá-los.

28 28 Exemplo Simples de um SoC

29 29 Exemplo Simples de um SoC: Design File Identificador da versão Nome do SoC Nome da Biblioteca

30 30 Exemplo Simples de um SoC: Design File

31 31 Exemplo Simples de um SoC: Design File

32 PDesigner

33 33 Framework MPSoC Modeling MPSoC Simulation Architecture Exploration Processor Modeling and Integration

34 34 Framework SPIRIT 1.2 web page

35 35 Modelagem de Plataformas Modelagem gráfica de plataformas Framework baseado no Eclipse Ambiente Gráfico SPIRIT 1.2 SystemC 2.1

36 36 Simulação de Plataformas Tela de Console com resultados da simulação Controle de Simulação –Parar simulação

37 37 Exploração de Arquiteturas Simulação em um único passo Integrado ao Ambiente de modelagem de plataformas (PBuilder)

38 38 Modelagem de Processadores ArchC 2.0 Exporta componentes para o PBuilder Descrição Processador Geração Processador

39 39 Modelagem de Plataformas: PBuilder Graphical Editor Properties View Platform View Palette

40 40 PDBuilder - Views PEditor –Editor que possibilita a modelagem de plataformas graficamente –Componentes da biblioteca distribuídos na paleta de componentes

41 41 Conexão de Componentes MipsSimple Bus ArchC (TLM) Simple BusFastMem SimpleBus (TLM) Wrapper ArchC - SimpleBus

42 42 PDBuilder - Views Platform View –Miniatura da plataforma modelada Outline –Lista de componentes instanciados

43 43 PDBuilder - Views Properties –Tabela editável com as propriedades do componente/platafor ma selecionada Console –Mostra resultado de compilação, simulação e análise

44 44 Biblioteca de Componentes: PDLibrary Biblioteca de Componentes Wrappers Adicionar Componente Remover Componente SystemC TLM

45 45 Distribuição de IP: IPZip Descrição do IP TLM IPZip(Wizards) Biblioteca de Componentes Descrição do IP TLM IPZip(Wizards)

46 46 Plugin IPZip Wizard de geração de distribuição de componente Gera pacote de distribuição com arquivos de configuração SPIRIT a partir da descrição alto nível do componente

47 47 Fluxo de Distribuição do IPZip /******************************************************************/ /* The ArchC MIPS-I functional model. */ /* Author: Sandro Rigo and Marcus Bartholomeu */ /* */ /*...*/ /* */ /* The ArchC Team */ /* Computer Systems Laboratory (LSC) */ /* IC-UNICAMP */ /* http://www.lsc.ic.unicamp.br */ /* Version: 0.75 */ /*****************************************************************/ #include "mips1_arch.H" mips1_arch::mips1_arch() : ac_arch_dec_if<mips1_parms::ac_word, mips1_parms::ac_Hword>(mips1_parms::AC_MAX_BUFFER), ac_pc("ac_pc", 0, time_step), DM_port("DM_port", 5242880), DM(*this, DM_port), RB("RB", time_step) { ac_mt_endian = mips1_parms::AC_MATCH_ENDIAN; ac_tgt_endian = mips1_parms::AC_PROC_ENDIAN; IM = &DM; APP_MEM = &DM; } class simple_bus_fast_mem : public simple_bus_slave_if, public sc_module { public: // constructor simple_bus_fast_mem(sc_module_name name_, unsigned int start_address, unsigned int end_address) : sc_module(name_), m_start_address(start_address), m_end_address(end_address) {... private: char * MEM; unsigned int m_start_address; unsigned int m_end_address; } Cycle Accurate Timing Estimated Untimed RTL Verilog #include "mips1.H"... const char *project_name="mips1"; const char *project_file="mips1.ac";... int sc_main(int ac, char *av[]){ //Platform Components simple_bus_fast_mem mem("fast_mem",0x00,0x9fffff); mips1 p1("p1");... //Platform Conenctions p1.DM_port(DM_wrapper1.target_export);... p1.init();... cerr << endl; sc_start(-1); p1.PrintStat();... cerr << endl; return p1.ac_exit_status&& p2.ac_exit_status; }

48 48 Modelagem de Processador: ArchC

49 49 Elementos da linguagem ArchC Descrição ArchC Descrição dos Recursos (AC_ARCH) Descrição do ISA (AC_ISA) Descrição do formato, tipo e codificação/decodifição das instruções Descrição do comportamento das instruções (C++/SystemC). Registradores. Memória. Estrutura de Pipeline

50 50 AC_ISA(submips) { ac_format Type_R = "%op:6 %rs:5 %rt:5 %rd:5 0x00:5 %func:6"; ac_format Type_I = "%op:6 %rs:5 %rt:5 %imm:16"; ac_instr add, mul; ac_instr lw, bne, addi; ISA_CTOR(submips) { add.set_asm("add %reg, %reg, %reg“, rd,rs,rt); add.set_decoder(op=0x00, func=0x20); lw.set_asm("lw %reg, %imm(%reg)“, rt,imm,rs); lw.set_decoder(op=0x23);... }; Declaração de Instruções Declaração de instruções Seqüência de decodificação

51 51 Descrição do Comportamento void ac_behavior( add ){ RB[rd] = RB[rs] + RB[rt]; } Acesso a dispositivo de armazenamento Acesso a campo de instrução

52 52 Descrevendo Comportamentos void ac_behavior( instruction ){ ac_pc = ac_pc + 4; } void ac_behavior( add ){ RB[rd] = RB[rs] + RB[rt]; }

53 53 Modelagem de Processador: PArchC

54 54 Modelagem de Processador: PArchC Plugin focado na construção de Processadores Ambiente gráfico para edição de código –Inclusão do destaque para palavras reservadas do ArchC Compilação e Simulação do processador –Possibilita ao usuário verificar o comportamento do componente Distribuição de Componente –Gera automaticamente um pacote de distribuição do componente baseado no padrão SPIRIT Biblioteca de Componentes Descrição do Processador

55 55 Análise de Cache: PCacheAnalyzer Análise preliminar de cache Análise de diversas configurações de caches (+ de 50) com apenas uma simulação Geração de relatório, identificando: –Configuração da cache (tamanho de palavra e associatividade) –Hit Rate –Miss Rate Relatório mostrado em formato HTML

56 56 Plugin PCacheAnalyzer

57 57 Documentação: Plugin do Help

58 58 Documentação: Site SITE

59 59 Arquitetura Arquitetura Extensível Arquitetura Modular

60 Modelando Plataformas PBuilder Tutorial

61 61 Instalar Pré-requisitos –SystemC 2.1 –ArchC 2.0 –SystemC TLM No site do PDesigner, baixar os arquivos: –pdesigner-v1.0.0- beta.zippdesigner-v1.0.0- beta.zip –pdlibrary-v1.0.0.zippdlibrary-v1.0.0.zip SITE

62 62 Configurar Ambiente Configurar variáveis do sistema –ArchC –SystemC –TLM Deve ser configurado para cada workspace novo!

63 63 Selecionar Biblioteca 1.Selecionar biblioteca de componentes –Apenas uma biblioteca por workspace 2.Editar biblioteca –Importar componente –Remover componente

64 64 Fluxo de Projeto

65 65 Passo 1 : Criar Projeto 1.Selecionar a opção File > New > Project 2. Definir o nome do projeto 4. Projeto criado no workspace 3. Dados do projeto

66 66 Passo 2 : Adicionar Componentes 1.Selecionar tipo do componente na paleta 2. Escolher posição no editor 3. Inserir componente

67 67 Passo 3 : Editar Componentes 1.Tipo do componente 2. Nível de Abstração 3. Parâmetros

68 68 Passo 4 : Conectar Componentes 1.Selecionar origem (porta mestre) 2. Selecionar destino (porta escrava) 4. Ver / Editar propriedades da conexão e/ou wrappers 3. Criação automática de wrappers

69 69 Passo 5 : Carregar Aplicação para o Processador 1.O que significa? Carregar na memória uma aplicação binária compilada pelo crosscompiler do processador. O processador busca o código da aplicação na memória e a executa. 2. Selecionar a opção Load Application File no menu de contexto 3. Selecionar a aplicação (arquivo executável) 5. Definir o endereço 4. Selecionar Memória

70 70 Passo 6 : Compilar Plataforma 1.O que significa? Na compilação é gerado o código systemc da plataforma, que é compilado gerando um arquivo executável da plataforma. 2. Selecionar PDesigner > Compile Platform 3. Resultados e Logs da compilação são mostrados na view Console

71 71 Passo 7 : Simular 1.Selecionar a opção Run PDesigner no menu de contexto do projeto 2. Resultado da simulação é mostrado na view Console

72 Exercício PBuilder

73 73 Exercício 1 1.Modelar no PDesigner a plataforma ao lado. 2.Mapear as aplicações FFT na plataforma acima.FFT 1.FFT – iniciando na posição 0x00 2.FFT inversa - – iniciando na posição 0x500000 3.Adicionar uma cache no nível de abstração untimed para cada processador, utilizando os seus valores default. 4.Modifique o tipo do barramento para Amba e compare a velocidade de processamento (instruções/seg) com a do exercício 2 e 3. P1 (mips) P2 (mips) Bus

74 IPZip

75 75 Fluxo

76 76 Passo 1 : Criar Projeto IPZip 1.Selecionar a opção File > New > Project 2.IPZip > IPZip Project 3. Selecionar diretório onde o arquivo zip será criado

77 77 Passo 2 : Informações do Componente 1.Name –Nome do componente 2.Type –Tipo do componente : processador, barramento, memória,... 3.Owner –Desenvolvedor (es) 4.Vendor –Empresa ou grupo responsável pelo desenvolvimento 5.Library –Nome da biblioteca que ele deveria estar inserido 6.Description –Breve descrição do componente

78 78 Passo 3 : Configurar Interfaces 1.Name –nome da interface 2.Protocol Direction –direção da comunicação da interface (master, slave, system) 3.Protocol Name –nome do protocolo de comunicação: Amba, ArchC, Avalon, OCP,... 4.Connection –Define se a interface deve estar conectada 5.Address Space Size –Tamanho de endereçamento da interface. 6.Multiplicity –Single : há apenas uma interface –Multiple Dynamic : há várias interfaces iguais podendo existir de 0 a N (número máximo) instanciadas –Multiple Static : há exatamente N interfaces iguais instanciadas #include "mips1_arch.H" mips1_arch::mips1_arch() : ac_arch_dec_if<mips1_parms::ac_word, mips1_parms::ac_Hword>(mips1_parms::AC_MAX_BUFFER), ac_pc("ac_pc", 0, time_step), DM_port("DM_port", 5242880), DM(*this, DM_port), RB("RB", time_step) { ac_mt_endian = mips1_parms::AC_MATCH_ENDIAN; ac_tgt_endian = mips1_parms::AC_PROC_ENDIAN; IM = &DM; APP_MEM = &DM; }

79 79 Passo 4 : Configurar Parâmetros 1.Name –Nome do parâmetro 2.Description –Descrição do parâmetro informando seu papel 3.Group –Nome do grupo que o parâmetro deve pertencer, organizando os parâmetros do componente por grupos 4.Data Type –Tipo do dado 5.Resolved by –Informa se o parâmetro deve ser modificado pelo usuário ou pelo sistema 6.Format –Informa se o parâmetro tem valores diversos (texto) ou restritos (choice) 7.Default Value –Valor default do parâmetro

80 80 Passo 5 : Arquivos Fonte e Makefile 1.Listar os arquivos fonte do IP 2.Identificar Makefile do IP

81 81 Passo 6 : Nível de Abstração 1.Definir nome do nível de abstração –Normalmente são denominados TL1, TL2,... 2.Selecionar o nível de abstração do componente –Pode ter mais de um, sendo necessário configurar cada um deles –Possíveis níveis: Cycle accurate Timing estimated Untimed

82 82 Configurar Nível de Abstração #Includes Declarações globais sc_main(){ Instância de componentes; Conexão de componentes; Funções pré-simulações; sc_start(); Funções pós-simulação; } #include "mips1.H"... const char *project_name="mips1"; const char *project_file="mips1.ac";... int sc_main(int ac, char *av[]){ //Platform Components simple_bus_fast_mem mem("fast_mem",0x00,0x9fffff); mips1 p1("p1");... //Platform Conenctions p1.DM_port(DM_wrapper1.target_export);... p1.init();... cerr << endl; sc_start(-1); p1.PrintStat();... cerr << endl; return p1.ac_exit_status&& p2.ac_exit_status; }

83 83 Passo 6.1 : Selecionar “include files” 1.Selecionar arquivos fonte do componente que deverão ser incluídos para possibilitar sua utilização..... const char *project_name="mips1"; const char *project_file="mips1.ac"; const char *archc_version="2.0beta1"; const char *archc_options="-abi -dy "; …. #include "mips1.H“ #include “loader.h”... int sc_main(int ac, char *av[]){... }

84 84 Passo 6.2 : Descrever Atribuição de Constantes 1.Define constantes e namespaces –Function : namespace, const,... –Name : nome da constante ou do namespace –Value : valor associado.... const char *project_name="mips1"; const char *project_file="mips1.ac"; const char *archc_version="2.0beta1"; const char *archc_options="-abi -dy "; …. #include "mips1.H“ #include “loader.h”... int sc_main(int ac, char *av[]){... }

85 85 Passo 6.3 : Configurar Instanciação de Componentes 1.Define a estrutura para instanciar o componente –Class : nome da função/classe que implementa a instância –Name : nome default da instância, se for variar deve ser o nome do componente –Parameters : parâmetros passados para inicializar Symbol : símbolo do parâmetro – ponteiro, aspas, referência Type : define se o parâmetro é constante ou variável Value : valor do parâmetro. Se for variável será um dos parâmetros do componente..... int sc_main(int ac, char *av[]) { …. mips1 mips1_proc1("mips1"); AvalonController bus ("bus", clock, 2, 1, 1);... }

86 86 Passo 6.4 : Configurar Estrutura de Conexão 1.Define a estrutura para configuração de uma conexão –Type : define a estrutura da conexão com portas escravas ou mestres –Name : nome do componente –Function : função utilizada para conexão ou nome da interface –TLM Connection : define se a conexão segue o padrão TLM –Parameters : parâmetros passados para viabilizar a conexão Symbol : símbolo do parâmetro – ponteiro, aspas, referência Type : define se o parâmetro é constante ou variável Value : valor do parâmetro. Se for variável será um dos parâmetros do componente ou instâncias conectadas a ele int sc_main(int ac, char *av[]) { … AvalonController bus ("bus", clock, 2, 1, 1); mips1 mips_proc("mips1"); simple_bus_fast_mem mem_fast("mem_fast", 0x00, 0x9FFFFF); … bus.addMaster(WORD, false, 1, 1); bus.addSlave(WORD, false, 0x00,0x9FFFFF, 0, 0, 2, true); mips_proc.DM_port(wrap_mips1.target_export);... }

87 87 Passo 6.5 : Configurar Estrutura das Funções 1.Define a estrutura para configuração de funções –Class : nome do componente –Name : nome da função –Log Function : define se a função gera um log –Parameters : parâmetros passados para viabilizar a função Symbol : símbolo do parâmetro – ponteiro, aspas, referência Type : define se o parâmetro é constante ou variável Value : valor do parâmetro. Se for variável será um dos parâmetros do componente int sc_main(int ac, char *av[]) { … mips1 mips_proc("mips1"); … // Function mips_proc.init(); … // Log Function mips_proc.PrintStat();... }

88 Exercício IPZip

89 89 Exercício 2 1.Criar arquivo IPZip do componente memória fast_mem conhecendo: Arquivo fonte Exemplo de main Não possui makefile Interface escrava: Nome: bus_port Protocolo: simple_bus Addredd space: 5M 2.Adicionar IPZip gerado a biblioteca do PDesigner e criar exemplo para testar.

90 Gerenciar Biblioteca

91 91 Importar IPZip 1.Selecionar a opção: Window > Preferences > PDesigner Library 2.Selecionar Import Component 3.Selecionar o arquivo IPZip 4.Selecionar Apply

92 92 Exercício 3 Importar IPZip do barramento AMBA e modificar a plataforma do Exercício 1.1, trocando o barramento.AMBA

93

94 94 Importar IPZip 1.Selecionar a opção: Window > Preferences > PDesigner Library 2. Selecionar Import Component 3. Selecionar o arquivo IPZip 4. Selecionar Apply

95 95 Referências www.pdesigner.org www.archc.org www.systemc.org www.spiritconsortium.org www.eclipse.org


Carregar ppt "Electronic System Level Curso PDesigner. 2 Agenda Introdução Principais desafios para o projeto de SoCs IP Cores Electronic System Level (ESL) –Projeto."

Apresentações semelhantes


Anúncios Google