• Nenhum resultado encontrado

Geração de especificações executáveis para o projeto de módulos para sistemas em "Chips"

N/A
N/A
Protected

Academic year: 2017

Share "Geração de especificações executáveis para o projeto de módulos para sistemas em "Chips""

Copied!
120
0
0

Texto

(1)

Gera¸c˜

ao de Especifica¸c˜

oes

Execut´

aveis para o Projeto de

odulos para Sistemas em “Chips”

Rafael Nunes Linhares Papa

Belo Horizonte

(2)

Rafael Nunes Linhares Papa

Gera¸c˜

ao de Especifica¸c˜

oes

Execut´

aveis para o Projeto de

odulos para Sistemas em “Chips”

Disserta¸c˜ao apresentada ao Curso de Mestrado do Programa de P´os-Gradua¸c˜ao em Engenharia El´etrica da Universidade Federal de Minas Gerais, como requisito parcial `a obten¸c˜ao do t´ıtulo de Mestre em Engenharia da Computa¸c˜ao.

´

Area de Concentra¸c˜ao: Engenharia de

Computa¸c˜ao e Telecomunica¸c˜oes

Linha de Pesquisa: Sistemas de Computa¸c˜ao Orientador: Prof. Dr. Di´ogenes C. da Silva Jr. Universidade Federal de Minas Gerais

Belo Horizonte

(3)

Dedicat´

oria

`

(4)

Agradecimentos

Primeiramente a toda minha fam´ılia e em todos aqueles que acreditaram em mim, em especial ao meu irm˜ao Daniel Nunes e `a minha av´o Jutay.

Aos professores e funcion´arios do PPGEE (CPDEE/UFMG), bem como aos colegas do LABSCI (Laboratorio de Sistemas Computacionais Integrados) Ramon , Alair, Adriano e Sandro.

Ao colega Breno Rocha de Almeida pelos coment´arios, cr´ıticas e sugest˜oes que ajudaram enriquecer este trabalho.

Ao CNPq e ao Projeto BRAZILIP pelo suporte financeiro.

(5)

“O mar n˜ao ´e um obst´aculo:

´

e um caminho”

(6)

Resumo

A crescente demanda por componentes eletrˆonicos esta fazendo com que o mercado destinado a circuitos integrados cres¸ca a uma velocidade alarmante. Chegou-se a tal ponto que, em no m´aximo dois ou quatro anos, ser´a poss´ıvel encontrar circuitos compostos por at´e um bilh˜ao de transistores. Essa capacidade de integra¸c˜ao ´e a respons´avel pelo surgimento de um novo conceito, o de Sistema “on chip” (SoC), no qual um sistema computacional completo ´e abrigado dentro de um ´unico circuito integrado.

A alta complexidade no processo de integra¸c˜ao e interconex˜ao dos m´odulos que comp˜oem um SoC, chamados de propriedade intelectual (IP - Intellectual Property), faz com que os fabricantes desses componentes invistam cada vez mais nos setores destinados `a produ¸c˜ao e ao desenvolvimento de novas tecnologias de projeto. O tempo desperdi¸cado durante o processo de desenvolvimento do projeto de SoC tamb´em ´e um dos fatores que contribuem para que novas metodologias de desenvolvimento de projeto sejam continuamente propostas.

Este trabalho apresenta a proposta de uma nova metodologia de desenvolvimento de

SoC’s que possibilitar´a uma diminui¸c˜ao no tempo de desenvolvimento e teste do projeto por meio da gera¸c˜ao de uma especifica¸c˜ao execut´avel que ser´a utilizada como modelo de referˆencia. A metodologia utiliza-se de diagramas da linguagem UML para a modelagem e descri¸c˜ao do sistema. Para descri¸c˜ao dos m´odulos em seus diversos n´ıveis de abstra¸c˜ao, a metodologia faz uso do ambiente de desenvolvimento da linguagem de descri¸c˜ao de hardware SystemC.

Palavras-chave: Projeto de Sistemas Embutidos; Descri¸c˜ao UML; Modelo de Referˆencia;

(7)

Abstract

The increasing demand for electronic components is driving the integrated circuit market to an unexpected growth. In the about two to four years it will be possible to find circuits composed of a billion transistors. This capacity of integration is the responsible for the emergence of a new concept, System-on-a-chip (SoC), in which a complete computational system is embedded into an single integrated circuit.

The high complexity of the process of integration and the interconnection of the modules, named Intellectual Property (IP), that composes a SoC, are demanding that the designers of these modules to invest more and more time in the search of new design methodologies. The time spent in the development process of SoC design is also one of the main factors that contribute to the need of new design methodologies.

This work presents the proposal of a new SoC design methodology that will make possible a considerable reduction in the time of development and test of the SoC design process through the generation of an executable specification that will be used as a reference model. The methodology utilizes UML diagrams for the system description. For the description of the modules in their levels of abstraction, the methodology makes use of the hardware description language SystemC environment.

keywords: Embedded System Design; UML Description; Reference Models; System-on-a-chip

(8)

Sum´

ario

1 Introdu¸c˜ao 1

1.1 Motiva¸c˜ao . . . 5

1.2 Objetivo . . . 6

1.3 Organiza¸c˜ao do Documento . . . 6

2 Revis˜ao da Literatura 8 3 Metodologia 18 3.1 Ferramentas Associadas . . . 19

3.1.1 A Linguagem UML . . . 19

3.1.2 Umbrello UML Modeller . . . 20

3.1.3 SystemC . . . 21

3.2 N´ıveis de Abstra¸c˜ao . . . 23

3.2.1 Especifica¸c˜ao . . . 24

3.2.2 Descri¸c˜ao UML . . . 24

3.2.3 Especifica¸c˜ao Execut´avel . . . 25

3.2.4 Fluxo de Dados (Data Flow - DF) . . . 25

3.2.5 Descri¸c˜ao Comportamental . . . 26

3.2.6 RTL . . . 26

3.3 Fluxo de Projeto . . . 27

3.3.1 An´alise de Requisitos . . . 28

3.3.2 Modelagem UML . . . 31

3.3.3 Descri¸c˜ao UML (Umbrello) para SystemC. . . 35

3.3.4 Implementa¸c˜ao da funcionalidade do processo . . . 37

(9)

4 Estudo de Caso 40

4.1 An´alise de Requisitos . . . 41

4.1.1 Vis˜ao Global . . . 41

4.1.2 Especifica¸c˜ao . . . 47

4.2 Modelagem UML . . . 49

4.2.1 Diagrama de Casos de Uso . . . 49

4.2.2 Diagrama de Seq¨uˆencia . . . 52

4.2.3 Diagrama de Classes . . . 53

4.3 Gera¸c˜ao do C´odigo. . . 54

4.4 Modelo Execut´avel. . . 63

4.5 Teste e Valida¸c˜ao. . . 66

4.6 Resultados . . . 69

5 Conclus˜ao 76 A Anexos 83 A.1 C´odigo Esqueleto . . . 83

A.2 C´odigo Funcional . . . 85

(10)

Lista de Figuras

1.1 Aumento da capacidade de integra¸c˜ao de transistores representado pela

evolu¸c˜ao dos processadores Intel [27]. . . 2

2.1 N´ıveis de Abstra¸c˜ao Propostos por Arnout [2] . . . 8

2.2 N´ıveis de Abstra¸c˜ao Propostos pela Synopsys [26] . . . 9

2.3 Fluxo de Projeto SLOOP - Proposto por Zhu [28] . . . 11

2.4 Fluxo de Projeto em Y - Proposto por Dumoulin [5] . . . 12

2.5 Fluxo de Projeto utilizando MDA - Proposto por Riccobene [22] . . . 14

2.6 Fluxo de Projeto utilizando MDA - Proposto por Nguyen [18] . . . 16

3.1 Compara¸c˜ao do tempo de simula¸c˜ao entre SystemC e VHDL [17] . . . 22

3.2 Compara¸c˜ao entre a ´area efetiva gasta na s´ıntese de c´odigo VHDL e SystemC [17] 23 3.3 N´ıveis de Abstra¸c˜ao alvo da Metodologia . . . 24

3.4 Fluxo de Projeto proposto pela Metodologia . . . 27

3.5 Exemplo da organiza¸c˜ao das informa¸c˜oes identificadas . . . 30

3.6 Exemplo de Caso de Uso Detalhado . . . 31

3.7 Equivalˆencia entre as representa¸c˜oes das classes do Umbrello - M´odulo (SystemC) x Classe (UML) . . . 32

3.8 Caso de Uso Detalhado . . . 32

3.9 Diagrama de Caso de Uso - Representa¸c˜ao Gr´afica . . . 33

3.10 Interface - Exemplo de Modelagem . . . 33

3.11 Exemplo de um Diagrama de Seq¨uˆencia . . . 34

3.12 Exemplo de um Diagrama de Classes . . . 35

3.13 Tipos Padr˜ao do SystemC no Umbrello . . . 36

3.14 Menu de Sele¸c˜ao de linguagem ativa . . . 36

3.15 Menu de Sele¸c˜ao de Classes do “Code Generation Wizard” . . . 37

(11)

4.2 Requisito Funcional 001 . . . 45

4.3 Requisito Funcional 002 . . . 46

4.4 Requisito Funcional 003 . . . 46

4.5 Requisito Funcional 004 . . . 47

4.6 Detalhamento dos Casos de Uso . . . 48

4.7 Caso de Uso - Obter Caracteres . . . 50

4.8 Caso de Uso - Converter C´odigo ASCII em Matriz de Pontos . . . 50

4.9 Caso de Uso - Gerar Seq¨uˆencia de Pixels . . . 51

4.10 Caso de Uso - Gerar Sinais de Controle . . . 51

4.11 Gerador de Caracteres - Diagrama de Caso de Uso . . . 52

4.12 Gerador de Caracteres - Diagrama de Seq¨uˆencia . . . 53

4.13 Gerador de Caracteres - Diagrama de Classes . . . 54

