METODOLOGIA ORIENTADA AO PROJETISTA PARA SYSTEM-LEVEL DESIGN Reinaldo Silveira e Wilhelmus A. M. Van Noije
LSI – Depart. de Engenharia de Sistemas Eletrônicos da
Escola Politécnica da Universidade de São Paulo,
Av. Prof. Luciano Gualberto n.158, trav. 3, Cidade Universitária,
ABSTRACT
A great deal of the discussion about design of new EDA tools and methodologies concern about the conciliation between designers needs and programmers capabilities. This work addresses this problem, proposing a new design methodology that instructs how to integrate different tools into a common framework and which are the requirements of this framework to assure productivity at the system level design. This approach is called “Designer Oriented Methodology” (DO), and uses the so called “Game Like Development” concept (GLD) and the pure object-oriented language Self as the main element for this integration. Uma grande preocupação sobre o desenvolvimento de ferramentas de auxílio a projeto eletrônico (EDA), atualmente, refere-se a conciliação entre as necessidades dos projetistas e os interesses dos programadores. Este trabalho aborda este problema, propondo uma nova metodologia de projeto que sugere como pode ser a integração de diferentes ferramentas num framework comum e quais devem ser os requisitos deste framework para que seja assegurada a produtividade no nível de projeto de sistema. Esta proposta chama-se “Designer Oriented Methodology” (DO), e emprega uma série de conceitos e abstrações inclusive a que chamamos de “Game Like Development” (GLD). Como elemento principal para a implementação da proposta usa-se a linguagem orientada a objeto Self. METODOLOGIA ORIENTADA AO PROJETISTA PARA SYSTEM-LEVEL DESIGN Reinaldo Silveira e Wilhelmus A. M. Van Noije
LSI – Departamento de Engenharia de Sistemas Eletrônicos da
Escola Politécnica da Universidade de São Paulo,
Av. Prof. Luciano Gualberto, n.158, trav. 3, Cidade Universitária,
de 10% do pessoal somente para a manutenção do fluxo
de projeto. A fim de contornar estes problemas é
Uma grande preocupação sobre o desenvolvimento de
necessário o rompimento com as atuais metodologias e
ferramentas de auxílio a projeto eletrônico (EDA),
introduzir uma nova, que seja capaz de lidar com todos os
atualmente, refere-se a conciliação entre as necessidades
problemas atuais de forma elegante e oferecer uma nova
dos projetistas e os interesses dos programadores. Este
perspectiva de evolução a medida que novos métodos e
trabalho aborda este problema, propondo uma nova
algoritmos forem surgindo. Este trabalho propõe o que
metodologia de projeto que sugere como pode ser a
acreditamos ser esta nova metodologia. Chamada de
integração de diferentes ferramentas num framework
“Metodologia Orientada ao Projetista” (DO, Designer
comum e quais devem ser os requisitos deste frameworkOriented methodology), ela consiste num ambiente capaz
para que seja assegurada a produtividade no nível de
de oferecer ao usuário/projetista condições apropriadas
projeto de sistema. Esta proposta chama-se “Designer
para que o mesmo possa trabalhar livre de interrupções e
Oriented Methodology” (DO), e emprega uma série de
distrações, mantendo-o sempre atento e em prontidão para
conceitos e abstrações inclusive a que chamamos de
resolver qualquer problema que venha a ocorrer assim que
“Game Like Development” (GLD). Como elemento
o mesmo seja percebido. Nesta metodologia, todas as
principal para a implementação da proposta usa-se a
informações são apresentadas de forma a reforçar a
linguagem orientada a objeto Self.
atenção do usuário em aspectos específicos do projeto.
Este reforço deve ser implementado em todas as formas
1. INTRODUÇÃO
possíveis, assim como um jogo que captura as atenções
Atualmente, o estado-da-arte em ferramentas de projeto
digital encontra-se numa situação um tanto difícil devido
Este trabalho não se trata de um novo algoritmo de
ao rápido desenvolvimento das tecnologias de fabricação
simulação, síntese ou verificação, mas uma nova proposta
de circuitos integrados e da pressão do Mercado por CI's e
de integração de todas estas ferramentas e possivelmente
sistemas mais complexos, desempenhos cada vez maiores
muitas outras num framework que possa evoluir ao longo
num tempo muito menor. Acompanhando a bibliografia do
do tempo de acordo com as necessidades do projeto. Este
assunto, notamos a proliferação de impressionantes frases
framework é baseado no que achamos ser mais adequado
de efeito como “Systems on a Chip” (SoCs), “Intellectual
aos projetistas mantendo-os focados no processo de
Properties” (IPs), “High Level Synthesis” (HLS), e somos
levados a acreditar que o problema de desenvolvimento
destes novos sistemas está bem entendido e resolvido.
As próximas seções são divididas da seguinte forma: a
Entretanto, constatamos que isto é conseguido a custos
seção 2, apresentará uma visão geral das tendências atuais
de desenvolvimento de ferramentas de auxílio ao projeto
eletrônico (EDA). Estas tendências estão bem
As metodologias em uso atualmente são basicamente as
estabelecidas por vários anos e representam muito bem a
mesmas propostas de quinze a vinte anos atrás, muitas
forma com que os projetos são feitos nos dias de hoje. Na
adaptações foram introduzidas para acomodar seção 3, apresentaremos as razões que nos levaram a desenvolvimentos mais recentes, entretanto pouco ou
elaboração da metodologia orientada ao projetista, e quais
nenhum aperfeiçoamento real foi introduzido. Estas
os seus requisitos necessários para a sua implementação.
metodologias são muito difíceis e caras de serem
Na seção 4, introduziremos o conceito de Jogo e como
mantidas[3], não é raro uma design house manter até cerca
este pode ser aproveitado na perspectiva do Projeto. Na
seção 5, mostraremos como usando uma linguagem de alto
fluxos de projeto estaria praticamente garantida. Usando a
nível podemos implementar um framework que adere às
orientação a objetos para esconder a complexidade dos
especificações da metodologia. Finalmente na seção 6,
modelos de hardware dos programadores/projetistas seria
concluiremos este artigo com as considerações finais sobre
possível evitar os problemas apresentados no início desta
prática. A complexidade do projeto digital tem aumentado
consideravelmente nos últimos anos, novas classes de
2. CONSIDERAÇÕES SOBRE AS FERRAMENTAS
problemas aparecem a cada dia. Sem falar no time-to-DE PROJETO ATUAIS market cada vez menor e dos custos envolvidos. O
Mercado apresenta-se muito mais agressivo devido a um
Desde o início do projeto de computadores, as linguagens
novo perfil de consumidor acostumado a inovações
de programação tem sido usadas na modelagem de
tecnológicas a cada ano [5]. A preocupação da industria de
sistemas digitais complexos [8]. Um grande número de
semicondutores tem se concentrado nos problemas
técnicas foram elaboradas para modelar os primeiros
decorrentes da complexidade ao nível de sistemas, como:
sistemas, mas cada novo desenvolvimento parecia sempre
reuso, verificação e teste, gerenciamento de projeto,
uma nova experiência, principalmente pela dificuldade de
software embarcado, otimizações baseadas em custo, e etc.
uso destas linguagens numa tarefa tão especifica. Havia
Seguindo estas tendências, os esforços dos meios de
um consenso que somente uma linguagem especialmente
pesquisa tem sido em aumentar a produtividade das
desenhada para a descrição de hardware poderia ser de
ferramentas de auxílio (EDA) e fluxos de projetos,
real utilidade para a industria. Somente em meados da
introduzindo modelos de descrição de alto nível para
década de 80 surgiram os primeiros padrões industriais de
sistemas digitais e novos algoritmos de síntese.
linguagens de descrição de hardware (HDL), com o
VHDL e o Verilog. Logo, estes padrões tornaram-se
O resultado deste processo é uma grande diversidade de
comuns nos principais fluxos de projeto. Ao contrário da
ferramentas, modelos e interesses conflitantes que é muito
captura esquemática, a descrição textual é muito mais
difícil de manter gerenciável e atualizado. Outro problema
rápida de ser editada, inequívoca e capaz de descrever o
serio é que estas ferramentas foram desenvolvidas com
sistema em diferentes níveis de abstração. Isto fez com
técnicas da ciência da computação, visando um aspecto
que fossem estabelecidos níveis de representação
muito particular do problema e quase sempre sem
apropriados para procedimentos de síntese lógica
considerar as formas de utilização das mesmas. Estas
(register transfer level - RTL), e níveis de abstração mais
condições, na maioria das vezes, não condiz com a
elevados para representação e síntese. Seguindo as HDLs,
realidade das equipes de desenvolvimento. O ponto de
as ferramentas de síntese foram o próximo grande adendo
vista do projetista tem sido sistematicamente
aos fluxos de projeto. Primeiro as ferramentas de síntese
desconsiderado quando são propostas novas metodologias.
lógica, depois as de síntese de alto nível, apesar desta
Este estado de coisas pode não ser intencional, mas tem
última ainda não gozar da mesma popularidade da
aumentado os requisitos das equipes de desenvolvimento
que precisam se capacitar em conhecimentos/conceitos de
programação algumas vezes muito além do escopo das
Apesar de seu grande sucesso no meio industrial, as HDLs
suas especializações. Isto acaba por aumentar ainda mais
padrão não tiveram sucesso em preencher todas as
expectativas especialmente da comunidade acadêmica.
Suas dificuldades em lidar com diferentes estruturas/tipos
Note que isto não é uma simples crítica a pesquisa da
de dados e as limitações sintáticas em descrever abstrações
ciência da computação em ferramentas EDA, na realidade
de níveis mais elevados sinalizavam a necessidade para
eles tem feito uma notável contribuição a todo o sistema
novos tipos de descrição. Muitos grupos afirmam que o
de projeto. A questão é que a pesquisa deve prestar mais
caminho é o uso de linguagens de programação de
atenção a forma de interação das ferramentas com os seus
propósito geral, assim como era feito no início, com uma
usuários, seus problemas e limitações, e da forma com que
certa ênfase nas linguagens mais populares, como C/C++
as estruturas de dados são processadas a apresentadas no
[9,10] ou Java [6]. A idéia é usar o poder e flexibilidade
fluxo de projeto. A tripla de operações “edição-
destas linguagens para desenvolver um subconjunto
compilação-simulação” não é indicada quando se trabalha
(funções/objetos) apropriado para as descrições de
com altos níveis de abstração. Nestes níveis, as mudanças
hardware. Padronizando estes subconjuntos, seria possível
devem ser implementadas e verificadas rapidamente, de
utilizar a mesma estrutura de desenvolvimento de software
forma a não desviar a atenção do projetista do objeto de
para o projeto de sistemas. Outro ponto importante, tendo
seu trabalho. Apesar de todos os avanços, a imaginação do
sido padronizado estes subconjunto de funções, o reuso e a
usuário ainda desempenha um fator determinante no
troca de IPs estaria garantida. Além disso, por se tratar de
processo de desenvolvimento. As ferramentas devem
uma linguagem de uso geral a integração em diferentes
refletir esta importância, assim como todo o fluxo de
compilação, “entrada” corresponde ao arquivo fonte, o
compilador ao “filtro” e o programa executável ao
“resultado”. No exemplo do simulador compilado
Com todos estes pontos em mente, este trabalho propõe
observamos a mesma coisa: “descrição-compilação-
diretrizes para o que pode vir a ser uma nova metodologia
simulador”, respectivamente. Se tomarmos como exemplo
de projeto de sistemas digitais. Uma metodologia que
um simulador interpretado veremos o mesmo padrão:
adote o ponto de vista do projetista, onde cada ferramenta
“descrição-simulador-saída”. E assim sucessivamente,
assuma o agente humano como fonte/guia principal de
quando analisamos outras ferramentas de auxílio.
projeto. Isto pode ser conseguido aplicando o conceito de
Podemos identificar em cada caso o padrão acima,
Jogo (GLD) no desenvolvimento de um framework
demonstrando que por mais criativos que os
comum que integre as mais avançadas ferramentas, assim
programadores procuram ser, eles ainda estão
como as mais tradicionais, mas que acima de tudo seja
contaminados com um “modus operandi” surgido a mais
diferente na forma com que tais ferramentas interagem
de 30 anos e que não corresponde com a realidade dos
com o agente humano ao longo do processo de
A cerca de 15 anos, deu-se início uma difusão mais intensa
3. Desenvolvimento Orientado ao Projetista
das interfaces gráficas e “amigáveis” nos sistemas de
computação. Entretanto, parece que os programadores
Na seção anterior afirmamos que as ferramentas de auxílio
continuaram insensíveis as potencialidades desta nova
ao projeto são desenvolvidas sob uma visão muito
tecnologia. Talvez isto se deu em parte pelas limitações
particular de seus criadores. Isto pode ser constatado
tecnológicas que se apresentavam na época, mas o mais
facilmente quando analisados o modo operacional das
provável é que eles ainda continuavam escravos dos
mesmas. Tomemos por exemplo um simulador hipotético.
antigos conceitos de programação, que acreditamos
Existem muitos tipos de simulação, a que estamos
acontece até os dias de hoje. Podemos tomar como
interessados são os que se referem às simulações
exemplo, as ferramentas “gráficas” que se seguiram nesta
arquiteturais e RTL. Nestes casos, cada nível hierárquico
época e que constituem o fundamento de muitas que
corresponde um conjunto de primitivas que constituem a
usamos ainda hoje. Tínhamos os editores esquemáticos,
base do processo de simulação. Os simuladores também
onde editávamos os diagramas dos circuitos que estavam
podem ser do tipo Levelized Compiled Code (LCC) ou
em desenvolvimento. Quando era necessário efetuar
interpretados [7]; ou quanto ao tipo de inferência de
alguma coisa realmente útil como por exemplo uma
simulação podem ser event-driven ou cycle based. Em
verificação (simulação), era necessário gerar um netlist
todos estes casos, eles compartilham um ponto em comum:
(“entrada”), aplicá-lo ao simulador (“filtro”) para se obter
a visão (cultural) dos seus criadores. Vejamos a forma
os resultados (“saída”). E analisá-lo, tomando-se estes
como utilizamos estes simuladores: independente do tipo,
resultados (“nova entrada”) e aplicá-lo a um gerador de
event-driven ou cycle based, os simuladores compilados
formas de onda (“filtro”) para que fosse gerado uma
partem de uma descrição do circuito em termos de
representação gráfica (“saída”), conforme ilustra a Figura
primitivas, que é compilada gerando um programa que
1. Ou seja, apesar deste grande recurso os programas
corresponde ao simulador para aquele circuito. Este
nunca deixaram de funcionar desta mesma forma. A forma
programa é então executado em função de entradas que
tradicional da ciência da computação.
correspondem às condições em que o circuito deve ser
verificado. Podemos ver aqui um padrão de operação, que devemos concordar, faz um perfeito paralelo com a forma de desenvolver programas, guardada as devidas proporções.
Figura 1. Esquema tradicional de operação de programas.
Este padrão é o que aparece em todos os ciclos de
Esta forma de operação, mostrou-se efetiva nos últimos 40
desenvolvimento de programas, ou seja “entrada-filtro-
anos mas já tem mostrado sinais de cansaço no decorrer da
resultado”. “Entradas e resultados” correspondem a
última década. Este modelo de computação surgiu numa
arquivos com funções especiais, “filtro” corresponde a um
época em que os computadores eram máquinas
agente de transformação que operando sobre o arquivo de
praticamente inacessíveis a usuários comuns, e que
entrada produz uma seqüência de dados de saída que é
somente especialistas gabaritados podiam operar. Naquela
armazenado em “resultados”. Isto pode ser observado em
época também o custo de cada equipamento era tão alto
quase todo o universo da computação contemporânea,
que o sua existência somente poderia ser justificada se o
sendo um dos fundamentos dos sistemas UNIX. Na
seu índice de utilização fosse de 100%, 24 horas por dia.
Sob estas circunstâncias é plenamente justificado o
conceito de Jogo aplicado ao desenvolvimento, (GLD)
modelo acima, que aliado aos modestos desempenhos
“Game Like Development”. A linguagem Self nos fornece
existentes, permitiam as operações em batch e background
o modelo computacional para a implementação da
sem intervenção dos operadores. Entretanto, o que
metodologia através do conceito de objetos concretos, o
observamos nas últimas duas décadas foi o aparecimento
conceito de Jogo por sua vez determina como devem se
das máquinas de uso pessoal, que possibilitou ao usuário
apresentar as aplicações em relação ao agente humano, o
comum o acesso a estes equipamentos. Apesar do
qual não mais é considerado como elemento separado do
tremendo desenvolvimento tecnológico a visão dos
programadores continuaram imersas na era dos mainframes. Para o usuário comum, os programas
4. CONCEITO DE JOGO NO DESENVOLVIMENTO
continuam difíceis de serem operados, pouco intuitivos, e
Nesta seção abordaremos uma parte importante da
metodologia que é o conceito de Jogo aplicado ao
Os aperfeiçoamentos que presenciamos atualmente, são
desenvolvimento (GLD). Para entender melhor o conceito
modestos se considerássemos as reais potencialidades da
de Jogo, emprestaremos alguns conceitos e observações
tecnologia existente. O único inconveniente seria os
da filosofia [4] como também invocaremos o senso
interesses econômicos das corporações que dominam o
comum que cada um de nós possuímos em relação ao
setor. Veremos na seção 5, que apenas uma mudança nos
tema. Jogo não é algo estranho para ninguém, de fato ele
paradigmas de implementação pode abrir uma grande
tem estado presente nas nossas vidas desde a infância,
possibilidade de desenvolvimento, sem as inconveniências
fazendo parte das principais etapas de desenvolvimento do
individuo. Inclusive muitos animais apresentam
comportamento que indicam a existência de jogos com
O objetivo deste trabalho refere-se principalmente a
finalidades diversas. Através dos jogos desenvolvemos
metodologia de desenvolvimento de sistemas digitais em
qualidades específicas que nos são úteis na vida adulta ou
geral, mas os princípios básicos da metodologia podem ser
que nos ajudam a contornar situações difíceis
facilmente estendidos para outras áreas de conhecimento
possibilitando relaxamento, distração, diversão. Para não
que não estejam diretamente ligadas a ciência da
entrarmos em infinitas discussões filosóficas, faremos a
computação mas que carecem de ajuda computacional. A
seguir alguns comentários que achamos pertinentes em
critica principal diz respeito ao modo operacional das
relação ao Jogo e a contrapartida em relação a
ferramentas disponíveis atualmente e da distância
conceitual entre programas e usuários, que fazem com que
estes últimos participem como meros observadores em
• Apesar de seu caráter primordialmente lúdico, o Jogo
possui uma seriedade própria que independe dos
elementos que o jogam. Esta seriedade determina um
A metodologia orientada ao projetista (DO), consiste no
mundo onde se desenrolam as ações e movimentos do
uso de uma série de recursos para aproximar o universo de
Jogo. Todos devem respeitar esta formalidade, caso
aplicação da realidade computacional. Esta aproximação é
contrário não há Jogo. Formalidade é um fator sempre
feita utilizando uma linguagem de programação orientada
positivo quando relacionado a elementos de
a objetos (Self [11]), cuja concepção peculiar e avançada
computação. Um sistema de desenvolvimento deve
permite a implementação quase sem esforço destes
oferecer este “mundo”. Obviamente, para que seja
recursos. O conceito de programa é diluído num ambiente
respeitada a ilusão de Jogo este mundo deve ser tão
Self, o que existe é somente um conjunto de objetos que
fechado quanto possível e limitar o número de
exibe uma dinâmica entre si. Este comportamento é que
elementos estranhos à dinâmica do desenvolvimento.
traduz em operações e processamentos. Self apresenta
também um ambiente de desenvolvimento gráfico [2] que
• O Jogo tem uma natureza própria, independente da
reforça o conceito de objetos concretos e acessíveis,
consciência daqueles que jogam. O sujeito do Jogo
permitindo que a programação seja gráfica e textual,
não são os jogadores, porém o Jogo, através dos que
dependendo da conveniência do momento. Isto abre uma
jogam, simplesmente ganha representação. Assim
série de possibilidades com relação ao desenvolvimento de
como o Jogo, o resultado do desenvolvimento não
sistemas, os elementos computacionais podem ser
pode estar submetido aos caprichos dos projetistas.
encapsulados em termos de elementos comuns ao domínio
Isto significa que as especificações de um projeto
de especialização do usuário, de forma a facilitar a sua
fazem parte das especificações do ambiente do Jogo
compreensão e uso. Isto pode ser reforçado graficamente,
de desenvolvimento, de forma a limitar e direcionar as
de forma a tornar o desenvolvimento mais agradável e
ações do(s) projetista(s) rumo ao objetivo comum.
rápido para o usuário. O segundo pilar da metodologia é o
rápido possível as informações e conseqüências
• Se considerarmos o significado da palavra Jogo,
freqüentemente associamos a idéia de conjunto de
objetos e movimentos entre eles. Da mesma forma,
• O atrativo do Jogo, a fascinação que exerce, reside no
sistemas digitais podem ser entendidos como objetos
fato de que o Jogo se assenhoreia do jogador. Da
que apresentam uma dinâmica muito específica entre
mesma forma o ambiente de desenvolvimento deve
si. O Jogo, por outro lado, deve representar uma
cativar o projetista de forma a mantê-lo no “jogo”,
ordem, na qual acontece os movimentos, da mesma
desempenhando as suas funções até que o objetivo
forma com que a dinâmica do sistema traduz um
Figura 2 Exemplo de uma descrição de hardware onde representações gráficas e textuais (Self-HDL) se misturam.
• Finalmente, cada jogo coloca uma tarefa ao homem
• Um dos atrativos lúdicos de um Jogo é a sua leveza,
que o joga. Portanto, cabe ao sistema de
ou seja, os movimentos do jogo não devem exigir
desenvolvimento colocar este objetivo ao projetista e
esforço. Isto convida o jogador a explorar
reforçá-lo em cada momento que for possível, para
possibilidades e o mantém em foco no jogar. Este é
que o mesmo nunca seja perdido ou disperso.
um ponto essencial da metodologia, a inexistência de
esforços. Cada movimento, traduzida por uma
5. IMPLEMENTAÇÃO DO SISTEMA DO
determinada ação no processo de desenvolvimento,
deve aludir a falta de dificuldade. Ou seja, cada ação
Podemos então delinear algumas características que são
deve ser para o projetista simples e imediata,
fundamentais para a metodologia orientada ao projetista: o
permitindo que o mesmo permaneça centrado na
sistema deve exibir um nível de integração jamais visto
tarefa de desenvolvimento. Obviamente, esta leveza
nos frameworks convencionais; ele deve ser interativo e
não precisa ter um caráter real, apenas uma alusão a
interpretado, ou pelo menos interagir com o usuário como
falta de esforços, assim como num jogo de monopólio
se assim fosse; estar voltado ao campo de aplicação; e
pode-se comprar/construir um conjunto industrial
finalmente, deve lançar mão de todos os recursos
baseados apenas no resultado de um dado.
disponíveis para manter a atenção do projetista no objeto
do seu trabalho. Veremos a seguir como podemos
• Um outro atrativo do Jogo é o caráter lúdico da
implementar tais características de forma eficiente.
competição, onde o vaivém dos movimentos, livre de
esforços, produz situações e condições as vezes além
A integração entre ferramentas, ambiente e usuário é um
da previsão dos seus jogadores. O Jogo surpreende.
problema bastante complexo. Entretanto, como qualquer
Um outro caráter importante da metodologia é reagir
outro problema envolvendo complexidade, este também
imediatamente às modificações ou movimentos
pode ser resolvido adotando-se um modelo de
efetuados pelos projetistas de forma a oferecer o mais
representação adequado. Este modelo é oferecido pela
linguagem Self. O uso de uma linguagem especial para
principal da metodologia é o objeto “Comp”, se
implementação de um framework de integração não é uma
compararmos com outras HDLs este seria equivalente ao
idéia nova, podemos citar o SKILL da Cadence [1].
“Entity” do VHDL ou “Module” do Verilog.
Podemos aproveitar as facilidades de desenvolvimento e
Evidentemente na metodologia este objeto tem um escopo
trabalho com objetos do Self para promover a integração
muito maior que nestas HDLs. Comp pode ter a sua
do sistema. Self é uma linguagem de alto nível que possui
descrição feita em termos funcionais ou estruturais, como
uma concepção da orientação a objetos muito peculiar que
pode ser visto na Figura 2. Funcionalmente esta descrição
a torna também muito simples. O fato de ser baseada em
pode ser feita de várias formas diferentes: diagramas de
protótipos e possuir tipos dinâmicos também contribuem
estado, petri-nets, modelos simbólicos e textuais diversos,
muito com essa simplicidade. Todos os elementos em Self
sendo a Self-HDL a descrição originalmente desenvolvida.
são objetos que podem ser acessados, testados, copiados,
etc, mesmo durante a execução de um programa. Isto nos
A descrição estrutural consiste numa interconexão de
remete a segunda característica, a interatividade, num
outros objetos Comp, com o auxílio dos objetos Node. No
programa em Self um objeto pode ser modificado mesmo
processo de simulação, estes objetos tem a função de
quando o mesmo está sendo usado por um programa. É
propagação de eventos entre os diversos componentes do
como se um mecânico pudesse mudar as características de
sistema. Os Nodes herdam o seu modelo de sinal de
uma engrenagem enquanto o motor estivesse em
objetos especiais implementados para tal. Como em Self
funcionamento. Esta característica é fundamental na
mesmo a herança pode ser atribuída dinamicamente, os
implementação da metodologia, pois os objetos podem ser
“parents” do Node podem ser modificados para refletir o
concebidos como implementações reais das primitivas de
modelo de sinal que for mais conveniente. Atualmente, o
desenvolvimento, exibindo instantaneamente a sua
sistema está sendo implementado com um modelo simples
funcionalidade no instante em que forem instanciados,
de quatro valores (0,1,-,X), mas futuramente esperamos
assim como um componente real é usado numa bancada de
que esteja disponível um modelo compatível com o padrão
teste. Para funcionar como bancada também é preciso que
IEEE 1164-1993. Evidentemente, para que existam
o sistema ofereça um mecanismo de simulação interativa
conexões é necessário que existam Ports de entrada e de
que tenha características mais próximas a emulação do que
saída. Todos os Comps possuem Ports de entrada e de
simulação propriamente dita. Em [7] é mostrado que uma
saída, as quantidades variam com a funcionalidade do
simulação interpretada pode ser quase tão eficiente quanto
uma compilada, apesar que o exemplo se referir a
simulação lógica podemos facilmente estender o conceito
A avaliação do estado de um componente é feita através
para simulação funcional hierárquica com resultados
do envio da mensagem step para o mesmo. Independente
semelhantes. Finalmente, para que seja criada uma ilusão
do tipo de descrição (funcional/estrutural), a mensagem
mais perfeita desta realidade cibernética de inicia o cálculo das saídas em função das entradas
desenvolvimento, uma grande quantidade de recursos
correntes. No caso de uma descrição funcional, isto é feito
gráficos devem ser utilizados. Em [2] é apresentada uma
seguindo diretamente o procedimento especificado pela
implementação gráfica para Self que mantém a
descrição; no caso estrutural, uma lista de scheduling
programação focalizada nos objetos. Mais uma vez este
coordenará seletivamente o envio de novas mensagens
conceito por ser estendido para o domínio de aplicação de
step para os sub-componentes da descrição. A cada
forma a criar o “mundo virtual” de desenvolvimento,
saída computada e modificada um novo evento será
sugerido quando falamos do conceito de Jogo.
gerado e acrescentado a lista de scheduling, Figura 3. Este
esquema é tipicamente event-driven, entretanto adotamos
Como exemplo, vejamos como são implementados alguns
otimizações sugeridas em [7] que nos permitem resultados
objetos fundamentais da metodologia. Num processo de
interessantes. Um Comp que não seja alterado por um
desenvolvimento de hardware, é natural e desejável que o
determinado evento não precisa ser incluído na lista de
projetista pense também em termos de hardware. Isto é
scheduling, isto permite por exemplo que simulações cycle
necessário pois quanto mais próximo do objetivo final do
based possam ser feitas usando o mesmo mecanismo.
processo mais simples são as ferramentas de auxílio e
Customizando os objetos Comp e indicando que estes são
síntese necessárias. Seguindo este princípio, o objeto1
sensíveis somente a certos Ports (“clocks”), podemos facilmente transformar uma simulação event-driven em cycle based, ou mesmo combinar as duas num dado
1 Faremos todas as descrições em termos de objetos, uma vez que em Self não existe o conceito de classes. Objetos
podem herdar de outros objetos (herança múltipla), e são
especiais mantidos especialmente para este fim, são os
usados/criados a partir de cópias de outros objetos
Até o momento, a implementação não parece muito diferente de outros sistemas. Entretanto como dissemos, a grande diferença encontra-se na integração de ferramentas e na interação com o usuário. Suponha por exemplo, o fluxo ideal de trabalho na metodologia DO e como ele opera com os objetos apresentados. Suponha que estejamos trabalhando num projeto usando uma das descrições de alto nível disponíveis, após as verificações iniciais (simulações) é necessário uma verificação mais efetiva (formal) para que seja possível passar para as próximas etapas de desenvolvimento. Isto é feito
simplesmente enviando um mensagem conveniente ao objeto
Figura 3 Esquema de scheduling de avaliação de
Comp. Por exemplo, checkProp. Esta mensagem
pode consistir de uma verificação de propriedades
previamente configuradas no início do projeto. Uma vez
A interatividade e característica de imersão apontada na
confirmada a consistência do modelo, passaríamos a fase
seção 4 através do conceito de Jogo, é obtida inicialmente
de síntese de alto nível, onde baseados na descrição
através da implementação e manipulação de ícones dos
funcional seria gerado um modelo arquitetural (estrutural)
elementos de projeto. Os elementos gráficos têm uma
do componente. Mais uma vez isto seria resultado de uma
importância muito grande nesta metodologia, não só como
simples mensagem, por exemplo: archGen. O modelo
elementos de organização como foi apontado
gerado não iria criar um outro objeto, mas sim acrescentar
anteriormente, mas como elemento essencial para a
ao Comp original uma nova descrição, desta vez
criação da “realidade virtual” de projeto. Por exemplo,
estrutural. Comp pode ter quantas descrições se fizerem
através do mesmo ícone o projetista poderia interagir com
necessárias, a descrição recém gerada passaria a ser a
Comp durante uma simulação. Usando objetos especiais,
descrição corrente e a tomada como base seria a descrição
os Observers, que o projetista poderia conectar-se aos
anterior. Uma vez exercitada a nova descrição (simulada),
Ports de um componente e observar o resultado da
uma nova etapa de verificação formal seria necessária,
simulação a medida em que esta se desenrola.
desta vez comparando as duas implementações, isto seria
Obviamente, um Observer poderia ser customizado de
através da mensagem verify. Poderíamos seguir
forma a formatar o(s) ponto(s) de medição de acordo com
sucessivamente estes passos até obter uma descrição do
as conveniências do projetista, e assim parecer um
Comp original em termos de Comps em nível RTL. Neste
instrumento de medida, painel de controle e etc. Isto
ponto poderíamos facilmente obter uma descrição HDL
também é muito interessante, pois permite ao projetista
convencional através de uma mensagem como VHDLGen,
formatar e mascarar a implementação de um dado sistema
ou VerilogGen, que se encarregaria de gerar uma
e permitir apresentações de simulações reais para equipes
descrição HDL que pode ser sintetizada do componente
menos ligadas aos detalhes de implementação do
hardware, como: equipes de desenvolvimento de software,
Um ponto importante a ser lembrado é que implementando
o framework em Self, é possível uma funcionalidade
6. CONCLUSÃO
exatamente da forma com que foi proposta. Cada uma
destas mensagens pode ser simplesmente um botão no
Apresentamos neste artigo os conceitos principais de uma
ícone de representação de Comp, e que só estaria
Metodologia Orientada ao Projetista para o
disponível quando e se as condições necessárias ao seu
desenvolvimento de sistemas digitais. Vimos que
funcionamento estiverem também disponíveis. Não seriam
conceitualmente esta metodologia pode ser estendida a
necessários conceitos como arquivos, nomes de arquivos,
outras áreas de conhecimento, porém o objetivo principal
diretórios, sintaxe de comandos e etc, pois tudo estaria
deste trabalho é o desenvolvimento de um framework para
acessível e organizado automaticamente através do ícone
desenvolvimento de sistemas em nível RTL, arquitetural e
superior. Foi mostrado como alguns pontos chaves da metodologia estão sendo implementados utilizando a linguagem Self. O trabalho encontra-se nas fases iniciais de desenvolvimento, onde se pretende especificar e implementar um conjunto de objetos de hardware que caracterize o nível RTL de descrição, e o mecanismo
básico de inferência para a simulação. Ambas as implementações terão contrapartida textual e gráfica e visam principalmente manter o foco de atenção do projetista nos objetos de hardware, sem se preocupar com a interface. Futuramente planejamos a implementação de um gerador de código HDL padrão (VHDL/Verilog) para propósitos de síntese automática, e também a inclusão de outras representações de auto nível visando talvés high-levelsynthesis.
7. REFERÊNCIAS
[1] CADENCE. SKILL Language Reference Manual. Cadence Design Systems, Inc, June 1989. [2] CHANG, B.-W., UNGAR, D., AND SMITH, R. B. Visual Object-Oriented Programming. Prentice-Hall, 1995, chapter: Getting Close to Objects: Object-Focused Programming Environments, pp. 185–198. [3] FLAKE, P. L., DAVIDMANN, S. J., AND KELF, D. J. Measuring design languages for system-on-chip design. Tech. Rep., Co-Design Automation, Inc., San Jose, CA 95113-1295, 2000. [4] GADAMER, H.-G. Verdade e Método: Traços fundamentais de uma hermenêutica filosófica. Editora Vozes, 1999. [5] ITRS. International Technology Roadmap for Semiconductors - design – 2001 Edition. http://public.itrs.net/Files/2001ITRS/Home.htm, 2001. [6] KUHN, T., AND ROSENSTIEL, W. Java based object oriented hardware specification and synthesis. In Proceedings of the ASP-DAC 2000. Asia and South Pacific Design Automation Conference, 2000, pp. 579–581. [7] MAURER, P. M. Is compiled simulation really faster than interpreted simulation? In Proceedings of the 9th International Conference on VLSI Design, 1996, pp. 303–306. [8] SHRIVER, B., AND SMITH, B. The Anatomy of a High-Performance Microprocessor: A System Perspective. IEEE Computer Society, 1998. [9] SYNOPSYS, I. System C - Version 2.0 - User’s Guide. http://www.systemc.org, 2002. [10] THON, L. E., AND BRODERSEN, R. W. C to silicon compilation. In Proceedings of the 1992 IEEE Custom Integrated Circuits Conference (1992), pp. 11.7.1–11.7.4. [11] UNGAR, D., AND SMITH, R. B. SELF: The power of simplicity. LISP AND SYMBOLIC COMPUTATION: An International Journal. Kluwer Academic Publishers 4, 3 (June 1991).
Primary Examination for the Bachelor of Laws Semester 1, 2009 CONSUMER PROTECTION AND UNFAIR TRADING Total Duration: Instructions for Candidates Students should answer either ONE of the two questions. Both Permitted Materials Candidates may take into the examination room any book or materials other than those borrowed from a University Library.
CCB Science 2 Service Learning Series According to the Federal Government and SAMHSA: Medication Assisted Recovery Medication-Assisted Treatment (MAT) is a form of pharmacotherapyand refers to any treatment for a substance use disorder that includes a Learning Program pharmacologic intervention as part of a comprehensive substance abusetreatment plan with an ultimate goal of patient r