Formation - Synthèse logique et simulation VHDL pour conception de FPGA Xilinx (reference 002572A)
 
    Partenaires
  • Les outils utilisés pendant cette formation sont les suivants :
    • Outils de synthèse XST (Xilinx) et Synplify-Pro (Synplicity)
    • Outils d'implémentation Xilinx ISE
    • Simulateur VHDL Modelsim
  • Chaque binôme dispose d'un PC
   
           
    Formations connexes

D'autres formations proposées par MVD permettent d'approfondir les aspects suivants sur les FPGA :

  • Optimisation des performance
  • Optimisation des performances pour concepteurs d' ASIC
  • Techniques d'implémentation de fonctions DSP pour FPGA Xilinx
  • Conception de systèmes PCI
   
           
    Pré-requis
  • Cette formation s'adresse aux ingénieurs électroniciens ayant déjà de bonnes connaissances en conception de circuit d'électronique numérique, désireux d'acquérir une solide méthodologie de conception, et de tirer le meilleur parti du langage VHDL, ainsi que des outils de synthèse et de simulation associés pour développement de FPGA Xilinx, et plus particulièrement les familles Spartan3 et dérivées..
  • De nombreux travaux pratiques accompagnés de démonstrations permettent de vérifier le bien-fondé de cette méthodologie faisant appel entre autres à l'utilisation d'un style d'écriture VHDL approprié permettant une implémentation efficace et réutilisable, tout en facilitant la mise au point.
   
             
  Objectifs de la formation
  • Appréhender les multiples possibilités offertes par le langage VHDL
  • Comprendre les notions de synthèse logique
  • Connaître les styles d'écriture et leur impact sur la qualité des résultats de synthèse
  • Connaître les performances pouvant être attendues des FPGA Xilinx
  • Apprendre à paramétrer les options de compilation et les contraintes d'implémentation
  • Manipuler les outils de débug et les rapports d'implémentation
   
           
    Durée
  • 5 jours
   
           
    Programme

Architecture des FPGA Spartan3 et familles dérivées

  • Structure générale
  • Notions de CLB et de slices
  • Logique combinatoire et bascules
  • Logique arithmétique
  • Notions de mémoire distribuée
  • Registres à décalage SRL16
  • Blocs d'entrée sortie
  • Bascules d'entrée/sortie
  • Registres DDR
  • Paramétrages électriques et de timing et spécificités Spartan3E, Spartan3A
  • Blocs de RAM dédiée et modes d'utilisation
  • Implémentation de FIFOs paramétrables
  • Autres exemples d'utilisation
  • Distribution d'horloges et DCMs
  • Buffer globaux, buffers locaux (Sparta 3E/A)
  • DCMs et paramétrage
  • Multiplieurs dédiés et blocs DSP48A (Spartan_3A-DSP)
  • Configuration
  • Maitre, esclave, SPI (Spartan3E/A)

Différences fondamentales avec l'architecture Virtex 4

Introduction à l'architecture Virtex 5

Outils d'implémentation et de mise au point (ISE 9.x)

  • Flot d'implémentation et de génération de bitstream
  • Translate
  • Map
  • Place and Route (PAR)
  • BitGen
  • Analyse des rapports MRP et PAR
  • Principales options d'implémentation
  • MAP
    • Empaquetage des bascules d'Ios
    • CLB Pack factor
    • MAP-timing
  • PAR
    • Effort global
    • Extra effort
    • Multi Pass Place and Route
    • Autres options
  • BITGEN
    • Options de configuration
    • Options de Startup
  • Outils d'analyse de résultats d'implémentation - contraintes
  • FLOORPLANNER
    • Comment analyser la qualité du placement
    • Génération de contraintes de placement
      • Par éléments
      • Par blocs fonctionnels
  • FPGA EDITOR
    • Vérification de détails d'implémentation
    • Identification des ressources arithmétiques
    • Navigation
    • Vérification d'aspects importants du routage (lignes d'horloges, accès aux BUFGs, DCMs ...)
  • TIMING ANALYZER
    • Analyse globale de la performance d'un design
    • Crossprobing entre le Timing Analyzer et FPGA Editor ou Floorplanner
    • Conclusions à tirer pour optimisation du design
      • Modifier le code source
      • Rajout et/ou relâchement de contraintes
      • Effectuer de nouvelles itérations d'implémentation avec de nouvelles options
  • Introduction à CHIPSCOPE
  • Fichier de contraintes
  • Contraintes de placement et de configuration électrique des Ios
  • Contraintes basiques de timing
    • PERIOD
    • OFFSET IN/OUT
  • Contraintes avancées de timing
    • Chemins multi-cycle
    • Faux chemins
    • Limitations sur les Contraintes sur chemins reliant 2 domaines d'horloge différents
  • Contraintes avancées de placement
    • AreaGroup : précautions d'utilisation

