HM-ES-th2 Les 1 t/m 4 Electronic System Level Design and Verification.

53
HM-ES-th2 Les 1 t/m 4 Electronic System Level Design and Verification

Transcript of HM-ES-th2 Les 1 t/m 4 Electronic System Level Design and Verification.

Page 1: HM-ES-th2 Les 1 t/m 4 Electronic System Level Design and Verification.

HM-ES-th2 Les 1 t/m 4

Electronic System Level Design and Verification

Page 2: HM-ES-th2 Les 1 t/m 4 Electronic System Level Design and Verification.

HM-ES-th2 Les 1

Electronic System Level Design and Verification

Page 3: HM-ES-th2 Les 1 t/m 4 Electronic System Level Design and Verification.

Electronic System Level Design

3

Page 4: HM-ES-th2 Les 1 t/m 4 Electronic System Level Design and Verification.

4

Toetsing

Schrijf een Essay (2/3 van cijfer)Wat is verschil tussen Essay en een Paper?Uitgebreide handleiding:

http://www1.aucegypt.edu/academic/writers/index.htm Proposal inleveren 29 november = volgende week!Inleveren 20 december 2013!

Geef een Presentatie (1/3 van cijfer)Week 6 en 7 (na de kerst)15 minuten per 2 studenten

Kies samen met een andere student een onderwerp m.b.t. Embedded Systems en …

+ practicum moet voldoende zijn.

Page 5: HM-ES-th2 Les 1 t/m 4 Electronic System Level Design and Verification.

Criteria (zie BB)

5

Criterium OmschrijvingStelling Wordt de (vraag)stelling op een duidelijke manier ingeleid,

of komt deze als het ware uit de lucht vallen? Is de stelling eenvoudig en begrijpelijk geformuleerd? Is de stelling origineel?

Methode Beschrijft de auteur de gebruikte onderzoeksmethode op een duidelijke manier en wordt toegelicht waarom voor deze methode is gekozen?

Presentatie van bevindingen

Worden de gegevens overzichtelijk gepresenteerd?

Analyse van bevindingen Worden de gegevens goed geanalyseerd? Worden alternatieven goed afgewogen en worden de gebruikte vergelijkingscriteria onderbouwd?

Conclusies en aanbevelingen

Volgen de conclusies logisch uit de analyse? Geven de conclusies een duidelijk antwoord op de stelling? Volgen de aanbevelingen logisch uit de conclusies?

Vorm Zijn er veel taalfouten? Is de tekst prettig leesbaar? Wordt op correcte wijze naar de literatuur verwezen?

Page 6: HM-ES-th2 Les 1 t/m 4 Electronic System Level Design and Verification.

Essay (voorbeelden) zie BBWat is de toekomst van kunstmatige intelligentie in

Embedded systemen? Beoordeling: 8.

SystemC-AMS zal aansluiting moeten zoeken bij Matlab Simulink om succesvol te worden.Beoordeling: 8.5

Is Moore’s Law ooit een wet geweest?Beoordeling: 9

Is ARM marktleider op server gebied in 5 jaar?Beoordeling: 8

6

Page 7: HM-ES-th2 Les 1 t/m 4 Electronic System Level Design and Verification.

Stelling / vraag (voorbeelden)OpenCL (Open Computing Language) is een goed

alternatief voor HLS (High-Level Synthesis). Zie: http://www.eejournal.com/archives/articles/20121106-opencl/?printView=true

Alle 8 bits microcontrollers zullen uiteindelijk vervangen worden door 32 bits microcontrollers. Zie: http://www.edn.com/Home/PrintView?contentItemId=4398890

… (nog aanvullen) …

7

Page 8: HM-ES-th2 Les 1 t/m 4 Electronic System Level Design and Verification.

8

Electronic System Level Design and Verification

Validatie versus VerificatieHebben we het goede gemaakt?Hebben we het goed gemaakt?

Page 9: HM-ES-th2 Les 1 t/m 4 Electronic System Level Design and Verification.

9

VerificatieTesten.

Probeer maar wat…Maar wanneer ben je klaar?

