Re: Proposal for two additional environment parameter functions

From: Marq Kole <marq.kole_at_.....>
Date: Mon Jul 23 2007 - 05:02:47 PDT
All,

I've had a similar discussion last year on another forum with the usual
suspects :-) http://www.designers-guide.org/Forum/YaBB.pl?num=1156512831/0

The only safe use of a $freq system function seems to be as part of the
printing API ($write, $fwrite, $debug, etc.) as all other uses would
essentially enter the problematic field of automatically translating
frequency-domain models to time-domain. In that sense a % code might be
more appropriate than a system function.

Marq



                                                                       
                                                                       
                                                                       
                                                                        To
                                       "Geoffrey.Coram"                
                                       <geoffrey.coram@analog.com>     
     David Miller                                                       cc
     <David.L.Miller@free              Verilog-AMS LRM Committee       
     scale.com>                        <verilog-ams@server.eda.org>    
                                                                   Subject
     Sent by:                          Re: Proposal for two additional 
     owner-verilog-ams@se              environment parameter functions 
     rver.eda.org                                           Classification
                                                                       
     13-07-2007 16:36                                                  
                                                                       
                                                                       
                                                                       
                                                                       
                                                                       




Hi Geoffrey,
Yes I understand for an ac, the circuit is linearized around the op point.
I
never (at this stage at least) intended for $freq to cause G and C to be
recomputed.
I have supported $freq for many years and it is mainly a debug function (It
is
helpful when used in conjunction with $debug()). I also use it in noise
analysis, where we can have frequency dependent elements. It has proven
helpful
to designers when debugging model problems. I can detect models that are
dependent on frequency to ensure that they are solved each point (even if
that
solve doesn't modify the jacobian).

Recently a model developer asked me how to load noise freq/pwr pairs from a
file.
One solution is that you use $fscanf to load the values from the file into
an
array and then use noise_table(). However this is inefficient as you need
to
know how many elements are listed in the file so that your Verilog-A array
is
the correct size.

So the other way was to use $table_model() and $freq. This could do the
interpolation of the freq/pwr pairs, and then you could use white_noise()
to
load that pwr value.
This worked beautifully, it allows you to have all the benefits of the
$table_model interpolation/extrapolation algorithms (not just clamping at
the
bounds).
However it is breaking the definition of white_noise() since now my pwr
value
is frequency dependent.

A couple of ways to solve this:
1. Extend noise_table() and overload the first arg such that if it is a
string
then it represents a file name which contains the freq/pwr pairs.

2. Add $freq, and a new function 'colored_noise(pwr)' and use $table_model
to
do the interpolation.

I prefer 2. as I am not keen on overloading arguments to be different
types.
But I was still working through some of the finer points of the
colored_noise()
function, so wasn't quite ready to propose it. But I thought $freq was
fairly
simple, so thought I would send it through now for people to critique.

Cheers...
Dave

Geoffrey.Coram wrote:
> Arpad -
> $abstime works OK in a transient analysis, because the full model is
> evaluated
> at each timepoint.
>
> Spice's ac analysis is a different sort of animal: the operating point is
> computed, and then *the circuit is linearized about that op-pt*.
> Generally,
> this means that the model is evaluated during the op-pt and all the
> derivatives
> are stored off.  Then, for each point in the ac analysis, the
> derivatives are
> used to compute J = G + j w C, where G=conductances and C=capacitances
> (derivatives of contributions involving ddt()); G and C are *not*
> re-computed
> at the new frequency, because Spice assumes that they only depend on the
> v-vector (the operating point).
>
> I agree with David (from Tiburon) about the hazards of $freq expressions
> for models that are supposed to work in transient, HB, etc.
>
> -Geoffrey
>
>
> Muranyi, Arpad wrote:
>> Geoffrey,
>>
>> I don't understand the reason for why the IF statement
>> wouldn't get evaluated during the AC sweep.   Could
>> you please explain that to me?
>>
>> If we had this in the language, I would expect it to
>> work the same as $abstime.  Doesn't $abstime=0 in the
>> operating point analysis and greater than zero
>> thereafter?  If I remember correctly, I was able to
>> use if($abstime ...) before.  Why couldn't $freq do
>> the same?
>>
>> Thanks,
>>
>> Arpad
>

--
=====================================
-- David Miller
-- Design Technology (Austin)
-- Freescale Semiconductor
-- Ph : 512 996-7377 Fax: x7755
=====================================

--
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, and is
believed to be clean.





graycol.gif pic26243.gif ecblank.gif
Received on Mon Jul 23 05:04:53 2007

This archive was generated by hypermail 2.1.8 : Mon Jul 23 2007 - 05:05:08 PDT