Vous êtes sur la page 1sur 30

Chapitre 3

Flots de conception pour les


systèmes embarqués
Conception d’un Système numérique

Pour concevoir un système on part d’un cahier des charges à une réalisation:
 On débute par une description comportementale
 Puis, suite à des simulations et de mesures de performances, on identifie les
grands blocs.
La description devient alors mixte : une partie structurelle donnant la liste des
blocs et la façon dont ils sont interconnectés entre eux. Les blocs eux sont
encore représentés sous forme comportementale.
 On réapplique ensuite ce procédé récursivement à chaque bloc (décomposition
en sous-blocs, sous-sous-blocs), jusqu’à l’obtention d’une description presque
totalement structurelle à base de bascules D et de fonctions logiques simples.
 Des outils se chargent alors de traduire tout ça automatiquement en portes
logiques qui enfin seront réalisés physiquement.
Conception classique des systèmes
embarquées
Conception traditionnelle des systèmes embarqués

Un système embarqué est souvent formé par une collection de circuits


(ASIC, IP, ADC, mémoires…) et de logiciels (code exécutable : taches,
Objets…) en étroite interaction.

Approche logicielle Approche matérielle

Intégration Intégration
Test Test
Validation Validation
Systèmes
Embarqué SoC
Approche traditionnelle

1. Choix du matériel (composants électroniques, processeur…) pour


le système embarqué.
2. Donner le système ainsi conçu aux programmeurs.
3. Les programmeurs doivent réaliser un logiciel qui « colle » au
matériel.
Problèmes
Complexité croissante des systèmes embarqués
Les systèmes embarqués sont de plus en plus complexes:
Il est de plus en plus difficile d’obtenir une solution globale
optimisée au premier coup.
Il est de plus en plus difficile de corriger les erreurs.
Il est de plus en plus difficile de maintenir le système au cours
du temps (obsolescence des composants…).

En conséquence, l’approche traditionnelle de développement


d’un système embarqué doit évoluer...
Conception conjointe : co-design
hardware/software
Co-design hardware/software

Le Co-design constitue une méthodologie de conception d’un


système embarqué de tendance actuelle.

Le Co-design consiste à concevoir en même temps le matériel et le


logiciel pour une fonctionnalité à implémenter. (dès les premières
phases)

Le clé de cette conception est la spécification unique du système


décrivant son architecture et son comportement: d’où on tient
compte très tôt de l’interaction entre la partie hardware et la partie
software. La séparation se fera le plus tard possible.
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 où les


choix matériels sont faits en premier lieu !
Conception et co-design
Objectif du co-design

Flexibilité de conception
Possibilité d’effectuer des modifications lors de la phase de conception
en raison du changement d’orientation du systèmes ou des contraintes.
Limitation des erreurs de conception
Le co-design évite les mauvaises surprises lors de la phase d’intégration
des différents sous systèmes et les tests du système global.
Solutions moins couteuses et plus performantes
Phase d’intégration et de test réduites
Délai de mise sur le marché réduit (restreint)
Avantages du co-design

Le co-design est intéressant dans la conception des systèmes


embarqués :
- Amélioration des performances: parallélisme (matériel bien adapté
au logiciel) , architecture spécialisée…
- Reconfiguration statique ou dynamique en cours de
fonctionnement.
- Indépendance vis à vis des évolutions technologiques des circuits
logiques programmables.
- Profiter des améliorations des outils de conception fournis par les
fabricants de circuits logiques programmables: synthèse plus
efficace, performances accrues.
Flot de conception co-design:
Les différentes étapes
 Le Co-Design logiciel/matériel propose une approche
structurée pour la conception d’une classe de systèmes
numériques: systèmes dédiées

 L’approche Co-Design regroupe quatre grands étapes:


specification, partitionnement, synthèse et co-simulation
1-) Spécification et modélisation:
- décrire les fonctionnalités du système de façon abstraite.
- conceptualisation et affinement des spécifications produisant
un modèle du matériel et du logiciel.

2-) Partitionnement matériel & logiciel.

3-) Synthèse et optimisation logicielle & matérielle: synthèse


matériel et compilation logicielle

4-) Co-simulation (validation, intégration et test d’intégration)

La réalisation finale est une réalisation conjointe


matérielle/logicielle
Approche co-design
Spécification (1/1)

