INTEGRAÇÃO DE FERRAMENTAS E AMBIENTES DE CAD PARA MICROELETRÔNICA SUMMARY RESUMO



Documentos relacionados
UNIVERSIDADE. Sistemas Distribuídos

LINGUAGENS E PARADIGMAS DE PROGRAMAÇÃO. Ciência da Computação IFSC Lages. Prof. Wilson Castello Branco Neto

Desenvolvendo uma Arquitetura de Componentes Orientada a Serviço SCA

3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio

INTEGRAÇÃO DE APLICAÇÕES UTILIZANDO WEB SERVICE 1. Kellen Kristine Perazzoli 2 ; Manassés Ribeiro 3

SISTEMAS DISTRIBUIDOS

UFG - Instituto de Informática

2 Conceitos relativos a Web services e sua composição

Universidade da Beira Interior

Conteúdo. Disciplina: INF Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo

Web Services. Autor: Rômulo Rosa Furtado

1

Framework.NET, Microsoft Visual C# 2010 Express e Elementos da Linguagem C#

IMPLEMENTAÇÃO DAS CAMADAS Inference Machine e Message Service Element PARA UM SERVIDOR DE SISTEMA DE GERENCIAMENTO DE Workflow HOSPITALAR

GERAÇÃO DE RELATÓRIOS

Aula 03-04: Modelos de Sistemas Distribuídos

Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi

18/04/2006 Micropagamento F2b Web Services Web rev 00

Tópicos em Engenharia de Software (Optativa III) AULA 2. Prof. Andrêza Leite (81 )

Semântica para Sharepoint. Busca semântica utilizando ontologias

4 Estrutura do Sistema Operacional Kernel

Requisitos de Software

Apesar de existirem diversas implementações de MVC, em linhas gerais, o fluxo funciona geralmente da seguinte forma:

Na medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia.

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

DESENVOLVIMENTO DE UM APLICATIVO DO TIPO SECRETÁRIO VIRTUAL PARA A PLATAFORMA ANDROID

FACULDADE DE ENGENHARIA DE COMPUTAÇÃO. PROJETO FINAL I e II PLANO DE TRABALHO <NOME DO TRABALHO> <Nome do Aluno> <Nome do Orientador>

Sistemas Distribuídos

UML - Unified Modeling Language

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br

Curso de Educação Profissional Técnica de Nível Médio Subseqüente ao Ensino Médio, na modalidade a distância, para:

Introdução à Engenharia de Software

Arquitetura dos Sistemas de Informação Distribuídos

Nome: Login: CA: Cidade: UF CARTÃO RESPOSTA QUESTÃO RESPOSTA QUESTÃO RESPOSTA

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES

Serviços Web: Introdução

Web Services. (Introdução)

IplanRio DOP - Diretoria de Operações GIT - Gerência de Infraestrutura Tecnológica Gerente da GIT

Resumo: Perguntas a fazer ao elaborar um projeto arquitetural

3 SCS: Sistema de Componentes de Software

Prática da Disciplina de Sistemas Distribuídos Serviços Web IFMA DAI Professor Mauro Lopes C. Silva

5 Framework para coordenação e mediação de Web Services para ambientes de aprendizado à distância

Sistemas Operacionais

Processos Técnicos - Aulas 4 e 5

ENGENHARIA DE SOFTWARE I

Sistemas Distribuídos

Um Driver NDIS Para Interceptação de Datagramas IP

Análise e Projeto de Sistemas de Informação. Andrêza Leite andreza.lba@gmail.com

Linguagem e Técnicas de Programação I Programação estruturada e fundamentos da linguagem C

Introdução ao Modelos de Duas Camadas Cliente Servidor

Orientação a Objetos

INE Sistemas Distribuídos

Service Oriented Architecture SOA

Roteiro para a escrita do documento de Especificação de Requisitos de Software (ERS)

ISO/IEC 12207: Gerência de Configuração

A computação na nuvem é um novo modelo de computação que permite ao usuário final acessar uma grande quantidade de aplicações e serviços em qualquer

UML 01. Curso Superior de Tecnologia em Banco de Dados Disciplina: Projeto de Banco de Dados Relacional 1 Prof.: Fernando Hadad Zaidan

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação

