• Nenhum resultado encontrado

ipProcess: um processo para desenvolvimento de IP-Cores com implementação em FPGA

N/A
N/A
Protected

Academic year: 2021

Share "ipProcess: um processo para desenvolvimento de IP-Cores com implementação em FPGA"

Copied!
135
0
0

Texto

(1)Pós-Graduação em Ciência da Computação. “ipPROCESS: UM PROCESSO PARA DESENVOLVIMENTO DE IP-CORES COM IMPLEMENTAÇÃO EM FPGA” Por. MARÍLIA SOUTO MAIOR DE LIMA Dissertação de Mestrado. Universidade Federal de Pernambuco posgraduacao@cin.ufpe.br www.cin.ufpe.br/~posgraduacao. RECIFE, AGOSTO/2005.

(2) UNIVERSIDADE FEDERAL DE PERNAMBUCO CENTRO DE INFORMÁTICA PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO. MARÍLIA SOUTO MAIOR DE LIMA. “ipPROCESS: Um processo para desenvolvimento de IPcores com implementação em FPGA". ESTE TRABALHO FOI APRESENTADO À PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO DO CENTRO DE INFORMÁTICA DA UNIVERSIDADE FEDERAL DE PERNAMBUCO COMO REQUISITO PARCIAL PARA OBTENÇÃO DO GRAU DE MESTRE EM CIÊNCIA DA COMPUTAÇÃO.. ORIENTADOR(A): EDNA NATIVIDADE DA SILVA BARROS. RECIFE, AGOSTO/2005.

