Re: Question on 'above

From: Ernst Christen <Ernst.Christen_at_.....>
Date: Thu Aug 24 2006 - 17:35:02 PDT
Hi Arpad,

As John Shields described, an event will happen when the expression Q - E changes sign. 
The basic question is when does the event happen. I assume you expect it to happen at the 
same time as the event on SomeRealSignal. This is not what the LRM describes. Since the 
driver of the 'ABOVE signal is owned by the analog kernel, the crossing event can only 
happen after the analog kernel has determined an ASP, because only then does it perform 
the crossing check. Now, if you study the simulation cycle, you will find that the analog 
solver determines another ASP only under two conditions: either the break flag is set, or 
Tn > Tc in step a). In the latter case the ASPs do not include Tc (the ASP at this time 
has already been determined), so you will get the crossing event at a later time than the 
event on SomeRealSignal. The only way to get what you want is to execute a break statement 
when the event occurs on SomeRealSignal. This tells the analog solver that there is a 
discontinuity on one of the waveforms it is in control of, the waveform 
SomeRealQuantity-SomeRealSignal.

Thanks.
Ernst Christen

On Thu, 24 Aug 2006 15:51:52 -0700, Muranyi, Arpad wrote:
> Hello Everyone,
>
> Sorry if this forum in not the right place to ask this question, but I
> am not
> sure where else I could ask it.  Does the LRM specify how simulators
> should
> handle the following wait statement:
>
>     TestAbove : process is
>     begin
>       Count
>       wait on SomeRealQuantity'above(SomeRealSignal);
>     end process TestAbove;
>
> when there is another process that can change the value of
> SomeRealSignal?
>
> For example, let's assume that when this process stops on the wait
> statement,
> the value of SomeRealSignal is 1.0 and the value of SomeRealQuantity is
> 0.0,
> therefore the 'above returns a FALSE.  For simplicity, let's also assume
> that
> the quantity SomeRealQuantity is not changing.  Some time later another
> process decides to change the value of SomeRealSignal to -1.0.  Is this
> change supposed to cause the 'above statement change to TRUE and get the
> waiting process out of wait, or should it remain false until the
> quantity
> goes below and above the signal's new value?  In other words, is the
> 'above
> attribute supposed to act on both its argument and quantity in "real
> time",
> or only on the quantity?
>
> If you haven't guessed it yet, the reason I am asking this is because
> two
> different vendor's tools give me different results because of this.
>
> Thanks,
>
> Arpad
> ===================================================================
=====
> ==
Received on Thu Aug 24 17:35:07 2006

This archive was generated by hypermail 2.1.8 : Thu Aug 24 2006 - 17:35:12 PDT