4.14 Exemplo de msg no Diagrama de Seq¨uˆencia - A Orienta¸c˜ao da seta pode indicar o tipo de interface entre m´odulos . . . 55

4.15 Umbrello - Adicionando interfaces aos m´odulos . . . 57

4.16 Representa¸c˜ao do caractere ASCII “u” na ROM . . . 58

4.17 Diagrama de Classes - Defini¸c˜ao das interfaces . . . 60

4.18 Umbrello - Acesso ao gerador de c´odigo (“Code Generation Wizard”) . . . 61

4.19 Umbrello - Sele¸c˜ao de M´odulos para a Gera¸c˜ao de c´odigo SystemC . . . 61

4.20 Umbrello - Indica¸c˜ao do local de grava¸c˜ao dos arquivos fonte e leitura do cabe¸calho . . . 62

4.21 Umbrello - Aguardando a confirma¸c˜ao para gerar o c´odigo . . . 62

4.22 Umbrello - C´odigo gerado com sucesso . . . 63

4.23 Teste e valida¸c˜ao do Modelo de Referˆencia . . . 67

4.24 Resultados - Diagrama de Caso de Uso . . . 71

4.25 Resultados - Diagrama de Seq¨uˆencia . . . 72

4.26 Resultados - Diagrama de Classes . . . 73

4.27 Resultado - Quadro gerado pelo simulador de v´ıdeo . . . 74

(12)

Lista de C´

odigos Fonte

3.1 C´odigo Esqueleto - Indica¸c˜ao de onde deve ser implementada a funcionalidade

do Processo . . . 37

4.1 Gerador de Caracteres - C´odigo Esqueleto gerado pela ferramenta . . . 63

4.2 Gerador de Caracteres - Implementa¸c˜ao da funcionalidade do processo . . . 64

4.3 Como construir um Programa principal “main.cpp” em SystemC . . . . 68

A.1 C´odigo Esqueleto - Gerador de Caracteres . . . 83

A.2 C´odigo Esqueleto - Mem´oria . . . 84

A.3 C´odigo Esqueleto - ROM de Caracteres . . . 84

A.4 C´odigo Funcional - Gerador de Caracteres . . . 85

A.5 C´odigo Funcional - Mem´oria . . . 87

A.6 C´odigo Funcional - ROM de Caracteres . . . 89

A.7 C´odigo Funcional - Makefile . . . 91

A.8 C´odigo Funcional - M´odulo Controlador (envia os endere¸cos a mem´oria) . 92 A.9 C´odigo Funcional - Gerador de Sinais de Video . . . 93

A.10 C´odigo Funcional - Buffer de armazenamento e atualiza¸c˜ao de quadros . . 96

A.11 C´odigo Funcional - Simulador de Video . . . 100

(13)

Lista de Abreviaturas

SoC System on a Chip

RAM Random Access Memory

ROM Read Only Memory

CI Circuito Integrado

SIA Semiconductor Industry Association

DFT Design for Testability

NoC Network on a Chip

OCP-IP Open Core Protocol International Partnership

IP Intelectual Property (core)

RTL Register Transfer Level

CAD Computer Aided Design

UML Unified Modeling Language

HDL Hardware Description Language

OSCI Open SystemC Initiative

FPGA Field Programmable Gate Array

ISP Intensive Signal Processing

ISS Instruction Set Simulator

FIFO First In First Out

TLM Transaction Level Modeling

UDF Untimed Data Flow

TDF Timed Data Flow

OMG Object Management Group

CRT Cathode Ray Tube

ASCII American Standard Code for Information Interchange

VCD Value Change Dump

(14)

Cap´ıtulo 1

Introdu¸c˜

ao

O constante avan¸co tecnol´ogico observado por Gordon E. Moore na d´ecada de 1960 [24]

e o aumento da demanda do mercado por dispositivos eletrˆonicos, tˆem contribu´ıdo cada

vez mais para que as atividades rotineiras realizadas pelo homem sejam automatizadas.

Os sistemas computacionais, formados por meio da uni˜ao entre hardware e software,

constituem uma forma moderna de prover essa automatiza¸c˜ao e s˜ao chamados de SoCs

- System on a Chip. Os SoCs s˜ao sistemas computacionais completos que, apesar de

possu´ırem uma estrutura interna similar ao de um computador, formados por microprocessadores,

mem´orias RAM (Random Access Memory) e ROM (Read Only Memory), barramentos

e dotados de software, s˜ao caracterizados pela sua capacidade de n˜ao serem percebidos

como tal pelo o usu´ario final [7]. A t´ıtulo de exemplo, podemos citar como uma de suas

aplica¸c˜oes, a verifica¸c˜ao em tempo real da press˜ao dos pneus de um ve´ıculo, um processo

totalmente automatizado que j´a ´e realizado pela maioria dos sistemas de controle dos

ve´ıculos considerados de luxo. Atualmente, conforme foi previsto por Moore, estes sistemas

s˜ao compostos por milh˜oes de transistores embutidos em um ´unico circuito integrado (CI).

A FIG. 1.1 abaixo representa, atrav´es da evolu¸c˜ao dos processadores do fabricante Intel, o

(15)

Figura 1.1: Aumento da capacidade de integra¸c˜ao de transistores representado pela evolu¸c˜ao dos processadores Intel [27].

Nos ´ultimos vinte anos, o avan¸co da tecnologia de fabrica¸c˜ao de CIs continua sendo

impulsionada pela lei de Moore que mant´em a afirmac˜ao de que o n´umero de transistores

por ´area de chip dobra a cada 18 meses [25]. Estima-se que em menos de 4 anos estar˜ao

dispon´ıveis no mercado, circuitos integrados compostos por mais de um bilh˜ao de transistores [19] [10],

que se comparado ao estado atual, tornar´a ainda mais complexa a tarefa de integra¸c˜ao e

interconex˜ao dos m´odulos que comp˜oem um sistema dessa grandeza, incluindo os SoCs.

Al´em disso, o tempo entre o desenvolvimento de um produto e seu lan¸camento no mercado

(Time-to-Market), tende a ser cada vez menor [21].

Todos os fatores citados contribuem para a diminui¸c˜ao do tempo dispon´ıvel para a

equipe na concep¸c˜ao e valida¸c˜ao de um projeto de SoC. As etapas compreendidas entre

a concep¸c˜ao e os testes de SoCs s˜ao as que demandam a maior parte do tempo estimado

durante o planejamento [20]. Qualquer tipo de erro pode gerar custos e atrasar o cronograma.

Isso faz com que cada vez mais, este se torne um problema de responsabilidade das equipes

integrantes do projeto.

A Semiconductor Industry Association (SIA)prevˆe que em torno de 2015, o custo para

se testar um CI com essa complexidade ir´a exceder o custo necess´ario para desenvolvˆe-lo,

(16)

Esse fator justifica a necessidade em estar constantemente desenvolvendo novas metodologias

que auxiliem durante as fases de especifica¸c˜ao e teste de projetos deSoCs [3]. Novos fluxos

de desenvolvimento de projeto tamb´em est˜ao sendo pesquisados e aplicados. A maior

parte deles visando combater o desperd´ıcio de tempo e baseando-se no conceito de projeto

voltado para testes, ou Design for Testability (DFT).

A pr´opria utiliza¸c˜ao efetiva de SoCs tem se mostrado ´util na tentativa de minimizar

alguns desses problemas. Por´em, o tempo empregado no desenvolvimento e concep¸c˜ao

do seu projeto continua sendo um de seus fatores cr´ıticos. As suas principais vantagens

sobre as demais tecnologias s˜ao: diminui¸c˜ao da ´area efetiva total gasta pelo hardware e a

diminui¸c˜ao no tempo de comunica¸c˜ao entre diferentes m´odulos. V´arias t´ecnicas est˜ao sendo

empregadas com o prop´osito de maximiz´a-las. Dentre as mais comuns podemos listar:

1. padroniza¸c˜ao e melhoramento dos meios de interconex˜ao entre m´odulos do projeto;

2. reuso de m´odulos ou reutiliza¸c˜ao;

3. aumento nos n´ıveis de abstra¸c˜ao do projeto;

A padroniza¸c˜ao das interconex˜oes busca melhorar a eficiˆencia na troca de dados e informa¸c˜oes entre os m´odulos. A medida que o n´umero de m´odulos contidos em umSoC

aumenta, crescem tamb´em os problemas para interconect´a-los. A utiliza¸c˜ao de barramentos

simples j´a n˜ao ´e t˜ao eficiente. Al´em de ser um meio compartilhado, existem s´erias restri¸c˜oes

relacionadas a sua forma de comunica¸c˜ao, que se resume a uma mensagem a cada instante.

Barramentos hier´arquicos e aplica¸c˜ao do conceito de redes de computadores vem sendo

utilizados como tentativa de solu¸c˜ao. UmaNetwork on a Chip (NoC), como s˜ao chamadas

essas redes de comunica¸c˜ao, tende a ser mais eficiente [15] por evitarem situa¸c˜oes bloqueantes

na comunica¸c˜ao entre dois m´odulos. Ela os trata como se fossem objetos reais de uma rede,

gerenciando a comunica¸c˜ao entre eles por meio de camadas de protocolos.

(17)

gasto no projeto. Por´em na maioria dos casos, esses m´odulos ainda n˜ao disp˜oem de uma

interface padronizada. Como foi visto anteriormente, o avan¸co na produ¸c˜ao e o aumento

na capacidade dos CIs est´a permitindo que um maior n´umero de m´odulos ou n´ucleos IP

sejam agregados em um ´unicoSoC. A grande quantidade e a falta de interfaces de conex˜ao

padronizadas, tornam a reutiliza¸c˜ao em novos projetos uma tarefa bastante complexa.

O aumento nos n´ıveis de abstra¸c˜ao tamb´em ´e um dos meios utilizados para tentar diminuir o tempo gasto na concep¸c˜ao de projetos. Al´em disso, ´e visto como uma

das formas de aumentar a sua eficiˆencia. A complexidade de se desenvolver ou alterar

