HM-ES-th2 Les 9 en 10 Electronic System Level Design and Verification
HM-ES-th2 Les 9 Electronic System Level Design and Verification
UPPAAL UPPAAL is een geïntegreerde tool voor het modeleren, valideren en verifiëren van real-time systemen. Een UPPAAL model bestaat uit een netwerk van timed finite state machines, uitgebreid met datatypes. UPPAAL is gratis te gebruiken voor niet-commercieel gebruik in het hoger onderwijs. Voor commercieel gebruik moet worden betaald. 54
UPPAAL model Een UPPAAL model bestaat uit: Globale declaraties Types Bounded integers Arrays Structs Variabelen Functies (in C syntax) Channels (voor synchronisatie) Clocks (voor het bijhouden van de tijd) Proces templates Grafisch weergegeven als een timed FSMD (Finite State Machine with Data) Lokale declaraties System declarations Instantieert processen 55
UPPAAL proces Een UPPAAL proces wordt grafisch weergegeven en bestaat uit: Toestanden (positions) Overgangen (transitions) eventueel voorzien van: Guard (voorwaarde waaronder transition mogelijk is) Synchronization (rendezvous via een channel): c! synchroniseer met c? op channel c c? synchroniseer met c! channel c Update: Toekenningen aan variabelen. Reset van de tijd 56
UPPAAL template We kunnen een UPPAAL proces definiëren als een template met parameters (vergelijkbaar met een C++ template) Er kunnen verschillende instances van deze template worden aangemaakt (met verschillende argumenten) 57
UPPAAL voorbeeld Dining Philosophers 58
Dining Philosophers 59
Dining Philosophers 60 start position position name reference parameter
Dining Philosophers 61 synchronization guard update
Dining Philosophers 62 bounded integer
Dining Philosophers 63
UPPAAL Model We kunnen een UPPAAL model: Simuleren (valideren) Checken (verifiëren) Met behulp van Requirement Specification Language (Query Language) Subset van TCTL = Timed Computation Tree Logic 64
Requirement Specification Language Proposities Vergelijkingen bijvoorbeeld a>3 bijvoorbeeld Init.i==5 (lokale variabele i in proces Init) Proces bevind zich in een bepaalde toestand bijvoorbeeld P0.Eat Expressies met meerdere proposities Propositielogica: &&, and, ||, or, !, not, imply Predicatenlogica: A (voor alle), E (er is een) Linear Temporal Logic: [] (altijd), <> (ooit) 65
Requirement Specification Language 66 ExpressieBetekenisGelijk aan E<> pEr is een pad waar ooit p A[] pVoor alle paden altijd p! (E<> !p) E[] pEr is een pad waarvoor altijd p A<> pVoor alle paden ooit p! (E[] !p) p --> qLeid totA[] (p imply A<> q) A[] !deadlockEr kan nooit een deadlock optreden
Dining Philosophers 67
Dining Philosophers 68
Diagnostic trace van deadlock 69
Dining Philosophers Wat is het verschil tussen het UPPAAL model en het op het practicum bestudeerde SPIN model? 70 In het UPPAAL model kan een filosoof een vork niet neerleggen, maar alleen doorgeven aan een andere filosoof Huiswerk! Pas het model aan zodat een vork neergelegd kan worden!
71 UPPAAL Huiswerk! Bestudeer: “Uppaal 4.0: Small Tutorial” en bedenk vragen!
HM-ES-th2 Les 10 Electronic System Level Design and Verification
Uitwerking huiswerk 73 chan pickup[5]; chan laydown[5]; P0 = Philo(pickup[0], laydown[0], pickup[1], laydown[1]); P1 = Philo(pickup[1], laydown[1], pickup[2], laydown[2]); P2 = Philo(pickup[2], laydown[2], pickup[3], laydown[3]); P3 = Philo(pickup[3], laydown[3], pickup[4], laydown[4]); P4 = Philo(pickup[4], laydown[4], pickup[0], laydown[0]); F0 = Fork(pickup[0], laydown[0]); F1 = Fork(pickup[1], laydown[1]); F2 = Fork(pickup[2], laydown[2]); F3 = Fork(pickup[3], laydown[3]); F4 = Fork(pickup[4], laydown[4]); system F0, F1, F2, F3, F4, P0, P1, P2, P3, P4; chan& pickup_left, chan& laydown_left, chan& pickup_right, chan& laydown_right chan& pickup, chan& laydown Declarations: System declarations: Fork: Philo:
E<> (P0.Eat && P2.Eat) 74
E<> (P0.Eat && P2.Eat) 75
Verifier 76
Tijd in UPPAAL Tijd wordt bijgehouden in clocks (er kunnen meerdere clocks zijn) Bijvoorbeeld: clock c; Clocks worden “vanzelf” (allemaal gelijk) opgehoogd Clocks kan gereset worden Bijvoorbeeld c:=0 We kunnen een invariant bij een toestand gebruiken Bijvoorbeeld: c<=5 We kunnen een guard bij een overgang gebruiken Bijvoorbeeld: c>=3 77
Voorbeeld CounterTest1 78 CounterTest: System declarations: CT = CounterTest(); system CT; invariant guard
Verify CounterTest1 79 Is dit wat je verwacht?
Voorbeeld CounterTest2 80 CounterTest: System declarations: CT = CounterTest(); system CT; urgent state (de tijd kan niet verhoogd worden in een urgent state)
Verify CounterTest2 81
Voorbeeld timed model 82 Lamp: System declarations: system Lamp, User; Declarations: clock c; chan press; User: Wat wordt hier gemodelleerd?
Simulation (in state Low) 83
Simulation (in state Low) 84
Verification 85