SVA Sequences IV – Multiple Clock Domains/ Multi-clocked Sequence

Multi-clocked sequences are built by concatenating multiple single clocked sequences in different clock domains using following operators.

  1. Single delay concatenation operator (##1)
  2. zero-delay concatenation operator (##0)

Single delay concatenation operator (##1)

Match of mult_seq1 starts with a match of seq1 at posedge of clk1 and end with a match of seq2 at posedge clk2. After matching seq1, ##1 moves the time to the nearest strictly subsequent posedge clk2 and then try for seq2 match.

If clk1 and clk2 are identical, the above sequence will be equivalent to the following seq.

zero-delay concatenation operator (##0)

Match of mult_seq2 starts with a match of seq1 at posedge of clk1 and end with a match of seq2 at posedge clk2. After matching seq1, ##0 moves the time to the nearest possibly overlapping tick of posedge clk2 and then try for seq2 match.

If clk1 and clk2 are identical, the above sequence will be equivalent to the following seq.

Restrictions

  • Multi-clocked sequence operands cannot be combined with any sequence operators other than ##1 or ##0
    Some examples are the following.

  • Empty matches are not allowed for multiclocked sequence operands
    This restriction guarantees to have well defined starting and ending clocking events and avoids ambiguity.

    If more than one clock ticks have been allowed at the boundary then the ending clocking event is ambiguous. In other words, if clk1 and clk2 are not identical and if seq3 is an empty match, then there is an ambiguity on the ending clocking event.

  • Multi clocked sequences are useful in verification, if it involves multiple clock domains.

    Sini Balakrishnan

    Sini Balakrishnan

    Staff Engineer at Intel
    Sini has spent more than a dozen years in the semiconductor industry, focusing mostly on verification. She is an expert on Formal Verification and has written international papers and articles on related topics.
    Sini Balakrishnan

    Latest posts by Sini Balakrishnan (see all)

    One Comment

    1. Ujas

      I don’t find any difference between Single delay concatenation operator (##1)
      and zero-delay concatenation operator (##0) .
      Would you please show waveform regarding both operator?

      Thanks!

    Leave a Reply

    Your email address will not be published. Required fields are marked *