Electronic System Level Design and Verification
description
Transcript of Electronic System Level Design and Verification
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
Electronic System Level Design
3
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 28 november = volgende week!Inleveren 19 december 2014!
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.
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?
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
Is het rendabel om met een embedded systeem Bitcoins te minen? Beoordeling: 8
Waarom heeft nog niet iedereen een intelligente koelkast? Beoordeling 9 6
Stelling / vraag (voorbeelden) OpenCL (Open Computing Language) is een goed alternatief voor HLS (High-
Level Synthesis). Zie: http://www.eejournal.com/archives/articles/20130312-highlevel/
AVR Studio 6 heeft een App-Store zie: http://gallery.atmel.com/Partner. Wij hebben in het verleden ook componenten voor AVR-Studio gemaakt. Zie: http://bd.eduweb.hhs.nl/micprg/aveavr.htm. Hoe eenvoudig is het om deze componenten te porten en te publiceren op de Atmel Gallery?
Does auto-generation of C-code have a future? Zie: http://www.embedded.com/electronics-blogs/cole-bin/4402254/Does-auto-generation-of-C-code-have-a-future-
FPGA-based SoCs will be the processors of the future. Zie: http://www.eejournal.com/archives/articles/20130716-sheepsclothing/
Are FPGAs Dead? http://eejournal.com/archives/articles/20131203-dead/ Programmeren moet verplicht vak op basisschool worden. http://
tweakers.net/nieuws/99114/neelie-kroes-programmeren-moet-verplicht-vak-op-basisschool-worden.html
7Maar het is
natuurlijk veel le
uker om zelf iets t
e bedenken…
8
Electronic System Level Design and Verification
Validatie versus VerificatieHebben we het goede gemaakt?Hebben we het goed gemaakt?
9
VerificatieTesten.
Probeer maar wat…Maar wanneer ben je klaar?
Formele Verificatie. Wiskundig bewijs…Maar hoe lang duurt dat?
Test coverage
Peer review
Alternatief?
10
Motiverend voorbeeld
Doet ie hetof
Doet ie het niet
?
11
Bewijs het maar…
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
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!
HM-ES-th2 Les 2
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.
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.
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
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(); }}
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(); }
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
21
SPIN en PROMELAMet dank aan Gerard Holzmann
Huiswerk!Bestudeer artikel over
het gebruik van SPIN en PROMELA en bedenk
vragen!
HM-ES-th2 Les 3
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.
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)
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
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
Wat doet:if:: a==b -> count++:: a==b -> count-- fi
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
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
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
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
31
SPINDe SPIN modelchecker kan een PROMELA model:
Random simulerenInteractief simulerenVerificeren“Guided” simuleren
Wat zijn de verschillen?Waneer gebruik je wat?
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}
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
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}
35
SPIN Verify
36
SPIN Guided Simulation
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}
38
Check ook livenessLTL: []<>csp && []<>csq
SPIN Translate vertaalt dit in never statement
39
SPIN Verify
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!
HM-ES-th2 Les 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.
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)
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…
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
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}
47
SPIN LTL Translate
48
SPIN Verify
49
SPIN Guided Simulation
50
SPIN Guided Simulation
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}
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 }}
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.