extraction de contrats 42 à partir de programmes...

40
Extraction de contrats 42 à partir de programmes SystemC Pierre-Yves Delahaye Mardi 25 mai 2010 Tuteurs Matthieu Moy Kévin Marquet

Upload: others

Post on 11-Jul-2020

1 views

Category:

Documents


0 download

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Extraction de contrats 42

à partir de programmes SystemC