4.3 O Processador ARPA-CP
4.3.4 Fluxo de Projecto de Aplicações
A figura 4.14 ilustra o fluxo de projecto base para aplicações baseadas no processador ARPA-
CP, no qual se basearam os testes iniciais e a avaliação do desempenho apresentada no capí-
tulo 7. Este fluxo de projecto é constituído por dois subfluxos: o de hardware e o de software. Para não sobrecarregar a figura 4.14, não são mostrados os ciclos do projecto corresponden- tes às sucessivas iterações das etapas de desenvolvimento. No apêndice A será mostrado um fluxo de projecto mais completo para aplicações baseadas no sistema integrado ARPA-SoC, o qual integra todo o trabalho realizado no contexto deste doutoramento e projectos satélite.
4.3. O PROCESSADOR ARPA-CP 135
4.3.4.1 O Subfluxo de Hardware
Do ponto de vista do utilizador do núcleo de propriedade intelectual, a integração do proces- sador ARPA-CP num projecto concreto consiste em quatro etapas fundamentais: especializa- ção do modelo, síntese, implementação e prototipagem/programação da FPGA. Na primeira fase, com base no modelo em VHDL parametrizável concebido, são atribuídos valores con- cretos aos parâmetros. Seguidamente, com o auxílio de uma ferramenta de síntese adequada, é gerado o hardware que implementa o modelo, isto é, o modelo RTL do processador é con- vertido num modelo estrutural constituído por primitivas da tecnologia de implementação alvo. Na fase de implementação, também com o auxílio de ferramentas adequadas, é pro- duzida uma realização concreta do processador em que a localização física das primitivas geradas na fase anterior, bem como as suas interligações estão já definidas. A última fase é a prototipagem do processador em ASIC ou em FPGA. No segundo caso, o resultado da fase de implementação é um ficheiro de configuração que deve ser carregado na FPGA durante a inicialização do sistema com o auxílio de ferramentas de programação e hardware adequado ou alternativamente no sistema final usando uma memória não volátil de configuração. Como neste trabalho são usadas FPGAs da Xilinx, por conveniência foi usado o ambiente
Xilinx ISE (Integrated Synthesis Environment) [Xil06b] que integra um editor de VHDL, o
motor de síntese XST (Xilinx Synthesis Technology) e a ferramenta PAR (Place and Route), além de outras aplicações bastante úteis para o desenvolvimento de sistemas digitais com- plexos baseados em FPGAs, tais como simuladores, ferramentas de análise, visualização e previsão dos tempos de atraso do circuito e do seu consumo energético.
4.3.4.2 O Subfluxo de Software
O desenvolvimento de aplicações de software para executar no processador ARPA-CP pode ser feito com as linguagens de programação Assembly, C e C++. As ferramentas de compila- ção adoptadas para este efeito são as disponibilizadas gratuitamente pela MIPS Technologies,
Inc., designadas por MIPS-SDE Lite [MIP07] e descritas resumidamente no apêndice A. A
partir do código fonte da aplicação e com o auxílio do compilador adequado é gerado o có- digo objecto. Seguidamente, com uma ferramenta designada por linker, o código objecto é associado com as bibliotecas pretendidas (utilizador, linguagem e sistema). O resultado final desta fase é um ficheiro com um programa executável que pode ser usado de três formas distintas:
• Programação da memória SRAM / EEPROM / FLASH do sistema - Esta é a uti- lização mais usual, sendo o método e ferramentas empregues dependentes do sistema alvo e da tecnologia da memória. No apêndice A é descrito um fluxo de projecto baseado nesta abordagem;
• Integração do programa executável no ficheiro de configuração da FPGA - Isto
é possível desde que o processador seja implementado numa FPGA com blocos de memória internos que sejam usados para construir as respectivas memórias de código e de dados. Com o aumento da capacidade das memórias internas da FPGAs, esta é uma alternativa cada vez mais interessante. Além disso, foi também a abordagem empregue para efeitos da avaliação do desempenho apresentada no capítulo 7 e para integrar o código de arranque do processador e serviços de baixo nível no ficheiro de configuração da FPGA;
• Execução do programa num emulador/simulador do processador - Esta aborda-
gem é bastante útil do ponto de vista do desenvolvimento de uma aplicação quando não se possui uma implementação real de um processador ARPA-CP ou quando se pretende um bom controlo e visibilidade interna de todos os seus registos, sendo com- plementar à prototipagem rápida e depuração do processador em FPGA. Além disso, é também bastante interessante do ponto de vista didáctico.
A última utilização não é ainda possível actualmente devido à inexistência de um simulador do processador ARPA-CP. Apesar de existirem simuladores ao nível da instrução da arquitec- tura MIPS32 e de várias implementações concretas, a simulação ciclo-a-ciclo do processador
ARPA-CP, apesar de ser computacionalmente mais exigente é também mais precisa. Com
base no código VHDL está prevista a construção de um simulador resultante da compilação directa do código VHDL e que integra o respectivo motor de simulação e mecanismos para comunicação com o exterior para efeitos de interface com uma ferramenta de visualização da simulação. Esta abordagem de construção do simulador tem a vantagem de partir de uma base de código comum quer para implementação quer para simulação, logo com enormes vantagens ao nível da precisão, consistência dos resultados e facilidade de manutenção do modelo.
4.3. O PROCESSADOR ARPA-CP 137