Rappel
Evolution dessystèmes microélectroniques
3
« ASIC based system »
«FPGA based system »
Matériel standard
«SOC»
Matériel spécifique
-Prototype
rapide
-Programmable
-Conception
faible cout
-Programmable
HW/SW
-Complexité
-performances
Rappel
Quoi deneuf dans un SoC
Assemblage de composants virtuels
IP: Intellectual Properties
« IP core »
Partitionnement logiciel – matériel
Interfaces entre IP
Vérification
Solutions architecturales
9
Evolution des
méthodologies
Nouveau flot de
conception
Co-Design
Co-Design
Le co-designdans la méthodologie d’un système embarqué
est de plus en plus utilisé.
Le co-design permet de concevoir en même temps à la fois
le matériel et le logiciel pour une fonctionnalité à
implémenter. Cela est maintenant possible avec les niveaux
d’intégration offerts dans le circuit logiques programmables
Le co-design permet de repousser le plus loin possible dans
la conception du système les choix matériels à faire
contrairement à l’approche classique ou les choix matériels
sont faits en premier lieu
12
Co-Design
14
À partird’un cahier des
charges de l’application,
définir:
ce qui doit être fait par le
logiciel,
ce qui doit être fait par le
matériel.
15.
Co-Design
15
Le CoDesignlogiciel/matériel propose une approche structurée
pour la conception d’une classe de systèmes numériques les
systèmes dédiées
Quatre grands étapes sont distinguées dans l’approche CoDesign :
1-) Spécification
2-) Partitionnement
3-) Synthèse logicielle & matérielle
4-) Co-simulation
La réalisation finale est une réalisation conjointe
matérielle/logicielle
Co-Design
Spécifications :liste des fonctionnalités du système de
façon abstraite.
Modélisation : conceptualisation et affinement des
spécifications produisant un modèle du matériel et du
logiciel.
Partitionnement : partage logiciel matériel.
Synthèse et optimisation : synthèse matérielle et
compilation logicielle
Validation : co-simulation
Intégration : rassemblement des différents modules.
Tests d’intégration : vérification du fonctionnement
17
Co-Design
La rechercheen co-design traverse plusieurs champs de
compétences tels que :
Spécification système et modélisation
Exploration du design
Partitionnement
Ordonnancement
Co-vérification et Co-simulation
Génération de code matériel et logiciel
Interfaçage matériel/logiciel
L'objectif commun ici est de développer une
méthodologie unifiée pour créer des systèmes qui
contiennent à la fois du matériel et du logiciel.
20
21.
Spécification
Evaluation d’uncahier des charges
Aspects techniques
Evaluation de la complexité (nbre de portes, nbre E/S, …)
Performances électriques recherchées (surface, consommation, alimentation…)
Types de fonction à développer (numérique, analogique, RF)
Encapsulation : type de boîtier
Aspects économiques
Délais de conception et de fabrication
Marché => Quantité de pièces prévues
Budget
Choix de la cible matérielle
Une technologie
Un type de circuit (FPGA, ASIC, DSP, Processeurs…)
Un flot de développement (outils CAO)
21
Partitionnement
Objectif
L’objectifdu partitionnement est de regrouper les variables
et les comportements fortement dépendants, puis de
décider pour chaque regroupement d’une réalisation
logicielle ou matérielle.
Problématique
Les performances réelles de la réalisation ne peuvent être
connues qu’après l’étape de co-simulation.
Approche
Afin de permettre le partitionnement, des estimateurs de
performance rapides et précis doivent prédire les
performances et le coût d’une réalisation architecturale.
23
Synthèse
26
Il faudraprévoir des
itérations de test et de
validation:
pour le logiciel
pour le matériel
conjoint
27.
Synthèse
Cette étaperegroupe les synthèses de la partie
logicielle, de la partie matérielle et des
interfaces et protocoles de communication.
Synthèse logicielle : correspond à la conversion d’une
description décrite dans un langage fonctionnel en un code
exécutable par un processeur.
Synthèse matérielle : correspond à la conversion d’une
description décrite dans un langage fonctionnel en un
ensemble d’équations différentielles décrivant la structure
d’un layout.
Synthèse des communications : étape essentielle, elle
doit garantir les transferts de données entre les différents
blocs matériels et logiciels. Les protocoles et les modes de
communication sont définis durant cette étape. 27
28.
Synthèse logicielle
28
Compiler
Linker
C FileC File Asm. File
Binary File Binary File Binary File
Exec. File
Assembler
Library
Phase de développement
Debugger
Profiler
Phase de vérification
Synthèse des communications
33
PartitionnementLogiciel/Matériel
Spécification des
communications
Sélection des
protocoles
Génération
des interfaces
Vérification et/ou correction
du partitionnement
Coûts de synthèse ?
Caractéristiques temporelles des transferts ?
Choix des modèles
et des langages
Estimation des
performances
Synthèse des bus
Synthèse des interfaces
matérielle et logicielle
Bibliothèque de
protocoles
Logiciel Matériel
Interfaces
34.
Co-simulation : Référentielde validation
34
Il est souvent complexe
d’avoir un référentiel
commun pour la
validation:
Les équipes sont
souvent différentes.
Les philosophies sont
différentes.
Les langages/outils et
méthodes sont
différents.
35.
Co-simulation : Échellede temps
35
Les échelles de temps ne
sont pas les mêmes.
Attendre la fabrication
d’un circuit pour tester le
logiciel dessus, n’est pas
raisonnable!
Top/down ou bottom/up
Conception top-down
Commencer par une description très abstraite;
Enrichir de détails pour obtenir des solutions
spécifiques.
Conception Bottom-up
Assembler des petits composants pour obtenir un gros
système par assemblage spécifique.
Cas réels utilisent ces deux techniques:
assemblage et configuration spécifique.
39
Avantages de Co-Design
Amélioration des performances : parallélisme, algorithmes
distribués, architecture spécialisée,…
Reconfiguration statique ou dynamique en cours de
fonctionnement
Indépendance vis-à-vis des évolutions technologiques des
circuits logiques programmables
Mise à profit des améliorations des outils de conception
fournis par les fabricants de circuits logiques
Programmables : synthèse plus efficace, performance
accrue.
41
Méthodologie de co-designplus complète
44
Partitionnement Ordonnancement
Gestion de l’énergie Synthèse du matériel Synthèse du logicielle La vérification
Notes de l'éditeur
#14 Le support logiciel dans un SoC est une composante importante qu’il ne faut pas négliger. Il est important de prévoir la possibilité de configurer, corriger, utiliser ou faire utiliser le produit après la fabrication du circuit.
À l’opposé d’un circuit programmable générique, qui doit anticiper proposer des fonctionnalités qui pour des applications non connues à l’avance, pour un SoC destiné à une application spécifique, l’étape de partitionnement est très importante.
À partir du cahier des charges, on doit identifier les fonctionnalités qui peuvent être implémentées de façon logicielle et évaluer les performances nécessaires pour une cible processeur. Si cela est compatible avec les objectifs de coût et de consommation en utilisant des cibles existantes, il n’est peut-être pas utile de développer un matériel dédié.
Sinon, il faut décider quelles fonctionnalités auront besoin d’une implémentation matérielle et comment partager les tâches.
#22 En plus du cahier des charges de l’application, d’autres éléments vont intervenir dans le choix du partitionnement.
D’un point de vue logiciel, l’existence (et la disponibilité) de bibliothèques logicielles, de systèmes d’exploration (ainsi que de pilotes) doit être considérée.
D’un point de vue matériel, les blocs matériels existant doivent être pris en compte.
Au-delà de l’existant, il faudra prévoir d’éventuelles adaptations à l’application développée ainsi que les développements spécifiques nouveaux.
Il faut aussi prendre en compte les fonctions annexes qui devront être fournies par le système.
#26 Dans un flot de conception conjoint, au-delà des cycles de développement et validation des fonctions logicielles et matérielles, il faudra mettre en place des mécanismes de validation conjointe. Il ne s’agit pas seulement de vérifier que le logiciel fonctionne avec le matériel, mais aussi de garantir que les performances prévues sont bien présentes (vitesse, consommation, coût). Si les performances ne sont pas atteintes, il faudra, éventuellement, revenir sur le partitionnement initial.
Il est important de noter que, du fait du coût important de la fabrication d’un circuit, ces étapes de validation doivent avoir lieu en amont.
#34 Il est important de conserver une référence, commune aux différentes équipes impliquées, tout au long des phases de développement.
Cette référence peut être:
une spécification textuelle,
une spécification formelle,
un modèle fonctionnel ou formel.
La mise en place d’une telle référence est un enjeu important dans la conception de SoC complexes.
#35 Une fois l’architecture matérielle définie, il faudra développer un modèle fonctionnel intégrant les différentes IPs (ou des modèles comportementaux). Ceci permet de vérifier que les spécifications sont respectées.
Ensuite, les modèles sont raffinés vers des modèles RTL synthètisables. Une fois ces modèles validés, on passe dans une deuxième phase du flot de conception appelée backend.
Durant cette phase, les étapes de synthèse et de placement routage ont lieu ainsi qu’une série d’étapes de validation pour arriver finalement aux dessins des masques.
Tout au long des phases de développement conjoint (matériel/logiciel), des mécanismes de vérification sont mis en place:
de la simulation conjointe,
des prototypes FPGA,
des émulateurs.