5.1 Exemplos de uso Mediante a instanciação de componentes específicos, o OiL pode ser configurado


Governança de TI. ITIL v.2&3. parte 1

SISTEMAS OPERACIONAIS

Especificação do 3º Trabalho

pacotes de software na forma em que são É importante salientar que não é objetivo do software, suas atividades e produtos

Serviços Web: Arquitetura

Histórico de Revisão Data Versão Descrição Autor

Microsoft.NET. Desenvolvimento Baseado em Componentes

Ferramenta para Geração de Código a partir da Especialização do Diagrama de Classes

2 Diagrama de Caso de Uso

Prof. Marcelo Henrique dos Santos

Engenharia de Requisitos Estudo de Caso

Curso Tecnológico de Redes de Computadores 5º período Disciplina: Tecnologia WEB Professor: José Maurício S. Pinheiro V

Um Processo para Desenvolvimento de Aplicações Web Baseado em Serviços. Autores: Fábio Zaupa, Itana Gimenes, Don Cowan, Paulo Alencar e Carlos Lucena

IMPLEMENTAÇÃO DE SOCKETS E THREADS NO DESENVOLVIMENTO DE SISTEMAS CLIENTE / SERVIDOR: UM ESTUDO EM VB.NET

INTRODUÇÃO ÀS LINGUAGENS DE PROGRAMAÇÃO

DESENVOLVIMENTO WEB UTILIZANDO FRAMEWORK PRIMEFACES E OUTRAS TECNOLOGIAS ATUAIS

Feature-Driven Development

Considerações no Projeto de Sistemas Cliente/Servidor

Capítulo VI CORBA. Common Object Request Broker Architecture. [Cardoso2008] Programação de Sistemas Distribuídos em Java, Jorge Cardoso, FCA, 2008.

Engenharia de Software. Parte I. Introdução. Metodologias para o Desenvolvimento de Sistemas DAS

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 14 PROFª BRUNO CALEGARO

SAV Sistema de Aluguel de Veículos I - DOCUMENTO DE REQUISITOS Versão 1.00

1. CAPÍTULO COMPUTADORES

Automação de Bancada Pneumática

FAÇA FÁCIL: DRIVER IGS PARA COMUNICAÇÃO DE PROTOCOLOS PROPRIETÁRIOS INTRODUÇÃO

Introdução ao PHP. Prof. Késsia Marchi

Engenharia de Requisitos

Modelos de Arquiteturas. Prof. Andrêza Leite

GUIA DE CURSO. Tecnologia em Sistemas de Informação. Tecnologia em Desenvolvimento Web. Tecnologia em Análise e Desenvolvimento de Sistemas

IW10. Rev.: 02. Especificações Técnicas

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação

Histórico da Revisão. Versão Descrição Autor. 1.0 Versão Inicial

Conteúdo. Disciplina: INF Engenharia de Software. Monalessa Perini Barcellos

Aplicação Prática de Lua para Web

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO

Figura 1 - Arquitetura multi-camadas do SIE

Transcrição:

