Re: percent codes for analyses (was: Feb 8 2007 minutes)

From: Kevin Cameron <kevin_at_.....>
Date: Mon Feb 12 2007 - 15:33:06 PST
Marq Kole wrote:
>
> All,
>
> First, a word of warning: in C/C++ for multiple character percent 
> codes the base code is at the back of the sequence, the other 
> characters are merely modifiers. The problem is that if you don't do 
> this and you want the percent code to be followed directly by a normal 
> character sequence you don't know where the percent code ends and the 
> normal character sequence starts. So if you want to use %a for 
> analysis, you'd have to think of some of the leftover characters as 
> modiers. Unless you always want a multi-character code, but there is 
> no precendent for that -- in any language that supports printf-like 
> functionality!
>
> This whole dealing with special percent codes in the first argument of 
> $fopen() appears to me as quite awkward. It will change the definition 
> of $fopen in a way that has no advantages for digital Verilog or 
> SystemVerilog. I expect a lot of users will try to give additional 
> arguments as though it was a full fledged printf-like functionality. 
> Once you start thinking about different values to be returned by the 
> various %a codes you will likely run into implementation dependent 
> ways of retrieving the data.

The  "..." in the earlier post was to indicate  that you could use it 
like a printf (is there a compelling reason not to?).

>
> If I'm allowed to make another suggestion: we currently support string 
> parameters in Verilog-AMS. Can't we also support local string 
> parameters and define a system function that does a $sformat() that 
> outputs a value for a string parameter or string localparam? As a 
> suggestion:
>
> *$pformat*( /format_string/, /args.../)
>
> where the return value is an initializer for a string parameter or 
> string localparam. Additionally retrieve the name of the analysis 
> using a specific system task, say $analysis_name. Then it could be 
> used as:
>
> localparam string dump_name = $pformat("dump.%s.txt", $analysis_name);
>
> analog
>   $fopen(dump_name);

Doesn't seem to have any advantage over:

   analog
     $fopen("dump.%s.txt", "pw",$analysis_name);

>
> The advantages are that you do not have to change the definition of 
> $fopen -- as the proposed extension is much more for analog than for 
> mixed-signal, let alone digital, the side effects on digital Verilog 
> and SystemVerilog are less if we just add a system function. Next to 
> that, we do not have to use the %a or a multi character code, but can 
> better take this (global) information from the $analysis_name system 
> task and use optional arguments for this system task to get different 
> or more information.
The definition of $fopen would be extended rather than changed i.e. 
would be entirely backward compatible. I can't see digital users 
complaining about the additional functionality, it saves fiddling with 
string variables.
>
> $analysis_name returns the name of the analysis, or if the simulator 
> does not support naming of analyses the analysis type plus an ordinal, 
> e.g. "dc1".
> $analysis_name("name") is equivalent to $analysis_name -- "name" is 
> the default argument.
> $analysis_name("type") returns the analysis type. The type name is 
> taken from the possible arguments for the analysis() function (LRM 
> 2.2, section 4) to achieve optimal portability.
> $analysis_name("simulator") returns the name of the simulator.
> $analysis_name("user") returns the name of the process owner.
> etc.
>
> There is a parallel with the $simparam() system function, but while 
> that function always returns a real, this function will always return 
> a string value. The standard should give a minimal set of arguments 
> that must be supported while allowing additional implementation 
> dependent ones.
That does have the advantage that you can do a PLI implementation if you 
need to.

Kev.
>
> Cheers,
> Marq
>
>
> Marq Kole
> Competence Leader Robust Design
>
> Research
> NXP Semiconductors
>
>
> owner-verilog-ams@server.eda.org wrote on 12-02-2007 21:46:25:
>
> > Geoffrey, Kevin, Jonathan
> > thanks for your input.
> > Comments below.
> > --Martin
> >
> > -----Original Message-----
> > From: owner-verilog-ams@eda.org [mailto:owner-verilog-ams@eda.org] On
> > Behalf Of Geoffrey.Coram
> > Sent: Monday, February 12, 2007 4:52 AM
> > Cc: verilog-ams
> > Subject: percent codes for analyses (was: Feb 8 2007 minutes)
> >
> > Martin O'Leary wrote:
> > >
> > > * Add percentage codes for analysis that can be used to uniquely name
> > > a file generated by an analysis.
> > > It a file is not uniquely name, it will be overwritten if there are
> > > multiple analysis opening, closing and writing to the file.
> >
> > Let's be sure that SV is going to go along with this; there are only 26
> > percent codes, and most of them are already used.  We don't want SV to
> > assign a different meaning.
> >
> > What does this code look like?  If I put "results_%a" to I get files
> > like "results_dc" "results_ac" ...
> >
> > oleary>My take that we should use multiple character percentage codes in
> > order to avoid conflict with the SV standard or reserving too much of
> > the name space. They would all start with '%a' or '%A' - a/A for AMS.
> > e.g. %aa for analysis, %as for simulator name, etc ...
> > As suggested %a and %r would then need to be reserved for use by
> > Verilog-AMS only.
> > This I hope would address
> > 1) the risk of SV and Verilog-AMS coming into conflict
> > 2) allow a mechanism for the Verilog-AMS to expand the percentage code
> > capabilities easily
> > 3) consumming too much of percentage code name space.
> >
> >
> > Or are the names more like the temporary filenames generated by the C
> > function "tmpnam"?
> >
> > On one hand, it would be nice to know that dc results are in
> > "results_dc"; on the other, I don't want the results of the second dc
> > analysis in a single netlist to overwrite those of the first dc
> > analysis.
> >
> > Some simulators have names for the analysis, eg "dc1" in this:
> > dc1 dc start=0 stop=5
> > Will the percent code use this name?  On one hand, this would give good
> > control to the user; on the other hand, it may be inappropriate to
> > dictate this for the simulator in an HDL manual.
> >
> > oleary>The file would be named after the analysis name (ie. dc1 ) not
> > the analysis type (dc).
> > I believe many simulators already have some kind of analysis
> > naming/tagging scheme if only to determine the name of the different
> > transient output waveform files when multiple transient analyses are
> > being conducted.
> >
> > -Geoffrey
> >
> >
> > Codes used in Verilog 1364-2005:
> > b,c,d,e,f,g,h, ,l,m, ,o, ,s,t,u,v, ,z
> >
> > C uses i,n,p,x in some implementations, though %i looks to the same as
> > %d; %x is "unsigned hex" in C, whereas %h is "hex" in Verilog.  Also, %u
> > is "unsigned decimal"
> > in C, but "unformatted 2-value" in Verilog.  (%p is for a pointer. %n is
> > strange: printf outputs nothing but instead stores back into the
> > corresponding argument the number of characters printed so far.)
> >
> > I don't see any new ones in 1800-2005.  AMS uses %r.
> >
> > That leaves: a,j,k,q,w,y  %a sure would be nice for analysis ...
> >
> > --
> > 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.
> >
> >
>
> -- 
> This message has been scanned for viruses and
> dangerous content by *MailScanner* <http://www.mailscanner.info/>, and is
> believed to be clean. 

-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.
Received on Mon Feb 12 15:33:27 2007

This archive was generated by hypermail 2.1.8 : Mon Feb 12 2007 - 15:33:39 PST