qualquer m´odulo no n´ıvel de transferˆencia de registradores (Register Transfer Level - RTL)

´e alta. Quando se eleva os n´ıveis a um patamar onde o projetista n˜ao precisa mais se

preocupar com determinados tipos de detalhes de implementa¸c˜ao, a tarefa de descrever as

funcionalidades de um m´odulo, bem como suas conex˜oes e interfaces, torna-se muito mais

f´acil. Atualmente n˜ao existe uma defini¸c˜ao ou padroniza¸c˜ao para determinar os n´ıveis que

devem estar compreendidos entre a descri¸c˜ao no n´ıvel de sistema e o RTL.

A escolha correta das ferramentas de CAD (Computer Aided Design) tamb´em se tornou

um fator importante durante o processo de desenvolvimento deSoCs. Veremos no decorrer

dos cap´ıtulos que este trabalho utiliza-se dos recursos de apenas duas ferramentas. O

Umbrello UML Modeller, que d´a suporte a linguagem de modelagem UML, e SystemC,

uma linguagem de descri¸c˜ao de hardware.

AUnified Modeling Language(UML)´e uma linguagem de modelagem de prop´osito geral que j´a vem sendo amplamente utilizada pela comunidade de engenharia de software

como“framework”para documenta¸c˜ao de software. Ela provˆe suporte a projetos orientados

a objetos, o qual indiretamente, encoraja a reutiliza¸c˜ao de componentes, pois apresenta

diversas vis˜oes do sistema que est´a sendo projetado com uma grande diversidade de

diagramas estruturais e comportamentais. Anteriormente pensava-se que ela havia sido

(18)

de software. Hoje, UML est´a se tornando atrativa tamb´em para a descri¸c˜ao de sistemas

embutidos e de tempo real [14].

SystemC ´e uma linguagem de descri¸c˜ao de hardware (Hardware Description Language - HDL) dec´odigo aberto, baseada em C++. Ela vem sendo desenvolvida por um grupo de empresas que formam a Open SystemC Initiative (OSCI), reconhecida recentemente

como novo padr˜ao, IEEE P1666 (“SystemC Language Reference Manual”). Foi criada com

a finalidade de atender as necessidades anteriormente descritas de eleva¸c˜ao dos n´ıveis de

abstra¸c˜ao de um projeto de SoC. Al´em disso SystemC permite que hardware e software

sejam descritos simultaneamente em um ambiente homogˆeneo, proporcionando ao projetista

a capacidade de verifica¸c˜ao de erros funcionais ainda nas etapas iniciais de desenvolvimento

e uma maior compreens˜ao do projeto como um todo.

1.1

Motiva¸c˜

ao

O n´ıvel de integra¸c˜ao e o n´umero de funcionalidades embutidos em um ´unico circuito

integrado est´a tornando muito complexa a tarefa de desenvolvimento deSoCs. Conseq¨uentemente

o tempo gasto e os custos empregados no decorrer do projeto est˜ao aumentando. Sendo

assim, para cada novo projeto deSoC, devemos buscar novos m´etodos para tentar diminuir

o esfor¸co empregado nas suas etapas de concep¸c˜ao e valida¸c˜ao.

Al´em de levar em considera¸c˜ao a possibilidade do reuso de m´odulos em projetos futuros,

deve-se preocupar principalmente em garantir a sua qualidade e a confiabilidade. As

t´ecnicas de modelagem s˜ao utilizadas para garantir estes quesitos e juntamente com a

metodologia proposta pode trazer diversas vantagens:

• Um melhor entendimento do projeto;

(19)

• Facilidade de altera¸c˜ao sem custos elevados;

• Diminui¸c˜ao do tempo gasto compreendido entre o per´ıodo de concep¸c˜ao e valida¸c˜ao

da primeira descri¸c˜ao execut´avel;

• Facilidade de documenta¸c˜ao, facilitando o reuso de m´odulos.

1.2

Objetivo

O objetivo deste trabalho ´e elaborar uma metodologia de desenvolvimento de SoCs

que minimize os esfor¸cos gastos pelos projetistas no decorrer das etapas de concep¸c˜ao e

valida¸c˜ao do projeto.

A proposta ´e partir de uma especifica¸c˜ao do SoC em alto n´ıvel, em conjunto com a sua

descri¸c˜ao UML, e chegar a um modelo de referˆencia execut´avel. Inicialmente, pretende-se

gerar c´odigo esqueleto para SystemC com a finalidade de facilitar o trabalho do projetista

durante os diversos refinamentos sucessivos dos m´odulos at´e a sua implementa¸c˜ao.

Em conseq¨uˆencia deste trabalho foi desenvolvida uma ferramenta para tradu¸c˜ao automatizada

de descri¸c˜oesUML(deSoCs) em c´odigo SystemC. Ela ´e um“plug-in”que deve ser instalado

juntamente com a ferramenta Umbrello1

de modelagemUML.

N˜ao ´e objetivo deste trabalho explorar os detalhes de implementa¸c˜ao do projeto na

ferramenta SystemC em seus diversos n´ıveis de abstra¸c˜ao.

1.3

Organiza¸c˜

ao do Documento

O texto deste trabalho esta organizado da seguinte forma:

• No capitulo 2 ´e apresentada uma revis˜ao da literatura contendo as diversas propostas de metodologias e fluxos de projeto para o desenvolvimento de SoCs ao longo dos

1

(20)

´

ultimos 4 anos.

• O capitulo 3 apresenta a metodologia. Nela s˜ao apresentados os n´ıveis de abstra¸c˜ao no qual o projetista deve focalizar para a correta aplica¸c˜ao dos m´etodos e o fluxo de projeto que deve ser seguido. As ferramentas tamb´em s˜ao brevemente apresentadas.

• O capitulo 4 mostra a aplica¸c˜ao da metodologia em um estudo de caso. Nele ´e apresentado o desenvolvimento de um gerador de caracteres para um display de video.

• No capitulo 5 ´e feita uma avalia¸c˜ao dos resultados obtidos.

(21)

Cap´ıtulo 2

Revis˜

ao da Literatura

Uma das primeiras propostas a apresentar alguma mudan¸ca no processo de desenvolvimento

de SoCs, utilizando SystemC como linguagem de descri¸c˜ao de hardware, foi descrita por

Arnout [2] em 2002. Ele propˆos dois novos n´ıveis de abstra¸c˜ao intermedi´arios entre a

especifica¸c˜ao e o RTL. O n´ıvel n˜ao temporizado buscava a descri¸c˜ao funcional do projeto sem a precis˜ao temporal e n˜ao havia separa¸c˜ao entre hardware e software, enquanto

que o transacional descrevia a funcionalidade de cada m´odulo de forma abstrata e a comunica¸c˜ao entre eles era baseada em ciclos de transa¸c˜oes. Arnout tinha como objetivo

a diminui¸c˜ao do tempo total gasto no desenvolvimento do projeto.

(22)

Nesse mesmo ano, uma outra proposta de eleva¸c˜ao nos n´ıveis de abstra¸c˜ao foi apresentada

pela Synopsys [26]. Foram propostos dois novos n´ıveis de abstra¸c˜ao al´em daqueles apresentados

por Arnout. Essa nova abordagem proporcionava ao projetista uma vis˜ao de quatro n´ıveis

de abstra¸c˜ao superiores ao RTL: on˜ao temporizado, otemporizado, ode transa¸c˜ao

e o comportamental.

Figura 2.2: N´ıveis de Abstra¸c˜ao Propostos pela Synopsys [26]

O n´ıvel de abstra¸c˜ao n˜ao temporizado proposto ´e utilizado para a captura, verifica¸c˜ao e

otimiza¸c˜ao dos algoritmos que representam a funcionalidade do sistema. O n´ıvel temporizado

descreve esses mesmos algoritmos, mas com uma pequena diferen¸ca. Eles passam a ser

dotados de atraso, computacionais ou de comunica¸c˜ao, e s˜ao utilizados para analisar quais

ser˜ao as conseq¨uˆencias causadas pelo impacto da temporiza¸c˜ao no comportamento e na

arquitetura do sistema. O n´ıvel de transa¸c˜ao descreve o comportamento do m´odulo em

termos de transa¸c˜oes e o tempo pode ser representado com precis˜ao de ciclos de rel´ogio

ou n˜ao. Ainda n˜ao existe o detalhamento no n´ıvel de porta como no RTL. O n´ıvel

comportamental descreve o modelo funcional, mas agora composto pela suas interfaces

(23)

parece com a implementa¸c˜ao estrutural final do RTL, mas j´a pode se tornar sintetiz´avel.

Para transformar um modelo no n´ıvel comportamental em blocos totalmente sintetiz´aveis,

´e necess´ario alterar o c´odigo para que o mesmo esteja de acordo com o atual conjunto de

regras de codifica¸c˜ao necess´arias para a s´ıntese na ferramenta que ser´a utilizada. Segundo

a Synopsys [26], os ganhos na produtividade do projeto de SoC por meio da s´ıntese do

c´odigo no n´ıvel comportamental s˜ao maiores do que no n´ıvel RTL.

O grande n´umero de propostas de eleva¸c˜ao nos n´ıveis de abstra¸c˜ao fez com que os

projetistas encontrassem novas formas de tentar reduzir ainda mais a complexidade e o

tempo gasto no desenvolvimento de projetos de SoC. A maioria das pesquisas voltaram

suas aten¸c˜oes para propostas de novos fluxos de projeto e novas metodologias.

Zhu et al. [28] propuseram uma metodologia de projeto de SoC baseada no conceito

de orienta¸c˜ao a objetos. SLOOP (System Level Design with Object-Oriented Process),

como foi chamada, emprega t´ecnicas de modelagem, avalia¸c˜ao de desempenho de sistemas

(24)

Figura 2.3: Fluxo de Projeto SLOOP - Proposto por Zhu [28]

A metodologia prop˜oe quatro modelos para o desenvolvimento de SoC que s˜ao utilizados

