errata/659: $fullskew bugs

From: Shalom.Bresticker@freescale.com
Date: Mon Apr 11 2005 - 13:00:00 PDT

  • Next message: Stefen Boyd: "Re: errata/659: errata $fullskew bugs"

    >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.