Formele Verificatie. Wiskundig bewijs…Maar hoe lang duurt dat?

Test coverage

Peer review

Alternatief?

Page 10: HM-ES-th2 Les 1 t/m 4 Electronic System Level Design and Verification.

10

Motiverend voorbeeld

Doet ie hetof

Doet ie het niet

?

Page 11: HM-ES-th2 Les 1 t/m 4 Electronic System Level Design and Verification.

11

Bewijs het maar…

Page 12: HM-ES-th2 Les 1 t/m 4 Electronic System Level Design and Verification.

ParallellismeParallellisme zorgt voor snelheid en is om die reden

vaak noodzakelijk.Als communicerende taken parallel uitgevoerd worden

wordt de verificatie extra lastigE: denk aan race conditions en hazards en de oplossingen

daarvoor (synchronisatie) in hardware. Problemen ontstaan vaak als deelsystemen worden samengevoegd.

TI: denk aan multitasking en de problemen daarbij:DeadlockStarvation (livelock)Race conditions

12

Page 13: HM-ES-th2 Les 1 t/m 4 Electronic System Level Design and Verification.

ParallellismeWaarom is verificatie lastig bij parallellisme?Stel we hebben t samenwerkende taken met elk s

atomic (ondeelbare) sequentiële (opeenvolgende) stappen. T1 = T1.1, T1.2, … T1,s

Het aantal mogelijke volgordes v waarin de t * s stappen uitgevoerd kunnen worden is:

13

t = 2, s = 2 v = 6t = 4, s = 3 v = 369600t = 4, s = 9 v = 2,14528E+19

Er is misschien maar 1 volgorde waarin

het fout gaat!

Page 14: HM-ES-th2 Les 1 t/m 4 Electronic System Level Design and Verification.

HM-ES-th2 Les 2

Electronic System Level Design and Verification

Page 15: HM-ES-th2 Les 1 t/m 4 Electronic System Level Design and Verification.

IPCInter-Process CommunicationAls taken samenwerken moeten ze:

Synchroniseren taak T1 mag pas verder met stap T1.a als taak T2 stap T2.b heeft uitgevoerd).

Communiceren stap T1.a van taak T1 heeft data nodig die in stap T2.b van taak T2 wordt berekend.

15

Communiceren = Synchroniseren + Data Overdracht.

Page 16: HM-ES-th2 Les 1 t/m 4 Electronic System Level Design and Verification.

IPCEr zijn 2 hoofdvormen van Inter-Process Communication:Shared Memory Based

Mutex (lock, unlock)Semaphore (wait, signal)Monitor (conditionele variabelen)

Message BasedMailboxMessage Queue.

16

TI studenten zijn hier al mee bekend, E studenten die ECV al hebben gedaan ook.

Page 17: HM-ES-th2 Les 1 t/m 4 Electronic System Level Design and Verification.

Voorbeeld

17

int x = 0;

task t1() { for (int i = 0; i < 3; i++) { x = x + 1; }}

task t2() { for (int i = 0; i < 3; i++) { x = x + 1; }}

Wat is de waarde van x na afloop van dit programma als we ervan uitgaan dat

memory synchronisatie juist werkt

3, 4, 5 of 6

Page 18: HM-ES-th2 Les 1 t/m 4 Electronic System Level Design and Verification.

Oplossing met mutex

18

int x = 0;mutex m;

task t1() { for (int i = 1; i <= 3; i++) { m.lock(); x = x + 1; m.unlock(); }}

task t2() { for (int i = 1; i <= 3; i++) { m.lock(); x = x + 1; m.unlock(); }}

Page 19: HM-ES-th2 Les 1 t/m 4 Electronic System Level Design and Verification.

Deadlock

19

mutex m1, m2;

task t1() { m1.lock(); …; m2.lock(); …; m2.unlock(); …; m1.unlock(); }

task t2() { m2.lock(); …; m1.lock(); …; m1.unlock(); …; m2.unlock(); }

Page 20: HM-ES-th2 Les 1 t/m 4 Electronic System Level Design and Verification.

SPIN en PROMELAMet SPIN kunnen we wiskundig bewijzen:dat een model van communicerende parallelle taken

