Minor Elektrotechniek voor Ti

Download Report

Transcript Minor Elektrotechniek voor Ti

Electronic System Level Design and Verification
HM-ES-th2 Les 9 en 10
Electronic System Level Design and Verification
HM-ES-th2 Les 9
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
reference parameter
position name
start position
60
Dining Philosophers
synchronization
guard
update
61
Dining Philosophers
bounded integer
62
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
Expressie
Betekenis
Gelijk aan
E<> p
Er is een pad waar ooit p
A[] p
Voor alle paden altijd p
E[] p
Er is een pad waarvoor altijd p
A<> p
Voor alle paden ooit p
! (E[] !p)
p --> q
Leid tot
A[] (p imply A<> q)
A[] !deadlock
Er kan nooit een deadlock optreden
! (E<> !p)
66
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?
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!
70
UPPAAL
Huiswerk!
Bestudeer:
“Uppaal 4.0: Small Tutorial”
en bedenk vragen!
71
Electronic System Level Design and Verification
HM-ES-th2 Les 10
Uitwerking huiswerk
chan& pickup_left, chan& laydown_left,
chan& pickup_right, chan& laydown_right
chan& pickup, chan& laydown
Fork:
Philo:
System declarations:
Declarations:
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]);
73
system F0, F1, F2, F3, F4, P0, P1, P2, P3, P4;
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
CounterTest:
guard
invariant
System declarations:
CT = CounterTest();
system CT;
78
Verify CounterTest1
Is dit wat je verwacht?
79
Voorbeeld CounterTest2
CounterTest:
System declarations:
urgent state (de tijd kan
niet verhoogd worden
in een urgent state)
CT = CounterTest();
system CT;
80
Verify CounterTest2
81
Voorbeeld timed model
Lamp:
User:
Wat wordt hier
gemodelleerd?
Declarations:
clock c;
chan press;
System declarations:
system Lamp, User;
82
Simulation (in state Low)
83
Simulation (in state Low)
84
Verification
85