Post on 17-Apr-2015
Open V
irtual
Pla
tform
Introdução
Plataformas Virtuais
OVP◦ Conceitos◦ APIs◦ Modelos de processadores◦ Exemplos
Integração SystemC / OVP
2
Open V
irtual
Pla
tform
Desenvolvimento de um projeto SoC é altamente complexo◦ Otimização de energia◦ Sincronização◦ Testabilidade◦ Verificação◦ Time-to-market
Proposto uso de PBDs (Platform Based Design)◦ Projeto Baseado em Plataformas
Reuso de componentes e desenvolvimento gradual
3
Open V
irtual
Pla
tform
Usa-se modelagem em nível de sistema◦ Descrever aspectos de hardware em alto nível de abstração◦ Detalhes desnecessários aos modelos podem ser ocultados
Descrição em software◦ Simulações mais rápidas◦ Facilidade na descoberta de erros
Fornecimento de estimativas que auxiliam na tomada de decisões no decorrer do projeto
4
Open V
irtual
Pla
tform
Plataformas Virtuais
5
Open V
irtual
Pla
tform
Possibilita o desenvolvimento paralelo de Hardware e Software
Descreve-se um conjunto de modelos de hardware, representam um sistema completo
Análise antecipada de problemas de projeto◦ Consumo de energia◦ Tráfego de barramento◦ Uso de memória◦ Eficiência dos componentes◦ Desempenho do sistema
6
Open V
irtual
Pla
tform
Benefícios ◦ Menor Custo de Desenvolvimento◦ Aumento da Qualidade ◦ Redução de Riscos envolvidos com o Desenvolvimento de
Software
Simulação de um hardware real
Integração do hardware com o software é feita desde o início do processo de implementação
7
Open V
irtual
Pla
tform
São parametrizáveis◦ Tamanho da memória◦ Profundidade de buffer◦ Tipos de processadores◦ Periféricos
Projetistas de Hardware configuram a plataforma virtual e disponibilizam para os engenheiros de software
Tempo de desenvolvimento do produto é reduzido significativamente
8
Open V
irtual
Pla
tform
9
Open V
irtual
Pla
tform
OVP
10
Open V
irtual
Pla
tform
Desenvolvida em 2008
Ferramenta open source, flexível e com licença para 90 dias
Simulação rápida
Configuração de plataformas homogêneas e heterogêneas é simples
11
Open V
irtual
Pla
tform
Três componentes básicos◦ OVP models
Consiste em um grupo de modelos de processadores que são disponibilizados gratuitamente para serem usados
◦ OVP APIs Possibilitam a descrição do comportamento de
processadores e periféricos para gerar plataformas virtuais. As APIs são escritas em linguagem C/C++
OVP é composto por quatro APIs
◦ OVPsim Ferramenta utilizada para gerar os simuladores das
plataformas descritas com as APIs
12
Open V
irtual
Pla
tform
Modelos
13
Open V
irtual
Pla
tform
OVP contém mais de 75 modelos de processadores
Modelos disponíveis na página do OVP para download
Cada modelo contém seu crosscompiler, deve-se baixar o toolchain do modelo requerido
Toolchain está disponível para download na mesma seção do seu modelo, no site do OVP
14
Open V
irtual
Pla
tform
Principais modelos
◦ ARC (Argonaut Risc Core)
◦ MIPS (Microprocessor Interlocked Pipeline Stages)
◦ ARM (Advanced Risc Machine)
◦ PPC (PowerPC)
◦ OpenRISC (OpenCores)
◦ Renesas
◦ Xilinx Microblaze
15
Open V
irtual
Pla
tform
ARC◦ Fabricado pela empresa Synopsys
◦ Automação de projetos eletrônicos
◦ Processador utilizado por aproximadamente 170 clientes
◦ São fabricados mais de 1 bilhão de chips, anualmente, com ARC
16
Open V
irtual
Pla
tform
ARC◦ OVP contém três famílias de processadores 32-
bits ARC 600 ARC 700 ARC EM
◦ Contém soluções para otimização de codecs para aplicações Áudio/Vídeo ARC Audio ARC Video
17
Open V
irtual
Pla
tform
MIPS
◦ Atua no mercado de semicondutores por mais de duas décadas
◦ Soluções para aplicações gráficas, vídeo, entretenimento, comunicações (VoIP) e redes
◦ Estão entrando no mercado de consumo digital e mobile
18
Open V
irtual
Pla
tform
MIPS◦ OVP contém duas famílias
MIPS 32 MIPS 64
◦ Adaptados novos modelos MIPS 32 OR1K MIPS 32 Aptiv MIPS M14K
19
Open V
irtual
Pla
tform
ARM
◦ Utiliza tecnologia avançada para produtos digitais, wireless, rede, entretenimento, automotivo, segurança e dispositivos de armazenamento
◦ Aproximadamente 20 bilhões de chips no mercado
◦ Microprocessadores RISC 32-bit
20
Open V
irtual
Pla
tform
ARM
◦ OVP contém duas famílias ARM Classic Cortex
◦ Classic ARM11, ARM9 e ARM7
◦ Cortex Cortex-A, Cortex-R e Cortex-M
21
Open V
irtual
Pla
tform
PowerPC
◦ No mercado desde 1990
◦ Sociedade entre Motorola, IBM e Apple
◦ Utilizado no mercado automotivo, infraestruturas wireless e servidores
◦ Computação para propósito geral
◦ OVP contém um modelo mpc82x
22
Open V
irtual
Pla
tform
OpenRISC
◦ Fabricado pela OpenCores.
◦ Maior desenvolvedor de processadores open source.
◦ OVP contém apenas um modelo de processamento desta família OpenRISC OR1K
23
Open V
irtual
Pla
tform
Renesas
◦ Fabricado pela Renesas Electronics
◦ Atua na área de micro controladores, sistemas automotivos e dispositivos de potência
◦ Microprocessadores CISC de 32 e 16 bits
24
Open V
irtual
Pla
tform
Renesas
◦ OVP contém três famílias V850 M16C R8C
25
Open V
irtual
Pla
tform
Xilinx MicroBlaze
◦ Atua no segmento de FPGAs, SoCs e circuitos 3D
◦ MicroBlaze é um RISC de 32 bits com arquitetura Harvard Acessa a memória de dados separadamente da memória de
programa
26
Open V
irtual
Pla
tform
APIs
27
Open V
irtual
Pla
tform
ICM (Innovative CPU Manager)
◦ API responsável pela configuração da plataforma
◦ As funções da ICM são responsáveis por instanciar todos os componentes do sistema Processadores Memórias Periféricos
◦ ICM pode-se instanciar multiprocessadores com memória compartilhada e multiprocessadores heterogêneos
28
Open V
irtual
Pla
tform
29
1. #include “icm/icmCpuManager.h” 2. 3. int main(int argc, char ** argv) { 4. … 5. // initialize CpuManager 6. icmInit(0,0,0); 7. … 8. icmProcessorP processor = icmNewProcessor( 9. “cpu1”, // CPU name 10. “or1k”, // CPU type 11. 0, // CPU Id 12. 0, // CPU model flags 13. 32, // address bits 14. model, // model file 15. “modelAttrs”, // morpher attributes 16. 0, // enable tracing etc 17. 0, // user-defined attributes 18. semihosting, // semi-hosting files 19. “modelAttrs” // semi-hosting attributes 20. }; 21. 22. // load the processor object file 23. icmLoadProcessorMemory(processor, argv[1], False, False, True); 24. 25. // run simulation 26. icmSimulatePlatform(); 27. 28. // terminated simulation 29. icmTerminated(); 30. 31. return 0; 32.}
Open V
irtual
Pla
tform
VMI (Virtual Machine Interface)
◦ A VMI é utilizada para realizar a descrição do processador
◦ Descreve-se instruções do processador
◦ Pode-se criar novos modelos de processadores
◦ Suporta RISC e CISC
◦ Suporta qualquer formato de instruções
30
Open V
irtual
Pla
tform
VMI (Virtual Machine Interface)
◦ Principais componentes do VMI Instruções de decode Instruções de comportamento Cache L1 Tratamento de exceções TLB Controle Assíncronos Interface de debug
31
Open V
irtual
Pla
tform
32
1. static void doLoad(Uns32 instr, Uns32 bytes, Bool signExtend) { 2. … 3. vmimtLoadRRO ( 4. OR1K_BIT, // destBits 5. bytes*8, // memBits 6. i, // offset 7. rdReg, // rd 8. raReg, // ra 9. endian, // endian 10. signExtend, // signExtend 11. True, // checkAlign 12. ) 13.}
Open V
irtual
Pla
tform
PPM e BHM◦ PPM (Peripherals Models) ◦ BHM (Behavioral Models)
◦ São utilizados para descrição de modelos de comportamento em hardware e software que sejam periféricos ao processador.
◦ Estes modelos executam em um ambiente protegido, sem comprometer a simulação.
◦ São executados no PSE (Peripheral Simulation Engines)
33
Open V
irtual
Pla
tform
BHM◦ Modelagem de
comportamento◦ Processos, eventos, delays◦ Inicializa processos◦ Aguarda por evento ou tempo◦ Debug através de output
34
PPM◦ Modelagem de periféricos◦ Interface com a plataforma◦ Conexão com barramento◦ Conexão com a rede
Open V
irtual
Pla
tform
PPM e BHM
◦ Modelos descritos com esta API devem ser compilados com um toolchain PSE.
◦ Conceitos similares ao SystemC
35
Open V
irtual
Pla
tform
36
1. #include “bhm.h” 2. 3. bhmThreadHandler thA, thB; 4. 5. #define size (64*1024) 6. 7. char stackA[size]; 8. char stackA[size]; 9. 10.void myThread(void *user) 11.{ 12. char *string = user; 13. while(1) { 14. bhmWaitDelay(1000*1000); 15. bhmPrintf(“%s\n”, string); 16. } 17.} 18. 19.void userInit(void) 20.{ 21. struct myThreadContext contextA; 21. struct myThreadContext contextB; 22. 23. thA = bhmCreateThread(myThread, “user”, “threadA”, &stackA[size]); 23. thB = bhmCreateThread(myThread, “user”, “threadB”, &stackB[size]); 23.}
Open V
irtual
Pla
tform
37
Instalação do Modelo
Open V
irtual
Pla
tform
Modelos e seus toolchains são encontrados na página do OVP
38
Open V
irtual
Pla
tform
39
ExemploSingle Processor
Open V
irtual
Pla
tform
40
ExemploMultiProcessor
Open V
irtual
Pla
tform
41
SystemC + OVP
Open V
irtual
Pla
tform
Não é propriamente linguagem de descrição de hardware
Biblioteca com templates e funções para C++
Open Source
Objetivo é descrever módulos de hardware
Implementação em diversos níveis de abstração
OVP possibilita integração com SystemC TLM2.0◦ TLM – os detalhes da comunicação entre os módulos são separados da
implementação das unidades funcionais
42
Open V
irtual
Pla
tform
Descreve-se a Plataforma em SystemC, usando um modelo de processador OVP Cada modelo de processador é executado a partir de uma thread SystemC
43
Open V
irtual
Pla
tform
OVP possibilita criação de plataformas baseada em barramento
Possibilidade de utilizar um modelo de NoC em SystemC
Integração da NoC SystemC com OVP◦ Sincronizar o clock do roteador e da NI com o CPU◦ Definir uma região de memória para troca de
informações entre SystemC e OVP
44
Open V
irtual
Pla
tform
45
Open V
irtual
Pla
tform
46
Dúvidas?