nas etapas anteriores `a implementa¸c˜ao do software e do hardware, s˜ao eles: o conceitual, ofuncional, o de arquitetura e o de desempenho. Cada um detalha trˆes aspectos do sistema alvo: funcionalidade, estrutura e temporiza¸c˜ao. O modelo conceitual descreve o

resultado da an´alise dos requisitos que foi feita com cliente por meio de uma descri¸c˜aoUML.

O funcional utiliza redes de processos Kahn1

para criar um modelo capaz de descrever a

estrutura da funcionalidade sem se preocupar com a arquitetura f´ısica ou temporiza¸c˜ao.

O modelo de arquitetura representa os recursos f´ısicos da arquitetura, como barramentos,

1

(25)

mem´orias e processadores. O modelo de desempenho organiza os processos descritos no

modelo funcional em forma de recursos de processamento dentro do modelo de arquitetura,

ou seja, gera um modelo execut´avel que servir´a de base para a avalia¸c˜ao do sistema.

Segundo os autores o modelo execut´avel gerado auxilia os projetistas a encontrar poss´ıveis

gargalos e problemas da arquitetura que foi escolhida, al´em de melhorar o sistema para

que ele satisfa¸ca os requisitos de desempenho especificados no projeto.

Dumoulin [5] propˆos uma nova abordagem para o desenvolvimento de projeto de SoC

utilizando os recursos da arquitetura dirigida a modelo (MDA2

) [16] e do“Y-chart” proposto

por Gajski [8]. O trabalho apresenta uma proposta de modelo de desenvolvimento de

projeto em forma de “Y” conforme FIG. 2.4.

Figura 2.4: Fluxo de Projeto em Y - Proposto por Dumoulin [5]

A partir de dois metamodelos independente de plataforma3

(PIM4

) previamente descritos,

2

MDA foi inicialmente proposta pela OMG [1] com a finalidade de auxiliar no desenvolvimento de softwares. Ela ´e composta basicamente por modelos que descrevem o sistema a ser desenvolvido. Cada um representa um n´ıvel de abstra¸c˜ao diferente. Essa arquitetura promove a separa¸c˜ao entre a l´ogica fun-damental do sistema, que ´e descrita na especifica¸c˜ao, e suas opera¸c˜oes, que ser˜ao implementadas em uma determinada tecnologia. Sua principal meta ´e aumentar a reutiliza¸c˜ao e reduzir o tempo no desenvolvi-mentos de novos componentes de software.

3

Plataforma ´e um conjunto de subsistemas e tecnologias que prevˆeem um conjunto coerente de fun-cionalidades atrav´es de interfaces.

4

(26)

o de aplica¸c˜ao e o da arquitetura de hardware, ´e proposto o desenvolvimento de um terceiro

que far´a a uni˜ao entre eles. O modelo no n´ıvel de aplica¸c˜ao descreve uma maneira de

representar as dependˆencias de dados do sistema (funcionalidade), enquanto que o modelo

no n´ıvel de arquitetura de hardware apresenta uma descri¸c˜ao voltada para sua estrutura.

O metamodelo de associa¸c˜ao, como foi chamado, far´a a importa¸c˜ao de ambos os modelos

previamente descritos. O modelo resultante ser´a um metamodelo de plataforma especifica

(PSM5

) capaz de se transformar automaticamente em um modelo de qualquer plataforma

de desenvolvimento deSoC. Como estudo de caso os autores utilizaram um “profile UML6

j´a pronto de um ISP (“intensive signal processing”) [6]. A ferramenta para a tradu¸c˜ao

autom´atica de modelos encontra-se em fase de desenvolvimento e o resultado do trabalho

se resume na proposta de utiliza¸c˜ao da MDA como forma de modelagem.

Outra abordagem para o desenvolvilmento de SoCs utilizando os conceitos daMDAfoi

apresentada em 2004 por Riccobene [22]. O trabalho prop˜oe um novo fluxo de projeto e

apresenta o “UML profile” para SystemC que foi desenvolvido.

5

PSM ´e uma vis˜ao do sistema a partir do ponto de vista de uma plataforma especifica. Combina a descri¸c˜ao do PIM com os detalhes de implementa¸c˜ao de uma plataforma em particular.

6

(27)

Figura 2.5: Fluxo de Projeto utilizando MDA - Proposto por Riccobene [22]

O fluxo de projeto utiliza uma especifica¸c˜ao descrita em linguagem natural para gerar

um representa¸c˜ao algor´ıtmica do sistema, que pode ser implementada em uma linguagem

de programa¸c˜ao de software (como C/C++) ou em uma ferramenta de modelagem (como

simulink[www.mathworks.com/products/simulink/] por exemplo). O segundo est´agio consiste

na separa¸c˜ao entre os requisitos de hardware e software, que s˜ao desenvolvidos paralelamente

ao longo do projeto. O software ´e compilado para a plataforma que foi definida e gera como

resultado um c´odigo objeto, enquanto o hardware ´e apenas descrito emRTL. A partir desses

resultados ´e feita uma co-simula¸c˜ao entre o hardware (em RTL) e as partes do software

que est˜ao rodando no simulador (Instruction Set Simulator - ISS) para a verifica¸c˜ao dos

poss´ıveis erros causados pelo c´odigo RTLna tradu¸c˜ao para o n´ıvel de portas l´ogicas.

O “UML profile” paraSystemC foi baseado na especifica¸c˜ao da vers˜ao 2.0 da linguagem

(28)

define os estere´otipos do n´ucleo SystemC, ou camada 0 (zero), que podem ser utilizados

nos diagramas estruturais UML, respons´aveis pelos elementos de estrutura e comunica¸c˜ao

(m´odulos, interfaces, portas e canais). A segunda parte ´e respons´avel pela defini¸c˜ao dos

tipos de dados, representados atrav´es dos diagramas de classes, enquanto que a terceira

parte descreve o comportamento e a sincroniza¸c˜ao entre os m´odulos atrav´es dos diagramas

comportamentais. A ´ultima parte prove conceitos para a defini¸c˜ao de canais, interfaces

e portas que s˜ao pr´e-definidos na linguagem. Como exemplo podemos citar os canais do

tipo first in first out(FIFO). Os resultados se resumem nos benef´ıcios de se utilizar UML

Profiles para especificar, analisar, projetar, construir, visualizar e documentar sistemas

tanto em hardware quanto em software para o projeto de SoC.

O trabalho de Nguyen et al. [18] apresenta um mecanismo de descri¸c˜ao no n´ıvel de

sistema, baseado em nota¸c˜oes UML, que ´e capaz de gerar c´odigoSystemC no n´ıvel transacional

(Transaction Level Modeling - TLM). Esta referˆencia utiliza dois dos diversos diagramas

UML para representar o sistema, o diagrama de classes e o diagrama de transi¸c˜ao de

estados. A ferramenta escolhida para a especifica¸c˜ao do sistema atrav´es dos diagramas, foi o

Rhapsody7

, plataforma de colabora¸c˜ao, desenvolvimento de aplica¸c˜ao e projeto de sistemas,

compat´ıvel com UML. Os autores tiveram que incorporar estere´otipos na ferramenta Rhapsody

para que ela conseguisse capturar algumas das primitivas de comunica¸c˜ao da linguagem

SystemC, como interfaces e canais. Tamb´em foi necess´ario a utiliza¸c˜ao de uma outra

ferramenta, chamada Velocity8

, para a tradu¸c˜ao dos modelos gerados em c´odigoSystemC.

A FIG. 2.6 abaixo resume o fluxo de projeto proposto.

7

http://www.ilogix.com

8

(29)

Figura 2.6: Fluxo de Projeto utilizando MDA - Proposto por Nguyen [18]

Na modelagem UML, o diagrama de classes ´e respons´avel pela descri¸c˜ao da estrutura

dos componentes, enquanto que o diagrama de transi¸c˜ao de estados ´e utilizado para

representar o comportamento. Esse modelo inicial, deve ser dotado de estere´otipos para

suprir a necessidade de representa¸c˜ao de algumas entidades SystemC. Para a gera¸c˜ao do

documento XMI ´e necess´ario a utiliza¸c˜ao de umtoolkit da ferramenta Rhapsody. A fun¸c˜ao

dele ´e transformar as informa¸c˜oes contidas no modelo gr´afico e no conjunto de estere´otipos

em um documento padr˜ao XMI. Os autores tamb´em desenvolveram um parser XMI que

agrega mais informa¸c˜oes ao documento gerado e o transforma em uma ´arvore abstrata. Ela

servir´a como modelo de entrada para a ferramentaVelocity. S´o assim o c´odigo ser´a gerado.

Os autores afirmam que, ap´os todos esses passos e ferramentas que foram utilizadas, para

(30)

detalhado, ser´a necess´ario apenas fazer altera¸c˜oes nos modelos (ou templates) gerados

(31)

Cap´ıtulo 3

Metodologia

A presente metodologia tem como principal objetivo diminuir o tempo e os esfor¸cos

gastos pelos projetistas na gera¸c˜ao da primeira especifica¸c˜ao execut´avel. No desenvolvimento

de SoCs, problemas de funcionalidade e de comunica¸c˜ao, dificilmente s˜ao detectados logo

nas primeiras etapas do projeto e os testes, geralmente s˜ao realizados em um ponto onde

as alternativas para prov´aveis corre¸c˜oes s˜ao poucas e de custo elevado. Na maioria dos

casos, as decis˜oes que s˜ao tomadas durante estas etapas, compreendidas entre a concep¸c˜ao

e valida¸c˜ao do projeto, podem gerar um impacto grande na adequa¸c˜ao daquilo que foi

especificado ao que ser´a efetivamente implementado. Um planejamento inicial m´ınimo,

daquilo que se est´a projetando, faz-se necess´ario. ´E por meio dele que o projetista consegue

obter um melhor entendimento do projeto e conseq¨uentemente pode evitar altera¸c˜oes

desnecess´arias, diminuindo custos e evitando desperd´ıcio de tempo.

A metodologia prop˜oe um fluxo de projeto que favorece a vis˜ao geral do o sistema.

Poss´ıveis erros, antes s´o detectados nos n´ıveis de abstra¸c˜ao que j´a possu´ıam um consider´avel

n´ıvel de detalhamento, como o RTL, poder˜ao ser previstos. Para tanto, a metodologia faz

uso de alguns recursos dispon´ıveis nas t´ecnicas de modelagem UML, como documentos e

(32)

do desenvolvimento do projeto como tamb´em favorecem a reutiliza¸c˜ao de m´odulos.

Ao final do fluxo de proposto, o projetista ter´a dispon´ıvel uma especifica¸c˜ao funcional

SystemC, execut´avel, para utilizar como modelo de referˆencia ao longo dos sucessivos

refinamentos que ter´a que fazer durante os n´ıveis de abstra¸c˜ao. A metodologia tamb´em

apresenta um“plug-in” SystemC desenvolvido especialmente para a ferramenta Umbrello.

Ele ´e capaz de gerar c´odigo SystemC a partir da modelagem do SoC em diagramas UML.

Para aplicar a metodologia de forma eficiente ´e importante que se compreenda todas as

etapas e seus respectivos objetivos, a importˆancia de cada uma delas e como trabalham em

conjunto para garantir que os resultados esperados sejam alcan¸cados da melhor maneira

poss´ıvel. Um bom conhecimento das ferramentas, UML e SystemC, tamb´em garantem

um melhor resultado. A pr´oxima se¸c˜ao apresenta um breve resumo de cada uma das

ferramentas. A se¸c˜ao 3.2 descreve os n´ıveis de abstra¸c˜ao e a se¸c˜ao 3.3 apresenta o fluxo

de projeto proposto que ´e a pr´opria representa¸c˜ao da metodologia. Para um melhor

entendimento, o capitulo 4 apresenta um estudo de caso com a aplica¸c˜ao da metodologia.

3.1

Ferramentas Associadas

3.1.1

A Linguagem UML

A UML ´e uma linguagem de modelagem de prop´osito geral utilizada para representar

sistemas orientados a objetos que surgiu no final da d´ecada de 1990. UML 1.x ´e uma

combina¸c˜ao de elementos de Booch [4], OOSE [12] e OMT [23]. A vers˜ao 2.0 se encontra

em fase final de aprova¸c˜ao pela OMG (Object Management Group) e inclui melhoramentos

em todas as ´areas. Ela possui treze tipos de diagramas capazes de descrever v´arios aspectos

estruturais, comportamentais e f´ısicos de um sistema. Cada diagrama possui um prop´osito

diferente durante o processo de desenvolvimento, por isso ´e importante ter em mente que

(33)

metodologia de projeto.

A especifica¸c˜ao comportamental em UML, em alto n´ıvel, geralmente se inicia a partir

da identifica¸c˜ao dos casos de uso para um sistema e dos atores envolvidos. Estes s˜ao

denominados Diagramas de Casos de Uso. Por´em, para uma descri¸c˜ao comportamental

detalhada, costuma-se usar os Diagramas de Transi¸c˜ao de Estado [11], que s˜ao capazes de

representar m´aquinas de estado finitas. O Diagrama de Classes ´e provavelmente o mais

conhecido dentro da modelagem UML. Ele descreve os aspectos estruturais de um sistema

em termos de classes e como essas classes se relacionam entre si atrav´es de associa¸c˜oes. Uma

classe pode ou n˜ao possuir atributos e/ou opera¸c˜oes. Al´em disso, interfaces e generaliza¸c˜oes

podem ser utilizadas para introduzir hierarquia entre os objetos criados. A ferramenta

atualmente mais utilizada para este tipo de modelagem ´e o Rational Rose da IBM1

, tamb´em

existem outras ferramentas, dentre as quais podemos citar:

• Rhapsody da I-logix (voltado para sistemas de tempo real);

• Together (comprado recentemente pela Borland para incorporar-se no seu ambiente de desenvolvimento);

• Enterprise Architect (de custo mais acess´ıvel);

• Umbrello (livre distribui¸c˜ao e c´odigo aberto);

3.1.2

Umbrello UML Modeller

O Umbrello UML Modeller2

´e uma ferramenta de modelagem de diagramas UML

que foi desenvolvida em 2001 por Paul Hensgen em um de seus projetos universit´arios.

Originalmente foi criada para auxiliar no processo de desenvolvimento de software e seu

nome original era “Modelador UML”. Como era conhecido apenas por “UML”, um nome

muito gen´erico, causou problemas com algumas distribui¸c˜oes de software que possu´ıam o

mesmo nome e teve que ser mudado. A mudan¸ca ocorreu em Setembro de 2002. O projeto

1

http://www.ibm.com

2

(34)

foi todo revisado pela Universidade onde Paul estudava e passou a ser de livre distribui¸c˜ao

e de c´odigo aberto. A vers˜ao 1.0 j´a oferecia muitas funcionalidades, mas com as diversas

contribui¸c˜oes passou a ter suporte a um n´umero maior de diagramas UML, o formato de

arquivo passou de bin´ario para XML, o aplicativo agregou funcionalidades como gera¸c˜ao de

c´odigo automatizada e importa¸c˜ao de c´odigo. Paul retirou-se da equipe de desenvolvimento

em meados de 2002, mas o software est´a sendo mantido por um grupo de desenvolvedores

de diferentes partes do mundo e continua em constante desenvolvimento.

3.1.3

SystemC

SystemC ´e uma linguagem de descri¸c˜ao de hardware (HDL), c´odigo aberto, baseada em

C++, que vem sendo desenvolvida por um grupo de empresas que formam aOpen SystemC

Initiative (OSCI - IEEE P1666). Al´em de possuir uma estrutura de programa¸c˜ao simples

e intuitiva, uma das principais caracter´ısticas desta ferramenta ´e que ela possui um n´ucleo

exclusivo para a simula¸c˜ao e provˆe suporte `a concorrˆencia e `a hierarquia de m´odulos. Sua

principal vantagem em rela¸c˜ao `as outras linguagens de descri¸c˜ao de hardware ´e que ela

