Geoffrey.Coram wrote:
>Shekar -
>In reviewing your proposal and Ken's comments, I have a few
>comments of my own.
>
>In Section 5, bullet 6 says "It should be possible to refer 
>to the effective mfactor value in analog behavioral code."
>
>But then in 6.1.2 (and several other places), you write "It will
>be error to use the declared mfactor parameter in any expression
>inside the module."
>
>In the compact modeling extensions subcommittee, we believe
>that there are a few cases in which one might want explicit
>access to the mfactor.  One of those is mismatch, in which
>the statistical variation is decreased by having elements 
>in parallel.
>
>In the case that the mfactor is used in a module, this turns off
>automatic scaling by the simulator.  Taking Ken's example and 
>using the $m syntax:
>     module my_res (a, b);
>         parameter real r;
>         resistor #(.r(r), .$m($m)) R1 (a, b);
>     endmodule
>
>The fact that the module's $m is used inside the module
>turns off automatic m-factor handling for the module,
>meaning that R1 does not get an automatic m, only the
>specified $m.  Any current contributions, current probes,
>noise contributions, or instantiations would need to be
>scaled manually by the module author.
>
>Ken's $m syntax extends easily to $n, $x, $y, $angle, $vflip,
>$hflip.  It addresses Kevin's concern that we not use
>attributes, since this really does affect the simulation 
>results.  It should be only a small change to the 
>instance-line parser (to accept .$identifier() as well as
>.identifier() in the parameter list), in contrast to  Kevin's
>{} syntax.  In an e-mail not sent to the reflector, Martin also
>expressed a concern that {} would be hard to look up in the
>documentation.
>  
>
Hard to look up in comparison to what? NB: I suggested the {} syntax 
because it is similar to the instance multiplier syntax already used in 
Verilog - I'd probably document it in the same part of a (unified) LRM .
$m  seems a reasonable alternative but I wouldn't make the choice on how 
much work goes into fixing the parsers (since that is usually minor). 
Does somebody already use/allow $<name> parameters?
>One concern is that this tries to reserve a lot of system
>function names.  It would probably be better to use longer
>names to reduce the chance of collisions (SV in particular
>has a lot of $system_tasks).  $mfactor, $xposition, etc.
>
If there is no prior use of $<name> parameters then there should be no 
name clashes, so short names would be OK. Since the long names only make 
sense in English and there are plenty of non-english speaking users out 
there I tend to just vote for minimal typing these days.
How would all these "special" parameters work? - Do they accumulate down 
through the hierarchy like m-factor?
Kev.
>
>-Geoffrey
>  
>
Received on Wed Jun 16 14:46:07 2004
This archive was generated by hypermail 2.1.8 : Wed Jun 16 2004 - 14:46:08 PDT