INTEGRAÇÃO DE FERRAMENTAS E AMBIENTES DE CAD PARA MICROELETRÔNICA João D. Togni, Maria Lúcia B. Lisbôa, Renato P. Ribas Instituto de Informática UFRGS Av. Bento Gonçalves, 9500 CxP 15064 CEP 91501-970 Porto Alegre RS, Brasil {togni, llisboa, rpribas}@inf.ufrgs.br SUMMARY The use of CAD (Computer Aided Design) tools is imperative to build integrated circuit - IC and micro-electromechanical systems - MEMS. The huge set of different tasks brings the need of many different tools for the IC and MEMS design flow. CAD environments aiming the coverage of the most of these design flow steps as well as specific tools that goal specialized tasks are available. However, there is a need for exchange information between tools simplifying the integration of such environments and tools to optimize their use. This paper presents a new mechanism that helps the integration between computing programs written in different languages, including objectoriented languages (C++ and Java) and script languages, such as Skill and Ample from Cadence and Mentor Graphics IC environments, respectively. Preliminary results have been obtained with Skill and Java languages, taken into account an anisotropic etching simulation for MEMS. RESUMO Ferramentas de CAD (Computer Aided Design) para microeletrônica são indispensáveis para o projeto de circuitos integrados - IC e de microssistemas - MEMS. A grande diversidade de tarefas envolvidas faz com que diversas ferramentas estejam envolvidas no fluxo completo de projeto de IC and MEMS. Para tratar dessas tarefas, ambientes de CAD que visam cobrir grande parte desse processo bem como ferramentas para fins específicos estão disponíveis tanto academicamente quanto comercialmente. Observa-se porém a necessidade de integração entre tais ambientes e ferramentas, de forma a facilitar a troca de informações entre as mesmas melhorando com isso seu uso e eficiência. Este artigo propõe um novo protocolo que auxilia a integração de programas escritos em diferentes linguagens, incluindo linguagens orientadas a objeto, como Java e C++, e linguagens script proprietárias como Skill e Ample presentes nos ambientes de microeletrônica Cadence e Mentor Graphics, respectivamente. Resultados preliminares são apresentados para as linguagens Skill e Java, através de uma ferramenta de simulação de corrosão anisotropica para MEMS.

INTEGRAÇÃO DE FERRAMENTAS E AMBIENTES DE CAD PARA MICROELETRÔNICA João D. Togni, Maria Lúcia B. Lisbôa, Renato P. Ribas Instituto de Informática UFRGS Av. Bento Gonçalves, 9500 CxP 15064 CEP 91501-970 Porto Alegre RS, Brasil {togni, llisboa, rpribas}@inf.ufrgs.br RESUMO Ferramentas de CAD (Computer Aided Design) para microeletrônica são indispensáveis para o projeto de circuitos integrados - IC e de microssistemas - MEMS. A grande diversidade de tarefas envolvidas faz com que diversas ferramentas estejam envolvidas no fluxo completo de projeto de IC and MEMS. Para tratar dessas tarefas, ambientes de CAD que visam cobrir grande parte desse processo bem como ferramentas para fins específicos estão disponíveis tanto academicamente quanto comercialmente. Observa-se porém a necessidade de integração entre tais ambientes e ferramentas, de forma a facilitar a troca de informações entre as mesmas melhorando com isso seu uso e eficiência. Este artigo propõe um novo protocolo que auxilia a integração de programas escritos em diferentes linguagens, incluindo linguagens orientadas a objeto, como Java e C++, e linguagens script proprietárias como Skill e Ample presentes nos ambientes de microeletrônica Cadence e Mentor Graphics, respectivamente. Resultados preliminares são apresentados para as linguagens Skill e Java, através de uma ferramenta de simulação de corrosão anisotropica para MEMS. 1. INTRODUÇÃO O projeto de circuitos integrados (IC) abrange diversas áreas de conhecimento e tarefas. Entre as muitas tarefas envolvidas podemos citar síntese lógica, minimização lógica, mapeamento tecnológico, simulações elétricas, estudo de performance, validação lógica, simulação de efeitos secundários em leiaute, ferramentas de desenho de esquemas elétricos e leiautes, simulações de corrosão e efeitos físicos, entre outros. Seria impossível atingir o estado de desenvolvimento atual da área sem o auxílio de ferramentas computacionais que simplificassem essas tarefas de forma eficiente. A área de microssistemas (MEMS) não é diferente. Nesta nova tecnologia, a diversidade de ferramentas computacionais de auxílio ao projeto é ainda maior devido a sua característica interdisciplinar. Existem ferramentas específicas para algumas das tarefas do fluxo de projeto de ICs e MEMS, bem como ambientes que pretendem cobrir grande parte das etapas desses fluxos. Dois dos maiores e mais completos ambientes de microeletrônica são o Design Framework II da Cadence [1] e o Falcon Framework da Mentor Graphics [2]. Tais ambientes podem ser usados através de interfaces gráficas ou por comandos expressos em uma linguagem de programação script de domínio específico. Linguagens script de domínio específico, ou linguagens de comandos, são linguagens de programação que permitem a utilização de recursos de uma determinada ferramenta, aumentando sua flexibilidade. A capacidade computacional de uma linguagem deve-se a dois fatores principais: a capacidade de expressão da própria linguagem, controle de fluxos, controle de escopos, primitivas de concorrência com threads ou com processos, proteção de variáveis e funções, entre outros; a sua biblioteca de funções, ou seja, a existência de funções para comunicação em rede, expressão de estruturas complexas como listas encadeadas, vetores, grafos, etc. As linguagens script oferecidas pelo Design Framework II - Cadence e pelo Falcon Framework - Mentor Graphics possuem total controle sobre os recursos do ambiente e suas ferramentas, ou seja, em ambos os casos é possível fazer com programação qualquer coisa que feita através da interface gráfica, com a vantagem de persistência do roteiro de tarefas e a possibilidade de execução de código nativo para adição de funcionalidades específicas. Apesar do grande potencial desses ambientes, há sempre a necessidade de criação de novas ferramentas para lidar com tarefas específicas. Essas ferramentas podem ser desenvolvidas fora desses ambientes, em linguagens de programação como C, C++, Java, Tk/Tcl, comumente usadas em meios profissionais e acadêmicos 1