(3) Lima, Marília Souto Maior de “ipProcess: um processo para desenvolvimento de IP-Cores com implementação em FPGA” / Marília Souto Maior de Lima. – Recife: O autor, 2005. xiv, 99 folhas: il., fig., tab. Dissertação (mestrado) – Federal de Pernambuco. CIN. Computação, 2005.. Universidade Ciência da. Inclui bibliografia e apêndices. 1. Microeletrônica. 2. Engenharia de software – Processo de desenvolvimento. 3. Modelagem – Linguagem SPEM ((Software Process Engineering Metamodel). I. Título. 621.381. CDD (22.ed.). MEI2007-044.

(4) AGRADECIMENTOS. Meu agradecimento especial a Marcelo Clemente pelo apoio e incentivo em todos os momentos desta caminhada. A professora Edna Barros, pela orienta¸c˜ao, pela credibilidade no meu trabalho, pelas cr´ıticas e sugest˜oes valiosas, e pela paciˆencia nos momentos dif´ıceis. A equipe do projeto BRAZIL-IP, pela fundamental contribui¸c˜ao dada durante o desenvolvimento deste trabalho. Gostaria de agradecer especialmente a: Andr´e Aziz, Bruno Piedade, Diogo Alves, Fernando Bione, Francielle Santos, Patr´ıcia Lira, Tiago Lins e Vitor Schwambach. Sem vocˆes esse trabalho n˜ao teria sido poss´ıvel. Por fim, gostaria de agradecer a todos os meus amigos e familiares que de alguma forma fizeram parte desta conquista.. iii.

(5) Cuide de seus pensamentos, porque se tornam palavras; escolha suas palavras, porque se tornam a¸ c˜ oes; entenda suas a¸ co ˜es, porque se tornam h´ abitos; estude seus h´ abitos, porque se tornam seu car´ ater; desenvolva seu car´ ater, porque ele se torna o seu destino. —BOB MARLEY.

(6) RESUMO. A demanda cada vez maior por produtos eletrˆonicos e a crescente capacidade de integra¸c˜ao dos chips direcionaram a metodologia de projeto de sistemas embarcados para sua completa integra¸c˜ao em um u ´ nico chip (System-on-Chip, ou SoC). Essa metodologia baseia-se cada vez mais em componentes previamente projetados e verificados (IP-core) como uma alternativa de disponibilizar os sistemas dentro dos prazos esperados, sem perder o time-to-market do mercado consumidor de eletrˆonicos. Neste trabalho, ´e proposto um processo de desenvolvimento de IP-cores baseado em t´ecnicas de engenharia de software chamado ipPROCESS, como um mecanismo de facilitar e promover o desenvolvimento de IP-cores de alta qualidade. Tendo o foco na cria¸c˜ao de componentes de qualidade, o ipPROCESS foi definido com base em t´ecnicas de verifica¸c˜ao funcional, de modelagem visual da arquitetura, de interface de comunica¸c˜ao e de documenta¸c˜ao seguindo os padr˜oes da ind´ ustria. O processo foi descrito utilizando o meta-modelo UML denominado SPEM com o objetivo de facilitar e acelerar o seu entendimento, assim como permitir altera¸c˜oes futuras e facilitar o gerenciamento de projetos baseados no processo proposto. Palavras-chave: IP-core, Soc, Processos, UML-RT, Verifica¸c˜ao Funcional, Prototipa¸c˜ao em FPGA, Interface OCP-IP.. v.

(7) ABSTRACT. The silicon capacity continues to increase along Moore’s Law allowing us to build comples chips consisting of hundreds of millions transistors. Furthermore, there are a nwe consumer market including more information appliances ins small, mobile and ergonomic devices that provide information, entertainment and communications capabilities to consumer electronics, industrial automation and medical markets. These devices require complex electronic design and system integration, which must be delivered in the short time-to-market frames of consumer electronics. The integration technology supports nowadays the integration of a complete system in silicon (System-on-chip - SoC) and design methodologies are more and more based on pre-defined and pre-designed Intellectual Property blocks (IP-core). The reusing of IP-cores has been an alternative to reduce the increasing gap between design productivity and chip complexity of emerging SoC designs. To keep these efforts in check, a design methodology that favors reuse and early error detection is essential. Both reuse and error detection imply that the design activity must be defined rigorously, so that all phases are clearly identified and appropriate checks are enforced. The design of an IP-core involves different ’area of concerns’ like specification, implementation by using hardware description language (HDL), simulation, functional verification, synthesis, prototyping and intellectual property protection. All these design aspects demand from designer teams various abilities in distinct expertise, as well as mechanisms to support teamwork. In order to cope with some challenges of IP-core design, we propose, in this work, a development process, called ipPROCESS, for Soft IPs with implementation in FPGA. The ipPROCESS approach defines the IP-core design task as a set of activities, where each activity determines ’what should be done, when and for whom’, i.e. the process assigns activities and reposibilities to the right person at a right moment of the design lifecycle. The ipPROCESS modeling is based on the UML metamodel called SPEM. Keywords:. IP-core, Soc, Process, UML-RT, Functional Verification, FPGA Prototy-. ping, OCP-IP Interface.. vi.

(8) ´ SUMARIO. Cap´ıtulo 1—Introdu¸c˜ ao 1.1 1.2 1.3. 1. Proposta do Trabalho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Objetivos do Trabalho . . . . . . . . . . . . . . . . . . . . . . . . . . . . Estrutura do Trabalho . . . . . . . . . . . . . . . . . . . . . . . . . . . .. Cap´ıtulo 2—Processos de Desenvolvimento: Estado da Arte 2.1. 2.2. 2.3. 6. Estado da Arte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 6. 2.1.1 2.1.2. Rational Unified Process (RUP) . . . . . . . . . . . . . . . . . . . eXtreme Programming (XP) . . . . . . . . . . . . . . . . . . . . .. 6 9. Trabalhos Relacionados . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.1 Reuse Methodology Manual (RMM) . . . . . . . . . . . . . . . . 2.2.2 Virtual Socket Interface Alliance (VSIA) . . . . . . . . . . . . . .. 12 12 14. 2.2.3. Modelagem UML . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.3.1 Gera¸c˜ao de C´odigo SystemC a partir de Modelos UML .. 15 15. 2.2.3.2. SystemC e UML 2.0: Novas Metodologias de Projeto . . 2.2.3.2.1 STMicroelectronics - . . . . . . . . . . . . . . . 2.2.3.2.2 Fujitsu - . . . . . . . . . . . . . . . . . . . . . .. 17 17 17. 2.2.3.2.3 SysML Partners - . . . . . . . . . . . . . . . . . Considera¸c˜oes Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 19 19. Cap´ıtulo 3—Desenvolvimento de IP-core: Conceitos B´ asicos 3.1. 3 4 5. 21. Conceitos B´asicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 21. 3.1.1 3.1.2 3.1.3. Classifica¸c˜ao de IP-core . . . . . . . . . . . . . . . . . . . . . . . Taxonomia de Desenvolvimento: N´ıveis e Dom´ınios de Descri¸c˜ao . Verifica¸c˜ao Funcional . . . . . . . . . . . . . . . . . . . . . . . . .. 21 22 24. 3.1.4. 3.1.3.1 Estrat´egia de Verifica¸c˜ao Funcional do BRAZIL IP . . . Descri¸c˜ao de FPGA . . . . . . . . . . . . . . . . . . . . . . . . . .. 25 27. vii.

(9) viii. ´ SUMARIO. 3.2. 3.3. Contextualiza¸c˜ao do Ciclo de Vida de Desenvolvimento de IP-cores . . .. 27. 3.2.1 3.2.2. Fase Define Key Features . . . . . . . . . . . . . . . . . . . . . . Fase Planning and Specification . . . . . . . . . . . . . . . . . . . 3.2.2.1 Functional Specification . . . . . . . . . . . . . . . . . .. 27 28 28. 3.2.2.2 3.2.2.3. Verification Specification . . . . . . . . . . . . . . . . . . Packaging Specification . . . . . . . . . . . . . . . . . .. 28 28. 3.2.3. 3.2.2.4 Development Plan . . . . . . . . . . . . . . . . . . . . . 3.2.2.5 Executable Specification . . . . . . . . . . . . . . . . . . Fase Design and Verification . . . . . . . . . . . . . . . . . . . . .. 28 29 29. 3.2.4 3.2.5. Fase Productization . . . . . . . . . . . . . . . . . . . . . . . . . . Fase Alpha Test and Release . . . . . . . . . . . . . . . . . . . . .. 31 32. Considera¸c˜oes Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 32. Cap´ıtulo 4—ipPROCESS 4.1 4.2. Etapas de Defini¸c˜ao do ipPROCESS . . . . . . . . . . . . . . . . . . . . Modelagem Conceitual do ipPROCESS . . . . . . . . . . . . . . . . . . . 4.2.1 As Fases do ipPROCESS . . . . . . . . . . . . . . . . . . . . . . . 4.2.1.1 4.2.1.2. 33 35 36. Primeira Fase: Conception . . . . . . . . . . . . . . . . . Segunda Fase: Architecture . . . . . . . . . . . . . . . .. 37 38. 4.2.1.3 Terceira Fase: RTL Design . . . . . . . . . . . . . . . . ´ 4.2.1.4 Quarta e Ultima Fase: Physical Prototying . . . . . . . . As Disciplinas do ipPROCESS . . . . . . . . . . . . . . . . . . . .. 38 39 39. 4.2.2.1 4.2.2.2 4.2.2.3. Disciplina Requirements . . . . . . . . . . . . . . . . . . Disciplina Analysis & Design . . . . . . . . . . . . . . . Disciplina RTL Implementation . . . . . . . . . . . . . .. 41 46 50. 4.2.2.4 4.2.2.5. Disciplina Functional Verification . . . . . . . . . . . . . Disciplina FPGA Prototyping . . . . . . . . . . . . . . .. 55 62. Distribui¸c˜ao das Atividades por Fase . . . . . . . . . . . . . . . . . . . . Considera¸c˜oes Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 67 67. 4.2.2. 4.3 4.4. 33. Cap´ıtulo 5—Estudo de Caso: Aplicando o ipPROCESS no Desenvolvimento de um IP-core 70 5.1. Descri¸c˜ao do IP-core: Microcontrolador 8051 . . . . . . . . . . . . . . . .. 70. 5.2. Organiza¸c˜ao do Projeto . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.1 Aloca¸c˜ao de Pap´eis . . . . . . . . . . . . . . . . . . . . . . . . . .. 71 71.

(10) ix. ´ SUMARIO. 5.2.2 5.3. Ferramentas Utilizadas . . . . . . . . . . . . . . . . . . . . . . . .. 72. Aplicando o ipPROCESS . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3.1 Fase Conception . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3.1.1 Defini¸c˜ao dos Requisitos . . . . . . . . . . . . . . . . . .. 73 73 73. 5.3.2. 5.3.1.1.1 5.3.1.1.2. Mem´oria . . . . . . . . . . . . . . . . . . . . . . Fun¸c˜ao de Timer . . . . . . . . . . . . . . . . .. 74 74. 5.3.1.1.3 5.3.1.1.4 5.3.1.1.5. Interface Serial . . . . . . . . . . . . . . . . . . Fun¸c˜ao de Interrup¸c˜ao . . . . . . . . . . . . . . Porta Paralela de Entrada/Sa´ıda . . . . . . . .. 74 75 75. 5.3.1.1.6 5.3.1.1.7. Unidade Central de Processamento . . . . . . . Interface Externa: Padr˜ao OCP-IP . . . . . . .. 75 75. 5.3.1.1.8 Frequˆencia / Clock / Voltagem . . . . . . . . . 5.3.1.2 Descri¸c˜ao Inicial dos Casos de Uso . . . . . . . . . . . . Fase Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . .. 76 76 77. 5.3.2.1 5.3.2.2. 5.4 5.5 5.6. Defini¸c˜ao da Arquitetura e Detalhamento dos Casos de Uso 77 Planos de Integra¸c˜ao e Verifica¸c˜ao Funcional . . . . . . . 78. 5.3.3. Fase RTL Design . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3.3.1 Modelo de Simula¸c˜ao . . . . . . . . . . . . . . . . . . . . 5.3.3.2 Componentes de Verifica¸c˜ao (Testbench) . . . . . . . . .. 81 81 83. 5.3.4. Fase Physical Prototyping . . . . . . . . . . . . . . . . . . . . . . 5.3.4.1 Prot´otipo do 8051 em FPGA . . . . . . . . . . . . . . .. 83 84. Incorporando o Microcontrolador 8051 a um Projeto de SoC . . . . . . . Li¸c˜oes Aprendidas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Considera¸c˜oes Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 85 87 88. Cap´ıtulo 6—Conclus˜ oes. 90. 6.1. Principais Contribui¸c˜oes . . . . . . . . . . . . . . . . . . . . . . . . . . .. 90. 6.2 6.3. Dificuldades Encontradas . . . . . . . . . . . . . . . . . . . . . . . . . . . Trabalhos Futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 91 92. Apˆ endice A—O Meta Modelo SPEM A.1 Modelo Conceitual do SPEM. 97 . . . . . . . . . . . . . . . . . . . . . . . .. Apˆ endice B—Documento de Requisitos. 97 100.

(11) ´ SUMARIO. Apˆ endice C—Plano de Verifica¸c˜ ao Funcional. x 101.

(12) LISTA DE FIGURAS. 1.1. Conceitos de SoC e IP-core [vsi02] . . . . . . . . . . . . . . . . . . . . . .. 2. 1.2. Plataforma Fenix [fen] . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 3. 2.1. Arquitetura Geral do RUP [Kru00] . . . . . . . . . . . . . . . . . . . . .. 7. 2.2 2.3 2.4. Fases de Desenvolvimento de IP-cores segundo o RMM [KB02] . . . . . . Ferramenta RT2SystemC: Processo de Tradu¸c˜ao [W+ 04] . . . . . . . . . Nota¸c˜ao UML para os conceitos de SystemC [RS+ 05] . . . . . . . . . . .. 14 16 18. 2.5. Fujitsu: Incorporando UML ao seu processo de Projetos de SoC [Z+ 05] .. 19. 3.1. Y-Chart: Dom´ınios e N´ıveis de Descri¸c˜ao de Funcionalidade [MLD92] . .. 22. 3.2 3.3 3.4. Y-Chart: Transi¸c˜oes Definindo Atividades [MLD92] . . . . . . . . . . . . Intera¸c˜ao entre Testbench e DUV . . . . . . . . . . . . . . . . . . . . . . Estrat´egia de Verifica¸c˜ao Funcional, Ferramenta VeriSC [SM+ 04] . . . . .. 23 25 26. 3.5. Fase Design and Verification, Etapa 1: Implementa¸c˜ao e teste dos subblocos [KB02] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 30. 3.6. Fase Design and Verification, Etapa 2: Integra¸c˜ao dos sub-blocos [KB02]. 31. 4.1 4.2. Etapas de Defini¸c˜ao do ipPROCESS . . . . . . . . . . . . . . . . . . . . Fases versus Disciplinas do ipPROCESS . . . . . . . . . . . . . . . . . .. 34 36. 4.3 4.4. Fases do ipPROCESS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Diciplinas do ipPROCESS: Diagrama de Pacotes . . . . . . . . . . . . . .. 36 40. 4.5 4.6 4.7. Disciplina Requirements, Diagrama de Pacotes . . . . . . . . . . . . . . . Disciplina Requirements: Fluxo das Atividades . . . . . . . . . . . . . . . Disciplina Analysis & Design, Diagrama de Pacotes . . . . . . . . . . . .. 41 43 46. 4.8 4.9. Disciplina Analysis & Design: Fluxo das Atividades . . . . . . . . . . . . Disciplina RTL Implementation, Diagrama de Pacotes . . . . . . . . . . .. 47 50. 4.10 Disciplina RTL Implementation: Fluxo das Atividades . . . . . . . . . . 4.11 Disciplina Functional Verification, Diagrama de Pacotes . . . . . . . . . . 4.12 Disciplina Functional Verification: Fluxo das Atividades . . . . . . . . .. 52 55 57. 4.13 Disciplina FPGA Prototyping, Diagrama de Pacotes . . . . . . . . . . . .. 62. xi.

(13) LISTA DE FIGURAS. xii. 4.14 Disciplina FPGA Prototyping: Fluxo das Atividades . . . . . . . . . . . .. 64. 4.15 Distribui¸c˜ao das Atividades por Fase . . . . . . . . . . . . . . . . . . . . 4.16 Website do ipPROCESS . . . . . . . . . . . . . . . . . . . . . . . . . . .. 68 69. 5.1. Diagrama de Blocos de um Microcontrolador[Mac99] . . . . . . . . . . .. 71. 5.2 5.3. Microcontrolador 8051: Diagrama de Casos de Uso . . . . . . . . . . . . Interface OCP-IP: Diagrama de Classes . . . . . . . . . . . . . . . . . . .. 76 78. 5.4 5.5 5.6. Componente OCP-IP: Diagrama de Classe . . . . . . . . . . . . . . . . . Componente OCP-IP Master: Diagrama de Estado . . . . . . . . . . . . Componente OCP-IP Slave: Diagrama de Estado . . . . . . . . . . . . .. 79 80 80. 5.7 5.8. Microcontrolador 8051: Diagrama de Blocos . . . . . . . . . . . . . . . . Robˆo Jubinha: integrado o 8051 a um SoC para controle de um robˆo . .. 82 86. 5.9. Robˆo Jubinha: IP-cores do SoC . . . . . . . . . . . . . . . . . . . . . . .. 86. A.1 Modelo Conceitual do SPEM [spe02] . . . . . . . . . . . . . . . . . . . .. 97.

(14) LISTA DE TABELAS. 4.1. Detalhamento da Atividade Develop Vision, Disciplina Requirements. . .. 44. 4.2. Detalhamento da Atividade Capture a Common Vocabulary, Disciplina Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Detalhamento da Atividade Elicit User Needs, Disciplina Requirements .. 44 45. 4.3 4.4 4.5. Detalhamento da Atividade Define Requirements, Disciplina Requirements Detalhamento da Atividade Architectural Analysis, Disciplina Analysis & Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 45 48. 4.6 4.7. Detalhamento da Atividade Use Case Analysis, Disciplina Analysis & Design 48 Detalhamento da Atividade Component Design, Disciplina Analysis & De-. 4.8 4.9. sign . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 Detalhamento da Atividade Use Case Design, Disciplina Analysis & Design 49 Detalhamento da Atividade Plan IP-core Integration, Disciplina RTL Im-. plementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.10 Detalhamento da Atividade Implement Components, Disciplina RTL Im-. 51. plementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.11 Detalhamento da Atividade Implement Test Components, Disciplina RTL Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 52 53. 4.12 Detalhamento da Atividade Perform Tests, Disciplina RTL Implementation 54 4.13 Detalhamento da Atividade Integrate IP-core, Disciplina RTL Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.14 Detalhamento da Atividade Plan Functional Verification, Disciplina Functional Verification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 54 58. 4.15 Detalhamento da Atividade Define Test Cases, Disciplina Functional Verification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 58. 4.16 Detalhamento da Atividade Implement Reference Model, Disciplina Functional Verification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.17 Detalhamento da Atividade Implement Verification Components, Disci-. 59. plina Functional Verification . . . . . . . . . . . . . . . . . . . . . . . . .. 60. xiii.

(15) xiv. LISTA DE TABELAS 4.18 Detalhamento da Atividade Perform Functional Verification, Disciplina Functional Verification . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.19 Detalhamento da Atividade Analyze Verification Failure, Disciplina Functional Verification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.20 Detalhamento da Atividade Plan FPGA Integration, Disciplina FPGA Prototyping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 60 61 63. 4.21 Detalhamento da Atividade Back Annotation, Disciplina FPGA Prototyping 65 4.22 Detalhamento da Atividade Implement FPGA Test Components, Disciplina FPGA Prototyping . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 4.23 Detalhamento da Atividade Perform Tests in FPGA, Disciplina FPGA Prototyping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 66. 4.24 Detalhamento da Atividade Integrate IP-core in FPGA, Disciplina FPGA Prototyping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 66. 5.1. Microcontrolador 8051: Resultados da Disciplina RTL Implementation. .. 82. 5.2 5.3. Microcontrolador 8051: Resultados da Disciplina Functional Verification Microcontrolador 8051: Resultados da Disciplina FPGA Prototyping . . .. 84 85. A.1 Estere´otipos do Meta Modelo SPEM . . . . . . . . . . . . . . . . . . . .. 99.

(16) CAP´ITULO 1. ˜ INTRODUC ¸ AO. Um novo mercado de produtos eletrˆonicos tem surgido em fun¸c˜ao de uma demanda cada vez maior por dispositivos embarcados que sejam pequenos, port´ateis e ergonˆomicos, bem como capazes de fornecer, quase sempre ao mesmo tempo, informa¸c˜ao, entretenimento e comunica¸c˜ao aos seus diferentes consumidores (ind´ ustria automobil´ıstica, ´area m´edica, automa¸c˜ao industrial etc). Esses novos dispositivos, com diversas funcionalidades embutidas, possuem caracter´ısticas que demandam um projeto complexo e uma integra¸c˜ao de sistemas, devendo ser disponibilizados em curtos intervalos de tempo aos seus consumidores. Aliado a este novo e exigente mercado consumidor, existe tamb´em o fator tecnol´ogico. Atualmente, a evolu¸c˜ao nas t´ecnicas de integra¸c˜ao em sil´ıcio permitem a constru¸c˜ao de chips com centenas de milhares de transistores, permitindo assim a integra¸c˜ao de sistemas complexos em um u ´ nico chip [C+ 99]. Esse crescimento explosivo da capacidade de integra¸c˜ao em sil´ıcio e a demanda por produtos cada vez mais diversificados e complexos provocaram uma mudan¸ca no desenvolvimento de projetos de sistemas embarcados em dire¸c˜ao a um novo paradigma de desenvolvimento denominado System on Chip (SoC), onde todo o sistema embarcado pode agora ser integrado e implementado num u ´ nico chip. Por´em a capacidade de integrar rapidamente novos produtos ao mercado consumidor n˜ao tem acompanhado o crescente aumento na capacidade de integra¸c˜ao de sistemas complexos em um u ´ nico chip, gerando dessa forma uma gap entre a produtividade das equipes de desenvolvimento e a capacidade de integra¸c˜ao dos chips. Consequentemente, o projeto de um SoC assumiu uma abordagem baseada no reuso de componentes pr´eexistentes e pr´e-verificados, denominados Intellectual Property Core (IP-core), com o objetivo de reduzir tempo e esfor¸co de projeto. A Figura 1.1 ilustra de forma visual os conceitos de SoC e IP-core. Tipicamente, um SoC possui um ou mais processadores, uma grande quantidade de mem´oria, dispositivos perif´ericos, co-processadores e canais de entrada/sa´ıda para comunica¸c˜ao (como USB, Bluetooth, R´adio Frequˆencia etc). Para que esta nova tendˆencia de projetos seja poss´ıvel ´e essencial o desenvolvimento de metodologias que suportem: 1.

(17) 2. ˜ INTRODUC ¸ AO. Figura 1.1 Conceitos de SoC e IP-core [vsi02]. • Promover o reuso de componentes previamente testados. • Estimular pr´aticas de desenvolvimento que promovam a detec¸c˜ao de erros nas fases iniciais do projeto. Quanto mais tarde os erros forem detectados, maior ser´a o tempo e o custo necess´arios para corrig´ı-los [VG02]. Tanto o aspecto de facilitar o reuso quanto a detec¸c˜ao pr´evia de erros implicam na necessidade de atividades bem definidas, de forma que todas as fases do desenvolvimento sejam claramente identificadas [C+ 99]. O projeto em si de um IP-core envolve diferentes ´areas de conhecimento, como: especifica¸c˜ao funcional, implementa¸c˜ao atrav´es de linguagens de descri¸c˜ao de hardware (HDL), simula¸c˜ao, verifica¸c˜ao funcional, s´ıntese, prototipa¸c˜ao e prote¸c˜ao de propriedade intelectual. Todos esses aspectos de projeto demandam das novas equipes de projetistas habilidades em diferentes ´areas, assim como mecanismos que suportem o trabalho em equipe. Dessa forma, uma estrat´egia para lidar com projetos complexos ´e divid´ı-lo em v´arios m´odulos ou componentes, de maneira que cada m´odulo venha a ser desenvolvido por equipes distintas. Como consequˆencia, devem existir mecanismos de comunica¸c˜ao corretos e eficientes capazes de integrar as pessoas e coordenar suas atividades a fim de que o projeto seja finalizado com sucesso. Al´em disso, o projeto de IP-cores possue desafios pr´oprios como: portabilidade, reusabilidade, interfaces de integra¸c˜ao padronizadas,.

(18) 1.1 PROPOSTA DO TRABALHO. 3. documenta¸c˜ao de f´acil entendimento e bem definida e facilidades de integra¸c˜ao com os demais componentes de um SoC [KB02]. Dentro desse contexto, foi criado um cons´orcio entre institui¸c˜oes brasileiras, chamado BRAZIL IP, com o objetivo de formar recurso humano especializado no projeto de IPcores com qualidade e de acordo com os padr˜oes industriais [bra]. Um primeiro projeto deste cons´orcio foi o Projeto Fenix, cujo prop´osito principal ´e definir uma metodologia para projetos de IP-core de forma que os membros das institui¸c˜oes participantes se tornem conscientes de todos os aspectos, ou ´area de conhecimento, que acompanham o desenvolvimento de um IP-core [fen]. Essa metodologia deveria ser definida considerando a utiliza¸c˜ao de ferramentas profissionais e t´ecnicas modernas de especifica¸c˜ao, verifica¸c˜ao funcional e prototipa¸c˜ao r´apida. Como forma de viabilizar a defini¸c˜ao dessa metodologia, o Projeto Fenix tem como meio o desenvolvimento de um estudo de caso real onde o produto final ´e a cria¸c˜ao de plataforma para o desenvolvimento de aplica¸c˜oes wireless compostas pelos IP-cores ilustrados na Figura 1.2.. Figura 1.2 Plataforma Fenix [fen]. 1.1. PROPOSTA DO TRABALHO. A proposta deste trabalho ´e definir um processo para o desenvolvimento de IP-cores, chamado ipPROCESS, que tem como objetivo facilitar e direcionar o projeto de IP-cores de alta qualidade, promovendo a detec¸c˜ao de erros nas primeiras fases do projeto, bem como o fornecimento de documenta¸c˜ao e interfaces adequadas. Dessa forma, esperamos contribuir no processo de sistemas embarcados implementados como SoC. Num primeiro momento ser´a realizada uma an´alise de alguns processos de desenvolvimento de software com o objetivo de colher boas pr´aticas quanto a defini¸c˜ao de processos.

(19) 1.2 OBJETIVOS DO TRABALHO. 4. de desenvolvimento. Al´em do conceito de processo, esta etapa visa levantar aspectos positivos e negativos de cada um desses processos com o intuito de agregar ao ipPROCESS pr´aticas de desenvolvimento que levem `a gera¸c˜ao de produtos de qualidade, com poucos erros e interfaces bem definidas. Num segundo momento, foi feito um levantamento sobre o estado da arte no desenvolvimento de IP-core’s cujo objetivo ´e unir conceitos de processos `as pr´aticas de desenvolvimento que promovam a cria¸c˜ao de produtos de qualidade. Baseada nestas an´alises foi ent˜ao definida uma nova abordagem de processo de desenvolvimento de IP-core’s com o objetivo de apoiar e orientar a produ¸c˜ao de novos componentes cujo foco ´e seu reuso em projetos de SoC’s. Os conceitos e a estrutura deste processo foram desta forma baseados nas pr´aticas mais atuais e consolidadas no que se refere a desenvolvimento de componentes de qualidade para serem integrados a projetos de SoC’s. Ao final, o processo proposto foi avaliado quanto a sua aplicabilidade e eficiˆencia a partir de sua utiliza¸c˜ao no projeto de um IP-core desenvolvido no contexto do Projeto Fenix. A partir deste estudo de caso foi poss´ıvel identificar pontos positivos e pontos falhos que precisam ser ajustados e melhorados para atender aos padr˜oes da ind´ ustria. 1.2. OBJETIVOS DO TRABALHO. Nesse sentido, o objetivo deste trabalho ´e modelar um processo para orientar e basear o desenvolvimento de Ip-core’s, capaz de promover a cria¸c˜ao de componentes de qualidade e que sejam facilmente integr´aveis a projetos de SoC’s. Como consequˆencia, o ipPROCESS inclui as seguintes caracter´ısticas: • As fases do desenvolvimento s˜ao claramente definidas, assim como os marcos a serem atingidos em cada uma delas • As atividades a serem realizadas s˜ao bem definidas e distribu´ıdas ao longo das fases • Os pap´eis e respectivas responsabilidades s˜ao bem definidos para cada atividade • O resultado a ser produzido por cada atividade ´e claro e bem definido • As atividades devem ser suportadas por Templates e Guias • Est´ımulo ao uso de boas pr´aticas de desenvolvimento Dessa forma, as principais contribui¸c˜oes deste trabalho s˜ao:.

(20) 1.3 ESTRUTURA DO TRABALHO. 5. • A formaliza¸c˜ao de um processo pr´atico e eficaz para a cria¸c˜ao de IP-core’s, que suporte o projeto de IP-cores de qualidade e que possuam facilidade de integra¸c˜ao. • Disponibilizar um guia de processo que seja gen´erico o suficiente para atender a diversos dom´ınios de componentes e que contemple necessidades como: interfaces de integra¸c˜ao com outros IP-cores e documenta¸c˜ao que facilite seu reuso. 1.3. ESTRUTURA DO TRABALHO. Os demais cap´ıtulos do trabalho est˜ao estruturados da seguinte maneira: • Cap´ıtulo 2: apresenta uma breve descri¸c˜ao do estado da arte em termos de processos de desenvolvimento e de tendˆencias no desenvolvimento de IP-cores. • Cap´ıtulo 3: apresenta o contexto e introduz os conceitos relacionados ao desenvolvimento de IP-cores’s que est˜ao sendo discutidos e praticados atualmente na ind´ ustria e na academia. • Cap´ıtulo 4: descreve o ipPROCESS, sua estrutura e conceitos. Descreve os fluxos de trabalho em termos de fases e atividades. • Cap´ıtulo 5: relata a experiˆencia da aplica¸c˜ao do ipPROCESS no desenvolvimento de um IP-core do Microcontrolador 8051. • Cap´ıtulo 6: apresenta a conclus˜ao deste trabalho, onde s˜ao descritas as principais contribui¸c˜oes e poss´ıveis trabalhos a serem desenvolvidos no futuro..

(21) CAP´ITULO 2. PROCESSOS DE DESENVOLVIMENTO: ESTADO DA ARTE. Este cap´ıtulo tem como objetivo descrever o estado da arte em rela¸c˜ao a processos de desenvolvimento. Al´em disso, s˜ao tamb´em apresentados os u ´ ltimos estudos e trabalhos mais especificamente relacionados a atividades do desenvolvimento de IP-cores. A seguir ser˜ao apresentados os dois processos de desenvolvimento que serviram como referˆencia para o desenvolvimento deste trabalho. Ambos foram utilizados como referˆencia enquanto processos: conceitos e princ´ıpios a serem definidos para modelar e caracterizar um processo, ou seja ”como modelar um processo”. Maiores detalhes sobre o porquˆe dessas escolhas est˜ao descritos na se¸c˜ao 4.1. 2.1. ESTADO DA ARTE. 2.1.1. Rational Unified Process (RUP). O Rational Unified Process, ou RUP, ´e um processo de engenharia de software. Possui uma abordagem baseada em disciplina para atribuir tarefas e responsabilidades dentro de uma organiza¸c˜ao de desenvolvimento. Seu objetivo ´e garantir a produ¸c˜ao de software de alta qualidade que atenda `as necessidades de seus usu´arios dentro do prazo e or¸camento previstos [Kru00]. A Figura 2.1 apresenta uma vis˜ao geral da arquitetura do RUP, enquanto processo, em duas dimens˜oes: • O eixo horizontal representa o tempo e mostra os aspectos do ciclo de vida do processo: as fases do desenvolvimento de software. • O eixo vertical representa as disciplinas, as quais agrupam atividades relacionadas entre si. A primeira dimens˜ao representa o aspecto dinˆamico do processo, o qual ´e expresso em termos dos conceitos de : 6.

(22) 7. 2.1 ESTADO DA ARTE. Figura 2.1 Arquitetura Geral do RUP [Kru00]. • Fases (Phases): tempo entre dois marcos importantes do projeto durante o qual um conjunto bem definido de objetivos deve ser atingido, e decis˜oes devem ser tomadas para decidir seguir para pr´oxima fase ou n˜ao; • Itera¸c˜oes (Iterations): sequˆencias de atividades que resultam em um subconjunto do produto final; e • Marcos (Milestone): pontos que determinam a finaliza¸c˜ao de um subconjunto de produtos. A segunda dimens˜ao representa os aspectos est´aticos do processo: como o mesmo ´e descrito em termos de: • Disciplinas (Disciplines): cole¸c˜ao de atividades relacionadas a uma determinda ´area do conhecimento; • Artefatos (Artifacts): informa¸c˜ao utilizada ou produzida durante o desenvolvimento de software, podendo ser por exemplo um modelo, uma descri¸c˜ao ou c´odigo. • Pap´eis (Roles): defni¸c˜ao de um comportamento e responsabilidades atribu´ıdas a um indiv´ıduo em particular; e.

(23) 2.1 ESTADO DA ARTE. 8. • Atividades (Activities): unidades de trabalho realizada por um dado papel. O gr´afico da Figura 2.1 mostra como a ˆenfase sobre as atividades ´e feita no decorrer do tempo. Por exemplo, nas primeiras itera¸c˜oes gasta-se mais tempo em requisitos, enquanto que nas u ´ ltimas itera¸c˜oes mais tempo ´e dedicado `a implementa¸c˜ao. Do ponto de visto gerencial o ciclo de vida do desenvolvimento de software definido pelo RUP ´e composto por quatro fases em sequˆencia, as quais est˜ao brevemente descritas a seguir: • Inception: primeira fase definida pelo RUP e tem como principais atividades formular o escopo do projeto, planejamento do projeto, an´alise dos riscos, custos e prazos de desenvolvimento. Tamb´em envolve atividades de preparo do ambiente como sele¸c˜ao de ferramentas a serem utilizadas no projeto. O marco desta fase consiste na avalia¸c˜ao da viabilidade do projeto. • Elaboration: tem como objetivo defnir uma primeira arquitetura para o sistema e envolve atividades como detalhamento dos requisitos, detalhamento dos casos de uso1 mais cr´ıticos e elabora¸c˜ao do plano do projeto. Tem como marco o desenvolvimento de um pr´otipo execut´avel da arquitetura do sistema para validar os casos de uso mais cr´ıticos. • Construction: tem como objetivo detalhar as demais funcionalidades do sistema e complementar o desenvolvimento do sistema. As atividades essenciais envolvem gerenciamento dos recursos e controle de opera¸c˜oes com o objetivo de reduzir custos e respeitar os prazos, implementa¸c˜ao dos demais componentes e teste. Tem como marco a constru¸c˜ao da primeira vers˜ao do sistema. • Transition: o foco desta fase ´e garantir aos usu´arios um vers˜ao est´avel do produto final. Envolve atividades de implanta¸c˜ao do sistema, elabora¸c˜ao de material para treinamento e consulta, colher feedback dos usu´arios e realizar os ajustes necess´arios. Tem como marco a entrega do produto final. O RUP foi definido de forma a valorizar as melhores pr´aticas comumente utilizadas na ind´ ustria por organiza¸c˜oes de sucesso, como as listadas a seguir: • Gerˆencia de Requisitos: abordagem sistem´atica para encontrar, documentar, organizar e encontrar dependˆencia na mudan¸cas de requisitos. 1. Caso de Uso: funcionalidade que pode ser executada.

(24) 2.1 ESTADO DA ARTE. 9. • Desenvolvimento Iterativo: ciclo de vida do desenvolvimento baseado em v´arias itera¸c˜oes o que permite que os erros de projeto sejam encontrados antes do produto final estar conclu´ıdo. • Desenvolvimento de Arquitetura Baseada em Componentes: defini¸c˜ao ou reutiliza¸c˜ao de componentes autocontidos e com interfaces bem definidas com o objetivo de diminuir a complexidade e o tamanho da solu¸c˜ao final. • Modelagem Visual: utiliza¸c˜ao de nota¸c˜ao gr´afica e textual , rica semanticamente, capaz de capturar aspectos de projeto de software como por exemplo UML; tendo como objetivo aumentar a eficiˆencia da comunica¸c˜ao dentro da equipe e prover uma base n˜ao amb´ıgua para o desenvolvimento. • Verifica¸c˜ao Cont´ınua da Qualidade: verificar a qualidade dos artefatos produzidos ao final de cada fase de forma a eliminar defeitos o quanto antes. • Gerˆencia de Mudan¸ca: controle das mudan¸cas de requisitos e manuten¸c˜ao da integridade dos artefatos produzidos no projeto. O RUP defende a estrat´egia de atacar as funcionalidades de maior risco durante o in´ıcio do projeto, na fase Inception, e aposta na gerˆencia de projeto como uma forma de garantir a entrega de um produto de alta qualidade, de forma que os objetivos dos usu´arios finais sejam alcan¸cados tanto em termos de prazo quanto de or¸camento. Como o RUP ´e um framework de desenvolvimento gen´erico, o mesmo pode ser ajustado ao desenvolvimento de diferentes produtos de software em diferentes tamanhos e ´areas de aplica¸c˜ao [Kru00]. Este fato ´e facilitado pelo fato do mesmo estar definido em torno de trˆes conceitos b´asicos: pap´eis, atividades e ciclo de vida do desenvolvimento organizado em fases. 2.1.2. eXtreme Programming (XP). A metodologia denominada eXtreme Programming, ou XP, foi projetada com o objetivo de entregar produtos de software como desejado e quando esperado pelo cliente, focando sempre na satisfa¸c˜ao do mesmo [Bec99, xp]. XP encoraja os seus desenvolvedores a responder com seguran¸ca `a mudan¸cas de requisitos por parte do cliente, mesmo que isso aconte¸ca no final do ciclo de vida do desenvolvimento do projeto. XP enfatiza o trabalho em equipe, onde todos as pessoas da equipe devem estar engajados em entregar softwares de qualidade..

(25) 2.1 ESTADO DA ARTE. 10. Seguindo este prop´osito, a metodologia XP prop˜oem-se a a aperfei¸coar o desenvolvimento de software atrav´es de quatro valores b´asicos: • Comunica¸c˜ao: baseado no fato de grandes problemas no desenvolvimento acontecerem por falha de comunica¸c˜ao entre as partes envolvidas no projeto, XP dissemina a cultura da comunica¸c˜ao oral como forma de fortalecer a intera¸c˜ao entre as pessoas. • Simplicidade: defende o fato de projetar o sistema da maneira mais simples poss´ıvel, desde que atenda aos requisitos do cliente. Al´em disso, devem ser projetados e implementados apenas os requisitos previstos pelo cliente at´e o momento. • Feedback : a equipe de desenvolvimento deve estar colhendo o feedback sempre e ao final de cada itera¸c˜ao, para que dessa forma o processo seja otimizado e que as pr´oximas itera¸c˜oes preencham a expectativa do cliente. • Coragem: valor de grande importˆancia por garantir que a equipe do projeto estar´a sempre pronta para tomar as decis˜oes necess´arias ao longo do projeto, respondendo de forma eficiente `as mudan¸cas. XP enfatiza o trabalho em equipe, de forma que tanto gerentes e desenvolvedores quanto os pr´oprios clientes sejam todos parte de uma mesma equipe e focados ne entrega de um produto final de qualidade. Al´em disso, a distribui¸ca˜o das responsabilidades no projeto acontece de forma que as decis˜oes relacionadas a decis˜oes do projeto (como datas, escopo e prioridades) fiquem a cargo da ´area de neg´ocios, enquanto que as decis˜oes t´ecnicas (como estimativas) s˜ao de responsabilidade da equipe t´ecnica. Diferentemente do RUP, XP n˜ao define um conjunto de pap´eis, atividades e artefatos a serem produzidos. Ao inv´es disso, XP define um conjunto de regras e pr´aticas de apoio em conformidade com os quatro valores citados anteriormente. As regras e pr´aticas foram definidas com o objetivo de eliminar os riscos do projeto e aumentar as chances de sucesso dos projetos. As regras, listadas abaixo, s˜ao simples e podem levar a mudan¸cas significativas quando executadas [xp]: • Programa¸c˜ao em Pares: defende a id´eia de que todo o c´odigo deve ser produzido por duas pessoas trabalhando juntas num u ´ nico computador. O par deve ser formado por um condutor, que digita o trabalho, e por um navegador, que observa o trabalho do condutor visando identificar problemas e dando sugest˜oes. Deve haver rota¸c˜ao entre os pap´eis para que haja dissemina¸c˜ao do conhecimento entre os membros da equipe..

(26) 2.1 ESTADO DA ARTE. 11. • Jogo do Planejamento: define que as estimativas de prazo e prioridades sejam feitas numa sess˜ao ou reuni˜ao onde tanto o cliente quanto os desenvolvedores devem discutir as atividades da pr´oxima itera¸c˜ao. • Teste: sugere a cria¸c˜ao de testes de unidade antes mesmo da funcionalidade. Al´em disso, os testes devem estar automatizados. • Cliente On Site: o cliente est´a sempre dispon´ıvel n˜ao apenas para ajudar a um membro da equipe, mas fazendo parte desta. Em todas as fases de um projeto que segue XP existe uma comunica¸c˜ao com o cliente, preferencialmente ’face a face’ e on site. • Padr˜ao de Codifica¸c˜ao: todo c´odigo produzido deve seguir um padr˜ao pr´e-definido, tornando assim f´acil e r´apido sua leitura e entendimento. • Posse Coletiva do C´odigo: encoraja qualquer um a contribuir com novas id´eias a todos os segmentos do projeto. Qualquer desenvolvedor pode alterar o c´odigo ou corrigir bugs. Esta pr´atica evita gargalos que podem se causados caso o ’dono’ do c´odigo (aquele que o produziu) n˜ao esteja dispon´ıvel para realizar alguma mudan¸ca necess´aria. • Integra¸c˜ao Cont´ınua: os desenvolvedores devem atualizar o reposit´orio com as vers˜oes mais recentes sempre que poss´ıvel, n˜ao passando mais que um dia para fazˆe-lo. Esta pr´atica evita que os outros desenvolvedores trabalhem com vers˜oes desatualizadas e poss´ıveis imcompatibiliddes entre elas. Por´em, o reposit´orio deve ser atualizado apenas quando os testes unit´arios forem executados com sucesso ou quando uma pequena parte da funcionalidade estiver completa. • Projeto Simples: como projetos simples sempre s˜ao implementados em menor tempo que os complexos, XP encoraja os desenvolvedores a projetar apenas o que est´a previsto at´e o momento e da maneira mais simples poss´ıvel. • Refactoring: tamb´em conhecido como melhoria cont´ınua da arquitetura, esta pr´atica torna-se necess´aria em fun¸c˜ao da pr´atica do Projeto Simples. E para que seja efetiva, os testes unit´arios devem ser robustos o suficiente para que o refatoramento seja feito de forma segura. • Met´aforas: com o objetivo de melhorar a comunica¸c˜ao e o entendimento sobre a arqitetura do projeto, XP prega que sejam utilizadas met´aforas (uma hist´oria de.

(27) 2.2 TRABALHOS RELACIONADOS. 12. como o sistema deve funcionar) para uniformizar o entendimento do sistema entre desenvolvedores, gerentes e cliente. • Releases Curtos: uma pequena vers˜ao do sistema deve ser entregue ao final de cada itera¸c˜ao. Esta pr´atica permite receber um feedback cont´ınuo do cliente e minimiza o impacto de mudan¸cas. • Semana de 40 Horas: o limite de trabalho semanal n˜ao deve exceder 40 horas, pois longas jornadas de trabalho levam a equipe ao cansa¸co, e consequentemente, mais suscet´ıvel a erros. Ao inv´es de aumentar a carga de trabalho semanal, o escopo e os prazos devem ser revistos. O uso de XP ´e adequado e recomendado a projetos de risco e que possuem requisitos dinˆamicos, como por exemplo quando o cliente n˜ao tem certeza do que o sistema deve fazer. Al´em disso XP melhor se adequa a pequenas equipes: 2 a 12 pessoas [Bec99]. 2.2. TRABALHOS RELACIONADOS. Nesta se¸c˜ao s˜ao apresetados trabalhos relacionados ao desenvolvimento de IP-core. Este trabalhos n˜ao definem processos de desenvolvimento em si, mas s˜ao iniciativas recentes e interessantes de muita contribui¸c˜ao no assunto. S˜ao apresentados dois trabalhos relacionados a praticas de desenvolvimento e documenta¸c˜ao: Reuse Methodology Manual e VSI Alliance. Em seguida s˜ao apresentados trabalhos que utilizam a linguagem UML como ferramenta de modelagem no desenvolvimento de IP-cores. 2.2.1. Reuse Methodology Manual (RMM). O reuso de projetos - cores pr´e-definidos e pr´e-verificados - ´e uma das atuais alternativas para viabilizar projetos de chips grandes e complexos dentro de um custo aceit´avel, tanto em rela¸c˜ao a tamanho de equipe e prazos quanto a qualidade do produto final. Neste sentido, o Reuse Methodology Manual, tamb´em conhecido por RMM, foca num conjunto de boas pr´aticas para criar IP-cores de fato reus´aveis no contexto de uma metodologia de projeto de SoC baseada em reuso de cores [KB02]. As pr´aticas adotadas pelo RMM foram baseadas na experiˆencia dos autores no desenvolvimento de projetos de IP-core reus´aveis, assim como na experiˆencia de muitas empresas ao redor do mundo como: Alcatel, Atmel, Infineon Technologies, LSI Logic, Philips Semiconductor e STMIcroelectronics [KB02]. O RMM tem como objetivo definir t´ecnicas para:.

(28) 2.2 TRABALHOS RELACIONADOS. 13. • projetar IP-cores reus´aveis; • reutilizar IP-cores em projeto de SoC’s; • integrar IP-cores em projetos de SoC; • verificar timing e funcionalidades em projetos de grandes SoC´s. Dessa forma, o RMM trata problemas relacionados a dois p´ ublicos distintos: os projetistas de IP-cores reus´aveis e os projetistas de chips que integram esses IP-cores em seus projetos de SoC. Considerando o p´ ublico dos projetistas, o RMM prega que um IP-core reus´avel deve ter as seguintes caracter´ısticas: • Configurabilidade: o IP-core produzido deve ser configur´avel de tal forma que possa atender a diferentes necessidades de diferentes projetos de SoC • Interface Padr˜ao: ado¸c˜ao de interface com padr˜ao industrial de forma que o IP-core seja facilmente integrado a um SoC. • Compat´ıbilidade com Pr´aticas de Projeto: seguir pr´aticas comuns de projeto que tornem o IP-core f´acil de ser verificado e distribu´ıdo, como por exemplo guia de implementa¸c˜ao RTL, guia de s´ıntese, guia de verifica¸c˜ao e guia de distribui¸c˜ao. • Conjunto Completo de Deliverables: dispoinibilizar um conjunto completo de informa¸c˜oes para que o IP-core seja reutilizado com facilidade como C´odigo RTL Sintetiz´avel, Componentes de Verifica¸c˜ao, Scripts de S´ıntese e Documenta¸c˜ao. Essas pr´aticas devem guiar as fases do desenvolvimento do IP-core. A Figura 2.2 apresenta as fases de desenvolvimento consideradas no RMM. A seguir ´e apresentada uma breve descri¸c˜ao das fases citadas na Figura 2.2: • Definir Caracter´ısticas Chave (Define Key Features): primeiro passo do desenvolvimento onde devem ser definidas as funcionalidades b´asicas e os parˆametros de configura¸c˜ao. • Planejamento e Especifica¸c˜ao(Planning and Specification): o segundo passo ´e desenvolver uma especifica¸c˜ao detalhada tanto para a implementa¸c˜ao quanto para a verifica¸c˜ao e um planejamento para o restante do projeto. • Projeto e Verifica¸c˜ao(Design and Verification): uma vez que a especifica¸c˜ao e o planejamento est˜ao conclu´ıdos, a equipe passa ent˜ao para a fase de detalhamento do projeto (implementa¸c˜ao) e verifica¸c˜ao do IP-core..

(29) 14. 2.2 TRABALHOS RELACIONADOS. DEFINE key features. PLANNING and SPECIFICATION. DESIGN and VERIFICATION. PRODUCTIZATION. ALPHA TEST and RELEASE. Figura 2.2 Fases de Desenvolvimento de IP-cores segundo o RMM [KB02]. • Cria¸c˜ao de Produto(Productization): uma vez que o projeto est´a completo, testes adicionais s˜ao executados a documenta¸c˜ao para os usu´arios finais ´e criada (deliverables) e empacotada de forma que o produto possa ser entregue ao cliente. • Teste e Libera¸c˜ao de Vers˜ao(Alpha Test and Release): a vers˜oes finais dos deliverables s˜ao testados para certificar-se que est˜ao completos e prontos para serem utilizados pelo usu´ario final (integradores e projetistas de SoC). Estas fase ser˜ao descritas em maiores detalhes no Cap´ıtulo 3. 2.2.2. Virtual Socket Interface Alliance (VSIA). O VSI Alliance, tamb´em chamado de VSIA, ´e um grupo de trabalho formado pela ind´ ustria que tem como objetivo facilitar o reuso de componentes atrav´es da defini¸c˜ao de interfaces padr˜ao para ferramentas e padr˜oes de documenta¸c˜ao. Em outras palavras o objetivo do VSIA ´e desenvolver e manter um conjunto de padr˜oes de reuso de IP-cores que torne poss´ıvel o aumento da produtividde de projetos de SoC [vsi02, vsi]. O VSIA foi formado em setembro de 1996 pelas principais empresas da ind´ ustria de semicondutores e de automa¸c˜ao de projetos (EDA) com dois objetivos principais. O primeiro era desenvolver uma vis˜ao unificada para a ind´ ustria de chips e, o segundo, desenvolver pad˜oes t´ecnicos que permitissem a utiliza¸c˜ao da propriedade intelectual oriunda de diferentes fontes. Mais tarde, a vis˜ao do VSIA expandiu-se em fun¸c˜ao da crescente necessidade da ind´ ustria de circuitos integrados (IC) incluindo trabalhos na ´area de software.

(30) 2.2 TRABALHOS RELACIONADOS. 15. e hardware IP-cores para projetos de System-on-Chip (SoC). Recentemente a organiza¸c˜ao foi reestruturada atrav´es da cria¸c˜ao de um novo tipo de grupo de trabalho, chamado de Pilar (Pillars). Cada pilar direciona padroniza¸c˜oes para aumentar a produtividade dos desenvolvedores e usu´arios de SoC e IP-cores. Atualmente existem quatro Pilares, que est˜ao descritos brevemente abaixo: • IP Quality: respons´avel por definir atributos essenciais de qualidade para qualquer IP de modo tal que o torne funcional e eficientemente reus´avel em SoCs. • IP Protection: respons´avel por definir, desenvolver e documentar solu¸c˜oes abertas e padronizadas para balancear o n´ıvel de seguran¸ca necess´ario `a prote¸c˜ao da propriedade intelectual e sua usabilidade. • IP Infrastructure: respons´avel por promover a interoperabilidade entre os participantes do ecossistema de IP-core. O objetivo deste pilar ´e aumentar o valor agregado no reuso de IP-cores. • Research & Development: tem como objetivo estudar e direcionar novos desafios encarados pela ind´ ustria como avalia¸c˜ao de IP-core, reuso de blocos muito grandes e projeto baseado em plataforma entre outros. A se¸c˜ao a seguir apresenta estudos recentes que relacionam a linguagem de modelagem UML e projetos de IP-cores e SoC’s. 2.2.3. Modelagem UML. Esta subse¸c˜ao agrupa trabalhos relacionados a utiliza¸c˜ao da linguagem UML como mecanismo de modelagem de projetos de IP-cores e SoCs, tendo como objetivo relatar novas t´ecnicas utilizadas nas atividades de especifica¸c˜ao e implementa¸c˜ao. A seguir est˜ao descritos alguns destes trabalhos. 2.2.3.1 Gera¸c˜ ao de C´ odigo SystemC a partir de Modelos UML Este trabalho foi divulgado em 2004 na conferencia UML-SoC por [W+ 04], o qual apresenta uma ferramenta para gera¸c˜ao autom´atica de c´odigo SystemC a partir de modelos UML, chamada de RT2SystemC. Esta ferramenta gera c´odigo SystemC a partir de modelos UML descritos na ferramenta Rational Rose RT, sendo o c´odigo gerado aceito pelo compilador da ferramenta Synopsys CoCentric. O RT2SystemC permite ao usu´ario descrever modelos utilizando.

(31) 16. 2.2 TRABALHOS RELACIONADOS. o profile UML de Tempo Real (UML-RT). Este profile inclui os conceitos de capsulas, protocolos e portas. A modelagem em UML do comportamento deve ser feita atrav´es de diagramas de classe e de m´aquinas de estado. SystemC foi escolhida como linguagem alvo pelas seguintes caracter´ısticas: • SystemC ´e uma linguagem que permite a descri¸c˜ao de comportamento de hardware e software em alto n´ıvel de abstra¸c˜ao • SystemC ´e definido como um conjunto de bibliotecas C++, sendo naturalmente compat´ıvel com metodologias orientada a objetos. • E por u ´ ltimo, SystemC possui grande similaridade com os conceitos de UMLRT. Uma capsula em UML corresponde a um m´ odulo em SystemC. Capsulas comunicam-se via portas e protocolos da mesma maneira que m´odulos comunicamse via portas e canais em SystemC. A Figura 2.3 apresenta o fluxo de execu¸c˜ao da ferramenta RT2SystemC. Rose RT UML. Synthesizable SystemC. C++ Code Generation with Rose RT. Post-processign with Synthesis Options. Convert C++ to XML with GCC_XML. Translate into SystemC Coded. Pre-processing With Our Own Tags. Parsing XML using JDOM. Figura 2.3 Ferramenta RT2SystemC: Processo de Tradu¸c˜ ao [W+ 04]. O pr´e-processamento ´e necess´ario apenas se o objetivo ´e gerar c´odigo SystemC sintetiz´avel, sendo dispens´avel quando o objetivo for gerar c´odigo SytemC no n´ıvel de transa¸c˜ao (TLM). Desta forma, o usu´ario pode gerar c´odigo SystemC em dois n´ıveis: RTL Sintetiz´avel e TLM. Este trabalho pode ser extremamente u ´ til para gerar especifica¸c˜oes execut´aveis e, consequentemente, modelos de referˆencia na verifica¸c˜ao funcional.

(32) 2.2 TRABALHOS RELACIONADOS. 17. diminuindo o tempo de projeto. Al´em disso, o autor [W+ 04] ressalva que este trabalho pode ser extendido, para que a partir dos mesmos modelos UML, sejam gerados automaticamente tamb´em casos de teste (o conjunto de est´ımulos utilizados na verifica¸c˜ao funcional). 2.2.3.2 SystemC e UML 2.0: Novas Metodologias de Projeto Esta subse¸c˜ao agrupa algumas iniciativas de empresas que est˜ao utilizando e pesquisando sobre o uso de UML 2.0 e SystemC como uma nova abordagem de projeto de SoCs. Todos os trabalhos foram apresentados em 2005 na conferˆencia Design, Automation and Test in Europe (DATE ’05). 2.2.3.2.1 STMicroelectronics - este trabalho mostra a experiˆencia da STMicroelectronics na utiliza¸c˜ao de UML em sua metodologia de projeto de SoC’s [RS+ 05]. O referido trabalho sugere um profile UML 2.0 para SystemC capaz de capturar aspectos comportamentais e estruturais da linguagem, com o objetivo de permitir a modelagem de System-on-Chips (SoCs) em alto n´ıvel de abstra¸c˜ao e gera¸c˜ao de c´odigo [RS+ 05]. Este trabalho aposta na utiliza¸c˜ao de UML como uma forma de aperfei¸coar o fluxo do projeto de SoC da sequinte maneira [RS+ 05]: • UML ´e independente de plataforma, dessa forma pode ser adotado como modelo execut´avel da funcionalidade do sistema. • O profile UML para SystemC permite descrever comportamento de hardware no n´ıvel RTL • UML pode ser utilizado para modelar comportamento e gerar c´odigo de software A Figura 2.4 apresenta o profile UML 2.0 para SystemC, na coluna da esquerda s˜ao listados os elementos de SystemC e na coluna da direita as respectivas representa¸c˜oes em UML. 2.2.3.2.2 Fujitsu - este trabalho mostra a experiˆencia da incorpora¸c˜ao da linguagem UML como um modelo formal de especifica¸c˜ao em projetos de SoC. O trabalho foca na utiliza¸c˜ao de UML como um mecanismo para aumentar a qualidade da especifica¸c˜ao e da implementa¸c˜ao, reduzindo assim o n´ umero de erros no projeto. [Z+ 05]. A Figura 2.5 mostra a estrat´egia de introdu¸c˜ao de UML ao processo de desenvolvimento de SoCs da Fujitsu..

(33) 2.2 TRABALHOS RELACIONADOS. 18. Figura 2.4 Nota¸c˜ ao UML para os conceitos de SystemC [RS+ 05]. Esta nova abordagem tornou-se efetiva n˜ao s´o para validar a especifica¸c˜ao como tamb´em para implementar a verifica¸c˜ao [Z+ 05]. A incorpora¸c˜ao da linguagem UML foi realizada da seguinte maneira: • Para reduzir o impacto do fluxo corrente, UML foi integrado ao processo de verifica¸c˜ao sem modificar o estilo de projeto corrente. • Foram utilizados apenas diagramas de classe, diagramas de sequˆencia e diagramas de casos de uso para modelar fun¸c˜oes, tipos de dados e comportamento da especifica¸c˜ao. • Foi introduzido o CWL (Component Wrapper Language) para modelar a interface do protocolo de comunica¸c˜ao no n´ıvel de sinal..

(34) ˜ 2.3 CONSIDERAC ¸ OES FINAIS. 19. Figura 2.5 Fujitsu: Incorporando UML ao seu processo de Projetos de SoC [Z+ 05]. • UMl foi utilizado para analisar e modelar a especifica¸c˜ao escrita em linguagem natural, assim como para eliminar erros de especifica¸c˜ao validando a completude e consistˆencia dos modelos UML. • Os cen´arios de teste foram derivados dos modelos UML para validar a implementa¸c˜ao (RTL source code) atrav´es de testes black box. 2.2.3.2.3 SysML Partners - Iniciativa conjunta da OMG e do International Council on Systems Engineering (INCOSE) com parceria entre empresas e organiza¸c˜oes (como Boeing, Motorola, Mentor Graphics e I-Logix). Esta iniciativa tem como objetivo refinar a linguagem UML 2.0 para criar uma linguagem de modelagem, chamada System Modeling Language (SysML). A linguagem SysML vem sendo utilizada para modelagem de sistemas incluindo: especifica¸c˜ao, an´alise e verifica¸c˜ao de sistemas complexos com componentes de hardware e software [VD05, sys]. 2.3. ˜ CONSIDERAC ¸ OES FINAIS. Este cap´ıtulo apresentou os principais trabalhos relacionados ao desenvolvimento de IPcores e seu reuso em projetos de SoC. Foram descritos dois processos de desenvolvimento de software, RUP e XP, cujos conceitos podem ser vistos como um modelo para defini¸c˜ao de processos de desenvolvimento em geral..

(35) ˜ 2.3 CONSIDERAC ¸ OES FINAIS. 20. Mais especificamente no contexto de IP-cores foram descritos os trabalhos do manual de reuso e a iniciativa para padroniza¸c˜ao de documenta¸c˜ao, RMM e VSIA respectivamente. Al´em destes, foram apresentados trabalhos recentes que ilustram novas tendendˆencias no projeto de IP-cores e SoCs como a utiliza¸c˜ao de UML como linguagem de modelagem de alto n´ıvel. Onde o foco destes trabalhos ´e criar uma especifica¸c˜ao e implementa¸c˜ao de maior qualidade, reduzindo assim o n´ umero de erros no projeto. Estes trabalhos apresentam uma vis˜ao geral das etapas da metodologia, sem no entanto detalhar os passos do processo em termos de atividade, pap´eis e produtos a serem gerados a cada passo. O pr´oximo cap´ıtulo apresenta os conceitos b´asicos relacionados ao contexto de desenvolvimento de IP-cores..

(36) CAP´ITULO 3. DESENVOLVIMENTO DE IP-CORE: CONCEITOS ´ BASICOS. Este cap´ıtulo tem como objetivos apresentar alguns conceitos b´asicos relacionados ao contexto de projetos de IP-cores, assim como apresentar uma vis˜ao geral da fases de desenvolvimento e atividades envolvidas. ´ CONCEITOS BASICOS. 3.1. Esta se¸c˜ao agrupa a descri¸c˜ao de conceitos b´asicos relacionados ao projeto de IP-cores como s´ıntese, verifica¸c˜ao funcional, prototipa¸c˜ao r´apida e classifica¸c˜ao de IP-cores. 3.1.1. Classifica¸c˜ ao de IP-core. Segundo o VSIA [vsi02], o produto final de um IP-core pode ser classificado de acordo com o conjunto de deliverables entregue ao usu´ario final, o que representa o quanto o desenvolvimento foi dirigido para um processo de fabrica¸c˜ao em particular. Segundo esse crit´erio, um IP-core pode ser classificado como: ´ entregue o c´odigo fonte, ou seja, o c´odigo RTL sintetiz´avel. Sob o • Soft IP - E ponto de vista do usu´ario, o Soft IP ´e mais flex´ıvel, por´em n˜ao existe precis˜ao em termos de performance (´area, potˆencia, timing etc). • Hard IP - O Hard IP foi otimizado em termos de performance e mapeado para uma tecnologia espec´ıfica. Geralmente s˜ao entregues no formato GDSII1 , e inclui um modelo comportamental de ”alto-n´ıvel”, uma lista de testes e os modelos temporais e f´ısicos completos. Possui a vantagem de ser mais previs´ıvel, mas consequentemente ´e menos flex´ıvel em fun¸c˜ao de ser dependente de tecnologia. • Firm IP - O Firm IP ´e um meio termo entre o Hard IP e o Soft IP. O Firm IP inclui RTL sintetiz´avel, sendo considerado uma tecnologia f´ısica gen´erica. Dessa 1. GDSII : Polygon Level Layout Format. 21.

(37) ´ 3.1 CONCEITOS BASICOS. 22. forma, o Firm IP ´e mais previs´ıvel em termos de performance, assim como tamb´em mais flex´ıvel e port´avel. Essa classifica¸c˜ao considera que o Hard IP ser´a prototipado fisicamente em um ASIC (chip). Do ponto de vista do desenvolvedor, os modelos Soft IP e Firm IP implicam em uma aspecto a mais a ser considerado durante o desenvolvimento que ´e a prote¸c˜ao da propriedade intelectual, uma vez que o c´odigo fonte RTL ´e entregue ao usu´ario final. 3.1.2. Taxonomia de Desenvolvimento: N´ıveis e Dom´ınios de Descri¸c˜ ao. O gr´afico Y-Chart, ilustrado na Figura 3.1, define uma taxonomia para o desenvolvimento de projetos na ´area de sistemas eletrˆonicos, sendo introduzido primeiramente em 1983 por Gajski e Kuhn e ainda hoje mantendo-se como um ponto de referˆencia importante [MLD92]. System Level. Behavioral Domain. Structural Domain. Algorithmic Level. System Spec.. CPU, Memory. RT - Level. Algorithm. Processor, Subsystem. Logic Level. Register-Transfer Spec. Boolean Eqn.. Circuit Differential Eqn. Level. ALU, Reg., MUX Gate, Flip-flop. Transistor. Rectangle / Polygon-Group Standard Cell / Subcell Macrocell Block / Chip Chip / Board. Physical /Geometrical Domain. Figura 3.1 Y-Chart: Dom´ınios e N´ıveis de Descri¸c˜ ao de Funcionalidade [MLD92]. A id´eia b´asica por tr´as do Y-Chart ´e que cada elemento de um sistema eletrˆonico pode ser descrito em trˆes dom´ınios diferentes que representam os eixos do gr´afico. A seguir, uma breve descri¸c˜ao de cada dom´ınio:.

(38) ´ 3.1 CONCEITOS BASICOS. 23. • Dom´ınio Comportamental (Behavioral Domain): o comportamento desejado do sistema ´e especificado, idealmente sem referˆencia de como esse comportamento ´e atingido por uma implementa¸c˜ao. • Dom´ınio Estrutural (Structural Domain): o sistema ´e tratado como um conjunto de elementos funcionais e suas interconex˜oes. • Dom´ınio F´ısico (Physical Domain): A estrutura do projeto ´e mapeado no espa¸co, e n˜ao existe qualquer referˆencia para sua funcionalidade. Em cada dom´ınio citado, os elementos podem ser descritos em v´arios n´ıveis de abstra¸c˜ao. Quanto mais perif´erico, mais abstrato o n´ıvel, e quanto mais p´oximo do centro mais baixo ´e o n´ıvel de descri¸c˜ao. As transi¸c˜oes entre os eixos do Y-Chart definem tarefas no contexto de desenvolvimento de projetos e est˜ao ilustradas na Figura 3.2, Parte A. Behavioral Domain. Synthesis Structural Domain. Analysis. Behavioral Domain. Structural Domain. 2. System Spec. Algorithm. Re fin em en Ab t st ra ct io n. 1. Processor, Subsystem. Optimization Register-Transfer Spec.. 3. Boolean Eqn.. ALU, Reg., MUX Gate, Flip-flop. Differential Eqn.. Generation. CPU, Memory. Transistor Rectangle / Polygon-Group Standard Cell / Subcell. Extraction Macrocell Block / Chip Chip / Board. Physical /Geometrical Domain. (Parte A). Physical /Geometrical Domain. (Parte B). Figura 3.2 Y-Chart: Transi¸c˜ oes Definindo Atividades [MLD92]. No contexto do desenvolvimento de IP-core, a Parte B da Figura 3.2 representa as atividades realizadas desde o in´ıcio do desenvolvimento at´e a prototipa¸c˜ao em FPGA (passos 1, 2 e 3 da Parte B da figura). A implementa¸c˜ao do projeto se inicia no n´ıvel de.

(39) ´ 3.1 CONCEITOS BASICOS. 24. algoritmo e em seguida a descri¸c˜ao ´e refinada para o n´ıvel RTL. No passo 2, a descri¸c˜ao RTL ´e sintetizada e em eguida, no passo 3, ´e gerada a descri¸c˜ao a n´ıvel de circuito. Atualmente, todas essas transi¸c˜oes podem ser realizadas com o suporte de ferramentas, dependendo da linguagem HDL utilizada no desenvolvimento do projeto. Fazendo um paralelo com o ciclo de vida do desenvolviemento de IP-cores, a descri¸c˜ao algor´ıtmica pode ser utilizada como especifica¸c˜ao execut´avel e/ou modelo de referˆencia na atividade de verifica¸c˜ao funcional. A partir desse modelo ´e feito um refinamento para o n´ıvel RTL, manualmente ou com suporte de ferramentas. Atualmente, a s´ıntese ´e feita a partir do n´ıvel RTL em fun¸c˜ao das ferramentas existentes serem melhor otimizadas neste n´ıvel de abstra¸c˜ao, dependendo das restri¸c˜oes de projeto. As atividades de s´ıntese e de gera¸c˜ao do circuito s˜ao automatizadas por ferramentas e fazem parte da prototipa¸c˜ao f´ısica do IP-core. 3.1.3. Verifica¸c˜ ao Funcional. A verifica¸c˜ao funcional ´e um processo utilizado para demonstrar que o comportamento desejado para o projeto foi preservado pela sua implementa¸c˜ao. Ou seja, o prop´osito da verifica¸c˜ao ´e garantir que o resultado de uma transforma¸c˜ao preserva o resultado esperado [Ber00]. Nesse contexto, o principal objetivo da verifica¸c˜ao funcional ´e garantir que o projeto implementa de fato a funcionalidade desejada. A verifica¸ca˜o funcional pode demonstrar que o projeto atende a especifica¸c˜ao, mas n˜ao pode provar a equivalˆencia entre a implementa¸c˜ao e a especifica¸c˜ao. Em outras palavras, atrav´es da verifica¸c˜ao funcional, ´e poss´ıvel provar a existˆencia de bugs, mas n˜ao ´e poss´ıvel provar sua ausˆencia. A verifica¸c˜ao funcional pode ser executada atrav´es de trˆes abordagens complementares, listadas a seguir [Ber00]: • Black-Box : a verifica¸c˜ao ´e realizada sem conhecimento de como foi realizada a implementa¸c˜ao. Toda a verifica¸c˜ao ´e executada atrav´es das interfaces disponibilizadas, sem acessar estados internos da implementa¸c˜ao. Possui a vantagem de ser independente da forma como foi implementado, e a desvantagem de ser dif´ıcil isolar uma funcionalidade particular quando um bug ´e encontrado. • White-Box : possui total visibilidade do comportamento interno do projeto que est´a sendo verificado. Possui a vantagem de isolar com facilidade um dado comportamento em particular, e a desvantagem de ser dependente da implementa¸c˜ao onde qualquer mudan¸ca pode invalidar o testbench. Al´em disso, esta abordagem n˜ao.

(40) ´ 3.1 CONCEITOS BASICOS. 25. pode ser implementada em paralelo com a implementa¸c˜ao do projeto, uma vez que a verifica¸c˜ao depende de como a implementa¸c˜ao foi realizada. • Grey-Box : esta abordagem ´e um meio termo entre as duas anteriores. A estrat´egia consiste em incluir algumas modifica¸c˜oes que permitam obter uma maior visibilidade do comportamento interno. Como exemplo, incluir acesso a registradores para controlar ou observar estados internos. No contexto de desenvolvimento de IP-cores existe uma clara distin¸c˜ao entre os termos Verifica¸c˜ao Funcional e Teste. O prop´osito da verifica¸c˜ao funcional ´e demonstrar que a implementa¸c˜ao do projeto reflete a funcionalidade desejada, enquanto o prop´osito do teste ´e garantir que o projeto foi manufaturado corretamente (implementa¸c˜ao em meio f´ısico, seja como ASIC ou FPGA). A express˜ao Testbench usualmente refere-se `a constru¸c˜ao de todo o c´odigo utilizado para criar uma sequˆencia predeterminada de entradas (est´ımulos) para um dado projeto, e ocasionalmente observar a sa´ıda. A Figura 3.3 ilustra como o testbench interage com o DUV (Design Under Verification).. Testbench. DUV (Design Under Verification). Figura 3.3 Intera¸c˜ ao entre Testbench e DUV. 3.1.3.1 Estrat´ egia de Verifica¸c˜ ao Funcional do BRAZIL IP Estima-se, hoje em dia, que cerca de 60% do tempo de projeto seja gasto em verifica¸c˜ao funcional [Ber00]. Diferentemente da atividade de s´ıntese, por exemplo, n˜ao existe um padr˜ao para a verifica¸c˜ao funcional, nem em termos de estilo de codifica¸c˜ao nem em termos de linguagem de implementa¸c˜ao. No contexto do projeto BRAZIL IP foi definida uma estrat´egia de verifica¸c˜ao funcional e uma ferramenta de suporte a essa estrat´egia, denominada VeriSC, onde SystemC foi adotada como a linguagem padr˜ao de implementa¸c˜ao [SM+ 04]. A ferramenta VeriSC gera.

(41) ´ 3.1 CONCEITOS BASICOS. 26. automaticamente templates para os componentes do testbench a partir das interfaces do DUV. Na estrat´egia proposta pelo VeriSC, o testbench ´e composto pelos seguintes m´odulos: souce, driver, reference model, monitor e checker ; como ilustrado na Figura 3.4.. Testbench REFERENCE MODEL S O U R C E. D r I v e r. DUV. M o n it o r. C H E C K E R. Figura 3.4 Estrat´egia de Verifica¸c˜ ao Funcional, Ferramenta VeriSC [SM+ 04]. Dados de entrada (est´ımulos) s˜ao gerados tanto para o DUV quanto para o modelo de referˆencia , e ambas as sa´ıdas s˜ao coletadas e comparadas para verificar se s˜ao equivalentes. O prop´osito de cada m´odulo ´e descrito a seguir: • Source: gera as transa¸c˜oes de dado (conjunto de sinais que formam o est´ımulo) • Driver : respons´avel por transformar as transa¸c˜oes de dado de acordo com a interface do DUV. • Reference Model : modelo com comportamento equivalente ao DUV, capaz de gerar a mesma sa´ıda que o DUV para um dada entrada. Considerando-se que o modelo de referˆencia est´a 100% correto. • Monitor : respons´avel por receber os sinais do DUV e transformar em transa¸c˜oes de dado. • Checker : respons´avel por verificar a cobertura funcional e verificar se as transa¸c˜oes oriundas do DUV e do RF s˜ao equivalentes. Essa estrat´egia foi adotada como padr˜ao no ipPROCESS, embora nada impe¸ca que o usu´ario adote uma outra. O objetivo de adotar o VeriSC como uma estrat´egia pr´e-definida ´e apenas agilizar a implementa¸c˜ao da verifica¸c˜ao funcional..

Referências

Documentos relacionados

Segund Segundo o o o come comentári ntário, qu o, quais s ais são ão as tr as três p ês priorid rioridades ades abso absolutas lutas da i da

Este trabalho apresenta o processo de concepção de um conjunto de soft IP-cores para projeto de aplicações gráficas com prototipação em FPGA, baseado no ipPROCESS.. O

1 o /03/11 Raz˜ ao de ser da disciplina; objetivos e metodologia; apresenta¸c˜ao breve dos conte´ udos de cada unidade do curso; os crit´erios de avalia¸c˜ao.. Os n´ umeros

Koopmans (1974) sugere considerar uma largura de faixa equivalente (LFE), substituindo a janela espectral do estimador geral por uma janela retangular, de modo que os dois

Se um experimento aleat´ orio sequencial constitui-se de n repeti¸ c˜ oes do mesmo experimento aleat´ orio simples com dois resultados poss´ıveis, a serem chamados “sucesso”

A amplitude representa a dispers˜ ao entre o menor e o maior valor de um conjunto de dados, entretanto, na presen¸ ca de um outlier, este valor acaba

As no¸c˜ oes de fun¸c˜ ao integr´ avel no sentido de Riemann e de integral de Riemann que apresentamos acima s˜ao a base de todo o C´ alculo elementar e delas se extrai uma s´erie

A possibilidade de aplica¸c˜ ao de t´ ecnicas de processamento e an´ alise de imagem ao estudo de evidˆ encias bal´ısticas revelou-se extremamente ´ util, ao permitir