Developed by Virtutech Apresentação feita por: Carlos Ferreira Inês Ramos 1º Parte – Introdução ao Simics • O que é ? • Para que serve ? • Benefícios da sua utilização 2º Parte – Extras do Simics • Device Modeling Language • Demonstração 1º Parte Situação existente • Aumento da complexidade dos sistemas electrónicos. • Processo de desenvolvimento de sistemas focado no hardware. • Necessidade de adopção de técnicas de debugging mais eficientes e económicas. Em relação ao hardware... • Software tem de ser testado num sistema cujas características coincidam minimamente com as do produto de hardware final. • Hardware final pode estar a meses do seu lançamento!!! • Dificil detecção de bugs de hardware. Solução: • Sistema virtual: – Permite emulação do Hardware. – Desenvolvimento de software sobre esta plataforma. – Custo mais baixo de desenvolvimento. Simics: O que é ? • Simics não é igual ao VirtualBox ou VMWare!!! • Solução de software que modela sistemas electrónicos e fornece uma versão virtual do hardware final. • O hardware final opera num ambiente virtual. • Permite correr o software desenvolvido no ambiente virtual, cujos efeitos serão reflectidos de forma similar na máquina final. Simics Hindsight • Usado no desenvolvimento e teste de software para correr código, efectuar debug. • É determinístico (com execução e debug reversíveis) . Simics Model Builder • Plataforma de desenvolvimento usada para criar os modelos dos dispositivos e as configurações da máquina. • Os modelos de dispositivos podem ser combinados numa plataforma virtual de complexidade arbitrária. Simics Ethernet Networking • Providencía conectividade entre os sistemas virtuais numa simulação. • Conecta os sistemas virtuais a uma rede física. Simics Accelerator • Providencia escalabilidade e velocidade de execução tirando partido de multiprocessadores e multicore hosts. Simics Virtual Platform • O modelo do hardware final que vai ser simulado. • A plataforma virtual do Simics pode ser tão simples ou complexa quanto o sistema físico final. • Este pode conter desde um simples CPU e uma RAM a uma rede complexa de computadores e sistemas. Exemplos de SO’s usados em simulações • Linux (qualquer distribuição) • VxWorks • Windows (Mobile, XP, Vista) • Solaris • BSD’s (FreeBSD, NetBSD, OpenBSD e outros) • Muitos mais… Exemplos de simulação • MotherBoards • Processadores (single/dual/quad/N core) • Sistemas heterogéneos • SoC (System on Chip) • Inter-System Communications (USB, FireWire, Serial, SATA, etc) Função: Desenvolvimento de plataformas • Possibilidade de visualizar o estado dos registos do processador/dispositivos durante o debug. • Permite determinar onde ocorrem os erros (software ou hardware). • O hardware virtual corre o mesmo software binário que o sistema físico final. Função: Desenvolvimento de aplicações • Escalabilidade • O debug é feito tomando o sistema como um todo. • Possibilidade de restauro do estado actual do processador/dispositivos. • Permite gerar interrupções. • Profiling do código. Função: Integração e teste do sistema • Tarefas realizadas em paralelo (“Incremental integration”) • Problemas identificados mais rapidamente com resolução mais fácil e menos custosa. • Integração e testes contínuos identificam problemas mais cedo • Quando é detectado um bug, o estado de uma dada simulação pode ser “empacotado” e enviado por email a engenheiros de software para futuras correcções . Função: Gestão do projecto • Paralelização das fases de desenvolvimento (redução do tempo das actividades críticas e do tempo total do projecto) • Defeitos descobertos/solucionados mais cedo. • Maior quantidade de defeitos descobertos (melhor qualidade do produto final). • Redução dos custos • Redução do tempo de desenvolvimento e minimização do uso de hardware. Benefícios gerais: • Agilidade • Flexibilidade • Desenvolvimento prévio do software/hardware • Redução de riscos no projecto • Redução dos custos do projecto 2º Parte Linguagem usada para modelar Hardware de forma Eficiente Características Principais: • Não é uma linguagem de uso geral! • Possui uma sintaxe expressiva adaptada ás necessidades da programação do modelo de dispositivos. • Linguagem Modelar baseada em Objectos • É mais compacta. • O compilador converte o código DML em código C que será posteriormente compilado para código máquina. • Providencía maior rapidez durante a simulação. Características Especificas: • Linguagem Imperativa, Declarativa, Orientada por Objectos • Objectos contêm Métodos e Parâmetros objectos → dispositivos, registos, memórias, etc • Contém Logger interno • A parte algorítmica é uma extensão do subset do ISO C • Palavras reservadas do ISO/ANSI C estão reservadas em DML (int, float, etc) • Comportamento do DML similar com SystemC Um pequeno exemplo de código DML Comentário // A very simple device dml 1.0; Versão da linguagem device simple_device; Nome deste dispositivo import "io-memory.dml"; Standard Library import bank b { Banco de Registos register r0 size 4 @0x0000 { Nome do registo, tamanho e method read() -> (value) { log "info": "Hello, bus!"; offset } Método read() para ler o valor do } registro } Escreve no log “info” a msg “Hello Bus” • O Simics é uma solução de software com elevado grau de flexibilidade e escalabilidade que permite modelar sistemas electrónicos com elevada performance e fidelidade. • Fornece ás corporações os meios necessários ao melhoramento do processo de desenvolvimento dos seus produtos. • As empresas produzem mais, melhor e a menor custo. • Complementaridade MIECT – MIEET – Engenheiros de MIEET preocupam-se em optimizar o hardware. – Engenheiros de MIECT preocupam-se em optimizar o software. – O desenvolvimento em paralelo permite ambos encontrarem-se no final do projecto, para a junção de ambos os resultados. Simics está disponível em http://www.virtutech.com/ Licenças Académicas Gratuitas !!! E agora vamos a uma pequena demonstração…