(beschreven in PROMELA) correct werkt endat er geen deadlock optreed.

20

Page 21: HM-ES-th2 Les 1 t/m 4 Electronic System Level Design and Verification.

21

SPIN en PROMELAMet dank aan Gerard Holzmann

Huiswerk!Bestudeer artikel over

het gebruik van SPIN en PROMELA en bedenk

vragen!

Page 22: HM-ES-th2 Les 1 t/m 4 Electronic System Level Design and Verification.

HM-ES-th2 Les 3

Electronic System Level Design and Verification

Page 23: HM-ES-th2 Les 1 t/m 4 Electronic System Level Design and Verification.

23

Wat kun je bewijzen…Welke eigenschappen van een systeem kun je bewijzen

met model checking?Safety. Bijvoorbeeld: er komt nooit meer dan 1 proces tegelijk in dit stukje code

(kritische gebied).Ander voorbeeld: Als er een trein passeert dan zijn de spoorbomen altijd geloten.

Liveness. Bijvoorbeeld: proces A komt altijd een keer aan de beurt.Ander voorbeeld: als er geen treinen meer passeren dan gaan de spoorbomen na verloop van tijd weer open.

General temporal. Bijvoorbeeld: als er een request binnenkomt dan zal er altijd een reply gestuurd worden.Ander voorbeeld: de ATM geeft pas geld nadat het van een rekening is afgeboekt.

Page 24: HM-ES-th2 Les 1 t/m 4 Electronic System Level Design and Verification.

24

Hoe kom je aan een model?Hoe kom je aan het model wat je kunt checken?

Top down = ideaalRequirements → Model → ImplementatieZie: From Specification to Implementation: A PROMELA to C Compilerhttp://www.mathematik.uni-stuttgart.de/~floeff/publications/96-enstparis-s2-report.pdf (1996)

Bottom up = praktijkImplementatie → ModelZie: Model Checking C Programs by Translating C to Promelahttp://uu.diva-portal.org/smash/record.jsf?pid=diva2:235718 (2009)

Page 25: HM-ES-th2 Les 1 t/m 4 Electronic System Level Design and Verification.

25

PROMELA bouwstenenWelke soort objecten kom je tegen in een PROMELA

model?Processes

Statements == Expressies

Message ChannelsMessage channels

VariablesBasic data types: bit/bool, byte, short, intCompound data types: array, structure

Page 26: HM-ES-th2 Les 1 t/m 4 Electronic System Level Design and Verification.

26

Executability in PROMELAWat doet:a==b -> count++

Wat doet:a==b; count++

Wat doet:a==b -> count++;a!=b -> count--

Wat doet:if:: a==b -> count++:: a!=b -> count-- fi

Page 27: HM-ES-th2 Les 1 t/m 4 Electronic System Level Design and Verification.

27

Message channelchan mq = [2] of { byte, short }

Wat als een proces doet:mq ! 4, 3456;mq ! 2, 9012;mq ! 2, 5678;mq ! 1, 1234

Wat als een ander proces doet:mq ? 2, var1

Wat als een ander proces doet:mq ? var2, var3

Page 28: HM-ES-th2 Les 1 t/m 4 Electronic System Level Design and Verification.

28

Message channelchan mq = [2] of { byte, short }

Wat als een proces doet:mq ! 4, 3456;mq ! 2, 9012;mq ! 2, 5678;mq ! 1, 1234

Wat als een ander proces doet:mq ?? 2, var1

Wat als een ander proces doet:mq ? var2, var3

Page 29: HM-ES-th2 Les 1 t/m 4 Electronic System Level Design and Verification.

29

Message channelchan mq = [2] of { byte, short }

Wat als een proces doet:mq !! 4, 3456;mq !! 2, 9012;mq !! 2, 5678;mq !! 1, 1234

Wat als een ander proces doet:mq ? 2, var1

Wat als een ander proces doet:mq ? var2, var3

Page 30: HM-ES-th2 Les 1 t/m 4 Electronic System Level Design and Verification.

30

Rendezvouschan mq = [0] of { byte, short }

