Asynchronous FIFO Multithreaded assertion

In reply to ben@SystemVerilog.us:

Thanks Ben for the detailed explanation ,

A clocking event in the declaration of a sequence or property does not flow out of an instance of that sequence or property.
However, the clock flows across elements of same sequence.

So for the following ::


 sequence  s1;
   @( posedge clk0 )  b  ##1  c ; 
 endsequence

 sequence  s2;
   @( posedge clk1 )  d  ##1  e ; 
 endsequence

 sequence  s;
   @( posedge clk )  a  ##1  s1  ##1  s2  ##1 f ; 
 endsequence


’ c ’ is clocked on clk0 , ’ e ’ is clocked on clk1 , ’ f ’ is clocked on clk as the clk1 don’t flow out of the sequence s2

Sequence ’ s ’ is equivalent to ::


 sequence  s;
   @( posedge clk )  a  ##1 ( @( posedge clk0 )  b  ##1  c ) ##1 ( @( posedge clk1 )  d  ##1  e )  ##1 f ; 
 endsequence
 

Personally I always feel like basics go a long way , so this sure is an important piece of info .