WOW !! MUCH LOVE ! SO WORLD PEACE !
Fond bitcoin pour l'amélioration du site: 1memzGeKS7CB3ECNkzSn2qHwxU6NZoJ8o
  Dogecoin (tips/pourboires): DCLoo9Dd4qECqpMLurdgGnaoqbftj16Nvp


Home | Publier un mémoire | Une page au hasard

 > 

Mise en oeuvre de l'auto-reconfiguration partielle et dynamique sur FPGA Xilinx Virtex-II pro

( Télécharger le fichier original )
par Guy WASSI
Université Pierre et Marie Curie (Paris VI Jussieu) - Master informatique industrielle et systèmes automatisés 2005
  

précédent sommaire suivant

Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy

3. METHODOLOGIE DE MISE EN OEUVRE DE L'AUTO RECONFIGURATION PARTIELLE ET DYNAMIQUE SUR LE VIRTEX-II PRO

Ce chapitre se focalise sur la mise en oeuvre sur FPGAs Xilinx Virtex-II Pro d'un système auto-reconfigurable partiellement et dynamiquement à l'aide d'outils de conception électronique. L'auto-reconfiguration vient de ce que le processeur immergé dans la puce FPGA reconfigure partiellement celle-ci.

Pour la reconfiguration partielle, Xilinx propose dans [20] deux méthodes:

· Le Small Bit Manipulation à l'aide l'outil JBits1

· Le Modular Design Flow

Le Small Bit Manipulation permet de modifier rapidement un ou plusieurs détails dans un design, comme par exemple la modification d'un CLBs, IOBs, LUT ou Block RAM. Il est à noter que les outils comme JBITs fournissent une interface et des classes Java permettant de manipuler (lire et modifier) individuellement les données de configuration de chaque ressource du FPGA.

Le Modular Design Flow est une approche modulaire qui permettrait dans le cadre de la reconfiguration partielle, de reconfigurer un module entier, et non pas un détail dans le module. Dans le cadre de ce stage, nous avons utilisé cette approche qui est par ailleurs suggérée par Xilinx pour la reconfiguration partielle.

3.1 Méthodologie de Conception

Pour la conception des designs pour FPGAs Xilinx, il existe deux démarches principales, une démarche dite standard (Ordinary Design Flow) et une démarche dite incrémentale (Incremental Design Flow). Après une brève description de la première démarche, nous nous focaliserons sur la seconde et plus particulièrement sur le Modular Design Flow, une méthode incrémentale suggérée par Xilinx pour la mise en oeuvre d'applications partiellement

1 JBits est une API (Application Programmable Interface) java fournie par Xilinx et contenant un jeu de classes permettant de manipuler (lire/modifier/ecrire) individuellement toutes les ressources reconfigurables du Virtex. JBits permet de modifier dynamiquement le bitstream du Virtex. Par exemple, il peut permettre d'extraire un bitstream partiel du bitstream total d'un design fait suivant le modular design flow. Nous n'avons pas utilise JBits dans le cadre de ce travail (auto-reconfiguration) car il n'est pas souhaitable que le processeur PPC405 embarque puisse supporter JVM(Java Virtual Machine).

reconfigurables et supportée par ses familles de FPGAs les plus récentes (Spartan et Virtex). Ces méthodologies de conception

permettent de dérouler tout le processus de la description du design à la génération des fichiers de configuration ; elles sont mises en oeuvre dans des environnements (ISE1 et EDK2) intégrant plusieurs outils Xilinx que nous décrirons plus loin.

3.1.1 Flot de conception standard (Ordinary Design Flow)

Dans le flot de conception standard, tout le design est décrit dans un langage de description de circuit (Vhdl, Verilog) comme un tout unique, puis synthétisé, simulé, placé et routé. Les étapes minimales du flot de conception d'un design sont figure 20 ci-dessous :

