RESUME
Il existe actuellement des applications ayant des
caractéristiques différentes en termes de surface, vitesse et
consommation de puissance. De ce fait, la conception du circuit ou
système implémentant l'application concernée est sujette
à ses spécifications.
Une méthode de conception répondant à ces
critères serait de concevoir le circuit ou système à
partir d'aucun composant (?from scratch?) en veillant à satisfaire les
différentes contraintes au cours de la conception. Néanmoins, la
concurrence et la compétitivité féroces dans le
marché des systèmes électroniques font que cette
démarche présente l'inconvénient majeur de
nécessiter un temps de conception énorme, ou du moins, ne
répondant pas à la demande pressante du marché. Aussi,
cette méthodologie de conception (appelée dans la terminologie
anglo-saxonne ?full custom?) est écartée pour ce genre
d'applications commerciales.
Une autre méthode serait de constituer tout le circuit
(ou système) à partir de composants déjà
conçus, et ce, pour des fins de rapidité de conception.
Toutefois, ces composants de base ont certaines caractéristiques
électriques et pourraient, en les assemblant, ne pas répondre au
cahier des charges de l'application concernée. Alors comment
concevoir rapidement un système tout en veillant
à satisfaire les contraintes imposées ?
L'objet du travail décrit dans ce mémoire est une
contribution à répondre favorablement à la question
précédemment citée.
Mots-clés :
applications différentes, contraintes différentes,
rapidité de conception, satisfaction du cahier des charges.
INTRODUCTION GENERALE
La prolifération importante de systèmes
électroniques sur le marché actuel a engrangé une
concurrence et une compétitivité sans merci. C'est à la
compagnie qui mettra, la première, un produit sur le marché que
reviendra la plus grande part de ce marché. Il est donc tout à
fait primordial que la conception doive être rapide. Comme il a
été souligné dans le résumé, concevoir le
circuit (ou système) à partir de zéro (?from scratch?)
n'est certainement pas la voie indiquée. Il s'agira alors de constituer
le système à partir de composants déjà
conçus. Mais ces composants ont euxmêmes certaines
caractéristiques électriques. En les assemblant, il n'est pas
sûr de satisfaire le cahier des charges de l'application
concernée. Alors comment procéder pour que :
- la conception du système soit rapide,
- les contraintes de l'application concernée soient
satisfaites ?
Le travail décrit dans ce mémoire est une
contribution pour répondre favorablement au dilemme posé. Il
s'articule sur l'utilisation d'une bibliothèque de composants. Cette
bibliothèque se caractérise par le fait que pour tout composant
assurant une ou des fonctions données, plusieurs instances de ce
même composant existent. Ces instances, quoique assurant la même
fonctionnalité, ont toutefois des caractéristiques
électriques différentes. Le système à concevoir
étant composé d'une ou de plusieurs instances d'un certain nombre
ou de tous les composants (assurant des fonctions différentes) de la
bibliothèque, il s'agira a lors de combiner, judicieusement, ces
instances pour répondre au cahier des charges de l'application.
Il est clair qu'une combinaison manuelle de ces instances est
à abandonner, étant donné que le nombre de combinaisons
est extraordinaire: ceci prendrait plusieurs mois, et l'intérêt de
la rapidité de conception serait perdu. Nous verrons dans ce
mémoire, que même avec l'utilisation d'un processeur, le temps CPU
serait considérable si on considérait exhaustivement toutes les
combinaisons, puis de sélectionner celle qui répondrait le mieux
à l'application concernée. Il s'agirait alors de
développer une méthode approchée qui répondra
à la double problématique d'être polynomiale et de produire
une solution optimale ou pré-optimale.
C'est un défi assez important que l'on ne peut relever
qu'avec des méthodes rigoureuses, s'articulant sur des principes connus
(algorithmes génétiques ou évolutionnaires,
séparation et évaluation, recuit simulé, Tabu search,
etc,...). Il est très important d'indiquer que ce n'est pas le principe
choisi (algorithme génétique, ....) qui conduirait à une
solution de qualité, mais plutôt comment procéder à
l'initialisation, comment passer d'une solution à une autre, comment
éviter un traitement redondant (gaspillage inutile de temps CPU), ...
Des réponses à ces questions sont indiquées dans [1].
Toutefois, quoique l'algorithmique développé repose sur une bonne
heuristique ou une bonne méta-heuristique, comment ?mesurer? la
qualité de la solution qu'il a produite ? Ceci peut se faire moyennant
l'utilisation de benchmarks, données dont la
génération a été bien réfléchie (afin
de répondre à des cas réels dans le monde industriel) et
qui sont mises à la disposition (par téléchargement) des
laboratoires de recherche. Ainsi, les chercheurs pourraient comparer leurs
algorithmes sur les mêmes données. Cette
comparaison permettrait éventuellement d'améliorer l'algorithme
si la qualité de la solution qu'il produit est loin de valoir celles
produites par d'autres algorithmes. Néanmoins, de tels benchmarks
n'existent pas pour tout ce qu'on pourrait développer. Alors le seul
moyen de mesurer la qualité de notre solution serait de la comparer
à la solution exacte, c'està-dire celle obtenue après
l'exploration exhaustive dans l'espace des solutions. Evidemment,
l'exécution de la méthode exacte ne peut être envisageable
que pour des cas possibles, ceux engendrant un temps CPU raisonnable. Cette
méthode a surtout pour mérite d'indiquer qu'une méthode
approchée n'est pas bonne. En effet, si les méthodes
approchée et exacte produisent la même solution pour certains cas
(ceux rendant possibles l'exécution de la méthode exacte), qu'en
est-il pour les autres cas ? Toutefois, si la méthode approchée a
été développée en respectant certaines
règles de base [1] et si sa solution est identique ou proche de celle
produite par la méthode exhaustive pour de nombreux jeux d'essais, l'on
peut espérer que pour les cas où la méthode exacte n'est
pas envisageable, la solution obtenue serait fiable.
Du fait de l'indisponibilité de benchmarks, notre
travail a consisté à développer la méthode exacte
qui servira comme un moyen de mesure de la qualité de la solution
obtenue avec une méthode approchée (autre projet potentiel de fin
d'études).
Notre mémoire est organisé comme suit : Dans le
premier chapitre, nous apporterons quelques définitions qui faciliteront
au lecteur la compréhension des autres chapitres. Le deuxième
chapitre sera consacré à l'étude technique du
problème concerné, en particulier sa complexité
algorithmique, suivi par le troisième chapitre qui décrira nos
algorithmes, les structures de données, ainsi que les formats des
enregistrements des différents fichiers utilisés. Nous
présenterons les résultats obtenus au quatrième chapitre,
et terminerons notre mémoire par une conclusion au cinquième
chapitre. Enfin, ce dernier chapitre sera suivi par la citation des
références bibliographiques.
|