permite a descri¸c˜ao e teste de m´odulos em v´arios n´ıveis de abstra¸c˜ao [9]. O projetista n˜ao

precisa aprender, nem ao menos precisa utilizar mais de um ambiente de programa¸c˜ao `a

medida que prossegue nas etapas de desenvolvimento de seu modulo.

Testes realizados por Moreno [17] mostraram queSystemC obteve ganhos consider´aveis

na velocidade de simula¸c˜ao se comparada a uma das principais linguagens de descri¸c˜ao

de hardware, VHDL. Utilizou-se para o teste o algoritmo de ordena¸c˜ao “bubble sort”.

O tamanho da mem´oria de valores a serem ordenados, tamanho do vetor, foi alterado

(35)

Figura 3.1: Compara¸c˜ao do tempo de simula¸c˜ao entre SystemC e VHDL [17]

Este ganho de velocidade na simula¸c˜ao se deve ao fato de que o simulador padr˜ao

da linguagem SystemC permite a simula¸c˜ao em diferentes n´ıveis de abstra¸c˜ao. SystemC

tamb´em favorece a programa¸c˜ao intuitiva, permitindo a programa¸c˜ao em alto n´ıvel por

meio da linguagem C/C++. VHDL, por outro lado, necessita de uma programa¸c˜ao na

qual o projetista tem de se preocupar com o alto n´ıvel de detalhamento imposto pela

linguagem.

Abaixo podemos observar outros resultados, ainda do mesmo trabalho, de testes obtidos

atrav´es da s´ıntese em FPGA de c´odigo VHDL e SystemC. Eles demonstraram que SystemC

(36)

Figura 3.2: Compara¸c˜ao entre a ´area efetiva gasta na s´ıntese de c´odigo VHDL e SystemC [17]

3.2

N´ıveis de Abstra¸c˜

ao

N´ıvel de abstra¸c˜ao ´e a descri¸c˜ao do projeto com uma determinada quantidade de

detalhamento. O aumento (ou eleva¸c˜ao) nos n´ıveis de abstra¸c˜ao tamb´em ´e um dos meios

utilizados para tentar diminuir o tempo gasto na concep¸c˜ao de projetos. Al´em disso, ´e visto

como uma das formas de aumentar a sua eficiˆencia. A complexidade de se desenvolver ou

alterar qualquer m´odulo no n´ıvel de transferˆencia de registradores ´e alta. Quando se eleva

os n´ıveis a um patamar onde o projetista n˜ao precisa mais se preocupar com determinados

tipos de detalhes de implementa¸c˜ao, a tarefa de descrever as funcionalidades de um m´odulo,

bem como suas conex˜oes e interfaces, torna-se muito mais f´acil.

A FIG. 3.3 abaixo apresenta a divis˜ao dos n´ıveis de abstra¸c˜ao de um projeto de SoC e

destaca aqueles onde a metodologia ir´a auxiliar o projetista no desenvolvimento da primeira

(37)

Figura 3.3: N´ıveis de Abstra¸c˜ao alvo da Metodologia

3.2.1

Especifica¸c˜

ao

A especifica¸c˜ao ´e o n´ıvel onde est˜ao detalhadas as caracter´ısticas e funcionalidades dos

m´odulos do sistema. N˜ao existe distin¸c˜ao entre hardware e software, e a temporiza¸c˜ao

n˜ao ´e representada. Todos os requisitos do projeto bem como os detalhes relacionados

a custos, riscos e restri¸c˜oes s˜ao cuidadosamente documentados. O diagrama de casos de

uso ´e muito utilizado nesse n´ıvel de detalhamento. O que se descreve ´e uma representa¸c˜ao

quase algor´ıtmica de como os m´odulos do sistema se comportam (casos de uso) e com quais

outros m´odulos (atores) se relacionam.

3.2.2

Descri¸c˜

ao UML

A descri¸c˜ao UML ´e praticamente um detalhamento dos requisitos apresentados no

n´ıvel de especifica¸c˜ao, geralmente com o aux´ılio de uma ferramenta de modelagem com

(38)

comportamentais e estruturais que representam a sua funcionalidade e o comportamento.

Neste n´ıvel o que se obt´em ´e um refinamento da especifica¸c˜ao que proporciona uma vis˜ao

geral e uma representa¸c˜ao mais detalhada do comportamento sistema. Por meio dessa

descri¸c˜ao ´e poss´ıvel identificar prov´aveis erros de concep¸c˜ao e conflitos futuros. A divis˜ao

entre hardware e software, e a temporiza¸c˜ao tamb´em n˜ao s˜ao representados.

3.2.3

Especifica¸c˜

ao Execut´

avel

A especifica¸c˜ao execut´avel ´e a implementa¸c˜ao da descri¸c˜ao UML na linguagem de

descri¸c˜ao de hardware SystemC. O resultado obtido neste n´ıvel ´e um modelo funcional

e execut´avel dessa descri¸c˜ao que pode ser simulado. Esse n´ıvel de detalhamento permite

que problemas de execu¸c˜ao e de comportamento sejam identificados e solucionados. Este

´e um n´ıvel de grande relevˆancia, pois ´e utilizado como base para o refinamento dos demais

e pode ser utilizado como referˆencia em qualquer plataforma de desenvolvimento adotada.

3.2.4

Fluxo de Dados (Data Flow - DF)

Neste n´ıvel de abstra¸c˜ao tamb´em se descreve as funcionalidade dos m´odulos do sistema,

por´em, o que o difere dos demais vistos anteriormente ´e que o modelo agora apresenta de

forma clara a troca de mensagens entre m´odulos. Ele est´a dividido em dois est´agios. O

primeiro, caracterizado como “Untimed Data Flow” (UDF) descreve a funcionalidade do

m´odulo sem a no¸c˜ao de temporiza¸c˜ao e o segundo, “Timed Data Flow” (TDF), descreve o

m´odulo em rela¸c˜ao ao tempo, com a inser¸c˜ao de atrasos temporais na sua implementa¸c˜ao.

Abaixo est˜ao descritos em detalhes os dois est´agios:

(39)

algoritmo funcional devido a elimina¸c˜ao da preocupa¸c˜ao desnecess´aria com detalhes de temporiza¸c˜ao. O projetista ´e obrigado a sincronizar os m´odulos somente com a¸c˜oes (eventos), favorecendo (ou destacando) quest˜oes diretamente ligadas `a funcionalidade.

