• Aucun résultat trouvé

Intégration sur FPGA

Afin de vérifier le bon fonctionnement du NoC sur une plate-forme matérielle, nous avons réalisé un exemple mettant en œuvre des communications entre 3 MicroBlazes et 3 mémoires. C’est un exemple suffisamment petit pour être intégré sur le FPGA dont nous disposons. Il nous permet d’observer les caractéristiques et les performances du NoC.

7.2.1.1 Environnement

Nous disposons du matériel et des logiciels suivants afin de réaliser cette expérience : – Une plate-forme de prototypage Xilinx Virtex-II Pro FF1152 PROTO BOARD

équipée d’un FPGA Xilinx Virtex-II Pro FF1152 VP50-5. – Les logiciels Xilinx ISE 6.3 SP3 et Xilinx EDK 6.3 SP2.

7.2.1.2 Présentation

Le NoC que nous utilisons se compose des éléments suivants : – 2 routeurs avec 3 ports réseau (R3ports) ;

108 expérimentations et résultats – 2 routeurs avec 4 ports réseau (R4ports) ;

– 3 NIs avec 1 port et 2 ExtraNiChannels (NI2Ch) ; – 3 NIs avec 1 port et 4 ExtraNiChannels (NI4Ch).

De plus, 3 wrappers maîtres et 3 wrappers esclaves sont utilisés pour connecter les trois bus OPB.

La figure 7.1 montre le NoC connecté aux trois bus OPB et les connections à créer entre les NIs. Nous testons à la fois des transactions entre composants maîtres et esclaves, mais aussi les échanges de messages entre des composants maîtres.

Fig. 7.1 – Le NoC et les connections à créer entre les NIs

Nous exécutons des programmes sur chacun des 3 MicroBlazes dans le but de les faire s’échanger des données au travers du NoC afin de vérifier son bon fonctionnement. De plus, ces programmes vérifient des règles de cohérence qui permettent de détecter l’ordre, la validité et la perte d’un message.

Un seul MicroBlaze peut communiquer via la liaison série de la plate-forme qui nous permet d’obtenir un affichage à l’écran. Ce processeur affiche à l’écran les informations concernant le fonctionnement des échanges.

Nous testons les cinq cas suivants :

– BE : Un canal virtuel configuré pour transporter du trafic best effort ;

– GT : Un canal virtuel configuré pour transporter du trafic garanti, il utilise une table TDMA de 16 slots ;

7.2 intégration sur fpga 109 – BE&BE : Deux canaux virtuels BE. Le trafic sur le premier est plus prioritaire

que sur le second ;

– BE8 : Un canal virtuel configuré pour transporter du trafic best effort. La taille des FIFOs dans les ports réseaux des routeurs et des NIs est de 8 au lieu de 2. Nous utilisons une largeur de données de 32 bits, un routage street-sign, un arbi-trage round-robin et un contrôle de flux de bout-en-bout entre les NIs. La taille des FIFOs dans les ExtraNIchannels est de 8. La taille des FIFOs dans les ports réseaux des routeurs et des NIs est de 2 mots, sauf dans le dernier cas ou elle est de 8.

7.2.2 Résultats de synthèse

Notre modèle de description en XML permet de spécifier le NoC voulu facilement et rapidement. Les codes VHDL des NoCs correspondants aux cinq cas présentés précé-demment ont été automatiquement générés par notre outil en moins de 2 secondes. De plus, l’intégration d’un NoC dans l’environnement EDK est facilité. En effet, les fichiers VHDL ainsi que des fichiers spécifiques sont créés de manière à permettre à l’utilisateur d’ajouter le NoC en tant que simple bus par un simple copier-coller de ces fichiers dans la bibliothèque appropriée. Ceci met en évidence le gain en productivité obtenu par l’utilisation de notre outil de conception.

La synthèse du NoC complet et de ses composants considérés indépendamment nous donne la répartition en slices de l’utilisation du FPGA. La capacité totale du FPGA est de 23616 slices. Le tableau 7.1 nous montre cette répartition en slices, ainsi que la fréquence maximale en MHz.

Les wrappers conservent les mêmes caractéristiques dans ces différents cas. La taille du NoC est donnée sans les wrappers.

– Pour le wrapper maître WS, la surface occupée est 1064 slices et la fréquence est de 105MHz.

