3.1 Fault system characteristics, linkage and correlation
3.1.2 Vestfjorden-Vanna fault complex
Différentes approches peuvent définir un système embarqué. Le point de vue système : Le conseil international en ingénierie système (INCOSE11) définit la discipline comme une approche et des moyens interdisciplinaires permettant la réalisation de systèmes réussis.
Dans « Embedded Systems Design » (Heath 2002) un système embarqué est défini comme étant spécifique à une fonction donnée contrairement au PC dont la fonction est définie par un module logiciel. Cette définition datée de 2002 a précédé l’évolution du système embarqué type qu’est le « smart phone » dont le logiciel détient une partie prépondérante croissante.
Parmi les domaines d’application des systèmes embarqués, on peut citer :
- Transport et défense : Avionique, automobile, ferroviaire (motorisation, contrôle de commande, freinage, vision, sécurité)
- L’électroménager (four, réfrigérateurs,…) - Téléphonie mobile (smart phones)
- Le multimédia (téléviseurs, caméras, équipements audio, consoles de jeux) - Biomédical (ECG, analyseurs ADN,…)
- Équipement informatique (disques durs, lecteurs DVD) et tablettes. - Outillages et équipements divers.
Avec la croissance de la complexité des systèmes embarqués, beaucoup se sont penchés sur la méthodologie adaptée à ces nouvelles contraintes. L’UML « Unified Modeling Language » (Langage de modélisation unifié) est couramment utilisé dans les projets logiciels. Avec sa possibilité de spécialisation en profils dédiés, on constate l’introduction de profils spécifiques aux systèmes temps réel puis aux systèmes embarqués.
(Martin et al. 2001) a présenté un profil appelé « Embedded UML » dont plusieurs traits sont hérités de l’UML temps réel et les concepts sont inspirés du co-design Matériel/Logiciel. Il a aussi appliqué une cartographie « mapping » qui transpose une conception UML pour générer une implémentation matérielle et logicielle exécutable sur une plate-forme spécifique. L’approche est très enthousiaste prétendant que contrairement aux générateurs UML qui créent un code non optimisé, celui-là a vocation de l’être en utilisant les bus et mémoires spécifiques, ainsi que les vraies interruptions et DMA (Direct Memory Access). Par contre, il indique que ceci ne sera pas automatisé au début, mais que l’utilisateur doit intervenir manuellement pour configurer le « mapping ».
11
Chapitre 5
92
(Martin 2002) apporte une vision plus réaliste et pertinente, il analyse les différents profils actuels de l’UML et conclut que de futurs travaux sur la méthodologie sont encore nécessaires avant de pouvoir appliquer l’UML au concept qu’il appelle « UML Platform » qui considère les spécificités des systèmes temps réel et systèmes embarqués.
L’adaptation a continué avec l’UML 2.0 avec lequel (Kukkala et al. 2005) a créé le profil TUT (avec TUT étant les initiales de « Tampere University of Technology »). Le profil TUT est un exemple parmi tant d’autres qui essaient d’introduire des règles de conceptions spécifiques à des applications ou des plates-formes. Bénéficiant de l’expertise chez Nokia12, cela illustre la divergence d’un standard UML, au cas par cas. Chacun disposant de ses propres outils et méthodes, par-dessus lesquels il rajoute un profil UML qui lui reste spécifique.
Suite à ces différentes initiatives de variations à travers des profils, l’OMG13 (Object
Management Group) à la base de la spécification d’UML a collaboré avec d’autres groupes pour spécifier une extension d’UML appelée
SysML
adopté en 2005 avec la dernière version SysML 1.3 qui date de 2012.Dans sa présentation14 Pascal Roques affiche SysML comme un remplacement de la méthodologie SADT « Structured Analysis and Design Technique ».
Dans la conception des systèmes, on passe naturellement par plusieurs phases de modélisations avec des niveaux d’abstraction différents. De la simple idée exprimée en une phrase, au schéma explicatif avec des boîtes, restreint à une seule vue, et ainsi de suite jusqu’à l’implémentation finale qui est le système lui-même et non pas un modèle simplifié du système. On peut admettre dans ce cas que la modélisation fait partie de la conception du système. On remarque
néanmoins, qu’à partir d’un certain niveau d’abstraction, on essaie de formuler une représentation unique du système. Cela évite d’avoir des divergences entre les différents niveaux d’abstraction. Le souhait est d’avoir idéalement des outils de modélisation, qui permettent de faire le lien entre ces différents niveaux d’abstraction et la conception en bas niveau, avec le bonus d’avoir le maximum d’automatisation et de génération de code et de structures. Ce souhait a fait l’objet de beaucoup d’efforts qui essaient de faire de l’outil de modélisation UML ou SysML, un outil de conception qui permet le passage transparent à l’implémentation. D’un autre côté, ceux qui ont de l’expérience avec les outils bas niveau comme le C, le C++ et les langages HDL (Hardware Description Langage) trouvent le passage direct du modèle à la génération du code contraignant à l’usage et mal adapté aux besoins d’optimisation.
D’autres alternatives émanant du cadre industriel comme à titre d’exemple chez
STMicroelectronics15, ont essayé de combiner différentes approches pour combler le vide entre les étapes de conception. (Riccobene et al. 2005) combine UML 2.0 avec le SystemC. Leur profil UML représente les caractéristiques structurelles et comportementales permettant une modélisation de haut niveau avec une traduction directe en SystemC. Le SystemC a pour cadre plus général le TLM (Transaction Level Modeling). (Frank Ghenassia 2005) explique dans ce livre l’intérêt et la place du SystemC. Après la révolution entre les années 1980 et 1990 qui élève l’abstraction du niveau de la schématique des portes logiques au niveau RTL (Register Transfer- Level), le SystemC est une initiative qui part du bas niveau pour élever l’abstraction RTL à un niveau supérieur. Après une décennie de recherche de niveau d’abstraction plus haut, le SystemC avec ces codes « open source » en C++ a émergé comme le moyen adéquat pour rapprocher les équipes de développement matériel et logiciel en un modèle de référence 12 http://www.nokia.com 13 http://www.omg.org 14 http://www.irit.fr/SysML/lib/exe/fetch.php?media=journee_sysml_france:101206_desadtasysml.pdf 15 http://www.st.com
Chapitre 5
93
unique. Cela introduit une réduction du temps de mise sur le marché et une amélioration de la qualité des systèmes embarqués.
Rappelons que le SystemC est défini par l’OSCI (Open SystemC Initiative). Même s’il est fondé sur des librairies en C++, il est considéré comme un langage en soi, avec des compilateurs et des simulateurs. Il a des similitudes avec les langages VHDL et Verilog, mais avec plus de complexité. Il est moins optimal pour la simulation RTL, mais il est en forte progression de version en
version. Le dernier standard IEEE 1666-2011 inclut l’abstraction des ports, de la communication, des processus dynamiques et des notifications d’événements.
Le SystemC a pour principale vocation la modélisation des systèmes et la vérification
fonctionnelle en comparant le SystemC avec le système final implémenté (DUT Device under Test en HDL Hardware Description Language). Un système modélisé en SystemC ne garantit en rien la possibilité de pouvoir l’implémenter sur telle ou telle plate-forme. L’implémentation est donc une autre problématique. Le SystemC joue aussi le rôle d’outil de synthèse de haut niveau, mais ceci reste restreint au même cadre de synthèse du code C en HDL qui est encore en phase d’étude expérimentale et en maturation. Même si des outils commerciaux existent pour de telles synthèses, ils sont hors de prix pour les petits et moyens budgets et leur usage est loin de couvrir toutes les subtilités de l’optimisation des langages HDL. Rappelons que cette complexité vient du contraste entre le C++ et les HDL. Tout programme C++ compilable peut s’exécuter, ce qui n’est pas du tout le cas des HDL pour lesquels il faut avoir une connaissance préalable des structures synthétisables.
En ce qui concerne non pas la modélisation mais la synthèse en haut niveau, les constructeurs de composants FPGA Altera et Xilinx disposent de leurs propres approches. Elle part principalement des modules matériels reconfigurables et permet à des outils de synthèse en haut niveau simplement de les interconnecter. Tous les cas particuliers sont pris en considération pour optimiser l’usage des ressources correspondant à la fonction souhaitée. Simulink sur Matlab nous paraît l’environnement qui fait le meilleur compromis entre facilité d’utilisation,
conceptualisation du projet en imbrication de boîtes et optimisation de l’empreinte synthétisée automatiquement. Néanmoins, pour plus de flexibilité, on peut tout à fait se limiter aux outils de haut niveau tels que SOPC Builder pour Altera et System Generator pour Xilinx. Une dernière alternative en cours de maturation est l’utilisation de noyaux de calculs avec OpenCL. Une technique à la base adaptée pour les GPU multicores, le langage OpenCL lui a donné plus de flexibilité pour pouvoir l’implémenter tout aussi bien sur des architectures GPU que CPU multicores. Le constructeur Altera a étendu l’usage de ce langage pour l’exécuter sur une architecture FPGA.