• TDF - O modelo de fluxo de dados temporizado tem capacidade para representar a no¸c˜ao de tempo. Agora existe a preocupa¸c˜ao com o sincronismo dos eventos e das opera¸c˜oes realizadas pelo m´odulo no espa¸co de tempo, bem como os respectivos atrasos de processamento e de comunica¸c˜ao. Por meio dela torna-se poss´ıvel analisar como os efeitos de latˆencia poderiam influenciar no comportamento final do m´odulo, se realmente ele esta gerando as respostas de acordo com a especifica¸c˜ao dada e se os resultados esperados est˜ao sendo realmente gerados em tempo h´abil para sua valida¸c˜ao.

3.2.5

Descri¸c˜

ao Comportamental

O n´ıvel Comportamental ´e uma descri¸c˜ao algor´ıtmica do comportamento do sistema.

Ele geralmente ´e descrito na forma de precis˜ao de ciclos e ainda n˜ao apresenta a estrutura

RTL esperada para a implementa¸c˜ao final. A principal diferen¸ca entre esses dois n´ıveis,

Comportamental e RTL, est´a relacionada com a temporiza¸c˜ao. Enquanto o RTL tem

sua sincroniza¸c˜ao definida em termos de ciclos de “clock”, oComportamental ´e geralmente

sincronizado atrav´es da utiliza¸c˜ao de passos computacionais. Como exemplo, a sincroniza¸c˜ao

entre os processos de um sistema no n´ıvel Comportamental pode ser feita utilizando o

comando “wait”, cuja a fun¸c˜ao ´e aguardar at´e que um evento (ou processo) seja conclu´ıdo

antes de se passar ao pr´oximo, ou inserindo atrasos temporais. As descri¸c˜oes no n´ıvel

Comportamental s˜ao compactas e mais f´aceis de entender do que descri¸c˜oes em RTL. As

simula¸c˜oes tamb´em s˜ao mais r´apidas, devido ao n´ıvel de abstra¸c˜ao ser mais alto.

3.2.6

RTL

Segundo Jerraya [13] este n´ıvel de abstra¸c˜ao ´e visto como o ´ultimo na descri¸c˜ao do

projeto de hardware. ´E nele onde a maioria das ferramentas de s´ıntese trabalham. O

(40)

clock. Toda a comunica¸c˜ao entre processos ocorre ´unica e exclusivamente atrav´es de sinais. O comportamento, ou funcionalidade, ´e representado pelo fluxo dos dados atrav´es

de blocos funcionais (“datapath”) habilitados por sinais gerados pela unidade de controle, geralmente implementada por m´aquina de estado finitas.

3.3

Fluxo de Projeto

A FIG. 3.4 abaixo resume o fluxo de projeto que representa a metodologia proposta.

(41)

3.3.1

An´

alise de Requisitos

Inspirada nos conceitos utilizados no desenvolvimento de software, a an´alise de requisitos

tem como objetivo descrever o que o cliente espera que o sistema fa¸ca. Requisitos s˜ao os

objetivos e as restri¸c˜oes relacionados ao sistema que se pretende desenvolver. O projetista

deve ter em mente que esse conjunto de informa¸c˜oes pode ser definido como uma condi¸c˜ao

ou uma fun¸c˜ao do SoC que ser´a respons´avel pela resolu¸c˜ao de problemas previamente

especificados. A an´alise de requisitos est´a dividida em dois grandes est´agios. O primeiro

apresenta os m´etodos utilizados para se construir uma vis˜ao global do sistema enquanto

que o segundo especifica, detalha e prioriza as informa¸c˜oes obtidas.

Vis˜ao Global

O objetivo desse est´agio ´e a identifica¸c˜ao dos requisitos doSoC que se deseja desenvolver,

fornecendo todas as informa¸c˜oes necess´arias para o entendimento do projeto por parte do

desenvolvedor.

Abaixo est˜ao enumeradas a seq¨uˆencia de atividades que o projetista deve seguir a fim

de obter este documento:

1. Capturar o m´aximo de informa¸c˜oes relevantes ao projeto por meio da entrevista com o cliente;

2. Revisar e verificar se algum ponto deixou de ser identificado;

3. Classificar as informa¸c˜oes em requisitos funcionais e n˜ao-funcionais;

4. Organizar as informa¸c˜oes em um documento relacionando os requisitos funcionais `as suas respectivas restri¸c˜oes;

O respons´avel pela entrevista deve ter em mente, ou em forma de question´ario, uma

lista de perguntas necess´arias para se extrair o maior n´umero de informa¸c˜oes poss´ıveis

do projeto com o cliente. Deve-se preocupar em n˜ao induzir o mesmo a tomar decis˜oes

influenciadas pelo conhecimento pr´evio do entrevistador em rela¸c˜ao a implementa¸c˜ao do

(42)

revis˜ao das quest˜oes que foram abordadas e verificar se algum ponto importante para a

documenta¸c˜ao deixou de ser contemplado. A classifica¸c˜ao das informa¸c˜oes obtidas deve

ser feita considerando os aspectos funcionais e n˜ao-funcionais dos requisitos segundo as

descri¸c˜oes abaixo:

• Requisitos Funcionais - descrevem a funcionalidade desejada do SoC. Deve-se determinar o que se espera que oSoC fa¸ca sem a preocupa¸c˜ao de detalhar como isso

deve ser feito:

– “oSoC deve ser capaz de gerar imagens”;

– “oSoC deve ser capaz de comunicar com a interface do LCD”; – “oSoC deve possibilitar a entrada de dados atrav´es de um teclado”; – “oSoC deve possibilitar o c´alculo da soma de dois n´umeros reais”;

• Requisitos N˜ao-Funcionais - descrevem as restri¸c˜oes impostas para a realiza¸c˜ao de um requisito funcional:

– “a imagem deve ser do tipo bmp”;

– “a imagem n˜ao deve ultrapassar a resolu¸c˜ao m´axima de 800x600”;

– “a interface com o LCD deve utilizar o protocolo OCP-IP para comunica¸c˜ao”; – “o tempo de resposta doSoC ao teclado n˜ao deve ultrapassar 10 ms”;

– “o SoC deve permitir a representa¸c˜ao de n´umeros reais com um m´aximo de 4 casas decimais”;

– “o cronograma de desenvolvimento n˜ao deve ultrapassar doze meses”;

A vis˜ao global ´e a etapa daan´alise de requisitos onde se definem exatamente quais s˜ao

as principais funcionalidades do sistema.

Conforme apresentado anteriormente, o documento resultante desse est´agio ´e composto

pelo conjunto de requisitos funcionais e suas respectivas restri¸c˜oes. Cada funcionalidade

(43)

Figura 3.5: Exemplo da organiza¸c˜ao das informa¸c˜oes identificadas

Especifica¸c˜ao

Ap´os a etapa de vis˜ao global deve-se analisar os requisitos a fim de refin´a-los e estrutur´a-los

em um modelo que defina precisamente os atores e os casos de uso do sistema.

Por meio deste modelo ´e feita uma an´alise para identificar quais s˜ao os pontos considerados

cr´ıticos no desenvolvimento do projeto. O resultado ´e um documento composto pela an´alise

detalhada dos casos de uso e a descri¸c˜ao dos pontos cr´ıticos do projeto.

Para a gera¸c˜ao do documento desta etapa o projetista dever´a seguir a seq¨uˆencia de

tarefas a seguir:

1. Identificar os atores

O ator ´e qualquer entidade que interaja com o sistema na realiza¸c˜ao de uma tarefa ou fun¸c˜ao. (m´odulos, interfaces, componentes e outros sistemas) Exemplos: LCD, teclado, interface OCP-IP.

2. Identificar os casos de uso

O caso de uso ´e um documento narrativo que descreve uma seq¨uˆencia de eventos (a¸c˜oes) que representa uma funcionalidade, ou seja, descreve uma tarefa a qual o sistema dar´a suporte. A maioria dos requisitos funcionais listados na vis˜ao global s˜ao candidatos a se tornarem casos de uso. Exemplos: Gerar Imagem bmp e Calcular Soma de N´umeros Reais

(44)

O projetista deve fazer uma an´alise e definir quais atores se relacionam com cada caso. A partir dessa an´alise ´e poss´ıvel detalhar a seq¨uˆencia de eventos realizada pelo caso em rela¸c˜ao a seus respectivos atores (FIG. 3.6). Os requisitos funcionais atendidos pelo caso tamb´em devem ser referenciados. Essa ´e uma forma de verificar se os requisitos solicitados pelo cliente est˜ao sendo atendidos.

Figura 3.6: Exemplo de Caso de Uso Detalhado

4. Identificar os pontos cr´ıticos

Por meio do detalhamento dos casos de uso e da experiˆencia do projetista ´e poss´ıvel selecionar (mensurar) quais s˜ao aqueles com a pior rela¸c˜ao entre custo, tempo gasto e benef´ıcio em seu desenvolvimento. Esses casos ter˜ao prioridade sobre os outros no decorrer do projeto e demandam aten¸c˜ao especial. O projetista deve descrever um documento apontando todas essas caracter´ısticas. O objetivo deste documento ´e auxiliar os projetistas a tomarem decis˜oes nos refinamentos futuros tais como: (1) Utilizar ou n˜ao um m´odulo pronto para determinada funcionalidade? (2) O desenvolvimento deste m´odulo realmente vale o investimento? Todas essas observa¸c˜oes dever˜ao ser feitas a t´ıtulo de compara¸c˜ao.

3.3.2

Modelagem UML

Como SoCs s˜ao projetados para terem utilidade em algo presente no mundo real, ´e

importante que se compreenda a necessidade da modelagem UML descrita nesta etapa. Ela

´e uma ferramenta capaz de representar, atrav´es de diagramas, um cen´ario muito pr´oximo

da realidade, o que favorece um melhor entendimento do sistema. Neste fase o projetista

dever´a utilizar a ferramenta Umbrello para a modelagem. Como o “plug-in” SystemC para Umbrello utiliza a pr´opria nota¸c˜ao UML que est´a descrita na ferramenta, n˜ao ´e necess´ario

a cria¸c˜ao de estere´otipos para a representa¸c˜ao de estruturas da linguagem alvo (SystemC).

(45)

Classe UML modelados no Umbrello. O projetista deve ficar atento `a esta compara¸c˜ao.