– Pour le wrapper esclave WS, la surface occupée est 90 slices et la fréquence est de 144MHz.

NoC NI2Ch NI4Ch R3ports R4ports Cas 1 Slices 7204 607 1167 430 645 BE Freq. 94 120 118 136 136 Cas 2 Slices 7226 624 1195 430 643 GT Freq. 84 120 118 136 136 Cas 3 Slices 9251 630 1181 851 1317 BE & GT Freq. 85 93 90 118 118 Cas 4 Slices 9205 621 1170 851 1317 BE & BE Freq. 84 93 90 118 118 Cas 5 Slices 7488 622 1203 443 662 BE8 Freq. 100 120 114 132 132

Tab.7.1 – Synthèse du NoC et de ses composants

Nous pouvons voir que le NoC occupe entre 30 et 40 % de la surface du FPGA. Un routeur occupe entre 1 et 5% des slices du FPGA. Une NI occupe entre 2 et 4% des slices du FPGA. La surface occupée par le NoC reste donc raisonnable.

110 expérimentations et résultats La fréquence du NoC dépasse les 80 MHz. Ce qui permet sur un lien une bande passante théorique de 32 ∗ 80.106 = 2560.106bits/s soit 320Mo/s.

A taille égale des FIFOs, nous pouvons voir que les NIs occupent une plus grande surface lorsqu’elles intègrent un VC GT qu’un VC BE. Cela est dû à la table des slots TDMA et au mécanisme d’ordonnancement.

Dans les cas 3 et 4, l’utilisation de deux canaux virtuels à un coût important en surface dans les routeurs, ils doublent presque de surface. En revanche les NIs ne voient leur surface augmenter que légèrement.

Dans le cas 5, l’augmentation légère (de 2 à 8) de la taille des FIFOs dans les ports réseau des routeurs et des NIs cause une augmentation de surface du NoC de 4%.

7.2.3 Résultats du test sur la plate-forme

Les tests sur la plate-forme ont été réalisés avec une horloge d’une fréquence de 50MHz. Les placements routages des NoCs présentés précédemment se sont bien déroulés dans quatre des cas, en revanche nous avons rencontré un problème pour réaliser un NoC utilisant simultanément un canal virtuel GT et un canal virtuel BE. La synthèse se passe normalement avec ISE, mais lors de la phase de placement routage, l’outil indique un message d’erreur. Il s’agit d’une erreur interne de l’outil de placement routage dont Xilinx nous dit qu’elle sera corrigée dans les versions futures. Ce genre d’aléa est hélas courant et connu des concepteurs. En considèrent les éléments du NoC séparément, nous avons constaté que ce problème intervient uniquement dans les NIs et que lorsqu’elles utilisent des canaux virtuels GT et BE simultanément. Nous n’avons pas pu mener l’expérience sur la plate-forme pour le cas 3. Des simulations sous ModelSim nous ont tout de même montrés que notre code VHDL et le comportement obtenu sont corrects.

Pour les quatre autres cas, les tests des NoCs ont été effectués sur la plate-forme avec les 3 MicroBlazes et nous ont montrés que les données sont bien transmises et que le contrôle de flux de bout-en-bout fonctionne puisqu’aucune donnée n’est perdue. L’utilisation du canal virtuel par un trafic garanti utilisant le TDMA a également été validée.

Nous avons vérifié que la priorité entre les canaux virtuels fonctionne dans le cas 4 qui utilise simultanément deux canaux virtuels BE. En effet le trafic transporté sur le premier canal virtuel est bien transmis en priorité par rapport au trafic transporté sur le second canal virtuel.

7.2.4 Conclusion

Ce test a permis de valider notre approche de façon complète, c’est à dire en intégrant le NoC en tant que IP, les wrappers pour le connecter à des bus OPB et la couche logicielle dans les MicroBlazes.

Nous avons observé que la surface du NoC est raisonnable (30 à 40% des slices du FPGA). De plus, dans cet exemple, nous avons mis en œuvre tous les types de commu-nications (passage de message, transaction de lecture et d’écriture). Le NoC pourrait être réduit pour n’utiliser que le passage de message (pas de wrapper maître), ou au contraire que les transactions (wrapper esclave avec moitié moins de connections).