RE: [sv-ac] 1682

From: Korchemny, Dmitry <dmitry.korchemny_at_.....>
Date: Fri Sep 21 2007 - 05:54:42 PDT
Hi Lisa,

 

Using the future value functions in simulation is logically equivalent to shifting all the data in the property towards the past by one tick of the global clock and starting property monitoring from the second global clock tick. Therefore there should not be any problems at the end of the simulation with strong assertions.

 

Thanks,

Dmitry

 

________________________________

From: Lisa Piper [mailto:piper@cadence.com] 
Sent: Friday, September 21, 2007 2:48 PM
To: Thomas Thatcher; Eduard Cerny
Cc: Korchemny, Dmitry; sv-ac@eda-stds.org
Subject: RE: [sv-ac] 1682

 

Also, what happens at the end of simulation when the assertion is "strong"? It seems like it would always fail. 

 

Lisa

 

________________________________

From: owner-sv-ac@eda.org [mailto:owner-sv-ac@eda.org] On Behalf Of Thomas Thatcher
Sent: Friday, September 21, 2007 1:01 AM
To: Eduard Cerny
Cc: Korchemny, Dmitry; sv-ac@eda-stds.org
Subject: Re: [sv-ac] 1682

 

Hi Ed,

The text says that the "action block" is performed at the next global clocking tick, but didn't say
anything about the evaluation of the assertion.

