Question about above() and cross()

From: Muranyi, Arpad <arpad.muranyi_at_.....>
Date: Wed Apr 12 2006 - 09:34:13 PDT
At the risk of getting rotten eggs thrown at me, I would like
to raise a question about the above() and cross() functions.
This is in light of "compatibility" between the two AMS
languages, Verilog-AMS and VHDL-AMS.  Some of us have a need
to write the same model in both languages (or translate to one
from the other) and similarity between the two languages would
make our life a lot easier...

In VHDL-AMS there is a 'above attribute which returns a Boolean
signal true or false.  The return value will change depending on
the condition being true or false, regardless whether the change
is due to a rising or falling edge.  The returned signal being
a signal can be used in processes (event handlers) which are
triggered regardless of the direction of the change.

Contrast this with the Verilog-AMS above() function.  From 
Section 6.7.5.2 of the v2.2 LRM, the above() function
"... generates a monitored analog event to detect threshold
crossings in analog signals when the expression crosses
zero (0) from below."

Which means that it detects only rising edges, which is different
from the VHDL-AMS 'above.

I know there is a cross() function which can do both, but that
one has a limitation that it doesn't generate interrupts in DC
sweeps.  The 'above of VHDL-AMS does it regardless which analysis
it is used in.

I wonder whether we could address problems like this to be as
compatible between the two languages as possible to make the
model maker's (translator's) life easier?

Thanks,

Arpad
---------------------------------------------------------------
Received on Wed Apr 12 09:34:54 2006

This archive was generated by hypermail 2.1.8 : Wed Apr 12 2006 - 09:34:59 PDT