Vous êtes sur la page 1sur 18

Synthèse logique de design avec l’environnement XILINX ISE

Partie I : création d’un projet pour FPGA Xilinx

Lancer modelsim ISE

Avant de créer un nouveau projet, vérifier la validité de la licence

1
Indiquer le serveur de licence puis cliquer sur set

La date d’expiration de la licence est


Licence affichée en vert si encore valide

2100@tse-win2008.univ-st-etienne.Fr

Créer un nouveau projet :

2
3
Dans cette fenêtre, vous devez spécifier :

 la famille de FPGA (Family)


 le type de FPGA (Device)
 l’outil de synthèse
 l’outil de simulation
 le langage de description

Cliquer sur Next et vérifier la configuration de votre projet sur la fenêtre suivante :

4
Une fois le projet crée, créer un fichier VHD en créant ou ajoutant une source :

Pour ajouter un fichier source, créer un VHDL Module :

5
Cliquer sur next pour ignorer la configuration des E/S

Votre fichier est créé, vous pouvez insérer votre code pour pouvoir effectuer les synthèses :

Cliquer sur l’entité top de votre design, la fenêtre en dessous va indiquer les différentes étapes pour
générer le fichier de configuration (*.bit)

Dans cette partie, seule l’étape de synthèse est à réaliser. Pour ce faire, cliquer droit sur l’étape de
synthèse et lancer la synthèse :

6
La synthèse est réussie si un logo vert apparait :

Vous pouvez ouvrir le rapport de synthèse (clic droit) :

7
Ce fichier contient le rapport de synthèse (ressources et timing qui vont être étudiés par la suite) :

Pour l’étude de synthèse, les fichiers sources à récupérer sont disponibles sur Mootse (copier le
contenu du fichier txt dans le fichier vhd) :

Partie II : analyse des performances d’un design sur FPGA après


synthèse
On souhaite synthétiser un additionneur n_bits réalisés sous deux formes.

Sources_add_n_components.txt contient tous les composants à instancier dans l’entité top.

Add_n_2_versions.txt contient l’entité top et les deux architectures associées.

(prendre le code dans le fichier source dans additionneur_1 et le copier dans le module VHDL). La
synthèse ne permet pas de synthétiser deux architectures, on mettra une architecture en
commentaires (clic droit sur le code et Comment).

Indiquer l’outil de synthèse utilisé dans l’environnement ISE.

8
Vérifier que l’entité top est celle souhaitée (add_n-arch_add_n V1 ou V2)

Pour les deux architectures :

Faire varier le paramètre spécifié dans le package (taille_donnée) et relever les résultats de timing
(chemin combinatoire et fréquence) ainsi que les ressources obtenues en synthèse et placement
routage.

Relever les ressources de chaque IP en visualisant le rapport de synthèse (aller sur view text report)

 Taille_donnée =5 , 15, 100 et 200


 Comment est définie la période de l’horloge ?
 Comment varie l’horloge sur les deux architectures ? expliquer

Les ressources à analyser

9
Ressources utilisées sur FPGA

Répartition des ressources


utilisées

Les performances temporelles à analyser sont dans le même rapport de synthèse :

Vous pouvez analyser le code de l’entité top ou alors ouvrir le schéma RTL généré afin d’expliquer la
différence entre les deux architectures :

10
Double cliquer sur le composant
pour voir la structure interne

Partie III : analyse des options de synthèse


Indiquer l’outil de synthèse utilisé et relevez les options de synthèse pour additionneur 1 avec
taille_donne =20 et 40

11
Pour une valeur n = 150, et l’architecture 2 de l’additionneur, relevez les résultats de timing et de
ressources en considérant les différentes options de synthèse disponibles par l’outil. On considérera
les temps de synthèse noté dans les rapports. Quelles optimisations sont possibles ?

Les options de synthèses sont disponibles comme suit :

Partie IV : utilisation d’un fichier de contraintes


Un fichier de contrainte permet :

- De spécifier une fréquence pour la synthèse et le placement routage.


- De spécifier les entrées sorties sous forme de fichier texte, pour affecter les bons IO (Input
Output) sur les signaux globaux de l’entité top.
- De forcer le placement des ressources sur des régions particulières du FPGA.

On crée un nouveau fichier source (fichier de contrainte)