para o desenvolvimento de CAD. Além disso, as linguagens script dos ambientes de projeto são proprietárias, ou seja, funcionam somente integradas às ferramentas. O seu objetivo é a criação de scripts dentro das linguagens, que a princípio não representam soluções completas de software. A necessidade de aproveitar ferramentas já desenvolvidas, integrando-as com outras ferramentas ou estendendo suas funcionalidades tem sido uma necessidade crescente [3][4]. Portanto, para a realização de fluxos de desenvolvimento de microeletrônica e MEMS tem-se sempre a necessidade do uso de sistemas que integrem as ferramentas de CAD específicas, que são geralmente implementadas fora desses ambientes, em modo stand-alone (ou independentes e auto-suficientes). Neste artigo é apresentado um protocolo para auxiliar a integração de programas escritos em linguagens script proprietárias dos ambientes de CAD de microeletrônica com linguagens de domínio público. Para tanto, são apresentadas algumas características das linguagens script desses ambientes, e os resultados obtidos através de um simulador de corrosão anisotrópica para MEMS, tomado como estudo de caso. outras linguagens escolham o formato mais confortável para escrever seus códigos. Além de todas essas características, a linguagem Skill oferece funções para a construção de interfaces gráficas para interação do usuário com o ambiente de CAD. Por fim, são disponibilizadas algumas ferramentas de auxílio ao desenvolvimento como depuração e otimização. O objetivo primeiro dessas linguagens é oferecer uma maneira de personalizar o ambiente e reduzir a dificuldade de uso do mesmo. Porém, as funcionalidades da linguagem permitem não só a geração de pequenos programas, mas também a confecção de módulos inteiros dentro do ambiente. A Fig. 1 mostra o resultado de implementação em Skill de um algoritmo de corrosão anisotrópica usando a tecnologia de microusinagem do substrato pela face superior (Front-Side Bulk Micromachining FSBM), utilizado como estudo de caso neste trabalho [6]. A Fig. 2 apresenta um trecho de código da linguagem Skill. 2. LINGUAGENS SKILL CADENCE E AMPLE MENTOR GRAPHICS Nesta seção são brevemente descritas as linguagens script proprietárias dos ambiente de projeto Design Framework II da Cadence [1] e o Falcon Framework da Mentor Graphics [2]. 2.1. Linguagem script Skill Cadence O ambiente Design Framework II - Cadence oferece a linguagem script Skill e sua variante Skill++. Ambas são linguagens baseadas em Lisp [5]. Skill++ possui características do modelo de objetos, sendo estas características que a distinguem de sua predecessora Skill. Lisp é uma linguagem funcional, ou seja, funções podem ser passadas como parâmetro e recebidas como retorno de funções. Skill/Skill++ são linguagens interpretadas e seus códigos não podem ser executados fora do ambiente Cadence. Skill++ é não tipada, ou seja, uma variável pode receber qualquer tipo de dado, a qualquer momento e em qualquer ordem. Permite a criação de classes e métodos, além da definição de funções, e também expressão de herança. Possui estruturas complexas como lista, vetor e tabela (associação entre chave e valor). O acesso às ferramentas é feito através de funções disponibilizadas na linguagem. Possui mecanismos de controle de processos IPC (Inter Process Communication) e de tratamento de exceções. Oferece variações no formato sintático, possibilitando que usuários adaptados a Figura 1 Simulação de corrosão FSBM implementado em Skill++ / Cadence. 2.2. Linguagem script Ample Mentor Graphics A linguagem script oferecida pelo ambiente Falcon Framework - Mentor Graphics é chamada Ample. Essa linguagem é também uma linguagem interpretada, funcional e não tipada, sua sintaxe assemelha-se muito com a sintaxe da linguagem de programação C. Os códigos em Ample podem ser compilados em um formato intermediário, não podendo ser executados fora do ambiente. 2

