From: Shalom.Bresticker@freescale.com
Date: Mon Apr 11 2005 - 13:00:00 PDT
>Number: 659
>Category: errata
>Originator: Shalom.Bresticker@freescale.com
>Description:
In 15.3.3 $fullskew:
1. The LRM says,
"The default behavior for $fullskew is timer-based. Violations shall be reported
immediately upon an elapse of time after the timestamp event equal to the limit.
It then becomes dormant and reports no more violations, even in response to
timecheck events, until after the next timestamp event. This check shall also
become dormant if it detects a timestamp event when the associated condition is false."
This needs to change to something like the following:
"The default behavior for $fullskew is timer-based. A violation shall be
reported immediately upon elapse of the time limit after the timestamp event if
a timecheck event does not occur in this time, turning the timing check dormant.
However, if a timecheck event does occur within the time limit, then no
violation is reported and the timing check turns dormant immediately.
If a second timestamp event occurs within the time limit, then a new timing
check is activated and no violation is reported on the first.
However, if it detects a conditioned timestamp event when the associated
condition is false, then the timing check turns dormant.
A reference event or data event is a timestamp event and activates a new timing
check, unless it is a timecheck event occuring within the time limit after a
preceding timestamp event.
In the timer-based mode, the remain active flag is ignored."
2. Case 1 says,
" Case 1: Event based flag and remain active flag not set.
The transition at A of CP while MODE is true begins a wait for a negative
transition on CPN, and a violation is reported at B as soon as a period of time
equal to 50 time units has passed. This resets the check and readies it for the
next active transition.
A negative transition on CPN occurs next at C, beginning a wait for a positive
transition on CP while MODE is true. At D a time equal to 70 time units has
passed without a positive edge on CP while MODE is true, so a violation is
reported and the check is again reset to await the next active transition.
A transition on CPN at E also results in a timing violation, as does the
transition at F, because even though CP transitions, MODE is no longer true.
Transitions at G and H also result in timing violations, but not the transition
at I, because it is followed by a positive transition on CP while MODE is true."
Reminder: we decided that Case 1 should be simply, "Event based flag not set."
The first paragraph says,
"a violation is reported at B as soon as a period of time equal to 50 time units has passed."
However, the intent is that 50 timepoints passed WITHOUT a negedge in CPN.
But in the figure, we clearly see that there IS a negedge on CPN before B.
So the figure does not correct show the intended case.
The figure should be redrawn so that there is no negedge on CPN before B.
Next, it says,
"A negative transition on CPN occurs next at C". As mentioned above,
this should appear in the diagram AFTER B. The arrows and vertical lines
showing the time between C and D need to move to the right as well.
Finally, it ends with
"Transitions at G and H also result in timing violations, but not the transition at I, because it is followed by a positive transition on CP while MODE is true."
That positive transition on CP is J. In the current diagram, J is more than
70 timepoints after I. It should be within that time.
Simply moving the CP waveform a little to the right might fix all of these.
3. Case 2 is:
"Case 2: Event based flag set, remain active flag not set.
The transition at A of CP while MODE is true begins a wait for a negative
transition on CPN, and a violation is reported at C on CPN because it occurs
beyond the 50 time unit limit. This transition at C also begins a wait of 70
time units for a positive transition on CP while MODE is true. But for
transitions on CPN at B through H there is no positive transition on CP while
MODE is true, and so no timing violations are reported. The transition at I on
CPN begins a wait of 70 time units, and this is satisfied by the positive
transition on CP at J while MODE is true."
The same comments that C should be after B and J after I hold here too.
The sentence "But for transitions on CPN at B through H" should be
"But for transitions on CPN at C through H".
(The history of this is that in the 1364-2001 draft, it was originally
written "This transition at B also begins a wait of 70 time units.."
and one reviewer noticed that it should be C, but the second place where
B should also be C was missed.)
Note that the same rules about when a new timing check is activated hold
in the event based mode as well as in the timer based mode.
4. I'm getting tired...
5. Case 3:
"Case 3: Event based flag and remain active flag both set.
The transition at A of CP while MODE is true begins a wait for a negative
transition on CPN, and a violation is reported at C on CPN, and it shall also
begin a wait for a positive transition on CP while MODE is true. No such
transition on CP ever takes place after CPN transitions C through H, but no
violations are reported because CP never experiences a positive transition
while MODE is true. Transition I also reports no violation because a positive
transition at I on CP while MODE is true occurs within the 70 time unit skew
limit."
Case 3 actually describes EXACTLY the same value as Case 2.
So what difference does the remain active flag mean here?
I'm not sure whether there is a case where it does make a difference.
Note that in the original proposal, the original version of this flag had
a different role, to determine whether a conditioned timestamp event with
condition false would turn the check dormant or not.
6. The paragraph describing $fullskew in event based mode should be changed
because it says that in this mode, $fullskew is like $skew, which is misleading,
because $skew is unidirectional. And it does not describe the behavior shown
in Case 2, describing when an event is a timestamp and when it is a timecheck
event. The rules are the same as in timer based mode. Case 3 is definitely
not describing a behavior like $skew, which reports multiple violations on
multiple timecheck events.
7. The example for both $fullskew and $timeskew should contain the flags,
such as
$fullskew (posedge CP &&& MODE, negedge CPN, 50, 70, e_b_f, r_a_f);
8. Finally, an easy one: The $skew section says that "$timeskew and $fullskew
shall be used if violation reports are absolutely required". That should be
"should" instead of "shall".
Thank you and good night.
Shalom
This archive was generated by hypermail 2.1.4
: Mon Apr 11 2005 - 13:00:21 PDT
and
sponsored by Boyd Technology, Inc.