Let's see if I understand what you are saying:  A sequence expression  like $rising_gclk(sig) must be
evaluated as  (@$global_clk ##1 $rose_gclk(sig)) in a simulation environment because the simulator can
never know the final end-of-timestep value when the assertion is evaluated in the observed region.  Is that correct?
I think some additional explanation is necessary to make this clear.

Thanks,

Tom

Eduard Cerny wrote: 

Hi Tom,
 
 It does say
 
"An action block of an assertion containing next value functions is performed at the time when all the next values are actually computed, that is, at the global clocking tick that follows the assertion clock tick at which the final boolean expression of the assertion is evaluated."
 
Whi implicitly means that you shift it all back by on global clock cycle. Using $past(x,,,$global_clock) and similat constructs.
 
ed
 
 
  

	-----Original Message-----
	From: owner-sv-ac@eda.org [mailto:owner-sv-ac@eda.org] On 
	Behalf Of Thomas Thatcher
	Sent: Wednesday, September 19, 2007 8:07 PM
	To: Korchemny, Dmitry
	Cc: johan.martensson@jasper-da.com; sv-ac@eda-stds.org
	Subject: Re: [sv-ac] 1682
	 
	Hi Dmitry,
	 
	I have read through the 1682 proposal.  The big problem with 
	it is that it
	doesn't specify how the future-value functions are to be implemented,
	according to the Verilog scheduling semantics.
	 
	Do the future-value functions simply compare the sampled 
	value of the signal
	with the Observed value when the assertion executes?
	 
	Tom
	 
	Korchemny, Dmitry wrote On 09/17/07 12:39 AM,:
	    

		Hi Johan,
		 
		I fixed Example 2 and added a row to the table. I also 
		      

	fixed the numeration (as pointed by Shalom).
	    

		Thanks,
		Dmitry
		 
		-----Original Message-----
		From: johan.martensson@jasper-da.com 
		      

	[mailto:johan.martensson@jasper-da.com] 
	    

		Sent: Tuesday, September 11, 2007 4:00 PM
		To: Korchemny, Dmitry
		Cc: sv-ac@eda-stds.org
		Subject: Re: [sv-ac] 1682
		 
		Hi Dmitry,
		 
		there was a mistake in what I wrote below. The property in 
		      

	Example 2:
	    

		| a: assume property(@$global_clocking $rising_gclk(clk) ##1
		| (!$falling_gclk(clk)[*1:$]) |-> $steady_gclk(sig) );
		 
		states that sig must be stable between any rising edge
		of clk and the first subsequent falling edge of clk.
		 
		This leads me to think that there maybe is a typo in the property.
		 
		The following property seems to fit the description better.
		 
		a: assume property(@$global_clocking $falling_gclk(clk) ##1
		(!$falling_gclk(clk)[*1:$]) |-> $steady_gclk(sig) );
		 
		Best Regards,
		 
		Johan M
		 
		 
		 
		 
		On Tue, Sep 11, 2007 at 12:22:11PM +0200, Johan Mårtensson wrote:
		 
		      

			Hi Dimitry,
			 
			A couple of additional comments on  1682.2007.09.09.pdf.
			 
			1) Table 16-25
			-------------
			 
			I think the example table 16-25 would gain somewhat by 
			        

	adding a row for
	    

			a timepoint where the there is an edge on sig in the next timepoint.
			I think that would help avoid a possible misunderstanding.
			For example at time 40 $sampled(sig)==0, $future_gclk(sig)==0,
			$rising_gclk(sig)==false, $falling_gclk(sig)==false,
			$changing_gclk(sig)==false, $steady_gclk(sig)==true, (i.e. 
			        

	same as for
	    

			time point 30)
			 
			2) Example 2
			-------------
			 
			| Example 2: The following assumptions states that a signal sig must
			| remain stable between two falling edges of a clock clk as 
			        

	sampled by
	    

			| global clocking. This differs from the property in 
			        

	Example 1 in the case
	    

			| where the first falling edge of clk has not yet occurred. 
			        

	In Example 1,
	    

			| sig is not allowed to change in that case, but in this 
			        

	example sig can
	    

			| toggle freely while we wait for clk to begin.
			| 
			| a: assume property(@$global_clocking $rising_gclk(clk) ##1
			| (!$falling_gclk(clk)[*1:$]) |-> $steady_gclk(sig) );
			| 
			 
			There seems to be some kind of mismatch between the 
			        

	explanation and the
	    

			assumption a.
			 
			The property seems to state not that "signal sig must remain stable
			between two falling edges of a clock clk" but that sig must 
			        

	be stable
	    

			between (and including) any rising edge of clk and (but not
			including) the first subsequent falling edge of clk."
			 
			Furthermore in case clk has a rising edge before it has its first
			falling edge then sig may be constrained before the first 
			        

	falling edge
	    

			of clk contrary to what seems to be stated in the explanation.
			 
			Best Regards,
			 
			Johan M
			 
			 
			On Wed, Sep 05, 2007 at 04:33:56PM +0300, Bustan, Doron wrote:
			 
			        

				Hi,
				 
				 
				 
				 
				 
				 
				 
				Here are my remarks
				 
				 
				 
				1.     Font is not correct.
				2.     Most of the text should be in blue.
				3.     first paragraph:
				 
				 
				 
				           I would replace:
				 
				 
				 
				           "These functions include the capability to access the
				previous (resp. the next) value as sampled by 
				 
				            the global clock tick that precedes (resp. follows)
				immediately the time at which the function was called. 
				 
				           Sampling of an expression is explained in 16.4."
				 
				 
				 
				           with
				 
				 
				 
				           "These functions include the capability to 
				          

	access the sample
	    

				value at previous (resp. the next) global clock 
				 
				            tick that precedes (resp. follows) 
				          

	immediately the timestep
	    

				at which the function is called. 
				 
				           Sample value is explained in 16.4."
				 
				 
				 
				4.     page 1
				 
				           - $falling_gclk(expression) returns true if the sampled
				value of the LSB of the expression
				 
				               is changing to 1 at the next global clocking tick.
				Otherwise, it returns false.
				 
				 
				 
				   Should be 
				 
				 
				 
				    - $falling_gclk(expression) returns true if the 
				          

	sampled value of
	    

				the LSB of the expression
				 
				       is changing to 0 at the next global clocking tick. 
				          

	Otherwise, it
	    

				returns false.
				 
				 
				 
				5.     example1, I would say that the error message error("sig is not
				stable"); is executed at time 90.
				6.     page 3, I would change"
				 
				 
				 
				"The following functions allow to access the immediate 
				          

	past and future
	    

				values as sampled by the
				 
				     global clock or detect changes in values of an expression as
				sampled by the global clock."
				 
				 
				 
				  to
				 
				 
				 
				"The following functions allow to access the sample value of an
				expression at immediate past and future ticks of the
				 
				           global clock and to detect changes in sample 
				          

	value from past
	    

				(current) tick of the global clock to its current (next) tick."
				 
				 
				 
				Doron
				 
				 
				 
				 
				 
				 
				-- 
				This message has been scanned for viruses and
				dangerous content by MailScanner, and is
				believed to be clean.
				 
				          

			-- 
			------------------------------------------------------------
			Johan Mårtensson                 Office: +46 31 7451913
			Jasper Design Automation         Mobile: +46 703749681 
			Arvid Hedvalls backe 4           Fax: +46 31 7451939
			411 33 Gothenburg, Sweden        Skype ID: johanmartensson
			------------------------------------------------------------
			 
			-- 
			This message has been scanned for viruses and
			dangerous content by MailScanner, and is
			believed to be clean.
			 
			        

		 
		      

	-- 
	------------------
	Thomas J. Thatcher
	Sun Microsystems
	408-616-5589
	------------------
	 
	 
	-- 
	This message has been scanned for viruses and
	dangerous content by MailScanner, and is
	believed to be clean.
	 
	 
	    

 
  

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

This e-mail and any attachments may contain confidential material for
the sole use of the intended recipient(s). Any review or distribution
by others is strictly prohibited. If you are not the intended
recipient, please contact the sender and delete all copies.

-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.
Received on Fri Sep 21 05:56:09 2007

This archive was generated by hypermail 2.1.8 : Fri Sep 21 2007 - 05:57:15 PDT