Download de presentatie
De presentatie wordt gedownload. Even geduld aub
GepubliceerdAndrea Lambrechts Laatst gewijzigd meer dan 10 jaar geleden
1
HM-ES-th2 Les 9 en 10 Electronic System Level Design and Verification
2
HM-ES-th2 Les 9 Electronic System Level Design and Verification
3
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
4
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
5
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
6
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
7
UPPAAL voorbeeld Dining Philosophers 58
8
Dining Philosophers 59
9
Dining Philosophers 60 start position position name reference parameter
10
Dining Philosophers 61 synchronization guard update
11
Dining Philosophers 62 bounded integer
12
Dining Philosophers 63
13
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
14
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
15
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
16
Dining Philosophers 67
17
Dining Philosophers 68
18
Diagnostic trace van deadlock 69
19
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!
20
71 UPPAAL Huiswerk! Bestudeer: “Uppaal 4.0: Small Tutorial” en bedenk vragen!
21
HM-ES-th2 Les 10 Electronic System Level Design and Verification
22
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:
23
E<> (P0.Eat && P2.Eat) 74
24
E<> (P0.Eat && P2.Eat) 75
25
Verifier 76
26
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
27
Voorbeeld CounterTest1 78 CounterTest: System declarations: CT = CounterTest(); system CT; invariant guard
28
Verify CounterTest1 79 Is dit wat je verwacht?
29
Voorbeeld CounterTest2 80 CounterTest: System declarations: CT = CounterTest(); system CT; urgent state (de tijd kan niet verhoogd worden in een urgent state)
30
Verify CounterTest2 81
31
Voorbeeld timed model 82 Lamp: System declarations: system Lamp, User; Declarations: clock c; chan press; User: Wat wordt hier gemodelleerd?
32
Simulation (in state Low) 83
33
Simulation (in state Low) 84
34
Verification 85
Verwante presentaties
© 2024 SlidePlayer.nl Inc.
All rights reserved.