Modeling dynamic delay range via subroutine

Ben ,

  1. I believe the tools are correct in their output.
    By simply adding an enclosed parenthesis your sequence ‘dynamic_delay’ from sva-package-for-dynamic-and-range-delays-and-repeats can be re-written as
// ******       DYNAMIC DELAY ##d1 **********
    // Implements     ##[d1] 
    // Application: sq_1 ##0 dynamic_delay(d1) ##0 sq_2;
    sequence dynamic_delay(count);
        int v;
     ( (1, v=count) ##0 ( (v>0, v=v-1) [*0:$] ##1 v<=0 ) );
    endsequence // dynamic_delay

When actual to count is 0 / -ve value sequence is equivalent to

( (1, v=count) ##0 v<=0 ) )

It matches at the same time that the sequence is invoked

  1. Using dynamic_delay(0) ,
    Why is it that we observe either “T:5 LHS Sequence matches” or “T:5 RHS Sequence matches” ?
    ( 3 tools shows one of the either message but not both , 1 tool shows both messages )
    Since both LHS and RHS sequence match at T:5 , shouldn’t we observe both messages ?
    Or is it that due to implicit first_match in consequent that a tool shows only one message ?

    Ideally as per LRM would it be incorrect if a tool were to show both display messages ?