530 likes | 704 Views
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. Toetsing. Kies samen met een andere student een onderwerp m.b.t. Embedded Systems en ….
E N D
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
Toetsing Kiessamen met eenandere student eenonderwerp m.b.t. Embedded Systems en … • Schrijfeen Essay (2/3 van cijfer) • Wat is verschiltussen Essay en een Paper? • Uitgebreidehandleiding:http://www1.aucegypt.edu/academic/writers/index.htm • Proposal inleveren 29 november = volgende week! • Inleveren 20 december 2013! • GeefeenPresentatie (1/3 van cijfer) • Week 6 en 7 (na de kerst) • 15 minuten per 2 studenten + practicum moetvoldoendezijn.
Essay (voorbeelden) zie BB • Wat is de toekomst van kunstmatige intelligentie in Embedded systemen? • Beoordeling: 8. • SystemC-AMS zal aansluiting moeten zoeken bij MatlabSimulink om succesvol te worden. • Beoordeling: 8.5 • Is Moore’sLaw ooit een wet geweest? • Beoordeling: 9 • Is ARM marktleider op server gebied in 5 jaar? • Beoordeling: 8
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) …
Electronic System Level Design and Verification • Validatie versus Verificatie • Hebben we het goedegemaakt? • Hebben we het goedgemaakt?
Verificatie • Testen. • Probeer maar wat… • Maar wanneer ben je klaar? • FormeleVerificatie. • Wiskundigbewijs… • Maar hoe langduurtdat? Alternatief? Test coverage Peer review
Motiverend voorbeeld Doetie het of Doetie het niet ?
Parallellisme • Parallellisme zorgt voor snelheid en is om die reden vaak noodzakelijk. • Als communicerende taken parallel uitgevoerd worden wordt de verificatie extra lastig • E: 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: • Deadlock • Starvation (livelock) • Race conditions
Parallellisme • Waarom is verificatie lastig bij parallellisme? • Stel we hebben t samenwerkende taken met elk satomic (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: Er is misschien maar 1 volgorde waarin het fout gaat! t = 2, s = 2 v = 6 t = 4, s = 3 v = 369600 t = 4, s = 9 v = 2,14528E+19
Electronic System Level Design and Verification HM-ES-th2 Les 2
IPC • Inter-Process Communication • Als taken samenwerken moeten ze: • Synchroniserentaak T1 mag pas verder met stap T1.a als taak T2 stap T2.b heeft uitgevoerd). • Communicerenstap T1.a van taak T1 heeft data nodig die in stap T2.b van taak T2 wordt berekend. Communiceren = Synchroniseren + Data Overdracht.
IPC Er zijn 2 hoofdvormen vanInter-Process Communication: • Shared Memory Based • Mutex (lock, unlock) • Semaphore (wait, signal) • Monitor (conditionelevariabelen) • Message Based • Mailbox • Message Queue. TI studenten zijn hier al mee bekend, E studenten die ECV al hebben gedaan ook.
Voorbeeld int x = 0; task t1() { for (inti = 0; i < 3; i++) { x = x + 1; } } task t2() { for (inti = 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 int x = 0; mutex m; task t1() { for (inti = 1; i <= 3; i++) {m.lock(); x = x + 1; m.unlock(); } } task t2() { for (inti = 1; i <= 3; i++) {m.lock(); x = x + 1; m.unlock(); }}
Deadlock 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 PROMELA Met SPIN kunnen we wiskundig bewijzen: • dat een model van communicerende parallelle taken (beschreven in PROMELA) correct werkt en • dat er geen deadlock optreed.
SPIN en PROMELA • Met dank aan Gerard Holzmann Huiswerk! Bestudeerartikel over het gebruik van SPIN en PROMELA en bedenk vragen!
Electronic System Level Design and Verification HM-ES-th2 Les 3
Wat kun je bewijzen… • Welkeeigenschappen van eensysteem 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: alsereen request binnenkomtdanzaleraltijdeen reply gestuurdworden.Ander voorbeeld: de ATM geeft pas geld nadat het van eenrekening is afgeboekt.
Hoe kom je aaneen model? • Hoe kom je aan het model wat je kuntchecken? • Top down = ideaalRequirements → Model → ImplementatieZie: FromSpecificationtoImplementation: 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)
PROMELA bouwstenen • Welkesoortobjectenkom je tegen in een PROMELA model? • Processes • Statements == Expressies • Message Channels • Message channels • Variables • Basic data types: bit/bool, byte, short, int • Compound data types: array, structure
Executability in PROMELA • Watdoet:a==b -> count++ • Watdoet:a==b; count++ • Watdoet:a==b -> count++;a!=b -> count-- • Watdoet:if:: a==b -> count++:: a!=b -> count-- fi
Message channel chanmq = [2] of { byte, short } • Watalseenprocesdoet:mq ! 4, 3456;mq ! 2, 9012;mq ! 2, 5678;mq ! 1, 1234 • Watalseenanderprocesdoet:mq ? 2, var1 • Watalseenanderprocesdoet:mq ? var2, var3
Message channel chanmq = [2] of { byte, short } • Watalseenprocesdoet:mq ! 4, 3456;mq ! 2, 9012;mq ! 2, 5678;mq ! 1, 1234 • Watalseenanderprocesdoet:mq?? 2, var1 • Watalseenanderprocesdoet:mq ? var2, var3
Message channel chanmq = [2] of { byte, short } • Watalseenprocesdoet:mq!! 4, 3456;mq!! 2, 9012;mq!! 2, 5678;mq!! 1, 1234 • Watalseenanderprocesdoet:mq ? 2, var1 • Watalseenanderprocesdoet:mq ? var2, var3
Rendezvous chanmq = [0] of { byte, short } • Watalseenprocesdoet:mq ! 4, 3456;mq ! 2, 9012;mq ! 2, 5678;mq ! 1, 1234 • Watalseenanderprocesdoet:mq ? 2, var1 • Watalseenanderprocesdoet:mq ? var2, var3
SPIN • De SPIN modelcheckerkaneen PROMELA model: • Random simuleren • Interactiefsimuleren • Verificeren • “Guided” simuleren Watzijn de verschillen? Waneergebruik je wat?
atomic versus d_step • Wat is het verschil? • Wanneergebruik je wat? • Gegeven is datbeenglobalevariabele is die door diverse processenwordtbeschreven.Wat is verschiltussen:a==b -> a = a + benatomic { a==b -> a = a + b}
Linear-time Temporal Logic • Until (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
Werktdezemutural exclusion? boolwantp = false, wantq = false; byte critical = 0; activeproctype 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 }
Werktdezemutural exclusion? boolwantp = false, wantq = false; byte turn = 1; boolcsp = false, csq = false; activeproctype 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 }
Check ookliveness • LTL: []<>csp && []<>csq • SPIN Translatevertaaltdit in never statement
Puzzel voor de volgende les • http://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!
Electronic System Level Design and Verification HM-ES-th2 Les 4
Kikkers • Hoe modelleren we het probleem (3 mannetjeskikkers links en 3 vrouwtjeskikkersrechts) • Modelleer de 7 stenen • Definieer de oplossingalseenpropositie (ietswatwaar of onwaarkanzijn) solution • Modelleer het gedrag van de kikkers. • Check de LTL formule[]!solution • SPIN vindteenfout! • Gebruik Guided Simulation om de oplossingtezien.
Modelleerstenen en solution mtype = {free, male, female} mtypestone[7] #define solution (\ stone[0]==female && \ stone[1]==female && \ stone[2]==female && \ stone[3]==free)
init init { stone[0]=male; stone[1]=male; stone[2]=male; stone[3]=free; stone[4]=female; stone[5]=female; stone[6]=female; Kanook met eenlus…
GedragVersie 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
GedragVersie 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 }