1 Introduction Ce chapitre introductif présente le contexte général de cette thèse, la problématique traitée et donne un aperçu global de la démarche suivie et du travail effectué. Nous décrivons tout d’abord l’activité de conception conjointe matériel/logiciel appelée usuellement co-design, son domaine d’application et les raisons de l’émergence de ce nouveau cycle de développement. Nous présentons ensuite succinctement l’approche particulière que nous avons adoptée pour résoudre deux problèmes sous jacents de l’activité de co-design: le partitionnement matériel/ logiciel et la co-simulation. Pour conclure ce chapitre, nous donnons l’apport de cette thèse et le plan de ce manuscrit. 1.1 L’ACTIVITE DE CO-DESIGN La complexité croissante des systèmes pour lesquels la réalisation résulte de l’association d’une partie matérielle et d’une partie logicielle, la diversité des choix technologiques et les contraintes de coûts et délais de plus en plus sévères nécessitent l’utilisation de nouvelles méthodologies et outils logiciels associés pour diminuer leur durée de conception et accroître leur qualité. Le co-design est l’une de ces méthodologies. 1.1.1 Définition du terme co-design Le terme "Hardware/Software Concurrent Design" souvent abrégé par "Hw/Sw Codesign" et qui se traduit par conception conjointe matériel et logiciel représente un processus de conception complet basé sur la trilogie: modèles, méthodes et outils ESDA (Electronic System Design Automation). Ce processus ...
1
Introduction
Ce chapitre introductif présente le contexte général de cette thèse, la problématique traitée
et donne un aperçu global de la démarche suivie et du travail effectué. Nous décrivons tout
d’abord l’activité de conception conjointe matériel/logiciel appelée usuellement co-design, son
domaine d’application et les raisons de l’émergence de ce nouveau cycle de développement.
Nous présentons ensuite succinctement l’approche particulière que nous avons adoptée pour
résoudre deux problèmes sous jacents de l’activité de co-design: le partitionnement matériel/
logiciel et la co-simulation. Pour conclure ce chapitre, nous donnons l’apport de cette thèse et
le plan de ce manuscrit.
1.1 L’ACTIVITE DE CO-DESIGN
La complexité croissante des systèmes pour lesquels la réalisation résulte de l’association
d’une partie matérielle et d’une partie logicielle, la diversité des choix technologiques et les
contraintes de coûts et délais de plus en plus sévères nécessitent l’utilisation de nouvelles
méthodologies et outils logiciels associés pour diminuer leur durée de conception et accroître
leur qualité. Le co-design est l’une de ces méthodologies.
1.1.1 Définition du terme co-design
Le terme "Hardware/Software Concurrent Design" souvent abrégé par "Hw/Sw Codesign"
et qui se traduit par conception conjointe matériel et logiciel représente un processus de
conception complet basé sur la trilogie: modèles, méthodes et outils ESDA (Electronic System
Design Automation). Ce processus doit permettre aux concepteurs de transformer
correctement du premier coup les spécifications d’un système en un produit industriel
comportant une partie logicielle et une partie matérielle et satisfaisant les contraintes
M.C.S.E 1Chapitre 1
fonctionnelles et non fonctionnelles de son cahier des charges. Il doit également permettre
d’accroître la qualité de conception et de réduire le temps de développement.
Dans la trilogie, un modèle est une représentation formelle d’un système à un niveau
d’abstraction donné. Il est bon de noter qu’une méthode efficace doit reposer sur un ensemble
de concepts de modélisation restreint mais suffisant pour décrire n’importe quel système. Le
terme méthode représente une procédure ou démarche bien définie et structurée permettant de
résoudre un problème. Les outils ESDA se composent d’outils de capture de modèles, de
simulation, d’analyse statique ou dynamique, de recherche de compromis, de synthèse et de
co-vérification. Les spécifications non fonctionnelles représentent tout ce qui dans le cahier des
charges n’est pas une exigence fonctionnelle. Il s’agit habituellement d’un ensemble de
contraintes d’intégration avec l’environnement (taille, puissance consommée), de
performances (temps de réponse, débit), d’ordre économique (coût, délai de fabrication), de
qualité (durée de vie, MTBF), de sûreté de fonctionnement, etc.
Gajski donne la définition suivante [MCC/OMI-96]: "CoDesign is defined as a
methodology and technique for designing software and hardware concurrently, thus reducing
the design time and time to market". Dans cette définition, le terme le plus important est
"concurrently" qui signifie que le développement simultané de la partie logicielle et de la partie
matérielle du système s’effectue avec une interaction forte et permanente entre les deux parties.
Cette approche diffère fondamentalement du cycle de conception conventionnel des systèmes
qui repose sur un développement séparé des deux parties.
1.1.2 Les classes de systèmes concernées par le co-design
Le développement des systèmes électroniques composés d’une partie matérielle et d’une
partie logicielle n’est pas un problème nouveau. Généralement, concevoir et réaliser de tels
systèmes nécessite une compétence technique dans au moins 3 domaines: l’électronique
analogique, l’électronique numérique et l’informatique. La nature spécifique du traitement à
effectuer et le couplage du système avec son environnement nécessitent aussi des compétences
complémentaires: en traitement de l’information (signal, image, parole...), en électronique de
puissance lorsque l’environnement utilise des courants forts, en réseaux et
télécommunications, etc.
Une analyse des types de systèmes conduit à la classification suivante [CALVEZ-90]:
- les systèmes typiquement électroniques qui impliquent essentiellement le
développement de matériel. Ils ne font donc pas directement partie du domaine de
l’activité de co-design même si l’apparition de composants matériels programmables,
des langages de description de matériel (VHDL, Verilog) et des outils de synthèse tend
à rendre de plus en plus floue la frontière entre matériel et logiciel.
- Les systèmes interactifs concernés par l’exploitation d’interfaces pour le dialogue
homme-machine. Ces systèmes sont constitués principalement de logiciels (système
d’information exploitant une base de données par exemple). Ils ne font donc pas partie
du champs d’application de l’activité de co-design.
2 M.C.S.EIntroduction
- Les systèmes de communications dominés par le transfert d’informations. Ces systèmes
reçoivent, transforment et émettent des flots de messages. Ils sont représentatifs des
systèmes pour lesquels les réalisations autrefois à dominante matérielle ont
progressivement évoluées vers un partage matériel/logiciel avec un accroissement de la
partie logicielle car les microprocesseurs sont devenus de plus en plus puissants. Mais,
une partie matérielle est pour ce type de systèmes indispensable pour respecter les débits
élevés des protocoles de communications (réseau ATM par exemple).
- Les systèmes de traitement concernés principalement par les traitements de toutes
formes d’informations: signal, image, parole... Ces systèmes sont caractérisés par des
techniques de conception orientées flot de données. Tout comme pour les systèmes de
communications, les réalisations de ces systèmes étaient autrefois surtout matérielles et
basées sur une partie opérative (ordonnancement ASAP ou ALAP en fonction du
compromis surface de silicium/performance) et une partie contrôle. Puis peu à peu,
l’arrivée de microprocesseurs spécifiques (DSP) de plus en plus performants a donné
une part de plus en plus importante au logiciel. Aujourd’hui, le développement de ces
systèmes est bien maîtrisé et repose sur l’utilisation de méthodes et outils efficaces
(COSSAP, SPW, DSP WorkStation,...) mais limités uniquement à leur domaine
d’application (approche algorithmique, CFG/DFG, synthèse haut niveau).
- Les systèmes de contrôle/commande dominés par des problèmes de suivi et de
commande pour des applications incluant des procédés physiques en tous genres à
piloter. Ils font partie d’un ensemble (système+environnement) composé d’actionneurs
qu’ils contrôlent en fonction des événements perçus par des capteurs.
Les travaux présentés dans ce manuscrit concernent surtout les systèmes de contrôle/
commande, les systèmes de communications et partiellement les systèmes de traitement. Ces
systèmes dit dédiés sont généralement conçus pour répondre à un besoin spécifique et entrent
dans la catégorie des systèmes électroniques embarqués et temps-réel (Real-Time Embedded
Systems).
Un système temps-réel réalise ses activités en respectant des contraintes de temps de nature
externe (fréquence d’événement, débit de sortie) ou interne (temps de réaction). Lorsque les
contraintes de temps sont assez faibles, la réalisation est logicielle avec ou sans l’emploi d’un
exécutif temps-réel (utilisation du mécanisme de gestion des interruptions du processeur).
Dans le cas contraire, le concepteur doit trouver le meilleur compromis entre une implantation
tout en matériel aux performances dynamiques et coût élevés et une implantation
complètement logicielle aux performances et coût faibles, ce qui en co-design correspond à la
problématique du partitionnement matériel/logiciel.
Les systèmes électroniques embarqués sont caractérisés par de fortes contraintes
d’intégration avec leur environnement: taille physique réduite, consommation faible,
résistance aux chocs et aux variations climatologiques, sûreté de fonctionnement, etc.
Aujourd’hui, ces systèmes intègrent systématiquement du matériel et du logiciel et sont de plus
en plus présents dans une grande variété de produits. Lorsqu’ils sont produits en grande série,
ils doivent présenter un coût de fabrication minimum. Le temps de mise sur le marché (time-
to-market), qui est un facteur clef pour le succès d’un produit, doit également être le plus court
possible. Enfin, tout comme les systèmes temps-réel, ils doivent généralement respecter des
contraintes dynamiques (temps de réaction faible, débit élevé). Ils constituent donc la cible
privilégiée de l’activité de co-design: "Creating an embedded computer system which meets its
M.C.S.E 3Chapitre 1
performance, cost and design time goals is a hardware/software co-design problem. The
design of the hardware and software components influence each other" [WOLF-94].
1.1.3 La nécessité d’un nouveau cycle de développement
Sachant que l’implantation matérielle permet d’obtenir des performances dynamiques plus
élevées qu’une implantation logicielle mais à un coût plus élevé, depuis l’avènement de la
technologie VLSI et des premiers microprocesseurs, les équipes de conception recherchent le
meilleur partitionnement matériel/logiciel permettant de respecter les contraintes de coûts et de
performances imposées. A l’époque où les possibilités d’implantation matérielle et logicielle
étaient limitées, l’expérience seule des concepteurs pouvait suffire à les guider vers une
solution proche de l’optimum.
Les progrès réalisés aussi bien dans le domaine du génie logiciel (environnement de
programmation, langages de haut niveau, méthodes et langages orientés objet) que dans le
domaine du génie matériel (technologie VLSI, outils de synthèse logique, outils de synthèse de
haut niveau) permettent de réaliser des systèmes de plus en plus complexes. Jusqu’à encore peu
de temps, la réalisation des systèmes