Figura 3.7: Equivalˆencia entre as representa¸c˜oes das classes do Umbrello - M´odulo (SystemC) x Classe (UML)

Apenas trˆes dos diagramas da linguagem UML ser˜ao usados na modelagem proposta

na metodologia:

1. Casos de uso: Defini¸c˜ao da Funcionalidade e das Interfaces

Partindo dos documentos que foram obtidos na an´alise de requisitos o projetista dever´a modelar primeiro o diagrama de casos de uso. Cada caso de uso descrito textualmente no est´agio especifica¸c˜ao, da fase de an´alise de requisitos(FIGs. 3.8), equivale a um caso de uso do diagrama UML(3.9). Os atores que foram identificados anteriormente tamb´em devem ser representados.

(46)

Figura 3.9: Diagrama de Caso de Uso - Representa¸c˜ao Gr´afica

Posteriormente o diagrama deve ser refinado at´e que o projetista identifique com clareza a funcionalidade do sistema. As interfaces de comunica¸c˜ao tamb´em devem ser modeladas como atores, evitando problemas com a falta de padroniza¸c˜ao entre os m´odulos e facilitando a sua visualiza¸c˜ao. A figura FIG. 3.10 abaixo apresenta um exemplo de como as interfaces devem ser modeladas no diagrama.

Figura 3.10: Interface - Exemplo de Modelagem

2. Diagrama de Seq¨uˆencia: Defini¸c˜ao da seq¨uˆencia de eventos

(47)

quanto casos podem se transformar em componentes do diagrama. A FIG. 3.11 abaixo apresenta a troca de mensagens entre duas entidades,Rede “on-chip” eGerar Imagem.

Figura 3.11: Exemplo de um Diagrama de Seq¨uˆencia

As mensagens representadas entre os objetos definem uma cronologia de eventos atrav´es da numera¸c˜ao, em ordem crescente, e atrav´es da posi¸c˜ao da mensagem. As mensagens nas posi¸c˜oes inferiores do diagrama ocorrem posteriormente as mensagens superiores.

3. Diagrama de Classes: Defini¸c˜ao da Estrutura

(48)

Figura 3.12: Exemplo de um Diagrama de Classes

3.3.3

Descri¸c˜

ao UML (

Umbrello

) para SystemC

O“plug-in” SystemC paraUmbrellosuporta todos os tipos de dados padr˜ao da linguagem.

Esse suporte ´e habilitado assim que a op¸c˜ao de linguagem SystemC ´e ativada no menu

“Code/Active Language”. A FIG. 3.13 apresenta a tela de defini¸c˜ao de “ports” e

(49)

Figura 3.13: Tipos Padr˜ao do SystemC no Umbrello

Ap´os a modelagem, o projetista dever´a primeiramente selecionar a linguagem padr˜ao,

no caso SystemC (Ver FIG. 3.14), por meio do menu “Code/Active Language”.

Figura 3.14: Menu de Sele¸c˜ao de linguagem ativa

Para a gera¸c˜ao do c´odigo esqueleto ele dever´a acessar o menu “Code/Code Generation

Wizard” e selecionar as classes (m´odulos) que ele deseja converter (FIG. 3.15). Note que

(50)

Figura 3.15: Menu de Sele¸c˜ao de Classes do “Code Generation Wizard”

3.3.4

Implementa¸c˜

ao da funcionalidade do processo

Como a metodologia n˜ao prevˆe a gera¸c˜ao autom´atica da funcionalidade do processo,

o projetista dever´a implementar todos os processos que foram definidos na modelagem.

Para isso ele dever´a acessar o arquivo com a extens˜ao (“.h”) e preencher a lacuna entre as

chaves do processo definido abaixo das interfaces, conforme o trecho de c´odigo apresentado

abaixo C ´OD. 3.1.

C´odigo Fonte 3.1: C´odigo Esqueleto - Indica¸c˜ao de onde deve ser implementada a

funcionalidade do Processo

1 #i f n d e f CONTROLADOR H 2 #define CONTROLADOR H 3 #include <systemc . h>

4

(51)

6

7 s c f i f o o u t<T> end ;

8

9 void p r o c e s s ( ){ 10

11 // Implemente a f u n c i o n a l i d a d e do p r o c e s s o a q u i ! 12

13 } 14

15 SC CTOR( C o n t r o l a d o r ) { SC THREAD( p r o c e s s ) ; } 16 };

17 #endif //CONTROLADOR H

3.3.5

odulo funcional execut´

avel

Embora n˜ao apresente qualquer tipo de funcionalidade, o c´odigo apresentado na se¸c˜ao

