Electronic System Level Design and Verification

Post on 30-Dec-2015

41 views 3 download

description

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 . - PowerPoint PPT Presentation

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