[sv-ec] event variables


Subject: [sv-ec] event variables
From: Francoise Martinolle (fm@cadence.com)
Date: Thu Mar 13 2003 - 15:14:24 PST


I think that creating event variables and allow them to be assigned to other
event variables or even to null is very dangerous: assignments may cause
lost synchronization handles, process which blocks forever without a mean to
start them back up.

By creating event variables, we are changing the meaning of @( event)
In fact you would be waiting on a pointer to that event and you are allowed to
change what this pointer points to.

Allowing this sort of things will cause compiled code generation to not being
able to statically predict the sensitivity of a process waiting on an event
without
doing a deep analysis of the procedural code.

I don't understand the purpose of assigning events variables to another
event variable.
In Arturo's proposal section 12.8.2 (merging events) it seemed to me that the
goal was to create that when an event triggered, another one was
triggered by consequence. If this was the intent of creating these event
variables,
I think this can be coded in Verilog today very easily.

just write a process such as:

while(1) @e2 -> e1;

whenever e2 triggers, e1 triggers. Therefore all processes sensitive to
either e2 or e1
will be executed.

When you want to remove this event trigger sequence, just use a disable
statement on
the named process.

This is much simpler, and can be done in Verilog today.
The advantage is that:
  1. we don't create a mix of events and pointers to events and refer
      to them syntactically the same way,
  2. we don't have process that block because of race condition between the
event
      assignment and the process wait,
  3. we don't have pointers in our implementation

Francoise
        '



This archive was generated by hypermail 2b28 : Thu Mar 13 2003 - 15:15:44 PST