anterior (C ´OD 3.1) ´e execut´avel. Isso ´e poss´ıvel devido `a ferramenta gerar uma estrutura

de c´odigo “correta” capaz de ser interpretada pelo compilador sem erros.

O projetista dever´a implementar as funcionalidades dos processos definidos, construir

as liga¸c˜oes dos m´odulos no “main” e simular o modelo de acordo com as instru¸c˜oes da

linguagem SystemC, ou seja, fazendo uso de benchmarking3

para valida¸c˜ao dos m´odulos.

Os m´odulos que est˜ao sendo avaliados necessitam de uma carga inicial de entrada de

dados para serem estimulados. Durante a simula¸c˜ao utiliza-se um m´odulo monitor para a

visualiza¸c˜ao e armazenamento dos resultados.

Terminada a simula¸c˜ao ´e feita uma compara¸c˜ao dos resultados obtidos com os resultados

esperados. Se os resultados obtidos estiverem de acordo com os esperados o m´odulo ´e

validado como funcional. 3

(52)

O estudo de caso a seguir apresenta detalhes para a interconex˜ao dos m´odulos no arquivo

(53)

Cap´ıtulo 4

Estudo de Caso

O presente estudo de caso tem como finalidade demonstrar a maneira correta da

aplica¸c˜ao da metodologia. As se¸c˜oes deste capitulo apresentam a sua aplica¸c˜ao no projeto

de concep¸c˜ao e valida¸c˜ao de um gerador de caracteres para um “display” de v´ıdeo. O

produto final deste estudo de caso apresenta uma especifica¸c˜ao execut´avel e funcional em

SytemC da modelagem do SoC. No decorrer do cap´ıtulo o projetista deve ficar atento

a cada uma das etapas, pois elas representam a vis˜ao da metodologia proposta para o

projeto de SoCs. Essas fases est˜ao divididas de acordo com a descri¸c˜ao apresentada no

cap´ıtulo 3. Nelas est˜ao descritas informa¸c˜oes de como utilizar a metodologia, em conjunto

com as ferramentas adequadas, para se obter um melhor resultado. A se¸c˜ao 4.1 apresenta

o detalhamento da An´alise de Requisitos do Gerador de Caracteres. A se¸c˜ao 4.2 apresenta como deve ser feita a modelagemUMLde acordo com a descri¸c˜ao da metodologia

e utilizando os recursos dos diagramas UML apresentados, na se¸c˜ao 4.3 ´e apresentada a

maneira correta para se fazer a tradu¸c˜ao destes modelos (emUML) para o c´odigoSystemC

utilizando o “plug-in” que foi desenvolvido. A se¸c˜ao 4.4 descreve o como gerar o modelo

(54)

4.1

An´

alise de Requisitos

Conforme visto na descri¸c˜ao da metodologia, a etapa de An´alise de Requisitos ´e a

respons´avel pela captura das funcionalidades e das restri¸c˜oes do projeto de sistema que

se deseja desenvolver, no caso deste trabalho, um Gerador de Caracteres. Dividida em duas etapas, Vis˜ao Global e Especifica¸c˜ao, a An´alise de Requisitos procura resumir

em documentos, todas as caracter´ısticas funcionais e n˜ao-funcionais do projeto, al´em de

identificar os principais atores do sistema.

4.1.1

Vis˜

ao Global

Em um primeiro momento, o projetista respons´avel (ou a equipe) deve se preocupar

em reunir o maior n´umero de informa¸c˜oes relevantes sobre oSoC com o cliente ou mesmo

atrav´es de pesquisas. As informa¸c˜oes contidas no documento devem estar diretamente

ligadas a todo e qualquer tipo de requisito, sendo ele funcional ou n˜ao. A ordem em

que a captura ´e feita n˜ao tem relevˆancia. O objetivo principal desta etapa ´e detalhar,

atrav´es dos requisitos, todas as funcionalidades do SoC que se deseja desenvolver. Uma

vez capturadas, as informa¸c˜oes devem estar organizadas de forma ordenada e numerada.

Abaixo podemos ver o primeiro documento da Analise de Requisitos, uma lista contendo

todos os requisitos capturados e que possuem rela¸c˜ao direta com o projeto do Gerador de

Caracteres.

Gerador de Caracteres - Requisitos capturados:

1. O m´odulo deve ser capaz de enviar caracteres para um “display” de v´ıdeo;

2. O m´odulo deve ser capaz de converter um c´odigo ASCII para o padr˜ao de visualiza¸c˜ao do“display” de v´ıdeo;

3. O “display” dever´a receber dados dos caracteres da linha de forma serial;

(55)

5. O m´odulo deve permitir a visualiza¸c˜ao de espa¸cos (inclu´ıdo ap´os a revis˜ao);

6. Os caracteres dever˜ao ser armazenados em mem´oria;

7. Os caracteres ser˜ao representados atrav´es do c´odigo ASCII;

8. Cada endere¸co de mem´oria equivaler´a a um c´odigo ASCII em particular;

9. O m´odulo deve ser capaz de ler um caractere armazenado mem´oria;

10. O“display” ou monitor ter´a a resolu¸c˜ao padr˜ao de uma imagem no formato QCIF(176Cx144L) - Detalhado no padr˜ao H.261 de compress˜ao de v´ıdeo;

11. O mem´oria deve ser capaz de armazenar uma tela completa;

12. O m´odulo deve ser capaz de gerar um quadro completo (ou varredura vertical) do

“display”;

13. O m´odulo dever´a controlar os sinais de v´ıdeo necess´arios para o funcionamento do

“display”;

14. O m´odulo dever´a gerar o sinal de sincronismo horizontal (inclu´ıdo ap´os a revis˜ao);

15. O m´odulo dever´a gerar o sinal de sincronismo vertical (inclu´ıdo ap´os a revis˜ao);

16. O m´odulo dever´a gerar o sinal de retra¸co horizontal (inclu´ıdo ap´os a revis˜ao);

17. O m´odulo dever´a gerar o sinal de retra¸co vertical (inclu´ıdo ap´os a revis˜ao);

18. O m´odulo dever´a formar uma linha de caracteres por vez (inclu´ıdo ap´os a revis˜ao);

19. O m´odulo dever´a ser capaz de transformar um c´odigo ASCII em uma matriz de pontos (pixels) 8x8 (inclu´ıdo ap´os a revis˜ao);

No primeiro documento obtido nem sempre se consegue alcan¸car o objetivo, que ´e

descrever todas as funcionalidades e restri¸c˜oes. Ap´os uma r´apida revis˜ao foi poss´ıvel

identificar que alguns requisitos n˜ao haviam sido abordados. Esses requisitos foram inclu´ıdos

apenas para conhecimento do leitor, mesmo sendo uma informa¸c˜ao desnecess´aria ao projeto.

Os requisitos relevantes devem constar nesta lista, mesmo que o projetista somente os

identifique algumas etapas adiante.

A tarefa ap´os a defini¸c˜ao da lista de requisitos ´e a de classifica¸c˜ao. Todo e qualquer

requisito foi classificado como requisito funcional ou n˜ao-funcional. A se¸c˜ao 3.3.1 descreve

(56)

O segundo documento ´e praticamente a mesma lista apresentada no primeiro, por´em

com a adi¸c˜ao de um campo contendo a classifica¸c˜ao de cada requisito (FIG. 4.1).

Gerador de Caracteres - Classifica¸c˜ao dos Requisitos

Figura 4.1: Classifica¸c˜ao dos Requisitos em funcionais e n˜ao-funcionais

Ap´os a classifica¸c˜ao deve-se separar cada requisito de acordo com a sua caracteriza¸c˜ao,

formando dois grandes grupos, o primeiro contendo os requisitos classificados como funcionais

e o outro contendo os n˜ao-funcionais. Deve-se tamb´em colocar um identificador para

diferenciar futuramente cada requisito, sendo ele funcional ou n˜ao.

No caso do Gerador de Caracteres foram utilizados os c´odigosRF-xxx para identificar

os requisitos funcionais (ex. RF-001 - Requisito Funcional 1) eRNF-xxx para identificar

os n˜ao-funcionais (ex. RNF-001 - Requisito N˜ao-Funcional 1). Essa ´e a descri¸c˜ao que

caracteriza as informa¸c˜oes contidas no terceiro documento da vis˜ao global, veja classifica¸c˜ao

abaixo:

Gerador de Caracteres - Separa¸c˜ao e Identifica¸c˜ao

• Funcionais:

(57)

– RF-002: “O m´odulo deve ser capaz de converter um c´odigo ASCII para o padr˜ao de visualiza¸c˜ao do“display” de v´ıdeo”;

– RF-003: “O m´odulo deve ser capaz de enviar caracteres para um “display” de v´ıdeo”;

– RF-004: “O m´odulo dever´a controlar os sinais de v´ıdeo necess´arios para o funcionamento do“display””;

• N˜ao-funcionais:

– RNF-001: “Os caracteres dever˜ao ser armazenados em mem´oria”;

– RNF-002: “Os caracteres ser˜ao representados atrav´es do c´odigo ASCII”;

– RNF-003: “Cada endere¸co da mem´oria equivaler´a a um c´odigo ASCII em particular”; – RNF-004: “O “display” de v´ıdeo ter´a a resolu¸c˜ao padr˜ao de uma imagem no

formato CIF(352Cx288L) - Detalhado no padr˜ao H.261 de compress˜ao de v´ıdeo”; – RNF-005: “O mem´oria deve ser capaz de armazenar uma tela completa”; (Requisito

Extra)

– RNF-006: “O “display” dever´a receber dados dos caracteres da linha de forma serial”;

– RNF-007: “O m´odulo deve permitir a visualiza¸c˜ao de caracteres mai´usculos e min´usculos”;

– RNF-008: “O m´odulo deve permitir a visualiza¸c˜ao de espa¸cos”;

– RNF-009: “O m´odulo deve ser capaz de gerar um quadro completo (ou varredura vertical) do“display””;

– RNF-010: “O m´odulo dever´a gerar o sinal de sincronismo horizontal”; – RNF-011: “O m´odulo dever´a gerar o sinal de sincronismo vertical”; – RNF-012: “O m´odulo dever´a gerar o sinal de retra¸co horizontal”; – RNF-013: “O m´odulo dever´a gerar o sinal de retra¸co vertical”;

– RNF-014: “O m´odulo dever´a enviar uma linha de caracteres por vez”;

– RNF-015: “O m´odulo dever´a ser capaz de transformar um c´odigo ASCII em uma matriz de pontos (pixels) 8x8”;

Classificados e devidamente identificados, o projetista deve relacionar os requisitos

n˜ao-funcionais e funcionais entre eles. Uma restri¸c˜ao, ou requisito n˜ao-funcional, pode

estar diretamente relacionada com uma funcionalidade (requisito funcional). Isso n˜ao ´e

regra, algumas restri¸c˜oes podem estar relacionadas a outros fatores, como por exemplo o

Imagem

Figura 1.1: Aumento da capacidade de integra¸c˜ao de transistores representado pela evolu¸c˜ao dos processadores Intel [27].
Figura 2.3: Fluxo de Projeto SLOOP - Proposto por Zhu [28]
Figura 2.4: Fluxo de Projeto em Y - Proposto por Dumoulin [5]
Figura 2.5: Fluxo de Projeto utilizando MDA - Proposto por Riccobene [22]
+7

Referências

Documentos relacionados

A assistência da equipe de enfermagem para a pessoa portadora de Diabetes Mellitus deve ser desenvolvida para um processo de educação em saúde que contribua para que a

Como contribuições do trabalho, é analisada a influência dos parâmetros de geração do espectrograma e são introduzidas as inovações de filtro de frequências e de gradiente com

Esse traço, segundo o modelo auto-segmental (Clements and Hume, 1995), está preso à raiz e pode espraiar de forma autônoma. Temos então em 2, 3 e 4a fatos que ajudam a sustentar

De acordo com os resultados gerados numericamente, pode-se dizer que: - as janelas de ´oleo obtidas confirmam o potencial petrol´ıfero da Bacia do Solim˜oes, inclusive em regi˜oes

Por último, temos o vídeo que está sendo exibido dentro do celular, que é segurado e comentado por alguém, e compartilhado e comentado no perfil de BolsoWoman no Twitter. No

Êste artigo compreende três partes distintas: 1.&#34;: a norma geral proibitiva: é vedada a acumulação de quaisquer cargos; 2.’ — a enu- meração taxativa das exceções:

For additional support to design options the structural analysis of the Vila Fria bridge was carried out using a 3D structural numerical model using the finite element method by

da quem praticasse tais assaltos às igrejas e mosteiros ou outros bens da Igreja, 29 medida que foi igualmente ineficaz, como decorre das deliberações tomadas por D. João I, quan-