RE: [sv-ac] Fwd: P1800-2009 : 16.17 Clock resolution // quick questions

From: Lisa Piper <ljpiper619_at_.....>
Date: Sat Mar 14 2009 - 18:28:32 PDT
Hi Ben,

 

I'll try to answer this one.   

 

The reason is that when you flatten a sequence instance, the last step is to
"Return the expression obtained by copying the local variable declarations
and body sequence_expr  from r' and enclosing the result in parentheses."
(step 7 of flatten_sequence(r) of F.4.1.1 in The rewriting algorithm)
Furthermore, it is stated in section 16.14.3 Clock flow:  "The scope of a
clocking event flows into parenthesized subexpressions and, if the
subexpression is a sequence, also flows left to right across the
parenthesized subexpression. However, the scope of a clocking event does not
flow out of enclosing parentheses."

 

So for the example in question:

 

sequence s3; @(negedge clk) s2; endsequence 

c4: cover property (s3 ##1 b);

 

the rewrite results in:

 

c4: cover property ( (@(negedge clk) ($rose(a) ##[1:5] b)  )  ##1 b;

 

The issue is that there is no clock associated with the "##1 b" at the end
of the sequence expression since there is no default clock, leading clock,
or explicit clock.  Hopefully it is clear that the other example you created
is also not legal since there is no clock associated with s9.

 

Lisa

 

 

 

  _____  

From: owner-sv-ac@server.eda.org [mailto:owner-sv-ac@server.eda.org] On
Behalf Of ben cohen
Sent: Saturday, March 14, 2009 6:06 PM
To: sv-ac@server.eda.org
Subject: [sv-ac] Fwd: P1800-2009 : 16.17 Clock resolution // quick questions

 

Am having a hard time understanding the following points.  Your help is
appreciated. 

Ben 

page 406-407

module examples_without_default (input logic a, b, c, clk);

sequence s2; $rose(a) ##[1:5] b; endsequence

sequence s3; @(negedge clk) s2; endsequence

 

c4: cover property (s3 ##1 b);

// illegal: no default, inferred, or explicit leading

// clocking event and maximal property is not an instance

Ben question: Why isn't s3 equivalent to: 

c4: cover property (@(negedge clk) $rose(a) ##[1:5] b ##1 b);

Ben question: would this be OK? 

sequence s9;   b; endsequence : 

c4b: cover property (s3 ##1 s9);

---

Page 406

default clocking posedge_clk @(posedge clk); .. endclocking 

property q1;  $rose(a) |-> ##[1:5] b; endproperty

property q5; @(negedge clk) b[*3] |=> !b; endproperty

property q6; q1 and q5; endproperty

a5: assert property (q6);

// illegal: default leading clocking event, @(posedge clk),

// but semantic leading clock is not unique

Page 408

The set of semantic leading clocks of q1 and q2 is the union of the set of
semantic leading clocks of q1 with the set of semantic leading clocks of q2.

Ben question: Not sure what "union of the set of semantic .." means, but in
q6, isn't that equivalent to: " @ (posedge clk) $ose(a) ->  // the default
clock

                                           ##[1:5] b    and @(negedge clk)
b[*3] |=> !b

 

 



-- 
This message has been scanned for viruses and 
dangerous content by  <http://www.mailscanner.info/> MailScanner, and is 
believed to be clean. 


-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.
Received on Sat Mar 14 18:30:04 2009

This archive was generated by hypermail 2.1.8 : Sat Mar 14 2009 - 18:30:54 PDT