RE: Proposal for two additional environment parameter functions

From: Bob Floyd <bob.floyd_at_.....>
Date: Wed Jul 11 2007 - 15:10:22 PDT
Hi Dave,

A. Can you explain why your current VPI implementation of `$simprobe` is
non-portable?

B. Why not improve `$simparam` to support the proposed new features of
`$simprobe`?

Bob

> -----Original Message-----
> From: David Miller [mailto:David.L.Miller@freescale.com]
> Sent: Wednesday, July 11, 2007 4:53 AM
> To: Bob Floyd
> Cc: verilog-ams@eda.org
> Subject: Re: Proposal for two additional environment parameter functions
>
>
> Hi Bob,
> That is how I currently do it, but it means that models that we
> implement using
> this feature are non-portable which I want to avoid. I was
> thinking that this
> function is useful enough that it can be part of the language.
> Note that although the examples I show are Verilog-AMS, the main
> need for this
> function is to retrieve values from spice primitive and sub
> circuit devices. We
> currently have no way in the language to get values from the
> Spice engine apart
> from $simparam() which is too limited.
>
> Cheers...
> Dave
>
> Bob Floyd wrote:
> > Why not implement $simprobe as your own VPI function, thus minimizing
> > clutter in the language?
> >
> > -------------------------------------------
> > 2. $simprobe(instance, param_name [, expression])
> > Similar to $simparam(), this function will retrieve the value
> of a given
> > parameter from a given instance. If the instance/parameter does
> > not exist, it
> > will stop with an error. If the optional argument <expression> is
> > specified, it
> > will return this value in lieu of the error. This function is not
> > limited to
> > retrieving values from Spice elements, but also Verilog-AMS instances.
> >
> > [LRM TEXT]
> > $simprobe() allows the user to query the value of an element within the
> > specified instance. The function returns a real scalar value.
> > The general form of the $simprobe function is:
> > 	$simprobe(instance, param_name [, expression])
> >
> > <instance> is a string constant (either a literal or string
> > parameter). If the
> > string is prefixed with a '.' character, then the characters
> > following the '.'
> > character make up the full hierarchical name of the instance to
> > query. If the
> > first character of the instance string is not a '.', then the
> > string is the
> > local name of the instance to query. It is a compilation error to use a
> > hierarchical instance name where the string is not prefixed with
> > a '.' character.
> >
> > <param_name> is the name of the parameter whose value is
> required. It is a
> > string constant (either a literal or string parameter). A
> > parameter can be any
> > valid scalar or indexed vector output parameter for the instance
> > in question.
> >
> > <expression> is an optional argument. It can be any valid Verilog-AMS
> > expression. When specified, its value will be returned in case of
> > an error.
> >
> > When <instance> is specified in the hierarchical form,
> > <param_name> will be
> > retrieved from <instance>. If <instance> or <param_name> does
> not exist an
> > error will be raised. If <expression> has been specified, it's
> > value will be
> > returned in lieu of raising the error.
> >
> > Example:
> > module grandchild();
> >    parameter string inst = ".atop.ch";
> >    analog $strobe("%m: Value of '%s' is %g", inst, $simprobe(inst,"x"));
> > endmodule
> > module child();
> >    real x;
> >    grandchild gc();
> >    analog x = 10;
> > endmodule
> > module top();
> >    real x;
> >    child ch();
> >    analog x = 5.0;
> > endmodule
> >
> >
> >
> >
>
> --
> =====================================
> -- 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.
Received on Wed Jul 11 15:10:40 2007

This archive was generated by hypermail 2.1.8 : Wed Jul 11 2007 - 15:10:55 PDT