Mail Archives: geda-user/2013/02/15/16:57:17
--f46d044796172c4dcf04d5ca7486
Content-Type: text/plain; charset=ISO-8859-1
Thanks Al :-)
On Fri, Feb 15, 2013 at 10:49 AM, al davis <ad252 AT freeelectron DOT net> wrote:
> On Wednesday 13 February 2013, bsalinux AT gmail DOT com wrote:
> > I tried to do a gnucap simulation involving BS170 MOSFET and
> > the extractor did not extract / interpret four contacts for
> > the MOSFET as expected by GNUCAP.
> >
> > What was extracted was:
> >
> > M1 4 1 0 bs170
> >
> > instead of (substrate connected to source)
> >
> > M1 4 1 0 0 bs170
> >
> >
> > According to gnucap, first statement takes "BS170" as the
> > substrate contact.
>
> The spice, and spice compatible simulators, require 4
> connections for a mosfet. The fourth one is the substrate. If
> in doubt, and for all discrete 3-terminal mosfets, the substrate
> should be connected to the source.
>
> But now look at the schematic, and how netlist extraction works.
> Whatever number of pins a device has on the schematic, that's
> how many it will have in the extracted netlist. Therefore, any
> 3-pin mosfet will give you an incorrect netlist. The problem is
> in the symbol, or really using the wrong symbol for the
> application, not with the netlister. You need to use a symbol
> that has 4 pins.
>
> Exactly how this situation is handled by the simulator varies.
>
> With gnucap, if you just list everything without delimeters, it
> will screw up in this case. If you put the node list in
> parenthesis, it will give you a warning "need 1 more nodes", and
> try to guess what to do with the other one, (grounding it) often
> not the way you want. Same goes for Verilog format netlists,
> where you can map the pins by name.
>
> I don't know what ngspice does in this case, but since the
> "standard" says you need 4 pins, and you are missing one, you
> can't depend on anything in particular.
>
> Again ... you need to use a mosfet symbol that has 4 pins.
>
> Why is it this way? I didn't make that decision, but remember
> SPICE is "Simulation Program with Integrated Circuit Emphasis"
> .. designed for chip designers. They need to be concerned about
> the substrate. The substrate is like a second gate, or "back
> gate".
>
>
--f46d044796172c4dcf04d5ca7486
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr">Thanks Al :-)<br></div><div class=3D"gmail_extra"><br><br>=
<div class=3D"gmail_quote">On Fri, Feb 15, 2013 at 10:49 AM, al davis <span=
dir=3D"ltr"><<a href=3D"mailto:ad252 AT freeelectron DOT net" target=3D"_blank=
">ad252 AT freeelectron DOT net</a>></span> wrote:<br>
<blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1p=
x #ccc solid;padding-left:1ex"><div class=3D"im">On Wednesday 13 February 2=
013, <a href=3D"mailto:bsalinux AT gmail DOT com">bsalinux AT gmail DOT com</a> wrote:<br=
>
> I tried to do a gnucap simulation involving BS170 MOSFET and<br>
> the extractor did not extract / interpret four contacts for<br>
> the MOSFET as expected by GNUCAP.<br>
><br>
> What was extracted was:<br>
><br>
> M1 =A04 1 0 bs170<br>
><br>
> instead of (substrate connected to source)<br>
><br>
> M1 =A04 1 0 0 bs170<br>
><br>
><br>
> According to gnucap, first =A0statement takes "BS170" as the=
<br>
> substrate contact.<br>
<br>
</div>The spice, and spice compatible simulators, require 4<br>
connections for a mosfet. =A0The fourth one is the substrate. =A0If<br>
in doubt, and for all discrete 3-terminal mosfets, the substrate<br>
should be connected to the source.<br>
<br>
But now look at the schematic, and how netlist extraction works.<br>
Whatever number of pins a device has on the schematic, that's<br>
how many it will have in the extracted netlist. =A0Therefore, any<br>
3-pin mosfet will give you an incorrect netlist. =A0The problem is<br>
in the symbol, or really using the wrong symbol for the<br>
application, not with the netlister. =A0You need to use a symbol<br>
that has 4 pins.<br>
<br>
Exactly how this situation is handled by the simulator varies.<br>
<br>
With gnucap, if you just list everything without delimeters, it<br>
will screw up in this case. =A0If you put the node list in<br>
parenthesis, it will give you a warning "need 1 more nodes", and<=
br>
try to guess what to do with the other one, (grounding it) often<br>
not the way you want. =A0Same goes for Verilog format netlists,<br>
where you can map the pins by name.<br>
<br>
I don't know what ngspice does in this case, but since the<br>
"standard" says you need 4 pins, and you are missing one, you<br>
can't depend on anything in particular.<br>
<br>
Again ... you need to use a mosfet symbol that has 4 pins.<br>
<br>
Why is it this way? =A0I didn't make that decision, but remember<br>
SPICE is "Simulation Program with Integrated Circuit Emphasis"<br=
>
.. designed for chip designers. =A0They need to be concerned about<br>
the substrate. =A0The substrate is like a second gate, or "back<br>
gate".<br>
<br>
</blockquote></div><br></div>
--f46d044796172c4dcf04d5ca7486--
- Raw text -