Règles d'écriture du code VHDL en synthèse logique

  • Notion d'entité/architecture
  • Instructions concurrentes et séquentielles
  • Objets et types prédéfinis
  • Opérateurs prédéfinis et d'utilisation étendue par l'utilisation de packages standardisés
  • Les process
  • Importance de la liste de sensibilité
  • Instructions séquentielles : if, case, loop
  • Utilisation de variables
  • Quelques pièges classiques à éviter
  • Incohérences potentielles d'interprétation entre la synthèse logique et la simulation : comment s'en affranchir ?

Travaux pratiques

Méthodologie de conception hardware en synthèse logique

  • Conception asynchrone et pièges classiques
  • Métastabilité et aléas de fonctionnement
  • Limitations de la simulation fonctionnelle et timing sur les designs asynchrones : comment s'en affranchir ?
  • Conception synchrone - avantages - méthodologie - mise au point
  • Analyse statique de timing : comment l'utiliser ?
  • Optimisation de performances indépendamment de la cible
  • Notions de pipeline
  • Gestion d'évènements asynchrones
  • Aléatoires
  • Flots de données

Travaux pratiques

Approfondissements sur le langage VHDL pour l'optimisation et la réutilisation du code en synthèse logique

  • Notions de variables et exemples d'utilisation
  • Généricité et re-paramétrage automatique des modules réutilisables
  • Attributs prédéfinis utiles en synthèse logique
  • Fonctions et procédures
  • Définition de packages et librairies

Travaux pratiques

Gestion de la hiérarchie pour une meilleure réutilisation

  • Organisation de design par modules fonctionnels : quel découpage choisir ?
  • Notions d'inférence et d'instanciation
  • Quand doit-on instancier primitives ou macros ?
  • Précautions à prendre pour un code évolutif et/ou réutilisable
  • Importance du choix de noms des modules et des nets pour faciliter l'implémentation physique, la simulation et la mise au point
  • Doit-on préserver la hiérarchie lors de la synthèse logique ?

Travaux pratiques

Testbenches et simulation

  • Quelques règles de base pour l'écriture d'un testbench efficace
  • Instructions VHDL spécifiques à la simulation
  • Wait et ses différentes formes
  • Boucles " Loop "
  • Assertions
  • Types de données
  • Autres
  • Ecriture de modèles de composants destinés à rendre la simulation plus réaliste
  • Utilisation de modèles et packages de simulation existants

Travaux pratiques

  • Intégration de " pseudo logique " afin de faciliter l'interprétation des résultats de simulation
  • Ecriture et lecture de fichiers ASCII
  • Affectation d'un flot de données à partir d'un fichier
  • Stockage des résultats de simulation dans un fichier
  • L'interpréteur de commandes
  • Génération de messages d'information

Travaux pratiques

   
           
    Notes importantes

Cette formation a été mise au point par des professionnels fortement expérimentés en conception de circuits d'électronique numérique. Son approche didactique permet de comprendre l'intérêt d'une véritable méthodologie de design et facilite sa mise en œuvre par une approche d'anticipation. Sa durée peut être adaptée en fonction des besoins précis des participants, et de leur expérience préalable.

Pour un déroulement plus fluide de la formation, les exemples développés pour la synthèse logique sont ensuite réutilisés pour les travaux pratiques de simulation. La formation se déroule pas à pas, avec des mises en pratiques progressives, permettant de vérifier par la pratique (exemples VHDL) de vérifier les différents aspects des architectures et des outils de synthèse et d'implémentation.

Les aspects "optimisation" du code pour les différents types de cibles en fonction des outils de synthèse (et de leur performances sur tel ou tel type de cible) choisis peuvent être abordés pour une meilleure compréhension de l'impact du choix des outils de synthèse sur les résultats en fonction de la cible choisie.

Pour les travaux pratiques, MVD recommande - et met à la disposition des participants - les outils suivants :

- Synthèse logique : Synplify-Pro (Synplicity) - Faire la demande avec anticipation
- Simulation : ModelSim
- Implémentation physique et analyse statique de timing : Xilinx ISE 9.1 ou postérieure

Cependant d'autres outils de synthèse, simulation et implémentation physique peuvent être utilisés sur demande. Nous consulter pour tout besoin particulier.

Configuration matérielle des microordinateurs pour un fonctionnement optimal :
- PCs à base de Pentium IV ou équivalent
- Windows 2000 ou XP
- 2 Giga octets disponibles sur le disque dur
- 512 Méga octets de RAM
- Lecteur de CDROM
- Résolution écran : égale ou supérieure à 1024 x 768

Pour les formations " intra ", prévoir un vidéo-projecteur
   
           
    Documentation

Les supports de cours en français sont fournis aux participants. Précis et faciles à utiliser, ils peuvent servir de référence par la suite.
Le listing des exercices est également fourni aux participants.
   
           
    Autres formations

Pour connaître les autres formations que nous proposons ainsi que leurs contenus, vous pouvez consulter ou télécharger notre catalogue de formations sur la page suivante : Formation - présentation générale