Evaluation d’un cahier 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
Spécification (1/2)

Choix de la cible matérielle


- Une technologie
- Un type de circuit (FPGA, ASIC, DSP, Processeurs…)
Partitionnement

Objectif du partitionnement
Regrouper les comportements fortement dépendants, puis de
décider pour chaque regroupement le type de réalisation : logicielle
ou matérielle.

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.
o Choix du modèle de spécification en fonction du type de l'application

o Classiquement les concepteurs considèrent qu'un système est dominé:


 Par le contrôle: Contrôle/commande de processus
− Systèmes à événements discrets
− Systèmes réactifs synchrones
− Machine d'états finis
− Réseaux de Petri
− Graphe de tâches
 Par les données : Les sorties sont fonctionnellement dépendantes
des entrées, Les occurrences des valeurs sur les entrées sont
périodiques
− Dataflow, Process Networks
Synthèse matérielle et logicielle

Cette étape regroupe 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 (motif, plannification).

 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.
Synthèse logicielle

Phase de développement

Phase de vérification

C File C File As. File

conversion en un Compiler Assembler


code exécutable
par un processeur. Binary Binary
File
Binary
File
File

Debugger
Linker
Library
Profiler
Exec. File
Synthèse matérielle

Niveau
Spécification d’abstraction
 Synthèse architecturale : comportementale
catapullt C: vérification et Description
comportementale
synthèse haute niveau Synthèse
architecturale

Description RTL
Synthèse
(register transfer level)
logique

Description logique
Synthèse (portes)
physique
 Outils de synthèse logique : Fiabilité des
VHDL. Layout prédictions
Catapult est la principale solution HLS (High-Level Synthesis) pour ASIC
et FPGA, il supporte le C++/SystemC
Co-simulation
Machine à état fini

 Une machine à états finis (FSM Finite State Machine) est un


modèle mathématique de calcul utilisé dans de nombreux
domaines: conception de programmes informatiques,
protocoles de communication, contrôle des processus, ...

 Une FSM est définie par des états et des transitions (conditions)

 L’état où il se trouve est appelé l’ état courant. Le passage d’un


état à un autre est dirigé par un évènement (ou une condition)
appelé une transition.
Exemple d’utilisation des machines à états finis (FSM)

Feux de circulation

Digicodes

Ascenseur
 Un état est la description de la configuration d’un système en attente
d’exécuter une transition.
 Une transition est un ensemble d’actions à exécuter lorsqu’une
condition est remplie ou lorsqu’un évènement est reçu.

 Dans certaines représentations de machines à état finies, il est


possible d’associer des actions à un état :
− action d’entrée : réalisée lorsque l’on entre dans l’état.
− action de sortie : réalisée lorsque l’on « quitte » l’état.
− action de transition : réalisée lors d’une transition
Exemple: machine à états finis d’un portillon d’accès

Un portillon, utilisé dans certains métros ou dans d’autres établissements


à accès contrôlés est une barrière avec trois bras rotatifs à hauteur de la
taille.
Un portillon peut être vu comme un automate fini à deux états : verrouillé
(locked) et déverrouillé (unlocked).

Deux "entrées" peuvent modifier l’état : la première si l’on insère un jeton


dans la fente (entrée jeton) et la deuxième si l’on pousse le bras (entrée
pousser).
Dans l’état verrouillé, l’action de pousser n’a aucun effet et si on insère un
jeton on passe de l’état verrouillé à l’état déverrouillé.

Dans l’état déverrouillé, ajouter des jetons supplémentaires n’a pas d’effet.
Mais dès qu’un usager tourne le bras du portillon, donc fournit un
pousser, la machine retourne à l’état verrouillé.
Représentation de la machine à état par un graphe orienté

• Chaque état est représenté par un sommet


(un cercle).
• Les arcs (des flèches) sont les transitions
d’un état à un autre.
• Chaque flèche porte une entrée qui
déclenche la transition.
• Un point noir sert à indiquer que c’est état
est l’état initial.
État courant Entrée État suivant Sortie
verrouillé jeton déverrouillé Déverrouille le portillon
verrouillé pousser verrouillé Rien
déverrouillé jeton déverrouillé Rien
déverrouillé pousser verrouillé Verrouille le portillon

Vous aimerez peut-être aussi