Subject: [sv-ac] empty matches in multi-clock sequences
From: John Havlicek (john.havlicek@motorola.com)
Date: Sun Nov 23 2003 - 19:19:28 PST
Surrendra and All:
Has anyone thought carefully about the effect of empty
matches in multi-clock sequences?
The reason I ask is that Section 17 of the LRM suggests
that when using "##", the clock transition across the "##"
is known locally to that concatenation.
This is not true if there can be empty matches on the
operands of "##". For example, in something like the
implication
@(posedge clk1) a1[*0:$]
## @(posedge clk2) a2[*0:$]
## @(posedge clk3) a3[*0:$]
## @(posedge clk4) a4[*0:$]
## @(posedge clk5) a5[*0:$]
|=>
@(posedge clk) b
the clock transition from the antecedent to the
consequent could be any of
clk1 to clk
clk2 to clk
clk3 to clk
clk4 to clk
clk5 to clk
This has led me to wonder whether we should be
requiring the operands of ## to match non-empty words.
Is this too restrictive?
The benefit of such a restriction is that there are
well-defined starting and ending clock events
for every multiply-clocked sequence.
Without this restriction, a non-empty match of a sequence like
@(posedge clk1) a1[*0:$]
## @(posedge clk2) a2[*0:$]
## @(posedge clk3) a3[*0:$]
## @(posedge clk4) a4[*0:$]
## @(posedge clk5) a5[*0:$]
could have clki,clkj as its starting any ending clock events
as long as i <= j.
I don't think there is any theoretical reason that
we have to forbid the empty matches, but it is harder to
explain to the user what he is getting. Maybe it is a good
idea to be more strict now, with the possibility of relaxing
this requirement if users really need it to be done.
Best regards,
John H.
This archive was generated by hypermail 2b28 : Sun Nov 23 2003 - 19:20:13 PST