(defmethod VertexEtcher_inverterRetas ((this VertexEtcher) teta isafterr1 entrar) (prog (tmp) (if (or (null isafterr1) (entrar==t)) then A possibilidade de execução de qualquer comando da ferramenta dentro das linguagens é a mais importante vantagem dessas linguagens, pois permite a execução via script (texto) de qualquer tarefa feita via interface. tmp = teta[0] teta[0] = teta[1] teta[1] = tmp isafterr1 =!isafterr1 println("inverter") return(t) ) return(nil) )) Figura 2 Exemplo de código em linguagem Skill++. Diferentemente de Skill++, Ample não apresenta os princípios do modelo de objetos. Oferece apenas o tipo estruturado como a estrutura de vetor, não disponibilizando estruturas como listas e mapeamentos. Cada janela ou sub-janela de trabalho do ambiente Falcon Framework define um contexto que permite acesso a um conjunto de funções correlatas. Desta forma, funções com mesmo nome podem aparecer em contextos diferentes, com funcionalidades diferentes. Ample possui tratamento de exceções. Como em Skill, a criação de interfaces gráficas para interação do usuário com o ambiente é possível. Ample fornece também um mecanismo de interação com programas na linguagem C, onde as funções desenvolvidas em C tornam-se visíveis dentro da ferramenta, facilitando a integração de sistemas desenvolvidos nessa linguagem. Uma característica de implementação dessa linguagem é a adoção apenas do modelo de cópia, isto é, em todas as atribuições, passagem de parâmetros ou retorno de função os valores são copiados, mesmo para vetores, uma vez que não existem referências a valores. Embora esta característica comprometa o desempenho de alguns programas, não impede o desenvolvimento de módulos inteiros na linguagem. A Fig. 3 mostra o resultado de implementação do algoritmo de corrosão FSBM, adotado como estudo de caso, no ambiente Mentor Graphics. A Fig. 4 apresenta um trecho de código em linguagem Ample. 2.3. Avaliação das Linguagens As linguagens internas dos ambientes de CAD para microeletrônica Mentor Graphics e Cadence apresentam características muito boas para a confecção de sequências de comandos ou scripts. Pequenos algoritmos para repetição ou agrupamento de comandos e interfaces personalizadas são facilmente descritos nessas linguagens. Figura 3 Simulação de corrosão FSBM implementado em Ample / Mentor Graphics. function set_crsct_points_prompt() { $create_prompt("ic", @get_crsct_points, "Enter cross-line", $prompt_arg(@polyline, "Polyline"), $prompt_dynamic(@polyline, "($prompt_for_ic_polyline( @constrain,@mark))") ); } Figura 4 Exemplo de código em linguagem Ample. Porém a construção de módulos ou programas mais complexos é prejudicada por outras características das linguagens. Notações como UML (Unified Modelling Language) e ferramentas de desenvolvimento associadas, amplamente usadas para o projeto de software, não estão adaptadas a essas linguagens funcionais [7, 8]. O projeto de um software tem um papel extremamente importante para sua confecção, manutenção e vida útil, reduzindo o tempo de produção, aumentando a manutenibilidade, planejando e delimitando a ação do software, levando à redução do custo total do mesmo. A falta da disponibilidade de ferramentas mais elaboradas de auxílio ao desenvolvimento é uma limitação importante nas linguagens Skill e Ample, especialmente levando-se em consideração os ambientes integrados de desenvolvimentos de programas disponíveis para linguagens de domínio público como Java, C, e C++, pois essas ferramentas auxiliam na construção rápida e confiável de programas. 3