Wat als een proces doet:mq ! 4, 3456;mq ! 2, 9012;mq ! 2, 5678;mq ! 1, 1234

Wat als een ander proces doet:mq ? 2, var1

Wat als een ander proces doet:mq ? var2, var3

Page 31: HM-ES-th2 Les 1 t/m 4 Electronic System Level Design and Verification.

31

SPINDe SPIN modelchecker kan een PROMELA model:

Random simulerenInteractief simulerenVerificeren“Guided” simuleren

Wat zijn de verschillen?Waneer gebruik je wat?

Page 32: HM-ES-th2 Les 1 t/m 4 Electronic System Level Design and Verification.

32

atomic versus d_stepWat is het verschil?Wanneer gebruik je wat?

Gegeven is dat b een globale variabele is die door diverse processen wordt beschreven.Wat is verschil tussen:a==b -> a = a + benatomic { a==b -> a = a + b}

Page 33: HM-ES-th2 Les 1 t/m 4 Electronic System Level Design and Verification.

33

Linear-time Temporal LogicUntil (weak W and strong U)Always []Eventually <>

![]p == <>!p []<>(p||q) == []<>p || []<>q []<>(p&&q) != []<>p && []<>q <>[](p&&q) == <>[]p && <>[]q <>[](p||q) != <>[]p || <>[]q

Page 34: HM-ES-th2 Les 1 t/m 4 Electronic System Level Design and Verification.

34

Werkt deze mutural exclusion?bool wantp = false, wantq = false;byte critical = 0;

active proctype p() { do :: !wantq -> wantp = true; critical++; assert (critical == 1); critical--; wantp = false; od}

active proctype q() { do :: !wantp -> wantq = true; critical++; assert (critical == 1); critical--; wantq = false; od}

Page 35: HM-ES-th2 Les 1 t/m 4 Electronic System Level Design and Verification.

35

SPIN Verify

Page 36: HM-ES-th2 Les 1 t/m 4 Electronic System Level Design and Verification.

36

SPIN Guided Simulation

Page 37: HM-ES-th2 Les 1 t/m 4 Electronic System Level Design and Verification.

37

Werkt deze mutural exclusion?bool wantp = false, wantq = false;byte turn = 1;bool csp = false, csq = false;

active proctype p() { do :: wantp = true; do :: !wantq -> break; :: else -> if :: (turn == 1) :: (turn == 2) -> wantp = false; (turn == 1); wantp = true fi od; csp = true; assert (!(csp && csq)); csp = false; wantp = false; turn = 2 od}

active proctype q() { do :: wantq = true; do :: !wantp -> break; :: else -> if :: (turn == 2) :: (turn == 1) -> wantq = false; (turn == 2); wantq = true fi od; csq = true; assert (!(csp && csq)); csq = false; wantq = false; turn = 1 od}

Page 38: HM-ES-th2 Les 1 t/m 4 Electronic System Level Design and Verification.

38

Check ook livenessLTL: []<>csp && []<>csq

SPIN Translate vertaalt dit in never statement

Page 39: HM-ES-th2 Les 1 t/m 4 Electronic System Level Design and Verification.

39

SPIN Verify

Page 40: HM-ES-th2 Les 1 t/m 4 Electronic System Level Design and Verification.

40

Puzzel voor de volgende leshttp://www.hellam.net/maths2000/frogs.swf

Modeleer deze puzzel in PROMELA.Beweer dat het altijd waar is dat het doel van de puzzel

niet bereikt zal worden.Verifeer met SPIN dat dit niet klopt. SPIN geeft een

counter example → dit is de oplossing van de puzzel!

Page 41: HM-ES-th2 Les 1 t/m 4 Electronic System Level Design and Verification.

HM-ES-th2 Les 4

Electronic System Level Design and Verification

Page 42: HM-ES-th2 Les 1 t/m 4 Electronic System Level Design and Verification.

42

KikkersHoe modelleren we het probleem (3 mannetjes kikkers

links en 3 vrouwtjes kikkers rechts)Modelleer de 7 stenenDefinieer de oplossing als een propositie (iets wat waar of

onwaar kan zijn) solutionModelleer het gedrag van de kikkers.Check de LTL formule []!solutionSPIN vindt een fout! Gebruik Guided Simulation om de oplossing te zien.

