II.5.2. Flots de conception récents :
Si le flot de conception classique pouvait suffire pour les
première et deuxième générations de systèmes
embarqués, la troisième génération, fortement
hétérogène et multimaître, est trop complexe pour
que les limitations précédemment énoncées soient
acceptable telles que le codéveloppement.
II.5.2.1. Codéveloppement :
Le codéveloppement ou codesing a pour but de
développer conjointement les diverses parties d'un système
hétérogène (logiciel, électronique,
mécanique, etc.). C'est pourquoi une description globale du
système est nécessaire.
Deux approches sont possibles pour cette description : la
première consiste à décrire toutes les parties dans un
langage unique. Ce langage doit alors avoir une sémantique pour chacune
des parties. L'avantage est qu'il est plus simple pour les outils et les
utilisateurs de gérer un langage unique. L'inconvénient est qu'il
est difficile, sinon impossible, de définir un langage qui soit vraiment
adapté à toutes les parties du système. La deuxième
approche consiste à utiliser plusieurs langages, chacun étant
adapté à une partie du système. Un langage de coordination
sert à faire le lien entre toutes les descriptions. L'avantage est que,
cette fois, il est possible d'avoir le langage optimal pour chaque partie.
L'inconvénient est que la gestion de tous ces langages est difficile.
Une partie difficile du codéveloppement est le
découpage entre le logiciel et le matériel. De nombreuses
heuristiques ont été développées, etc. cependant
l'approche manuelle prévaut toujours.
La figure II.4 donne un exemple de flot basé sur le
codévloppement en comparaison avec le flot classique : dans le nouveau
flot, la séparation entre le logiciel et le matériel est
effectuée plus tard, et une nouvelle équipe fait son apparition :
l'équipe d'architecture, qui s'occupe du système global et de la
coordination entre les équipes.
Le codéveloppement repose aussi sur l'utilisation d'une
autre technique permettant la simulation du système aux divers niveaux
d'avancement dans la conception. Ces simulations, appelées
cosimulations, sont décrites dans la section suivante.
II.5.2.2. Cosimulation :
La cosimulation a pour but de simuler conjointement les
diverses parties d'un système hétérogène. Cela
permet d'effectuer la validation d'un système complet avant le
prototype, mais aussi à divers niveaux d'abstraction.
Il existe deux méthodes pour effectuer cette
cosimulation (présentées figure II.5) : la première
consiste à traduire les descriptions des diverses parties dans un unique
langage pour la simulation. Très souvent, il s'agit d'un langage de
programmation tel que le C pour accélérer les simulations. La
difficulté est d'être assuré que la traduction et la
simulation du langage unique ne changent pas la sémantique des
descriptions des diverses parties. La deuxième méthode consiste
à conserver les descriptions spécifiques des diverses parties et
à exécuter en parallèle les divers simulateurs. Un
programme, appelé bus de cosimulation, cette tâche peut
s'avérer difficile à effectuer lorsque les modèles de
simulation sont différents ; de plus les communications entre les
simulateurs peuvent s'avérer coûteuses.
Cosimulation avec description
|
Cosimulation multilangage
|
Description logicielle
Description matérielle
Description autre
Description logicielle
Description matérielle
Description autre
Traduction
Simulateur logiciel
Simulateur matériel
Simulateur autre
Description unique
|
|
|
|
|
|
|
Simulateur
|
Bus de cosimulation
|
Figure II.5 : Les deux
méthodes de cosimulation
|