Um outro fator importante a considerar é a portabilidade da linguagem. Considerando que os ambientes CAD para microeletrônica são essenciais para o projeto e desenvolvimento de circuitos integrados e que cada ambiente possui as suas particularidades, torna-se atraente a idéia de fazer programas executáveis em ambientes heterogêneos, ou seja, que utilizam diferentes linguagens de programação, plataformas ou sistemas operacionais. Este tipo de portabilidade possibilita a exploração das melhores características e ferramentas de ambientes específicos, ao permitir a integração de programas desenvolvidos e testados anteriormente. A seguir são descritas algumas possíveis formas de integração de ferramentas de ambientes heterogêneos e será apresentada uma proposta de integração genérica, denominada de BICO (Basic Type Conversor). 3. INTEGRAÇÃO DE FERRAMENTAS DE CAD 3.1 Formas de integração A forma mais básica de integração de ferramentas é a utilização de formatos padrões. Estes podem ser utilizados via troca de arquivos ou troca de mensagens por rede. Para tanto, é necessário utilizar, em cada programa e formato, um codificador e um decodificador. Ou seja, cada novo formato padrão em cada linguagem necessita de codificadores e decodificadores para a representação interna das estruturas. A Fig. 5 esquematiza a integração de duas ferramentas através do uso de codificadores e decodificadores que possibilitam que as informações produzidas pela ferramenta A sejam utilizadas pela ferramenta B. Formas mais transparentes e reutilizáveis de integração são realizadas através de middlewares, que são softwares que atuam como intermediários entre aplicações e seu ambiente operacional, ilustrado na Fig. 6. Estes softwares se propõem a facilitar o desenvolvimento de aplicações que exigem comunicação por rede, confiabilidade, escalabilidade e tratamento de sistemas heterogêneos [3]. CORBA [9], DCOM [10], J2EE [11], RMI [12] e SOAP [13] são exemplos de middlewares que facilitam o desenvolvimento de aplicações distribuídas heterogêneas quanto à plataforma de execução e/ou linguagem de implementação. Rettberg et al. [4] recentemente apresentou uma forma de integração de ferramentas de microeletrônica usando WEB services, utilizando documentos XML (extensible Markup Language) [14]. A proposta de integração a apresentada seguir consiste na produção de documentos XML que representam os elementos essenciais de programas escritos para ferramentas específicas possibilitando a interoperabilidade das ferramentas. 3.2 Integração via XML Dentre os diversos conceitos tratados por middlewares, o protocolo SOAP (Simple Object Access Protocol) apresenta padrões de definição e formatação de mensagens que representam objetos. A tecnologia SOAP visa oferecer uma forma simples de definição de objetos e representação em formato texto, utilizando a linguagem de marcação XML. Ferramenta A Codificador Decodificador Arquivo, Rede,... Decodificador Codificador Ferramenta B Figura 5 - Integração de ferramentas através de formatos padrões Componentes Componentes Middleware Middleware Sistema Operacional Sistema Operacional Hardware Hardware Computador Computador Rede Componentes Middleware Sistema Operacional Hardware Computador Figura 6 Integração facilitada por middleware. 3.3 Protocolo BICO SOAP possui diversas primitivas que permitem descrições de objetos complexos. Para aplicações simples, muitos destes recursos não são necessários. Além disso, é pré-requisito da utilização de SOAP a existência do mecanismo XML. Objetivando possibilitar a integração de ferramentas com um mecanismo mais simples e ainda assim eficiente, o protocolo denominado BICO (Basic Type Conversor) foi desenvolvido. O BICO baseia-se em SOAP, com algumas variações sintáticas e com menor poder de expressão de objetos. Um mecanismo reduzido de parsing de XML é utilizado, visando diminuir a complexidade da implementação para linguagens que não possuam o mecanismo XML. Assim como SOAP, o BICO define apenas o protocolo de troca de objetos entre as linguagens que tiverem o protocolo implementado. O formato proposto permite descrever objetos que são conjuntos de atributos. Os tipos básicos são string, números inteiros, ponto flutuante e boleanos. Uma declaração de objeto ou tipo complexo gera um novo tipo. O tipo complexo Livro é apresentado na Fig. 7 como exemplo. Estes tipos complexos também podem ser utilizados como atributos. É possível também descrever atributos que possam receber qualquer um desses tipos. Ha também a possibilidade de utilizar vetores 4