12
Pour une taille de donnée N=20

Fichier de contraintes du projet

Insérer un fichier de contrainte associé à la carte (description du fichier de contrainte disponible sur
internet, site Xilinx). Deux types de contraintes sont considérés :

1. Contrainte de timing : spécifier une fréquence d’horloge de 500 MHz. Lancer la synthèse puis
Implement Design.
https://www.xilinx.com/itp/xilinx10/help/platform_studio/ps_c_hdw_specifying_timing_con
straints_in_ucf_file.htm

2. Dans le rapport d’implantation, visualiser les performances dans la partie Timing Constrainsts :
un warning apparaitra en indiquant que l’outil ne permet pas de générer une architecture avec
la fréquence associée.

13
3. Changer la fréquence et mettre une fréquence légèrement supérieure à la fréquence
maximale. Relever le rapport post place and route afin de voir si cette nouvelle contrainte peut
être considérée.

Dans

Relevez le warning mentionnant LOC.

Quelle contrainte n’a pas été donnée ?

Partie V : Implantation sur FPGA

L’implantation est réalisée sur une plateforme d’évaluation ML506.

1. Indiquer quel FPGA est implanté sur la plateforme


2. Contrainte d’entrée/sortie : affecter les E/S sur le fichier de contraintes pour un additionneur
de taille de donnée n=2. On ciblera le FPGA de la plateforme ML506 (le fichier de contrainte
se trouve sur le site xilinx en fichier ucf). On enlèvera la contrainte de timing et on choisira
la bonne horloge.
https://forums.xilinx.com/t5/Virtex-Family-FPGAs/UCF-file-for-the-ML605/td-p/689564
3. Remplacer dans le fichier de contrainte les noms par les signaux d’entrée/sortie
4. Faire la synthèse et le placement routage et générer le fichier de programmation (bitstream)
en utilisant l’outil impact.

Documents relatif à l’implantation


sur FPGA

Partie VI : blocs DSP


(sources dans source_2.txt)

Réaliser la synthèse et relever les ressources obtenues

14
Remplacer le type integer par le sous type d’integer en limitant les valeurs de 0 à 65536 (INTEGER
RANGE…), réaliser la synthèse et relever les résultats obtenus.

En revenant au 1er cas :

Réaliser la synthèse de l’additionneur en faisant varier la sélection du champ –use_DSP 48 (oui et


non) et relever les ressources obtenues.

Quels blocs DSP sont disponibles sur le circuit ? se référer à la documentation de la plateforme.

Refaire les synthèses avec/sans DSP et avec le sous type integer range 0 to 32.

Partie VII : codage de machines d’états


(sources dans source_3.txt)

Dans un nouveau projet, réaliser la synthèse et analyse le rapport de synthèse. Indiquer le type de
codage utilisé pour coder le type énuméré de la machine d’état.

Refaire la synthèse avec le type de codage one hot, relever le codage et les résultats de synthèse.

15
Partie VII : synthèse partielle d’un bloc
Il est possible qu’on souhaite faire la synthèse partielle d’un bloc afin de dimensionner ses ressources.
La synthèse partielle consiste à synthétiser séparément les blocs IP qui constitueront le système final.
Il est effectivement possible de synthétiser et placer une partie de l’architecture finale avant
l’intégration des autres blocs.

Dans ce cas, les signaux déclarés dans le port ne sont plus des signaux externes mais sont des signaux
internes

Ces signaux ne doivent pas être connectés aux E/S du circuit ( blocs IO).

Avec le projet de l’additionneur 1 (source1), faire la synthèse partielle en désactivant les blocs IO dans
la fenêtre Xilinx Specific option (décocher –iobuf):

16
https://www.xilinx.com/products/design-tools/vivado/implementation/partial-reconfiguration.html

Relevez les ressources sur le rapport de synthèse (les blocs d E/S doivent être à 0).

Il est possible de forcer certains IP sur une zone particulière du FPGA. Le placement peut être fait
manuellement sous forme graphique ou dans le fichier de contrainte. Le placement manuel permet de
réserver des zones du FPGA à des fonctionnalités propres.

Vue globale du FPGA Position du Slice dans le FPGA


(identifiée par X et Y)

17
Déplacer les ressources sur de nouvelles slices et définir la zone de contrainte de l’IP.

18