R´esum´e
Avec le d´eveloppement des terminaux mobiles, les syst`emes embarqu´es sont de plus en plus
utilis´es. Avec les progr`es rapides de la technologie, l’architecture des composants programmables
constituant ces syst`emes, processeurs, co-processeurs, m´emoires, p´eriph´eriques, devient de plus
en plus complexe. `
A l’oppos´e, la dur´ee de vie de ces syst`emes ainsi que le temps de mise en vente
sur le march´e ne cesse de diminuer. Par cons´equent, nous constatons l’augmentation des besoins
d’automatisation de la conception de ces composants programmables de plus en plus sophistiqu´es
et complexes.
La simulation du mat´eriel est un ´el´ement important dans la conception des syst`emes em-
barqu´es. Un simulateur peut ˆetre ´ecrit `a la main (par exemple en utilisant le langage C++) mais
cette tˆache se r´ev`ele complexe, lente et sujette aux erreurs. Une alternative est de le produire
automatiquement en se basant sur un Langage de Description d’Architecture Mat´erielle (ADL).
Dans ce cas, plusieurs avantages se pr´esentent : la mise en œuvre et les modifications de la plate-
forme sont plus rapides et la mise au point du simulateur, dans la mesure o`u il peut ˆetre g´en´er´e
automatiquement, est aussi plus rapide puisqu’une v´erification de la coh´erence de l’architecture
peut ˆetre faite `a partir de la description.
Un langage de description d’architecture mat´erielle permet de d´ecrire tout ou partie des
diff´erents composants mat´eriels qui forment un calculateur voire un ensemble de calculateurs
communiquant au travers d’un r´eseau. Traditionnellement, les langages de description d’archi-
tecture ont pour objectif l’exploration de l’espace de conception. Ils permettent de d´ecrire le jeu
d’instructions du microprocesseur et l’architecture associ´ee afin de produire des simulateurs du
processeur et des outils logiciels comme un assembleur et un compilateur. Nous pouvons citer
entre autres nML (ADL orient´e jeu d’instructions), MIMOLA (ADL orient´e structure), LISA et
EXPRESSION (ADLs mixtes).
Cette th`ese propose un nouveau langage de description d’architecture mat´erielle HARMLESS
(Hardware ARchitecture Modeling Language for Embedded Software Simulation). C’est un ADL
mixte ; il permet de d´ecrire d’une mani`ere concise les diff´erentes parties d’un processeur : le jeu
d’instructions et la structure interne (les composants mat´eriels et le pipeline). L’originalit´e de
HARMLESS est le d´ecouplage de la description du jeu d’instructions de la sp´ecification de la
micro-architecture (pipeline et concurrences d’acc`es aux diff´erents composants mat´eriels). L’une
des cons´equences est de permettre la g´en´eration des deux types de simulateurs ind´ependamment
et simultan´ement : le simulateur de jeu d’instructions (ISS) permettant la v´erification fonction-
nelle du processeur et le simulateur pr´ecis au cycle pr`es (CAS) fournissant des informations
temporelles (en nombre de cycles) sur l’ex´ecution de ce dernier. Une autre cons´equence est une
construction incr´ementale de la description : 4 vues s´epar´ees permettent de d´ecrire d’une part le
jeu d’instructions (3 vues pour la syntaxe, le format binaire et la s´emantique) et d’autre part la
micro-architecture (une vue) du processeur. Ceci facilite la r´eutilisation du code sur une nouvelle
architecture cible (les jeux d’instructions ´evoluent beaucoup moins vite que la structure interne
d’un processeur). De nombreuses descriptions de processeur ont ´et´e r´ealis´ees pour prouver la
iii