unidimensionais ou multidimensionais, porém não é possível fixar na declaração de tipo complexo o tamanho das dimensões. <complextype name= Livro > <element name= autor type= string /> <element name= referencias type= array arraytype= Livro[] /> <element name= preco type= float /> <element name= vendido type= boolean /> <element name= outrosdados type= array arraytype= any[][] /> <element name= paginas type= int /> <element name= dadocomplementar type= any /> </complextype> Figura 7 Exemplo de um descritor de tipo BICO/XML. O descritor da Fig. 7 define um tipo complexo chamado Livro, seus atributos e seus tipos. Dessa forma, é definido também o formato que as mensagens terão, como no exemplo mostrado na Fig. 8. Não é possível definir se os são requeridos ou não. Todo o tipo complexo deve ter um id, que é uma referência única ao conjunto de. Esse pode ser utilizado para criar referências entre objetos, como por exemplo uma lista encadeada. Os atributos do tipo any, que podem receber qualquer tipo definido, devem ter seu tipo identificado obrigatoriamente nas mensagens. Utilizando esse mecanismo torna-se viável trocar informações estruturadas entre linguagens sem a preocupação com a codificação e decodificação das mensagens, assim reduzindo a dificuldade da integração por passagem de estruturas de. A Fig. 9 exemplifica como a existência de um formato padrão permite a integração de diversas linguagens bastando ter o protocolo BICO implementado em cada linguagem. A partir do descritor de tipo complexo será gerada uma classe ou conjunto de funções em cada linguagem representando o tipo de dado dentro da linguagem. Esse programa inclui funções de codificação e decodificação. Isso é feito através de conversores XSLT (extensible Stylesheet Language Transformations) [15]. Em resumo, a implementação do padrão em cada linguagem consiste em um codificador, um decodificador, e um arquivo com regras de transformação XSLT. Esses programas precisam ser implementados apenas uma vez para cada linguagem, e não uma vez por programa. Para cada tipo complexo definido um novo programa será gerado na linguagem alvo. Basicamente, esses são os requisitos para implementar o protocolo em uma nova linguagem. Entre as simplificações feitas para a definição do protocolo BICO estão: não permite estruturas complexas encadeadas; primeiro objeto é sempre um tipo complexo; não possui diversas construções como: enumerações, cadeias de bytes, quantificadores de ocorrência, comentários, delimitadores de tamanho de matriz ou passagem de matriz esparsa. <Livro id= togni00 > <autor>joao Daniel Togni</autor> <referencias> <item>ribas00<item> <item>andreis01<item> </referencias> <preco/> <vendido>false</vendido> <outrosdados> <item> <item type="string"> valor1 <item type="float">33.2 <item> <item type="livro2">togni_00 </outrosdados> <paginas></paginas> <dadocomplementar type= string > Ed. Sala </dadocomplementar> </Livro> Figura 8 - Exemplo de mensagem BICO/XML. SKILL++ AMPLE Mensagem Padronizada (BICO) Java C++ Figura 9 - Exemplo de troca de estruturas entre diferentes linguagens. 4. RESULTADOS PRELIMINARES O protocolo está parcialmente implementado em Java e Skill++. O estágio atual de desenvolvimento já permite verificar a funcionalidade e efetuar testes de comunicação. Como teste foi utilizado o algoritmo de simulação de corrosão FSBM, implementado em Java e invocado a partir de um script Skill++ que passa de configuração e recebe os resultados da corrosão. A comunicação entre as linguagens é feita através de IPC, mas poderia ser substituída por qualquer mecanismo de troca de mensagens como sockets, por exemplo. Nesse teste percebe-se que o protocolo simplifica significativamente a integração entre as linguagens, pois 5