1. La description du design soit dans un langage de description (Vhdl, verilog, SystemC), soit grâce à un outil de saisie graphique qui génère le code Vhdl correspondant.

2. La simulation en vue de vérifier le bon comportement.

3. La synthèse

4. Le placement et routage pour un FPGA précis.

5. La génération du fichier binaire de configuration (bitstream) qui sera chargé sur le FPGA cible.

En cas de modification d'une partie du design, les étapes ci-dessus sont entièrement refaites pour tout le design, ce qui rend le processus très long. De même, cette méthode ne facilite pas le découpage modulaire du design en vue d'une répartition des tâches entre les membres d'une équipe, contrairement au Modular Design Flow.

Le flot standard est supporté par l'outil intégré ISE qui déroule automatiquement tout le processus; il en résulte un fichier binaire unique (.bit) contenant les données de configuration totale du FPGA.

Dans le cas de la conception d'un SOC, l'outil intégré EDK permet de développer l'application destinée au processeur intégré (de l'écriture du code à la génération de l'exécutable), de générer tous ses supports de communication (bus, uart, jtag, Ethernet...), et de produire un

1 ISE : Integrated Software Evironment, environnement de developpement integré de Xilinx, permettant de dérouler automatiquement le flot de conception pour les FPGAs Xilinx de la saisie du schema (ou l'ecriture en vhdl) a la génération du bistream de programmation du FPGA.

2 Embedded Development Kit, environnement de developpement du sous-système à processeur et périphériques associés pour FPGAs Xilinx.

fichier binaire unique comprenant les données de configuration totale du FPGA et l'exécutable pour le processeur du SOC.

Mais ce flot standard ne permet que la configuration totale du FPGA, et ne peut donc être utilisé dans le cadre de la reconfiguration partielle des FPGAs Xilinx.

Figure 20 : Flot de conception Standard pour les FPGAs

 

3.1.2 Le Flot de conception incrémental (Incremental Design Flow)

Contrairement à un flot de conception standard, un Flot incrémental permet de découper le design en modules séparément synthétisables. L'intérêt de cette méthode est la possibilité de valider des modules du design bloc par bloc. De même les modules conçus pour des designs antérieurs peuvent facilement être réutilisés dans de nouveaux designs sans plus être revalidés.

Les phases de Synthèse-Placement-Routage ne sont ré-exécutées que sur les modules ayant été modifiés, ce qui sollicite moins de puissance et de temps à l'ordinateur hôte.

a) La synthèse incrémentale (Figure 21)

Au lieu de synthétiser le design complet (Top, Figure 21), chaque module (Module 1,2,3 Figure 21) est synthétisé séparément et son fichier netlist généré (nom_entite.ngc).

Les modules sont déclarés comme des composants dans le Top, puis instanciés et interconnectés (top.vhd, annexe 4.1). Le niveau Top du design contient toute la logique globale, les Entrées/Sorties (IOBs), les signaux, et les interconnexions inter-modules. Tous ces éléments y sont déclarés et instanciés. Les fichiers netlists résultant de la synthèse séparée des modules sont alors prêts à être insérés au niveau Top du design lors de la synthèse de Top. En effet, lors

de la synthèse du Top, un module ne sera resynthétisé que s'il a été modifié. L'intérêt de la conception incrémentale est justement cette validation modulaire qui apporte un gain de temps.

Sous ISE par exemple avec l'outil de synthèse XST, les modules du design Top doivent être déclarés dans son fichier vhdl du top comme des composants ayant l'attribut « Black box ». Cet attribut indique à l'outil de synthèse de ne pas faire la synthèse du module lors de la synthèse du Top.

b) Le Placement et Routage (P&R) Incrémental

Le principe est identique à celui de la synthèse incrémentale. Ainsi, après modification d'un bloc un nouveau P&R n'affecterait pas le P&R de la partie inchangée du design.

précédent sommaire suivant






Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy








"Le doute est le commencement de la sagesse"   Aristote