|Summary||Sync and handshaking (event objects)|
|Current status||Proposal submitted|
|Author submission||Bhasker Jayaram|
For synchronization and hand-shaking between processes, events are required. VHDL already has the notion of events and can wait for events. What is missing is an easy way to create events.
This proposal first declares a signal to be an “event” kind of signal – specified in the declaration of the signal.
signal Check: BIT event;
Such an event signal cannot be assigned a value or read from – this is the only restriction for the event signal, otherwise it behaves just like any other signal. It can however be used in event lists (to wait for) and the new attribute
'CAUSE_EVENT can be applied to it. Event signals can be passed as subprogram parameters, where they are treated
just like signals.
'CAUSE_EVENT when applied to an event signal causes an event in the next delta if no delay value is specified. If a delay value is specified, then an event occurs after the specified delay.
Check'CAUSE_EVENT(); Check'CAUSE_EVENT(10 ns);
'CAUSE_EVENT attribute is a procedure – so it can act either as a sequential procedure or a concurrent procedure. When two events are scheduled in multiple processes at exactly the same time, the events cancel each other out (bus resolution).
Processes waiting for a event to occur on Check will get triggered when an event occurs – could be either a wait statement or could be in the sensitivity list of a process.