Sequence Methods :: ended V/S matched

I am trying an example to differentiate between Sequence Methods :: .ended V/S .matched :: ended_VS_matched

I Observe that using .ended the assertion PASSes whereas the assertion FAILS using .matched .

I am aware that .ended returns True on Same clock when it completes

[Q] Does .matched ever return True on Same clock tick when it completes ?

Via trial and error I see that for the assertion to PASS via .matched I need to change property ’ endCycle ’ to ::


  @( posedge clk )  $rose( c )  |=>  ##1  @( posedge clk ) aRb(a,b).matched ;

  //   Which  is  Equivalent  to  ::
  
  @( posedge clk )  $rose( c )  |=>  ##1  aRb(a,b).matched ;

In reply to hisingh:

The matched() sequence method is intended to be used in a multi clock sequence and you are using it with a single clock. You may have run into a tool specific issue for that particular use case.

This Mentor/Siemens EDA sponsored public forum is not for discussing tool specific usage or issues. Please contact your tool vendor directly for support.

In reply to dave_59:

Hi Dave ,

I was going through the LRM Section 16.13.5 where it mentions “To detect the end point of a sequence when the clock of the source sequence is different from the destination sequence, method matched on the source sequence is used”

Does the LRM say whether it’s legal for matched is used with a single clock ? ( I tried looking for it but didn’t find anything )

You may have run into a tool specific issue for that particular use case.

So ideally the O/P using matched and ended should be same , right ?

In reply to hisingh:

It does not say, but I do not think it matters. Even if you have multiple clocks, they might be synchronized at certain points.

In reply to dave_59:

Even if you have multiple clocks, they might be synchronized at certain points.

As we discussed the scenario in the following thread :: using-.matched-out-phase-clocks

The O/P for multi clocks synchronized is same as the one I observe via trial and error i.e


@( posedge clk )  $rose(c) |=>  ##1 @( posedge clk ) aRb(a,b).matched ;

Both of these are in accordance with ::


LRM 16.13.6 Sequence Methods ::

(1) It can only be used in sequence expressions. Unlike triggered, matched provides synchronization between two clocks by storing the result of the source sequence until the arrival of the first clock tick of the destination sequence after the match. 
 
(2) The matched status of the sequence is set in the Observed region and persists until the Observed region following the arrival of the first clock tick of the destination sequence after the match.