a comment on layout styles. we do indeed use the m-factor heavily.
we also use "fingers" but primarily for RF layouts where the "m"
does not represent what happens (not just plunking down parallel
instances, but specific interdigitation and layout and contacting
to minimize parasitics).
we do not use "m" specifically to reduce mismatch, we adjust sizing and
biasing to meet mismatch requirements. for big devices you do not want
a single instance, for layout purposes, so a device is layed out in
multiple segments. this is where we use m. for setting up integer
ratios, which is standard practice in analog design, it is also used.
we use it for BJTs, capacitors, and resistors as well as MOSFETs.
note that you cannot do something like multiply width by m to mimic
the effect, 1xw=10 is not the same as 10xw=1 because of narrow width
effects.
besides being used to define layout, I believe it is primarily
used in SPICE for efficiency. simulation speed is roughly linear
in the number of devices simulated, so scaling by m is m times
faster than simulating m times.
m is in all analog and "fast MOS" simulators I know, it is widely
used, and it is not just simulators that know about it, layout
extraction tools do also.
colin
-----Original Message-----
From: owner-verilog-ams-devmod@eda.org [mailto:owner-verilog-ams-devmod@eda.org] On Behalf Of Geoffrey.Coram
Sent: Friday, April 09, 2004 5:36 AM
To: Kevin Cameron
Cc: Peter Liebmann; 'VerilogA Device Modeling Reflector'
Subject: Re: $mfactor in Verilog-style netlists
Kevin Cameron wrote:
> Mfactor appears to me to be Spice "hack" that doesn't really belong
> in a proper HDL.
Mfactor is a shorthand. I don't see how it's any different than the instance arrays, which are shorthand for having to write them out individually and connect the right bit of the bus.
> The "right" answer? Since we are trying to model hardware I suspect
> that linear scaling is never the right answer.
The right answer from a simulation standpoint. If the two options
are: write each instance individually, or write them with mfactor, then applying the simple rules makes these two give the same answer.
Sure, there are differences from the hardware, eg the differences in interconnect to the multiple instances, but that's not the point of mfactor.
In fact, at ADI, we don't make much use of m; we added "fingers" to our BSIM3 model to account for the reduced capacitance of multi-gate devices compared to individual parallel instances (standard BSIM4 now has it, too). But it is used, heavily I'm told, elsewhere, particularly it seems at Motorola for
reducing the effects of mismatch.
module my_res(inout a,b);
parameter real r0 = 5;
real reff (* desc="effective resistance" *)
analog begin
V(a,b) <+ I(a,b) * r0;
reff = r0/$mfactor;
end
endmodule
> Apart from it being in Spice what is the rationale for adding this
> functionality? And under what circumstances would you require a
> fractional multiplier?
Apart from it being heavily used by analog designers, what rationale do I need?
In the conf call Tuesday, Colin said designers sometimes use an mfactor of 1.667 on one device, leaving a second with mfactor=1, to model what will likely become a 5:3 ratio. You can use the fraction instead of having to convert it to a ratio of integers.
-Geoffrey
Received on Fri Apr 9 07:57:21 2004
This archive was generated by hypermail 2.1.8 : Fri Apr 09 2004 - 07:57:32 PDT