Electronic System Level Design and Verification
-
Upload
zahir-wilcox -
Category
Documents
-
view
41 -
download
3
description
Transcript of Electronic System Level Design and Verification
HM-ES-th2 Les 9 en 10
Electronic System Level Design and Verification
HM-ES-th2 Les 9
Electronic System Level Design and Verification
UPPAALUPPAAL 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.
3
UPPAAL modelEen UPPAAL model bestaat uit:
Globale declaratiesTypes
Bounded integers Arrays Structs
VariabelenFuncties (in C syntax)Channels (voor synchronisatie)Clocks (voor het bijhouden van de tijd)
Proces templatesGrafisch weergegeven als een timed FSMD (Finite State Machine with Data)Lokale declaraties
System declarations Instantieert processen 4
UPPAAL procesEen 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
5
UPPAAL templateWe 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)
6
UPPAAL voorbeeldDining Philosophers
7
Dining Philosophers
8
Dining Philosophers
9
start position
position name
reference parameter
Dining Philosophers
10
synchronization
guard
update
Dining Philosophers
11
bounded integer
Dining Philosophers
12
UPPAAL ModelWe kunnen een UPPAAL model:
Simuleren (valideren)Checken (verifiëren)
Met behulp van Requirement Specification Language (Query Language) Subset van TCTL = Timed Computation Tree Logic
13
Requirement Specification LanguageProposities
Vergelijkingen bijvoorbeeld a>3bijvoorbeeld Init.i==5 (lokale variabele i in proces Init)
Proces bevind zich in een bepaalde toestand bijvoorbeeld P0.Eat
Expressies met meerdere propositiesPropositielogica: &&, and, ||, or, !, not, implyPredicatenlogica: A (voor alle), E (er is een)Linear Temporal Logic: [] (altijd), <> (ooit)
14
Requirement Specification Language
15
Expressie Betekenis Gelijk aan
E<> p Er is een pad waar ooit p
A[] p Voor alle paden altijd p ! (E<> !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
Dining Philosophers
16
Dining Philosophers
17
Diagnostic trace van deadlock
18
Dining PhilosophersWat is het verschil tussen het UPPAAL model en het op
het practicum bestudeerde SPIN model?
19
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
UPPAAL
Huiswerk!Bestudeer:
“Uppaal 4.0: Small Tutorial” en bedenk vragen!
HM-ES-th2 Les 10
Electronic System Level Design and Verification
Uitwerking huiswerk
22
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)
23
E<> (P0.Eat && P2.Eat)
24
Verifier
25
Tijd in UPPAALTijd wordt bijgehouden in clocks (er kunnen meerdere
clocks zijn)Bijvoorbeeld: clock c;
Clocks worden “vanzelf” (allemaal gelijk) opgehoogdClocks kan gereset worden
Bijvoorbeeld c:=0We kunnen een invariant bij een toestand gebruiken
Bijvoorbeeld: c<=5We kunnen een guard bij een overgang gebruiken
Bijvoorbeeld: c>=3
26
Voorbeeld CounterTest1
27
CounterTest:
System declarations:CT = CounterTest();system CT;
invariant
guard
Verify CounterTest1
28Is dit wat je verwacht?
Voorbeeld CounterTest2
29
CounterTest:
System declarations:CT = CounterTest();system CT;
urgent state (de tijd kan niet verhoogd
worden in een urgent state)
Verify CounterTest2
30
Voorbeeld timed model
31
Lamp:
System declarations:system Lamp, User;
Declarations:clock c;chan press;
User:
Wat wordt hier gemodelleerd?
Simulation (in state Low)
32
Simulation (in state Low)
33
Verification
34