ANNEXES
ANNEXE 1 : LES OUTILS
1.1 L'outil Floorplanner (Editeur de contraintes
de placement, cas de 2 modules)
Figure Annexe 1 :
On remarque que le module a processeur (a droite) occupe
la majeure partie du FPGA. Ceci est surtout du au fait que ce module utilises
des périphériques connectes au FPGA par des pins situes trop a
gauche de la puce. Ceci oblige le module à englober les zones adjacentes
à ces pins.
|
|
1.2 FPGA Editor (Routage avec bitstream
complet)
Figure Annexe 2 : Vue sous FPGA Editor) du
Routage complet des deux modules.
|
|
ANNEXE 2 : Procédure de création du
fichier SYSTEM.BMM
Ce fichier indique au programmateur du FPGA Virtex-II Pro la
localisation de la mémoire BRAM associée au processeur PPC405
lors du routage, et dans laquelle sera chargée l'exécutable. En
effet pour configurer le FPGA avec un design utilisant le processeur
intégré, on a besoin du fichier de configuration des ressources
programmables du FPGA (fichier.bit), de l'exécutable
destiné au processeur PPC (fichier.elf) et des
cordonnées de la BRAM (fichier.bmm) associée au
processeur et a partir de laquelle le code sera exécuté.
Figure Annexe 3 :
Edition du module ppc_subsystem (généré
lors de la phase active d'implementation) a l'aide de
FPGA Editor.
A gauche : Fenêtre de filtrage en
vue d'afficher les adresses d'implémentation des BRAMs
connectes au processeur. Ces adresses seront manuellement
écrites dans le fichier
system.bmm.
|
|
2.1 Fichier system_stub.bmm
Il est généré par EDK lors de la
génération (X_Flow) du système a processeur.
\SELF_RECONFIG_PLATFORM_DEMO\implementation\system_stub.bmm
ADDRESS_BLOCK bram1 RAMB16 [0xffff8000:0xffffffff] BUS_BLOCK
|
|
ppc_subsystem/bram1/bram1/ramb16_s4_s4_0
|
[63:60]
|
;
|
ppc_subsystem/bram1/bram1/ramb16_s4_s4_1
|
[59:56]
|
;
|
ppc_subsystem/bram1/bram1/ramb16_s4_s4_2
|
[55:52]
|
;
|
ppc_subsystem/bram1/bram1/ramb16_s4_s4_3
|
[51:48]
|
;
|
ppc_subsystem/bram1/bram1/ramb16_s4_s4_4
|
[47:44]
|
;
|
ppc_subsystem/bram1/bram1/ramb16_s4_s4_5
|
[43:40]
|
;
|
ppc_subsystem/bram1/bram1/ramb16_s4_s4_6
|
[39:36]
|
;
|
ppc_subsystem/bram1/bram1/ramb16_s4_s4_7
|
[35:32]
|
;
|
ppc_subsystem/bram1/bram1/ramb16_s4_s4_8
|
[31:28]
|
;
|
ppc_subsystem/bram1/bram1/ramb16_s4_s4_9
|
[27:24]
|
;
|
ppc_subsystem/bram1/bram1/ramb16_s4_s4_10
|
[23:20]
|
;
|
ppc_subsystem/bram1/bram1/ramb16_s4_s4_11
|
[19:16]
|
;
|
ppc_subsystem/bram1/bram1/ramb16_s4_s4_12
|
[15:12]
|
;
|
ppc_subsystem/bram1/bram1/ramb16_s4_s4_13 [11:8] ;
ppc_subsystem/bram1/bram1/ramb16_s4_s4_14 [7:4] ;
ppc_subsystem/bram1/bram1/ramb16_s4_s4_15 [3:0] ; END_BUS_BLOCK;
END_ADDRESS_BLOCK;
2.2 Le fichier system.bmm.
Il est obtenu en rajoutant quelques informations au fichier
system_stub.bmm ci-dessus. En effet, après la
phase d'implémentation active du module
ppc_subsystem, on édite son fichier .ngd
à l'aide de FPGA Editor, puis on utilise le filtre des
composants de la fenêtre de droite (voir Figure Annexe 4) pour
afficher les informations sur les composants BRAMs utilisés par ce
module. On peut alors relever les adresses d'implantation des BRAMs du fichier
system_stub.bmm. On complète le fichier system.bmm
comme indiqué ci-dessous en gras:
\SELF_RECONFI_PLATFORM_DEMO\Modular\Top\Assemble\system.bmm
ADDRESS_BLOCK bram1 RAMB16 [0xffff8000:0xffffffff] BUS_BLOCK
|
|
|
ppc_subsystem/bram1/bram1/ramb16_s4_s4_0
|
[63:60]
|
PLACED
|
= X2Y2;
|
ppc_subsystem/bram1/bram1/ramb16_s4_s4_1
|
[59:56]
|
PLACED
|
= X5Y2;
|
ppc_subsystem/bram1/bram1/ramb16_s4_s4_2
|
[55:52]
|
PLACED
|
= X4Y2;
|
ppc_subsystem/bram1/bram1/ramb16_s4_s4_3
|
[51:48]
|
PLACED
|
= X5Y5;
|
ppc_subsystem/bram1/bram1/ramb16_s4_s4_4
|
[47:44]
|
PLACED
|
=X5Y4;
|
ppc_subsystem/bram1/bram1/ramb16_s4_s4_5
|
[43:40]
|
PLACED
|
= X5Y3;
|
ppc_subsystem/bram1/bram1/ramb16_s4_s4_6
|
[39:36]
|
PLACED
|
= X3Y2;
|
ppc_subsystem/bram1/bram1/ramb16_s4_s4_7
|
[35:32]
|
PLACED
|
= X1Y5;
|
ppc_subsystem/bram1/bram1/ramb16_s4_s4_8
|
[31:28]
|
PLACED
|
= X1Y4;
|
ppc_subsystem/bram1/bram1/ramb16_s4_s4_9
|
[27:24]
|
PLACED
|
= X2Y5 ;
|
ppc_subsystem/bram1/bram1/ramb16_s4_s4_10
|
[23:20]
|
PLACED
|
= X1Y6;
|
ppc_subsystem/bram1/bram1/ramb16_s4_s4_11
|
[19:16]
|
PLACED
|
= X2Y4;
|
ppc_subsystem/bram1/bram1/ramb16_s4_s4_12
|
[15:12]
|
PLACED
|
= X1Y3;
|
ppc_subsystem/bram1/bram1/ramb16_s4_s4_13
|
[11:8]
|
PLACED
|
= X1Y1;
|
ppc_subsystem/bram1/bram1/ramb16_s4_s4_14
|
[7:4] PLACED = X1Y2;
|
ppc_subsystem/bram1/bram1/ramb16_s4_s4_15
|
[3:0] PLACED = X2Y3;
|
END_BUS_BLOCK;
|
|
|
|
END_ADDRESS_BLOCK;
|
|
|
|
|