340 likes | 487 Views
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 .
E N D
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.
UPPAAL model • Een UPPAAL modelbestaatuit: • Globaledeclaraties • Types • Bounded integers • Arrays • Structs • Variabelen • Functies (in C syntax) • Channels (voorsynchronisatie) • Clocks (voor het bijhouden van de tijd) • Proces templates • Grafischweergegevenalseen timed FSMD (Finite State Machine with Data) • Lokaledeclaraties • System declarations • Instantieertprocessen
UPPAAL proces • Een UPPAAL proces wordt grafisch weergegeven en bestaat uit: • Toestanden (positions) • Overgangen (transitions) eventueelvoorzien van: • Guard (voorwaardewaaronder transition mogelijk is) • Synchronization (rendezvous via een channel): • c! synchroniseer met c? op channel c • c? synchroniseer met c! channel c • Update: • Toekenningenaanvariabelen. • Reset van de tijd
UPPAAL template • We kunneneen UPPAAL procesdefiniërenalseen template met parameters (vergelijkbaar met een C++ template) • Erkunnenverschillende instances van deze template wordenaangemaakt (met verschillendeargumenten)
UPPAAL voorbeeld • Dining Philosophers
Dining Philosophers reference parameter position name start position
DiningPhilosophers synchronization guard update
DiningPhilosophers bounded integer
UPPAAL Model • We kunneneen UPPAAL model: • Simuleren (valideren) • Checken (verifiëren) • Met behulpvan Requirement Specification Language (Query Language) • Subset van TCTL = Timed Computation Tree Logic
RequirementSpecification Language • Proposities • Vergelijkingenbijvoorbeeld a>3bijvoorbeeldInit.i==5 (lokalevariabelei in procesInit) • Procesbevindzich in eenbepaaldetoestandbijvoorbeeld P0.Eat • Expressies met meerdereproposities • Propositielogica: &&, and, ||, or, !, not, imply • Predicatenlogica: A (vooralle), E (er is een) • Linear Temporal Logic: [] (altijd), <> (ooit)
Dining Philosophers • Wat is het verschiltussen het UPPAAL model en het op het practicum bestudeerde SPIN model? In het UPPAAL model kaneenfilosoofeenvorknietneerleggen, maar alleendoorgevenaaneenanderefilosoof Huiswerk! Pas het model aanzodateenvorkneergelegdkanworden!
UPPAAL Huiswerk! Bestudeer: “Uppaal4.0: Small Tutorial” en bedenk vragen!
Electronic System Level Design and Verification HM-ES-th2 Les 10
Uitwerkinghuiswerk chan& pickup_left, chan& laydown_left, chan& pickup_right, chan& laydown_right chan& pickup, chan& laydown Fork: Philo: System declarations: 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; Declarations: chanpickup[5]; chanlaydown[5];
Tijd in UPPAAL • Tijdwordtbijgehouden in clocks (erkunnenmeerdere clocks zijn) • Bijvoorbeeld: clock c; • Clocks worden “vanzelf” (allemaalgelijk) opgehoogd • Clocks kangeresetworden • Bijvoorbeeldc:=0 • We kunneneen invariant bijeentoestandgebruiken • Bijvoorbeeld: c<=5 • We kunneneen guard bijeenoverganggebruiken • Bijvoorbeeld: c>=3
Voorbeeld CounterTest1 guard CounterTest: invariant System declarations: CT = CounterTest(); system CT;
Verify CounterTest1 Is ditwat je verwacht?
Voorbeeld CounterTest2 CounterTest: urgent state (de tijdkannietverhoogdworden in een urgent state) System declarations: CT = CounterTest(); system CT;
Voorbeeld timed model Lamp: User: Watwordthiergemodelleerd? Declarations: System declarations: clock c; chan press; system Lamp, User;