Hardware C++: uma linguagem orientada por objectos para especificação multinível de sistemas digitais

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 enc...

Full description

Bibliographic Details
Main Author: Veloso, Aires Manuel Araújo (author)
Format: doctoralThesis
Language:por
Published: 2021
Subjects:
Online Access:http://hdl.handle.net/10773/32682
Country:Portugal
Oai:oai:ria.ua.pt:10773/32682
Description
Summary: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.