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

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

Mini Curso PDesigner. 2 Agenda Introdução Principais desafios para o projeto de SoCs IP Cores Electronic System Level (ESL) SystemC TLM SPIRIT Consortium.

Apresentações semelhantes


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

1 Mini Curso PDesigner

2 2 Agenda Introdução Principais desafios para o projeto de SoCs IP Cores Electronic System Level (ESL) SystemC TLM SPIRIT Consortium PDesigner IPZip

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

4 4 Janela de Mercado

5 5 Projeto, Fabricação e Comercialização de CIs DH PROJETO FAB 1 FABRICAÇÃO TESTE MERCADO FAB 2 Permite negociar preço e prazo !! 99% erros !! 1% erros !! Erro: volta !!

6 SystemC +Platforms + Electronic System Level (ESL)

7 7 System Aumento da Produtividade I Circuito Integrado FUNC BEH RTL GATE Espeificação do Sistema Níveis Abstração Subir nível de abstração

8 8 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

9 9 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;

10 10 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

11 11 Aumento da Produtividade II Reuso de IPs Grande parte do projeto baseado em reuso de módulos Uso de IPs de terceiros Confiança no desenvolvedor do IP Problemas de integração Interconnection network CPU Memory (IP)

12 12 Aumento da Produtividade III Utilização de Plataformas Grande parte do projeto em software Flexibilidade Reuso de grande parte do circuito Desenvolvimento ou utilização de IPs em pequena parte do projeto Interconnection network CPU Memory (IP)

13 13 O que é ESL? SoC Technology System specification Processor core Bus core memory IP (Devices)

14 14 O que é ESL? SoC Technology FUNC BEH RTL GATE System specification Abstraction Levels

15 15 O que é ESL? SoC Technology FUNC BEH RTL GATE System specification System Abstraction Levels

16 16 O que é ESL? UML SysMLMatlab SystemC SystemVerilog SW HW SW HW Synthesizable Simulation Modeling Languages ESL

17 17 Problemas UML SysMLMatlab SystemC SystemVerilog SW HW SW HW Synthesizable Simulation Modeling Languages ESL Methodologies & Tools

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 Interações de Objetos IP-XACT

24 24 SPIRIT Schemas Bus definition: descreve uma 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 Design: descreve as instâncias de um componente e as interconexões entre as instâncias Gerador/Configurador: são objetos executáveis utilizados para gerar os componentes ou configurá-los

25 25 Exemplo Simples de um SoC

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

27 27 Exemplo Simples de um SoC: Design File

28 28 Exemplo Simples de um SoC: Design File

29 PDesigner

30 30 Framework SPIRIT 1.2 web page

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

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

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

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

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

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

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

38 38 PBuilder - Views Platform View –Miniatura da plataforma modelada Outline –Lista de componentes instanciados

39 39 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

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

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

42 42 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

43 43 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 */ /*****************************************************************/ template class ac_memport : public ac_arch_ref { private: ac_inout_if* storage; ac_word aux_word; ac_Hword aux_Hword; uint8_t aux_byte; public:... ///Default constructor explicit ac_memport(ac_arch & ref) : ac_arch_ref (ref) {}... ///Default constructor with initialization explicit ac_memport(ac_arch & ref, ac_inout_if& stg) : ac_arch_ref (ref), storage(&stg\ ) {} 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; }

44 44 Modelagem de Processador: ArchC

45 45 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

46 46 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

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

48 48 Modelagem de Processador: PArchC

49 49 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

50 50 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

51 51 Plugin PCacheAnalyzer

52 52 Documentação: Plugin do Help

53 53 www.pdesigner.org

54 Modelando Plataformas PBuilder Tutorial

55 55 Instalar Baixar o arquivo gspm_2006.11- 232_i386.tar.gz no site www.greensocs.com www.greensocs.com Descompactar o arquivo Dentro do diretório gspm : –./gsconfig –source gspm.bashrc –gs-use –update pdesigner/1.0.0 No diretório gspm –gs-use pdesigner –pdesigner

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

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

58 58 Fluxo de Projeto

59 59 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

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

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

62 62 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

63 63 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

64 64 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

65 65 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

66 Exercício PBuilder

67 67 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

68 IPZip

69 69 Fluxo

70 70 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

71 71 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

72 72 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 template class ac_memport : public ac_arch_ref { private: ac_inout_if* storage; ac_word aux_word; ac_Hword aux_Hword; uint8_t aux_byte; public:... ///Default constructor explicit ac_memport(ac_arch<ac_word, ac_Hword>& ref) : ac_arch_ref (ref) {}... ///Default constructor with initialization explicit ac_memport(ac_arch<ac_word, ac_Hword>& ref, ac_inout_if& stg) : ac_arch_ref (ref), storage(&stg\ )

73 73 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

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

75 75 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

76 76 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; }

77 77 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[]){... }

78 78 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[]){... }

79 79 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);... }

80 80 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);... }

81 81 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();... }

82 Exercício IPZip

83 83 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 Direção: slave Protocolo: simple_bus Address space: 5M 2.Adicionar IPZip gerado a biblioteca do PDesigner e criar exemplo para testar.

84 Gerenciar Biblioteca

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

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

87

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

89 89 Referências www.pdesigner.org www.archc.org www.systemc.org www.spiritconsortium.org www.eclipse.org www.greensocs.com

90 90 Contatos Cristiano Araujo (cca2@cin.ufpe.br )cca2@cin.ufpe.br André Souza ( arss@cin.ufpe.br)arss@cin.ufpe.br Gleibson Oliveira (grso@cin.ufpe.br )grso@cin.ufpe.br João Victor (jvgl@cin.ufpe.br )jvgl@cin.ufpe.br Millena Gomes (maag@cin.ufpe.br)maag@cin.ufpe.br Williams Azevedo (wtoa@cin.ufpe.br )wtoa@cin.ufpe.br


Carregar ppt "Mini Curso PDesigner. 2 Agenda Introdução Principais desafios para o projeto de SoCs IP Cores Electronic System Level (ESL) SystemC TLM SPIRIT Consortium."

Apresentações semelhantes


Anúncios Google