Transformation de programmes SystemC vers langage de vérification

De Ensiwiki.

Aller à : Navigation, rechercher


Sommaire

  • 1 Transformation de programmes SystemC vers langage de vérification
    • 1.1 Contexte scientifique et technologique
    • 1.2 Compétences attendues et compétences fournies
    • 1.3 Sujet
    • 1.4 Cadre de travail et perspectives

Transformation de programmes SystemC vers langage de vérification

Labo VERIMAG
Equipe SYNCHRONE
Encadrants Kevin.Marquet@imag.fr,Matthieu.Moy@imag.fr

Contexte scientifique et technologique

Quiconque a programmé avec du parallélisme explicite, notamment des threads, sait qu'il est très facile de faire des erreurs aboutissant aux redoutés deadlocks et race conditions. S'il peut être tolérable de voir son navigateur Web « planter » de temps en temps pour de tels motifs, ces dysfonctionnements peuvent avoir des conséquences plus graves, par exemple la perte de sondes spatiales de la NASA...

Il est donc très intéressant de pouvoir démontrer automatiquement des propriétés sur des programmes parallèles (par exemple, absence de deadlocks). On s'intéresse ici à la vérification de programmes écrits en SystemC, une librairie C++ très utilisée pour la conception de systèmes embarqués. Cette librairie permet donc d'écrire des systèmes embarqués sous la forme de programmes multi-threads C++ en utilisant certaines primitives : attente sur du temps, attente/notification d'évènements par exemple.

Plusieurs outils tels que CADP ou SPIN permettent de vérifier automatiquement des propriétés mais ils vérifient des programmes écrits dans un langage bien particulier, qui n'est bien sûr pas SystemC. On cherche donc à transformer un programme SystemC dans un programme écrit dans le langage d'entrée de l'outil de vérification.

Cette tâche est difficile car, pour être efficace, elle demande de reconnaître les primitives SystemC, de les transformer efficacement dans le langage de l'outil cible. Aujourd'hui, on dispose d'un front-end, capable de charger un programme SystemC, d'en reconnaître les primitives SystemC. Le sujet de ce TER est maintenant à écrire le back-end : transformer la forme intermédiaire obtenue en un programme vérifiable par l'outil de vérification. Le choix de cet outil sera le résultat d'une petite bibliographie et de discussions avec les encadrants de ce projet.

Il s'agit d'un projet aussi bien orienté recherche qu'implémentation.

Compétences attendues et compétences fournies

Il est nécessaire de savoir programmer en C++ (par contre, inutile d'être un expert en fonctionnalités ésotériques du langage). Un étudiant avec de bonnes bases en C et en Java pourra apprendre le C++ pendant le TER.

Ce sujet permettra d'approfondir des notions vues en compilation ou d'autres cours (simulation, compilation, notions de calcul parallèle et de synchronisation vues en SEPC...), d'avoir un premier contact avec la vérification de programmes, la conception de systèmes embarqués, et plus généralement avec la recherche.

Pour les étudiants en filière SLE, ce TER serait une préparation idéale au module « Modélisation transactionnelle des systèmes sur puces » en 3A.

Sujet

  1. Faire connaissance avec SystemC
  2. Après une rapide bibliographie, choisir un outil de vérification efficace
  3. Définir une représentation dans le langage de cet outil vérification
  4. Définir les transformations possibles des instructions SystemC vers le langage de vérification
  5. On pourra comparer l'efficacité de cette approche aux travaux existants

Il s'agit d'avancer par petits bouts en travaillant d'abord sur une instruction donnée et en regardant comment elle peut être représentée dans le langage de vérification, puis en considérant d'autres instructions.

Bien entendu, les dernières étapes sont « optionnelles » au sens qu'on ne peut prévoir d'avance les éventuelles difficultés rencontrées !

Cadre de travail et perspectives

Matthieu Moy est enseignant Ensimag et connaît notamment bien le module de compilation. Kevin Marquet est post-doctorant et travaille sur la conception et la vérification de systèmes embarqués. Le travail se fera en coopération forte avec ce dernier. La familiarisation avec les problématiques et les outils utilisés sera très utile :

  1. si le stagiaire envisage de poursuivre dans une filière recherche vers la vérification de circuits ou de logiciels par analyse statique
  2. si le stagiaire envisage de travailler sur la conception de systèmes embarqués
Récupérée de « http://ensiwiki.ensimag.fr/index.php/Transformation_de_programmes_SystemC_vers_langage_de_v%C3%A9rification »
Catégorie : TER
Affichages
  • Page
  • Discussion
  • Voir le texte source
  • Historique
Outils personnels
  •  
  • Connexion
Actualité
  • Soutenances de PFE
  • Projet système
  • Projets spécialité
  • Lexique franco-anglais
  • Stage Unix de rentrée
  • Projet C
  • Plannings des stages
Navigation
Logo Ensimag
  • Accueil
  • FAQ
  • Mode d'emploi
  • Droit d'auteur
  • Modifications récentes
  • Page au hasard
Boîte à outils
  • Pages liées
  • Suivi des pages liées
  • Pages spéciales
  • Version imprimable
  • Lien historique
  • Principaux contributeurs
Powered by MediaWiki
Attribution-Share Alike 3.0 Unported
  • Dernière modification de cette page le 16 octobre 2009 à 14:28.
  • Cette page a été consultée 438 fois.
  • Contenu disponible sous Attribution-Share Alike 3.0 Unported.
  • Politique de confidentialité
  • À propos de Ensiwiki
  • Avertissements