Previous Section Next Section

A.8 Temporal Language

A.8.1 Event Struct and Unit Members

event event-name [ is [only] TE]; // struct or unit member

emit [struct-inst.]event-name; // action

A.8.2 Predefined Events

sys.any

struct-inst.quit

A.8.3 Temporal Struct and Unit Members

on event-name { action; ... } ;

expect|assume [rule-name is [only ]] TE

[ else dut_error( "string", expr, ... ) ];

A.8.4 Basic Temporal Expressions

@[struct-inst.]event-name

// event instance

change|fall|rise('HDL-path') @sim

// simulator callback annotation

change|fall|rise(expr)

true(bool-expr)

cycle

A.8.5 Boolean Temporal Expressions

TE1 and TE2

TE1 or TE2

not TE

fail TE

A.8.6 Complex Temporal Expressions

TE @[struct-inst.]event-name

// explicit sampling

{ TE; TE; ... }

// sequence

TE1 => TE2

// if TE1, then TE2 follows

TE exec { action; ... }

// execute when TE succeeds

[ n ] [ * TE ]

// fixed repeat

{ ... ; [ [n]..[m] ] [ * TE ]; TE; ... }

// first match repeat

~[ [n]..[m] ] [ * TE ]

// true match repeat

delay(expr)

detach(TE)

consume( @[struct-inst.]event-name )

A.8.7 Time Consuming Actions

wait [[until] TE];

sync [TE];

A.8.8 Using Lock and Release

struct struct-type {

locker-exp: locker;

TCM() @event-name is {

locker-exp.lock();

...

locker-exp.release();

};

};

Previous Section Next Section