Please use this identifier to cite or link to this item:
http://hdl.handle.net/10773/32682
Title: | Hardware C++: uma linguagem orientada por objectos para especificação multinível de sistemas digitais |
Author: | Veloso, Aires Manuel Araújo |
Advisor: | Ferrari, António de Brito |
Keywords: | Programação orientada para o objeto Linguagens de programação Engenharia electrotécnica |
Defense Date: | 1996 |
Abstract: | A linguagem Hardware C++ (HC++) foi desenvolvida de forma a tirar partido do paradigma de orientação por objectos para a especificação multinível de sistemas digitais. As principais motivações para o seu desenvolvimento foram a constatação de que as linguagens de descrição de hardware actuais se encontram numa fase intermédia entre as linguagens estruturadas e as orientadas por objectos e a necessidade da incorporação da tecnologia da orientação por objectos para fazer face à crescente complexidade dos sistemas de hardware.
A linguagem HC++ é uma extensão da linguagem C++. Para além das facilidades disponíveis
em C++, HC++ dispõe de recursos que a habilitam à descrição dos componentes de hardware
no domínio estrutural e/ou comportamental, nomeadamente, o módulo, os processos, os
sinais, os subprocessos, as funções de resolução e um modelo de tempo dotado de duas
formas de atraso, o inercial e o de transporte, instruções especiais para o instanciamento de
componentes, para o controlo da execução dos processos e de atribuição de sinal.
O módulo e o conceito central de HC++; possibilita a modelação dos componentes de hardware em qualquer nível de abstração, combinando as características das classes do C++ com a concorrência inerente ao hardware. Os processos podem invocar outros processos, criando uma árvore de processos que reflecte a estrutura hierarquizada dos sistemas digitais; os processos são reutilizáveis e o seu tempo de vida pode ser controlado pelo projectista. Outro aspecto importante de HC++, são os poderosos mecanismos de parametrização que permitem captar o carácter repetitivo e regular do hardware. HC++ permite a parametrização das suas descrições por constantes de tipos escalares e de vectores de tipos escalares e também de tipos, possibilitando a descrição de arquitecturas abstraindo a natureza específica dos subcomponentes do sistema.
O principal mérito de HC++ reside no facto de possuir os recursos necessários ao nível da sua
sintaxe e da sua semântica para, tal coma as linguagens convencionais poder descrever os
componentes de hardware, mas também explorar as potenciais relações que possam existir
entre componentes distintos de hardware. Em vez dos sistemas de hardware serem descritos
como entidades isoladas como acontece com as linguagens correntes, passam a ser descritos
coma realmente são concebidos, i.e. como aperfeiçoamentos e/ou extensões de sistemas
existentes.
As descrições dos novos sistemas especificam apenas os aperfeiçoamentos e as extensões
introduzidas e herdam automaticamente as descrições das versões anteriores. Esta nova
perspectiva possibilita um maior nível de reutilização de código, maior legibilidade das
descrições e um encurtarnento considerável do ciclo de desenvolvimento dos sistemas.
Sendo descendente de C++, beneficia do largo suporte existente para a linguagem C++ e tal
como a linguagem C++ é de fácil aprendizagem. Simplifica consideravelmente o codesenho
dos sistemas, pois pode ser utilizada simultaneamente para as descrições de hardware e para as descrições de software, evitando aos desenhadores a tarefa de familiarização com duas
linguagens completamente distintas.
A linguagem HC++ pode ser instalada em qualquer tipo de máquina actual, visto exigir como
plataforma de base apenas um compilador de C++ e o sistema operativo UNIX. Qualquer
destes recursos estão disponibilizados para a vasta gama de computadores existentes no
mercado, quer para computadores pessoais quer para as máquinas de médio e grande porte.
Para alem da definição da linguagem foi concebido e implementado um sistema de
desenvolvimento para HC++ que possibilita a descrição e a simulação de sistemas digitais. No
futuro prevê-se o desenvolvimento de novas ferramentas a integrar no ambiente,
nomeadamente:
• um tradudor, com facilidades como a inserção de pontos de paragem, a execução passo a
passo, e a visualização do conteúdo de objectos do programa fonte (HC++);
• ferramentas de síntese. The Hardware C++ language (HC++) was developed to explore the object oriented paradigm in the multilevel specification of digital systems. The main motivation for its development was the verification that present hardware description languages do not fully support the object oriented approach and the need for object oriented technology in hardware description languages to face the increasing complexity of hardware systems. HC++ is an extension of the C++ language. Besides C++ facilities, HC++ provides mechanisms for description of hardware components in the structural and/or behavioural domain, namely, the module, the processes, the signals, the subprocesses, the resolution functions and a time model with two delay formats, inertial and transport, special instructions for component instantiation, and for the control of execution of processes and signal assignement. The module is the HC++ central concept; it provides hardware component modelling in any abstraction level, joining the object oriented characteristics of C++ classes with the concurrency inherent to hardware. Processes can invoke other processes, creating a tree of processes which reflect the hierarchical structure of digital systems; processes are reusable and their lifetime can be controled by the designer. An other important HC++ aspect, is the powerful parameterization mechanisms providing the capture of hardware repetitivity and regularity. HC++ descriptions can be parameterized by scalar and scalar array constants and also by types, making possible the description of architectures abstracting the specific nature of system components. The main HC++ worth is to provide the necessary ressources at level of its syntax and semantics to explore the potential relations existing between hardware components. Instead of hardware systems described by separate entities as it's common in traditional languages, they begin to be described as they are really designed, i.e. as improvements and/or extensions of existing systems. The descriptions of the new systems only specify the introduced improvements and extensions, and inherit automatically the descriptions of previous systems. This new orientation provides a greater level of code reuse, greater legibility of descriptions and considerably shortens system development cicle. Beeing descendant of C++, HC++ benefits from the large C++ support and such as C++, is easy to learn. It can simplify considerably the codesign of systems, because it could be used for simultaneous hardware and software descriptions, sparing designers the task of learning two different languages. The HC++ language can be installed in any machine running UNIX, because it only requires a C++ compiler. Besides the HC++ definition, a development system for HC++ supporting the description and simulation of digital systems has been implemented. In the near future the development and integration of new tools into the system is forseen, namely: • a traceability tool, allowing the control of the simulation by breakpoint settings, step by step simulation and the check of object values; • synthesis tools. |
URI: | http://hdl.handle.net/10773/32682 |
Appears in Collections: | UA - Teses de doutoramento DETI - Teses de doutoramento |
Files in This Item:
File | Description | Size | Format | |
---|---|---|---|---|
Documento_Aires_Veloso.pdf | 450.35 MB | Adobe PDF |
Items in DSpace are protected by copyright, with all rights reserved, unless otherwise indicated.