event event-name [ is [only] TE]; // struct or unit member |
emit [struct-inst.]event-name; // action |
sys.any | struct-inst.quit |
on event-name { action; ... } ; |
expect|assume [rule-name is [only ]] TE [ else dut_error( "string", expr, ... ) ]; |
@[struct-inst.]event-name | // event instance | |
change|fall|rise('HDL-path') @sim | // simulator callback annotation | |
change|fall|rise(expr) | true(bool-expr) | cycle |
TE1 and TE2 | TE1 or TE2 | not TE | fail TE |
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 ) |
wait [[until] TE]; | sync [TE]; |
struct struct-type { locker-exp: locker; TCM() @event-name is { locker-exp.lock(); ... locker-exp.release(); }; }; |