Formal Verification of Transformations on Abstract Clocks in Synchronous Compilers - Archive ouverte HAL Accéder directement au contenu
Rapport (Rapport De Recherche) Année : 2012

Formal Verification of Transformations on Abstract Clocks in Synchronous Compilers

Résumé

Translation validation was introduced in the 90's by Pnueli et al. as a technique to formally verify correctness of code generated from the data-flow synchronous language Signal. Rather that certifying the code generator (by writing it entirely using a theorem prover) or exhaustively qualifying it (by obeying to the 27 documentations required as per the DO-178C), translation validation provides a scalable approach to assess the functional correctness of generated code. By revisiting transition validation, which in the 90's suffered from the limitations of theorem proving and model checking techniques available then, we aim at developing a scalable and flexible approach that can apply to an existing 500k-lines implementation of Signal compiler, and handle large-scale, possibly automatically generated Signal programs using efficient SAT/SMT-solving libraries. We implement translation validation in step-by-step fashion, by proving each transformation from the initial step, until the latest step of actual C-code generation. In this work, we focus on proving the preservation of timing properties during the compilation process. We define a correct transformation relation between two formal representations of source and transformed programs, called clock models. Then we use an SMT-solver (Satisfiability Modulo Theory) for checking this relation.
Translation validation a été introduit dans les années 90 par Pnueli et al. Comme une technique pour vérifier formellement exactitude de code généré à partir de la langue synchrone de donnée de flux Signal. Plutôt que de certifier le générateur de code (en l'écrivant entièrement à l'aide d'un démonstrateur théorème ) ou de façon exhaustive le qualifiant (en obéissant aux 27 documentations requises selon la norme DO-178C), la translation validation fournit une approche évolutive pour évaluer l'exactitude fonctionnelle du code généré. En re-visitant la translation validation, qui dans les années 90 a souffert des limitations de la démonstration de théorèmes et de model checking techniques disponibles alors, nous visons à développer une approche évolutive et flexible qui peut s'appliquer à un existant 500k lignes de la mise en œuvre de Signal compilateur, et de traiter à grande échelle, peut-être générés automatiquement Signal programmes efficaces en utilisant les bibliothèques de SAT/SMT-solving. Nous mettons en œuvre la translation validation dans l'étape-par-étape de la mode, en prouvant chaque transformation de l'étape initiale, jusqu'à ce que la dernière étape de réelle C-génération de code. Dans ce travail, nous nous concentrons sur la préservation de prouver les propriétés de minutage lors de la compilation. Nous définissons une transformation correcte relation entre deux représentations formelles de source et des programmes transformées, appelées modèles d'horloge. Ensuite, nous utilisons un SMT-solver(satisfiabilité Modulo Theory) permettant de vérifier cette relation.
Fichier principal
Vignette du fichier
RR_8064.pdf (850.56 Ko) Télécharger le fichier
Origine : Fichiers produits par l'(les) auteur(s)

Dates et versions

hal-00730926 , version 1 (11-09-2012)
hal-00730926 , version 2 (29-11-2012)
hal-00730926 , version 3 (27-12-2012)
hal-00730926 , version 4 (18-01-2013)
hal-00730926 , version 5 (30-01-2013)

Identifiants

  • HAL Id : hal-00730926 , version 3

Citer

van Chan Ngo, Jean-Pierre Talpin, Paul Le Guernic. Formal Verification of Transformations on Abstract Clocks in Synchronous Compilers. [Research Report] RR-8064, 2012. ⟨hal-00730926v3⟩

Collections

INRIA-RRRT
387 Consultations
168 Téléchargements

Partager

Gmail Facebook X LinkedIn More