extraction de contrats 42 à partir de programmes...
TRANSCRIPT
![Page 1: Extraction de contrats 42 à partir de programmes …matthieu-moy.fr/spip/IMG/pdf/TER0910_soutenance_Delahaye...Traitement des branchements Une difficulté est apparue lorsque le programme](https://reader033.vdocuments.pub/reader033/viewer/2022042909/5f3a6b54f24fe777fc78b2d0/html5/thumbnails/1.jpg)
Extraction de contrats 42
à partir de programmes SystemC
Pierre-Yves Delahaye
Mardi 25 mai 2010
Tuteurs
Matthieu Moy
Kévin Marquet
![Page 2: Extraction de contrats 42 à partir de programmes …matthieu-moy.fr/spip/IMG/pdf/TER0910_soutenance_Delahaye...Traitement des branchements Une difficulté est apparue lorsque le programme](https://reader033.vdocuments.pub/reader033/viewer/2022042909/5f3a6b54f24fe777fc78b2d0/html5/thumbnails/2.jpg)
Plan de la soutenance
Introduction
◦ Problématique
◦ Une réponse : SystemC
◦ Le formalisme 42
◦ Contribution du TER
Algorithmes d’extraction de contrats 42
◦ Traitement des wait et notify
◦ Traitement des branchements
◦ Exemple de contrat généré par l’outil développé
Implémentation
◦ La chaîne d’extraction
◦ La forme intermédiaire
◦ Comment fonctionne réellement le backend ?
Conclusion
2
![Page 3: Extraction de contrats 42 à partir de programmes …matthieu-moy.fr/spip/IMG/pdf/TER0910_soutenance_Delahaye...Traitement des branchements Une difficulté est apparue lorsque le programme](https://reader033.vdocuments.pub/reader033/viewer/2022042909/5f3a6b54f24fe777fc78b2d0/html5/thumbnails/3.jpg)
INTRODUCTIONIntroduction
Algorithmes
d’extraction
de contrats 42
Implémentation
Conclusion
3
![Page 4: Extraction de contrats 42 à partir de programmes …matthieu-moy.fr/spip/IMG/pdf/TER0910_soutenance_Delahaye...Traitement des branchements Une difficulté est apparue lorsque le programme](https://reader033.vdocuments.pub/reader033/viewer/2022042909/5f3a6b54f24fe777fc78b2d0/html5/thumbnails/4.jpg)
Problématique
Les besoins de l’industrie : Réduire le coût et le temps de développement des
systèmes embarqués
Faire face à l’augmentation de la complexité de ces
systèmes
Introduction
Problématique
Une réponse :
SystemC
Le formalisme 42
Contribution du
TER
Algorithmes
d’extraction
de contrats 42
Implémentation
Conclusion
4
![Page 5: Extraction de contrats 42 à partir de programmes …matthieu-moy.fr/spip/IMG/pdf/TER0910_soutenance_Delahaye...Traitement des branchements Une difficulté est apparue lorsque le programme](https://reader033.vdocuments.pub/reader033/viewer/2022042909/5f3a6b54f24fe777fc78b2d0/html5/thumbnails/5.jpg)
Une réponse : SystemC
Qu’est-ce que SystemC : Une bibliothèque C++
Permet une modélisation modulaire de haut niveau
des systèmes matériels
Deux modules SystemC qui communiquent
Introduction
Problématique
Une réponse :
SystemC
Le formalisme 42
Contribution du
TER
Algorithmes
d’extraction
de contrats 42
Implémentation
Conclusion
5
![Page 6: Extraction de contrats 42 à partir de programmes …matthieu-moy.fr/spip/IMG/pdf/TER0910_soutenance_Delahaye...Traitement des branchements Une difficulté est apparue lorsque le programme](https://reader033.vdocuments.pub/reader033/viewer/2022042909/5f3a6b54f24fe777fc78b2d0/html5/thumbnails/6.jpg)
Pourquoi utiliser SystemC :
Propriétés de SystemC
Haut niveau
d’abstraction
Développement
modulaireL
es
avan
tages Tests du matériel
possibles très tôt
Travail en équipe
facilité
Développement du
logiciel en parallèle
Réutilisation possible
de modules déjà
conçus
SystemC s’est donc imposé comme un standard
Introduction
Problématique
Une réponse :
SystemC
Le formalisme 42
Contribution du
TER
Algorithmes
d’extraction
de contrats 42
Implémentation
Conclusion
6
![Page 7: Extraction de contrats 42 à partir de programmes …matthieu-moy.fr/spip/IMG/pdf/TER0910_soutenance_Delahaye...Traitement des branchements Une difficulté est apparue lorsque le programme](https://reader033.vdocuments.pub/reader033/viewer/2022042909/5f3a6b54f24fe777fc78b2d0/html5/thumbnails/7.jpg)
Le formalisme 42 (T. Bouhadiba, F. Maraninchi)
Introduction
Problématique
Une réponse :
SystemC
Le formalisme 42
Contribution du
TER
Algorithmes
d’extraction
de contrats 42
Implémentation
Conclusion
Modélisation 42 d’un système Des composants (correspondent aux modules SystemC)
Des contrats (un pour chaque composant)
Un contôleur
Un exemple de modélisation 427
![Page 8: Extraction de contrats 42 à partir de programmes …matthieu-moy.fr/spip/IMG/pdf/TER0910_soutenance_Delahaye...Traitement des branchements Une difficulté est apparue lorsque le programme](https://reader033.vdocuments.pub/reader033/viewer/2022042909/5f3a6b54f24fe777fc78b2d0/html5/thumbnails/8.jpg)
Les contrats 42
Un besoin :
Pouvoir réutiliser des modules SystemC, et s’assurer
qu’ils se synchroniseront correctement avec le reste du
système
Ce qu’apportent les contrats 42 :
Focalisation sur les entrées/sorties des composants
un contrat 42 est un modèle comportemental d’un
composant, vis-à-vis de l’extérieur
on a le « mode d’emploi » d’un composant
Introduction
Problématique
Une réponse :
SystemC
Le formalisme 42
Contribution du
TER
Algorithmes
d’extraction
de contrats 42
Implémentation
Conclusion
8
![Page 9: Extraction de contrats 42 à partir de programmes …matthieu-moy.fr/spip/IMG/pdf/TER0910_soutenance_Delahaye...Traitement des branchements Une difficulté est apparue lorsque le programme](https://reader033.vdocuments.pub/reader033/viewer/2022042909/5f3a6b54f24fe777fc78b2d0/html5/thumbnails/9.jpg)
Un exemple de contrat 42
Introduction
Problématique
Une réponse :
SystemC
Le formalisme 42
Contribution du
TER
Algorithmes
d’extraction
de contrats 42
Implémentation
Conclusion
9
Un graphe avec :
des états
des transitions
Une transition : {data_req} control_inputs / control_outputs {data_prod}
![Page 10: Extraction de contrats 42 à partir de programmes …matthieu-moy.fr/spip/IMG/pdf/TER0910_soutenance_Delahaye...Traitement des branchements Une difficulté est apparue lorsque le programme](https://reader033.vdocuments.pub/reader033/viewer/2022042909/5f3a6b54f24fe777fc78b2d0/html5/thumbnails/10.jpg)
Contribution du TER
Ce qu’on avait avant le TER :
◦ La possibilité de concevoir des systèmes constitués
de modules SystemC
◦ La possibilité de modéliser le comportement au
niveau entrées/sorties de ces modules SystemC grâce
aux contrats 42
Ce qui manquait et qui a été fait :
Algorithmes d’extraction de contrats 42 à partir de
modules SystemC
Introduction
Problématique
Une réponse :
SystemC
Le formalisme 42
Contribution du
TER
Algorithmes
d’extraction
de contrats 42
Implémentation
Conclusion
10
![Page 11: Extraction de contrats 42 à partir de programmes …matthieu-moy.fr/spip/IMG/pdf/TER0910_soutenance_Delahaye...Traitement des branchements Une difficulté est apparue lorsque le programme](https://reader033.vdocuments.pub/reader033/viewer/2022042909/5f3a6b54f24fe777fc78b2d0/html5/thumbnails/11.jpg)
ALGORITHMES
D’EXTRACTION DE
CONTRATS 42
Introduction
Algorithmes
d’extraction
de contrats 42
Implémentation
Conclusion
11
![Page 12: Extraction de contrats 42 à partir de programmes …matthieu-moy.fr/spip/IMG/pdf/TER0910_soutenance_Delahaye...Traitement des branchements Une difficulté est apparue lorsque le programme](https://reader033.vdocuments.pub/reader033/viewer/2022042909/5f3a6b54f24fe777fc78b2d0/html5/thumbnails/12.jpg)
Traitement des wait et notify
void module1::T1(){
int a=0;
e1.notify();
e2.notify();
wait(e1);
wait(e2);
a++;
}
Evénements
attendus
Evénements
notifiés
Introduction
Algorithmes
d’extraction
de contrats 42
Traitement des wait et notify
Traitement des
branchements
Exemple de
contrat généré
par l’outil
développé
Implémentation
Conclusion
12
![Page 13: Extraction de contrats 42 à partir de programmes …matthieu-moy.fr/spip/IMG/pdf/TER0910_soutenance_Delahaye...Traitement des branchements Une difficulté est apparue lorsque le programme](https://reader033.vdocuments.pub/reader033/viewer/2022042909/5f3a6b54f24fe777fc78b2d0/html5/thumbnails/13.jpg)
Traitement des wait et notify
void module1::T1(){
int a=0;
e1.notify();
e2.notify();
wait(e1);
wait(e2);
a++;
}
Evénements
attendus
Evénements
notifiés
e1
Introduction
Algorithmes
d’extraction
de contrats 42
Traitement des wait et notify
Traitement des
branchements
Exemple de
contrat généré
par l’outil
développé
Implémentation
Conclusion
13
![Page 14: Extraction de contrats 42 à partir de programmes …matthieu-moy.fr/spip/IMG/pdf/TER0910_soutenance_Delahaye...Traitement des branchements Une difficulté est apparue lorsque le programme](https://reader033.vdocuments.pub/reader033/viewer/2022042909/5f3a6b54f24fe777fc78b2d0/html5/thumbnails/14.jpg)
Traitement des wait et notify
void module1::T1(){
int a=0;
e1.notify();
e2.notify();
wait(e1);
wait(e2);
a++;
}
Evénements
attendus
Evénements
notifiés
e1
e2
Introduction
Algorithmes
d’extraction
de contrats 42
Traitement des wait et notify
Traitement des
branchements
Exemple de
contrat généré
par l’outil
développé
Implémentation
Conclusion
14
![Page 15: Extraction de contrats 42 à partir de programmes …matthieu-moy.fr/spip/IMG/pdf/TER0910_soutenance_Delahaye...Traitement des branchements Une difficulté est apparue lorsque le programme](https://reader033.vdocuments.pub/reader033/viewer/2022042909/5f3a6b54f24fe777fc78b2d0/html5/thumbnails/15.jpg)
Traitement des wait et notify
void module1::T1(){
int a=0;
e1.notify();
e2.notify();
wait(e1);
wait(e2);
a++;
}
Evénements
attendus
Evénements
notifiés
e1
Introduction
Algorithmes
d’extraction
de contrats 42
Traitement des wait et notify
Traitement des
branchements
Exemple de
contrat généré
par l’outil
développé
Implémentation
Conclusion
15
![Page 16: Extraction de contrats 42 à partir de programmes …matthieu-moy.fr/spip/IMG/pdf/TER0910_soutenance_Delahaye...Traitement des branchements Une difficulté est apparue lorsque le programme](https://reader033.vdocuments.pub/reader033/viewer/2022042909/5f3a6b54f24fe777fc78b2d0/html5/thumbnails/16.jpg)
Traitement des wait et notify
void module1::T1(){
int a=0;
e1.notify();
e2.notify();
wait(e1);
wait(e2);
a++;
}
Evénements
attendus
Evénements
notifiés
e2
Introduction
Algorithmes
d’extraction
de contrats 42
Traitement des wait et notify
Traitement des
branchements
Exemple de
contrat généré
par l’outil
développé
Implémentation
Conclusion
16
![Page 17: Extraction de contrats 42 à partir de programmes …matthieu-moy.fr/spip/IMG/pdf/TER0910_soutenance_Delahaye...Traitement des branchements Une difficulté est apparue lorsque le programme](https://reader033.vdocuments.pub/reader033/viewer/2022042909/5f3a6b54f24fe777fc78b2d0/html5/thumbnails/17.jpg)
Traitement des wait et notify
void module1::T1(){
int a=0;
e1.notify();
e2.notify();
wait(e1);
wait(e2);
a++;
}
Evénements
attendus
Evénements
notifiés
e2
Introduction
Algorithmes
d’extraction
de contrats 42
Traitement des wait et notify
Traitement des
branchements
Exemple de
contrat généré
par l’outil
développé
Implémentation
Conclusion
17
![Page 18: Extraction de contrats 42 à partir de programmes …matthieu-moy.fr/spip/IMG/pdf/TER0910_soutenance_Delahaye...Traitement des branchements Une difficulté est apparue lorsque le programme](https://reader033.vdocuments.pub/reader033/viewer/2022042909/5f3a6b54f24fe777fc78b2d0/html5/thumbnails/18.jpg)
Traitement des wait et notify
void module1::T1(){
int a=0;
e1.notify();
e2.notify();
wait(e1);
wait(e2);
a++;
}
Evénements
attendus
Evénements
notifiés
Return Inst
Introduction
Algorithmes
d’extraction
de contrats 42
Traitement des wait et notify
Traitement des
branchements
Exemple de
contrat généré
par l’outil
développé
Implémentation
Conclusion
18
![Page 19: Extraction de contrats 42 à partir de programmes …matthieu-moy.fr/spip/IMG/pdf/TER0910_soutenance_Delahaye...Traitement des branchements Une difficulté est apparue lorsque le programme](https://reader033.vdocuments.pub/reader033/viewer/2022042909/5f3a6b54f24fe777fc78b2d0/html5/thumbnails/19.jpg)
Traitement des branchements
Une difficulté est apparue lorsque le programme
SystemC comporte plusieurs blocs if..then..else consécutifs.
Il y a deux stratégies possibles dans ce cas là :
l’une conduit à une explosion du nombre d’états
du contrat 42
l’autre augmente la granularité par rapport au
programme SystemC
Introduction
Algorithmes
d’extraction
de contrats 42
Traitement des wait et notify
Traitement des
branchements
Exemple de
contrat généré
par l’outil
développé
Implémentation
Conclusion
19
![Page 20: Extraction de contrats 42 à partir de programmes …matthieu-moy.fr/spip/IMG/pdf/TER0910_soutenance_Delahaye...Traitement des branchements Une difficulté est apparue lorsque le programme](https://reader033.vdocuments.pub/reader033/viewer/2022042909/5f3a6b54f24fe777fc78b2d0/html5/thumbnails/20.jpg)
void module1::T1(){
int a=0;
int b=0;
if(a==0){
… // IF1
}
else{
… // ELSE1
}
if(b==0){
… // IF2
}
else{
… // ELSE2
}
…
}
Explosion du nombre d’états :
nexplosion = nwait x 2n-1
Introduction
Algorithmes
d’extraction
de contrats 42
Traitement des wait et notify
Traitement des
branchements
Exemple de
contrat généré
par l’outil
développé
Implémentation
Conclusion
20
![Page 21: Extraction de contrats 42 à partir de programmes …matthieu-moy.fr/spip/IMG/pdf/TER0910_soutenance_Delahaye...Traitement des branchements Une difficulté est apparue lorsque le programme](https://reader033.vdocuments.pub/reader033/viewer/2022042909/5f3a6b54f24fe777fc78b2d0/html5/thumbnails/21.jpg)
void module1::T1(){
int a=0;
int b=0;
if(a==0){
… // IF1
}
else{
… // ELSE1
}
if(b==0){
… // IF2
}
else{
… // ELSE2
}
…
}
Augmentation de la granularité :
ngranularité = n + nwait
Introduction
Algorithmes
d’extraction
de contrats 42
Traitement des wait et notify
Traitement des
branchements
Exemple de
contrat généré
par l’outil
développé
Implémentation
Conclusion
21
![Page 22: Extraction de contrats 42 à partir de programmes …matthieu-moy.fr/spip/IMG/pdf/TER0910_soutenance_Delahaye...Traitement des branchements Une difficulté est apparue lorsque le programme](https://reader033.vdocuments.pub/reader033/viewer/2022042909/5f3a6b54f24fe777fc78b2d0/html5/thumbnails/22.jpg)
Quelle stratégie choisir ?
Les deux stratégies sont intéressantes.
On choisit d’implémenter la deuxième.
Introduction
Algorithmes
d’extraction
de contrats 42
Traitement des wait et notify
Traitement des
branchements
Exemple de
contrat généré
par l’outil
développé
Implémentation
Conclusion
22
![Page 23: Extraction de contrats 42 à partir de programmes …matthieu-moy.fr/spip/IMG/pdf/TER0910_soutenance_Delahaye...Traitement des branchements Une difficulté est apparue lorsque le programme](https://reader033.vdocuments.pub/reader033/viewer/2022042909/5f3a6b54f24fe777fc78b2d0/html5/thumbnails/23.jpg)
void module1::T1(){
int a=0;
e1.notify();
if(a==0){
wait(e2);
}
else{
e2.notify();
}
wait(e2);
a++;
}
Evénements
attendus
Evénements
notifiés
Introduction
Algorithmes
d’extraction
de contrats 42
Traitement des wait et notify
Traitement des
branchements
Exemple de
contrat généré
par l’outil
développé
Implémentation
Conclusion
23
![Page 24: Extraction de contrats 42 à partir de programmes …matthieu-moy.fr/spip/IMG/pdf/TER0910_soutenance_Delahaye...Traitement des branchements Une difficulté est apparue lorsque le programme](https://reader033.vdocuments.pub/reader033/viewer/2022042909/5f3a6b54f24fe777fc78b2d0/html5/thumbnails/24.jpg)
void module1::T1(){
int a=0;
e1.notify();
if(a==0){
wait(e2);
}
else{
e2.notify();
}
wait(e2);
a++;
}
Evénements
attendus
Evénements
notifiés
e1
Introduction
Algorithmes
d’extraction
de contrats 42
Traitement des wait et notify
Traitement des
branchements
Exemple de
contrat généré
par l’outil
développé
Implémentation
Conclusion
24
![Page 25: Extraction de contrats 42 à partir de programmes …matthieu-moy.fr/spip/IMG/pdf/TER0910_soutenance_Delahaye...Traitement des branchements Une difficulté est apparue lorsque le programme](https://reader033.vdocuments.pub/reader033/viewer/2022042909/5f3a6b54f24fe777fc78b2d0/html5/thumbnails/25.jpg)
void module1::T1(){
int a=0;
e1.notify();
if(a==0){
wait(e2);
}
else{
e2.notify();
}
wait(e2);
a++;
}
Evénements
attendus
Evénements
notifiés
e1
Branchement
conditionnel
Introduction
Algorithmes
d’extraction
de contrats 42
Traitement des wait et notify
Traitement des
branchements
Exemple de
contrat généré
par l’outil
développé
Implémentation
Conclusion
25
![Page 26: Extraction de contrats 42 à partir de programmes …matthieu-moy.fr/spip/IMG/pdf/TER0910_soutenance_Delahaye...Traitement des branchements Une difficulté est apparue lorsque le programme](https://reader033.vdocuments.pub/reader033/viewer/2022042909/5f3a6b54f24fe777fc78b2d0/html5/thumbnails/26.jpg)
void module1::T1(){
int a=0;
e1.notify();
if(a==0){
wait(e2);
}
else{
e2.notify();
}
wait(e2);
a++;
}
Evénements
attendus
Evénements
notifiés
e2
Introduction
Algorithmes
d’extraction
de contrats 42
Traitement des wait et notify
Traitement des
branchements
Exemple de
contrat généré
par l’outil
développé
Implémentation
Conclusion
26
![Page 27: Extraction de contrats 42 à partir de programmes …matthieu-moy.fr/spip/IMG/pdf/TER0910_soutenance_Delahaye...Traitement des branchements Une difficulté est apparue lorsque le programme](https://reader033.vdocuments.pub/reader033/viewer/2022042909/5f3a6b54f24fe777fc78b2d0/html5/thumbnails/27.jpg)
void module1::T1(){
int a=0;
e1.notify();
if(a==0){
wait(e2);
}
else{
e2.notify();
}
wait(e2);
a++;
}
Evénements
attendus
Evénements
notifiés
Branchement
non conditionnel
Introduction
Algorithmes
d’extraction
de contrats 42
Traitement des wait et notify
Traitement des
branchements
Exemple de
contrat généré
par l’outil
développé
Implémentation
Conclusion
27
![Page 28: Extraction de contrats 42 à partir de programmes …matthieu-moy.fr/spip/IMG/pdf/TER0910_soutenance_Delahaye...Traitement des branchements Une difficulté est apparue lorsque le programme](https://reader033.vdocuments.pub/reader033/viewer/2022042909/5f3a6b54f24fe777fc78b2d0/html5/thumbnails/28.jpg)
void module1::T1(){
int a=0;
e1.notify();
if(a==0){
wait(e2);
}
else{
e2.notify();
}
wait(e2);
a++;
}
Evénements
attendus
Evénements
notifiés
e2
Introduction
Algorithmes
d’extraction
de contrats 42
Traitement des wait et notify
Traitement des
branchements
Exemple de
contrat généré
par l’outil
développé
Implémentation
Conclusion
28
![Page 29: Extraction de contrats 42 à partir de programmes …matthieu-moy.fr/spip/IMG/pdf/TER0910_soutenance_Delahaye...Traitement des branchements Une difficulté est apparue lorsque le programme](https://reader033.vdocuments.pub/reader033/viewer/2022042909/5f3a6b54f24fe777fc78b2d0/html5/thumbnails/29.jpg)
void module1::T1(){
int a=0;
e1.notify();
if(a==0){
wait(e2);
}
else{
e2.notify();
}
wait(e2);
a++;
}
Evénements
attendus
Evénements
notifiés
e2
Introduction
Algorithmes
d’extraction
de contrats 42
Traitement des wait et notify
Traitement des
branchements
Exemple de
contrat généré
par l’outil
développé
Implémentation
Conclusion
29
![Page 30: Extraction de contrats 42 à partir de programmes …matthieu-moy.fr/spip/IMG/pdf/TER0910_soutenance_Delahaye...Traitement des branchements Une difficulté est apparue lorsque le programme](https://reader033.vdocuments.pub/reader033/viewer/2022042909/5f3a6b54f24fe777fc78b2d0/html5/thumbnails/30.jpg)
void module1::T1(){
int a=0;
e1.notify();
if(a==0){
wait(e2);
}
else{
e2.notify();
}
wait(e2);
a++;
}
Evénements
attendus
Evénements
notifiés
Return Inst
Introduction
Algorithmes
d’extraction
de contrats 42
Traitement des wait et notify
Traitement des
branchements
Exemple de
contrat généré
par l’outil
développé
Implémentation
Conclusion
30
![Page 31: Extraction de contrats 42 à partir de programmes …matthieu-moy.fr/spip/IMG/pdf/TER0910_soutenance_Delahaye...Traitement des branchements Une difficulté est apparue lorsque le programme](https://reader033.vdocuments.pub/reader033/viewer/2022042909/5f3a6b54f24fe777fc78b2d0/html5/thumbnails/31.jpg)
void module1::T1(){
int a=0;
e1.notify();
if(a==0){
wait(e2);
}
else{
e2.notify();
}
wait(e2);
a++;
}
Evénements
attendus
Evénements
notifiés
e2
Introduction
Algorithmes
d’extraction
de contrats 42
Traitement des wait et notify
Traitement des
branchements
Exemple de
contrat généré
par l’outil
développé
Implémentation
Conclusion
31
![Page 32: Extraction de contrats 42 à partir de programmes …matthieu-moy.fr/spip/IMG/pdf/TER0910_soutenance_Delahaye...Traitement des branchements Une difficulté est apparue lorsque le programme](https://reader033.vdocuments.pub/reader033/viewer/2022042909/5f3a6b54f24fe777fc78b2d0/html5/thumbnails/32.jpg)
void module1::T1(){
int a=0;
e1.notify();
if(a==0){
wait(e2);
}
else{
e2.notify();
}
wait(e2);
a++;
}
Evénements
attendus
Evénements
notifiés
Branchement
non conditionnel
Introduction
Algorithmes
d’extraction
de contrats 42
Traitement des wait et notify
Traitement des
branchements
Exemple de
contrat généré
par l’outil
développé
Implémentation
Conclusion
32
![Page 33: Extraction de contrats 42 à partir de programmes …matthieu-moy.fr/spip/IMG/pdf/TER0910_soutenance_Delahaye...Traitement des branchements Une difficulté est apparue lorsque le programme](https://reader033.vdocuments.pub/reader033/viewer/2022042909/5f3a6b54f24fe777fc78b2d0/html5/thumbnails/33.jpg)
Exemple de contrat généré par l’outil développévoid module1::T1(){
int a=0;
if(a<4){
e1.notify();
while(a<8){
wait(e2);
a++;
}
wait(e1);
a++;
}
}
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE contract PUBLIC « module1-CT" "contract.dtd">
<contract interface="module1-ITF" name="module1-CT">
<initials>
<state name='f0'/>
</initials>
<transitions>
<transition lab='{}op/{toto_0xbfbfd5a8;} src='f0' sink='f1' />
<transition lab='{}op/{} src='f0' sink='f3' />
<transition lab='{toto_0xbfbfd5e8_0}op/{} src='f1' sink='f1' />
<transition lab='{}op/{} src='f1' sink='f2' />
<transition lab='{toto_0xbfbfd5a8_0;}op/{} src='f2' sink='f3' />
</transitions>
</contract>
Introduction
Algorithmes
d’extraction
de contrats 42
Traitement des wait et notify
Traitement des
branchements
Exemple de
contrat généré
par l’outil
développé
Implémentation
Conclusion
33
![Page 34: Extraction de contrats 42 à partir de programmes …matthieu-moy.fr/spip/IMG/pdf/TER0910_soutenance_Delahaye...Traitement des branchements Une difficulté est apparue lorsque le programme](https://reader033.vdocuments.pub/reader033/viewer/2022042909/5f3a6b54f24fe777fc78b2d0/html5/thumbnails/34.jpg)
IMPLEMENTATIONIntroduction
Algorithmes
d’extraction
de contrats 42
Implémentation
Conclusion
34
![Page 35: Extraction de contrats 42 à partir de programmes …matthieu-moy.fr/spip/IMG/pdf/TER0910_soutenance_Delahaye...Traitement des branchements Une difficulté est apparue lorsque le programme](https://reader033.vdocuments.pub/reader033/viewer/2022042909/5f3a6b54f24fe777fc78b2d0/html5/thumbnails/35.jpg)
La chaîne d’extraction
Le langage C++ est trop complexe pour qu’on puisse
extraire des contrats 42 directement, sans passer par
une forme intermédiaireIntroduction
Algorithmes
d’extraction
de contrats 42
Implémentation
La chaîne
d’extraction
La forme
intermédiaire
Comment
fonctionne
réellement le
backend ?
Conclusion
35
![Page 36: Extraction de contrats 42 à partir de programmes …matthieu-moy.fr/spip/IMG/pdf/TER0910_soutenance_Delahaye...Traitement des branchements Une difficulté est apparue lorsque le programme](https://reader033.vdocuments.pub/reader033/viewer/2022042909/5f3a6b54f24fe777fc78b2d0/html5/thumbnails/36.jpg)
La forme intermédiaire
Introduction
Algorithmes
d’extraction
de contrats 42
Implémentation
La chaîne
d’extraction
La forme
intermédiaire
Comment
fonctionne
réellement le
backend ?
Conclusion
36
Le frontend : PinaVM (K. Marquet, M. Moy)
![Page 37: Extraction de contrats 42 à partir de programmes …matthieu-moy.fr/spip/IMG/pdf/TER0910_soutenance_Delahaye...Traitement des branchements Une difficulté est apparue lorsque le programme](https://reader033.vdocuments.pub/reader033/viewer/2022042909/5f3a6b54f24fe777fc78b2d0/html5/thumbnails/37.jpg)
Comment fonctionne réellement le
backend ?
L’algorithme de traitement des branchements est bien
celui qui limite le nombre d’états …
… mais il distingue la nature des branchements (if, else, while, …) : inutile !
Les contrats générés ne sont pas sous forme de fichiers xml.
Introduction
Algorithmes
d’extraction
de contrats 42
Implémentation
La chaîne
d’extraction
La forme
intermédiaire
Comment
fonctionne
réellement le
backend ?
Conclusion
37
![Page 38: Extraction de contrats 42 à partir de programmes …matthieu-moy.fr/spip/IMG/pdf/TER0910_soutenance_Delahaye...Traitement des branchements Une difficulté est apparue lorsque le programme](https://reader033.vdocuments.pub/reader033/viewer/2022042909/5f3a6b54f24fe777fc78b2d0/html5/thumbnails/38.jpg)
CONCLUSIONIntroduction
Algorithmes
d’extraction
de contrats 42
Implémentation
Conclusion
38
![Page 39: Extraction de contrats 42 à partir de programmes …matthieu-moy.fr/spip/IMG/pdf/TER0910_soutenance_Delahaye...Traitement des branchements Une difficulté est apparue lorsque le programme](https://reader033.vdocuments.pub/reader033/viewer/2022042909/5f3a6b54f24fe777fc78b2d0/html5/thumbnails/39.jpg)
Ce qui a été fait :Génération de contrats 42 : wait, notify, if, while, for
Les perspectives : prendre en compte les appels de fonctions : éléments
importants de communication
vérifier la validité du choix de stratégie de traitement
des branchements
développer un outil pour voir si les contrats de
différents composants sont compatibles
Introduction
Algorithmes
d’extraction
de contrats 42
Implémentation
Conclusion
39
![Page 40: Extraction de contrats 42 à partir de programmes …matthieu-moy.fr/spip/IMG/pdf/TER0910_soutenance_Delahaye...Traitement des branchements Une difficulté est apparue lorsque le programme](https://reader033.vdocuments.pub/reader033/viewer/2022042909/5f3a6b54f24fe777fc78b2d0/html5/thumbnails/40.jpg)
Extraction de contrats 42
à partir de programmes SystemC