Page 43: HM-ES-th2 Les 1 t/m 4 Electronic System Level Design and Verification.

43

Modelleer stenen en solutionmtype = {free, male, female}

mtype stone[7]

#define solution (\ stone[0]==female && \ stone[1]==female && \ stone[2]==female && \ stone[3]==free)

Page 44: HM-ES-th2 Les 1 t/m 4 Electronic System Level Design and Verification.

44

initinit { stone[0]=male; stone[1]=male; stone[2]=male; stone[3]=free; stone[4]=female; stone[5]=female; stone[6]=female;

Kan ook met een lus…

Page 45: HM-ES-th2 Les 1 t/m 4 Electronic System Level Design and Verification.

45

Gedrag Versie 1 do :: (stone[0]==male && stone[1]==free) -> stone[0]=free; stone[1]=male :: (stone[0]==male && stone[2]==free) -> stone[0]=free; stone[2]=male :: (stone[1]==male && stone[2]==free) -> stone[1]=free; stone[2]=male :: (stone[1]==male && stone[3]==free) -> stone[1]=free; stone[3]=male :: (stone[1]==female && stone[0]==free) -> stone[1]=free; stone[0]=female

Page 46: HM-ES-th2 Les 1 t/m 4 Electronic System Level Design and Verification.

46

Gedrag Versie 1 :: (stone[2]==male && stone[3]==free) -> stone[2]=free; stone[3]=male :: (stone[2]==male && stone[4]==free) -> stone[2]=free; stone[4]=male :: (stone[2]==female && stone[1]==free) -> stone[2]=free; stone[1]=female :: (stone[2]==female && stone[0]==free) -> stone[2]=free; stone[0]=female :: … :: (stone[6]==female && stone[5]==free) -> stone[6]=free; stone[5]=female :: (stone[6]==female && stone[4]==free) -> stone[6]=free; stone[4]=female od}

Page 47: HM-ES-th2 Les 1 t/m 4 Electronic System Level Design and Verification.

47

SPIN LTL Translate

Page 48: HM-ES-th2 Les 1 t/m 4 Electronic System Level Design and Verification.

48

SPIN Verify

Page 49: HM-ES-th2 Les 1 t/m 4 Electronic System Level Design and Verification.

49

SPIN Guided Simulation

Page 50: HM-ES-th2 Les 1 t/m 4 Electronic System Level Design and Verification.

50

SPIN Guided Simulation

Page 51: HM-ES-th2 Les 1 t/m 4 Electronic System Level Design and Verification.

51

Versie 2: stone == processproctype stoneProc(byte n) { do :: atomic { (n<6 && stone[n]==male && stone[n+1]==free) -> stone[n]=free; stone[n+1]=male } :: atomic { (n<5 && stone[n]==male && stone[n+2]==free) -> stone[n]=free; stone[n+2]=male } :: atomic { (n>0 && stone[n]==female && stone[n-1]==free) -> stone[n]=free; stone[n-1]=female } :: atomic { (n>1 && stone[n]==female && stone[n-2]==free) -> stone[n]=free; stone[n-2]=female } od}

Page 52: HM-ES-th2 Les 1 t/m 4 Electronic System Level Design and Verification.

52

Init versie 2init { byte i=0; do :: i==3 -> stone[i]=free; break :: else -> stone[i]=male; stone[6-i]=female; i++ od; atomic { byte j=0; do :: j==7 -> break :: else -> run stoneProc(j); j++ od }}

Page 53: HM-ES-th2 Les 1 t/m 4 Electronic System Level Design and Verification.

53

Versie 3: frog == processDeze versie is gegeven als voorbeeld bij JSpin.Bedenk dat de manlijke en vrouwlijke kikkers zich

anders gedragen => Maak 2 soorten processen.Elk proces krijgt bij aanmaken het nummer van de steen

mee waar deze kikker begint. Deze variabele wordt gebruikt om bij te houden waar de kikker is.