elimina-se a necessidade de codificação e decodificação de. Porém uma estruturação melhor do protocolo através de definições de serviços pode simplificar e facilitar ainda mais a implementação de códigos que utilizem o protocolo. 5. CONCLUSÕES As linguagens script fornecidas pelos ambientes de CAD para microeletrônica permitem a criação de sistemas complexos de software dentro dos próprios ambientes. Porém, essas linguagens não apresentam características favoráveis à utilização de técnicas de engenharia de software, o que dificulta o projeto, construção e manutenção dos programas gerados. A pré-existência de componentes e algoritmos implementados em diferentes linguagens pode auxiliar a redução do custo e tempo de implantação de projetos, considerando também que existem linguagens mais apropriadas para a implementação de certos tipos de algoritmos. Uma solução possível para esses problemas é a utilização de middleware, que são facilitadores para a integração de algoritmos em diferentes linguagens sem que haja a preocupação com a forma como os vão ser transferidos entre os programas. Porém, estes mecanismos, como CORBA, não estão disponíveis para os ambientes de CAD. Atualmente a integração das ferramentas como Cadence e Mentor Graphics é feita utilizando-se arquivos em formatos pré-definidos ou esquemas de comunicação proprietários da ferramenta. Esse trabalho aproveita as idéias principais de um protocolo amplamente utilizado, o SOAP, para possibilitar a integração de sistemas implementados em Skill++ e Java, e futuramente Ample e C++. O protocolo BICO atualmente define apenas a conversão de tipos complexos de. Porém, é possível também definir um protocolo de controle onde podem ser descritos formatos para requisições e respostas. A utilização de um protocolo de controle tornará possível a implementação de servidores de serviços, aumentando assim a modularização e organização dos sistemas que aderirem ao protocolo. Juntamente com o protocolo de requisições, as demais características de sistemas de middleware estão sendo avaliadas, visando adicionar funcionalidades básicas de comunicação em rede para permitindo maior transparência e simplicidade na integração de ferramentas. 6. AGRADECIMENTOS O projeto é financiado pelo CNPq (Centro Nacional de Desenvolvimento Científico e Tecnológico - Brasil). 7. REFERÊNCIAS [1] Design Framework II Cadence. WEB site http://www.cadence.com [2] Falcon Framework Mentor Graphics WEB site http://www.mentorg.com [3] W. Emmerich, Software Engineering and Middleware: A Roadmap, The Future of Software Engineering, ACM Press, p.117-129, 2000. [4] A. Rettberg, W. Thronicke, Embedded System Design based on Webservices. Design And Test Conference (DATE), 2002. [5] P. Graham, ANSI common lisp, Englewood Cliffs, Prentice-Hall, 1996. 432 p. [6] F. Martinazzo, A. Konzen, J. D. Togni, A. I. Reis, R. P. Ribas, Etching Simulator for Bulk Micromachining in Java Platform, SBMICRO - 17th Symposium On Microelectronics Technology And Devices, 2002. [7] G. Booch, UML: guia do usuário, Campus, Rio de Janeiro, 1999. 472p. [8] M. Fowler, S. Kendall, UML Essencial, Bookman, Porto Alegre, 2000. [9] CORBA Commom Object Request Brocker Arquitecture WEB site http://www.omg.org/gettingstarted/corbafaq.htm [10] DCOM Technical Overview, Microsoft Corporation, http://www.microsoft.com/isapi/gomsdn.asp?target= /library/backgrnd/html/msdn_dcomtec.htm [11] J. Byous, Web Services & J2EE Technology: One Platform, July 8, 2002. WEB site http://java.sun.com/features/2002/07/ws-petstore.html, [12] RMI (Remote Method Invocation) Whitepaper, http://java.sun.com/marketing/collateral/javarmi.html [13] SOAP - Simple Object Access Protocol WEB site http://www.w3.org/2000/xp/group/ [14] XML - extensible Markup Language, WEB site http://www.w3.org/xml [15] XSLT XML Stylesheet Language Transformations, WEB site http://www.w3c.org/style/xsl/ 6