Subject: [sv-ec] Re: $wait_all/any/...
From: Kevin Cameron (Kevin.Cameron@nsc.com)
Date: Wed Dec 18 2002 - 15:02:53 PST
Link: Replace 12
Having posted a list of keywords that shouldn't be, I have to say these
look like they should be keywords rather than system tasks (if they
are actually needed).
What's the difference between:
$wait_all(x,y,z)
and
@(x && y && z)
?
Or between
$wait_any(a,b,c)
and
@(a or b or c)
?
- Persistance is a property of the event not of the wait, so I don't see why
we need them.
$wait_order could be broken down into an order call:
$wait_order(d,e,f)
becomes:
@(ordered(d,e,f))
which lets you do more complex conditions:
@(reset or ordered(d,e,f))
However, there is probably syntax for assertions that already does that
without extra keywords/functions - which we should just reuse.
I still think we should differentiate between actual events (Verilog) and
dynamic events (donation) with syntax. E.g. the example in (12.8.2) becomes
something like:
event a,d, // events
&b, &c; // event references
b &= a;
-> c; // null operation
-> a; // also triggers b
-> b; // also triggers a
c &= b; // c now refers to a too
-> a; // also triggers b and c
-> b; // also triggers a and c
-> c; // also triggers a and b
loop1: always @(c) begin
...
c &= null; // block at loop1 until reassigned
end
always @(reset) c &= a; // reactivate loop1
always @(set) c &= d; // reactivate loop1
The proposed scheme defies easy analysis.
Kev.
-- National Semiconductor, Tel: (408) 721 3251 2900 Semiconductor Drive, Mail Stop D3-500, Santa Clara, CA 95052-8090
This archive was generated by hypermail 2b28 : Wed Dec 18 2002 - 15:03:53 PST