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