[comp.lsi] spice2g6

sllu@venera.isi.edu (Lien Lu) (11/02/87)

We have discovered that the version of SPICE 2g6 distributed with U of
Washington VLSI tools gives different current values in comparison
with the SPICE 2g6 (and spice 3) distributed by UC Berkeley. After careful
examination, we discovered a difference in the SPICE source codes.
On line 1985 of file "dctran2.f" (comes with UW), the last variable used
to calculate "FACTOR" is "XW", while the UCB counter part reads "XL".

Parameters extraction results from MOSIS matches with the SPICE 2g6
given out by UCB.

Shih-Lien Lu
Ming Hsu
for MOSIS

larry@VLSI.CS.WASHINGTON.EDU (Larry McMurchie) (11/05/87)

The recent note that appeared describing a difference between the
version of SPICE 2g6 distributed by Berkeley and the version
distributed by us is indeed correct.  Some time ago we inadvertantly
introduced this bug into the calculation of narrow channel effects on 
threshhold voltage.

On line 1985 of file dctran2.f, the last variable used to calculate
FACTOR should be XL (not XW). The line should read:

  200 FACTOR=0.125D0*FNARRW*TWOPI*EPSSIL/COX*XL

What can I say....we goofed.  

We appreciate any and all feedback from users on the tools we
distribute and will inform everyone of serious problems.


						Larry McMurchie
						Univ. of Washington

sgcpal@watdcsu.UUCP (11/06/87)

In article <8711050122.AA14933@vlsi.cs.washington.edu> larry@VLSI.CS.WASHINGTON.EDU (Larry McMurchie) writes:
>
>
>The recent note that appeared describing a difference between the
>version of SPICE 2g6 distributed by Berkeley and the version
>distributed by us is indeed correct.
>
>On line 1985 of file dctran2.f, the last variable used to calculate
>FACTOR should be XL (not XW). The line should read:
>
>  200 FACTOR=0.125D0*FNARRW*TWOPI*EPSSIL/COX*XL
>
>What can I say....we goofed.  

Maybe you didn't.  At least not totally anyway.

We noticed this difference when we ran diff on the two
distributions and I'm afraid both versions maybe wrong.

Here is the original ucb version:
C
C  CALCULATE THRESHOLD VOLTAGE (VON)
C     NARROW-CHANNEL EFFECT
C
  200 FACTOR=0.125D0*FNARRW*TWOPI*EPSSIL/COX*XL
      ETA=1.0D0+FACTOR

I think line 200 should be:

  200 FACTOR=0.125D0*FNARRW*TWOPI*EPSSIL/(COX*XW)

Note the change from XL to XW and the inclusion of the brackets
around the (COX*XW).

Intuitively one would think that the width (XW) would be a factor
in the narrow width calculation.

This change is required to conform with the spice mos2 model
documents (ERL memo) giving:

	eta = 1 + fnarrw pi epsilon(silicon)
			 ___________________
			 4 Cox W

and to ensure that eta is dimensionless rather than something strange
(1 + m**2).

It would appear to me that the original UW distribution tryed to
rectify the UCB error, but only went half way.  Am I right, or am
I missing something?

Paul A. Layman

University of Waterloo, Electrical Engineering,
Silicon Devices and Integrated Circuits Research Group (SiDIC)

INTERNET:	playman@phonon.waterloo.edu
UUCP:		{decvax|utzoo|ihnp4|allegra|clyde}!watmath!phonon!playman

larry@VLSI.CS.WASHINGTON.EDU (Larry McMurchie) (11/09/87)

I still believe that the formula appearing in the code originally 
distributed by Berkeley is correct:

  200 FACTOR=0.125D0*FNARRW*TWOPI*EPSSIL/COX*XL

....and that we goofed when we tried to modify it. 

The key here is that COX already has an XL and an XW factored into it!
(see SUBROUTINE MOSFET).  In order to leave just an XW in the
denominator,  an XL is required in the numerator,  which is exactly
what appears in the formula.

If I am overlooking something here,  let me know.




						Larry McMurchie
						Univ. of Washington

sllu@venera.isi.edu (Lien Lu) (11/09/87)

One more bug discovered in SPICE 2g6.

Recently, we pointed out that Berkely's version of SPICE2g6 differs
from the U of Washington in calculating FACTOR. We agree with
the responses from Xerox and U of Waterloo that FACTOR should be calculated
as:
	FACTOR = 0.125D0*FNARROW*TWOPI*EPISSIL/(COX*XW)
		where FNARROW = DELTA is a dimensionless parameter

As a result SUXES (paramter extraction program from Stanford) should
also use the same equation to calculate FACTOR for consistency.

Further examination reveals that there is one more problem with the
calculation of VTH. Around line 2039 of the file "dctran2.f" (from U of W)
VTH is calculated as:

	CDONCO=-(GAMASD*DSRGDB+DGDDVB*SARG)+FACTOR
	XN=1.0D0+CFS/COX*XW*XL+CDONCO
        VON=VON+VT*XN

		where VON is VTH

We feel that in calculating XN, multipling XL and XW with CFS/COX is NOT
correct. Futhermore, tracing the dimension of the above lines shows an
inconsistency with the final dimension. XN should have been a dimensionless
value. From the defintion we observe that CFS = q*NFS, where
NFS according to SPICE manual has #/cm^2 as its dimension. This gives
CFS a dimension of q/cm^2. Therefore the dimension of CFS/COX is
Volt.

If we were to correct the calculation of FACTOR as suggested above,
we should also correct the XN calculation. We propose the following
changes to line 2039 and line 2040:

	XN=1.0D0+CDONCO
	VON=VON+VT*XN+CFS/COX

Again, SUXES should be changed to match these changes.

We invite others to comment on our suggestion.

Cheers,

Je-Hurn Shieh
Shih-Lien Lu
Ming Hsu

ARPA: sllu@mosis.edu

sgcpal@watdcsu.UUCP (11/10/87)

In article <8711091710.AA02296@vlsi.cs.washington.edu> larry@VLSI.CS.WASHINGTON.EDU (Larry McMurchie) writes:
>I still believe that the formula appearing in the code originally 
>distributed by Berkeley is correct:
>  200 FACTOR=0.125D0*FNARRW*TWOPI*EPSSIL/COX*XL
>....and that we goofed when we tried to modify it. 

Indeed Larry and Berkley are correct!

Unfortunately I only looked at a few lines of code around
the calculation of the above FACTOR.  I never considered
the possibility that COX was the Gate Capacitance(Cox*W*L)(F)
rather than the Oxide Capacitance(Cox)(F/m**2).  I could go on
about this being a poor choice for a variable name when
it *traditionally* means something different, but I won't.
After all, we can only use 6 character names in standard fortran
and I'm sure spice must use most of the 1.5e9 available.(:-)

My apologies,

Paul A. Layman

University of Waterloo, Electrical Engineering,
Silicon Devices and Integrated Circuits Research Group (SiDIC)

INTERNET:	playman@phonon.waterloo.edu
UUCP:		{decvax|utzoo|ihnp4|allegra|clyde}!watmath!phonon!playman

sllu@venera.isi.edu (Lien Lu) (01/14/88)

Has anyone installed SPICE 2g6 with BSIM on SUN3? I ran into some compiling
error and would like to find out if someone has squared those away
already. Thanks in advance.

Shih-Lien Lu
sllu@venera.isi.edu

aes@whuts.UUCP (STEVENS) (01/15/88)

In article <4532@venera.isi.edu>, sllu@venera.isi.edu (Lien Lu) writes:
> Has anyone installed SPICE 2g6 with BSIM on SUN3? I ran into some compiling
> error and would like to find out if someone has squared those away
> already. Thanks in advance.
> 
> Shih-Lien Lu
> sllu@venera.isi.edu

I have compiled this program on several different machines, but not the Sun.
Most of these fixes should help you out, though.  The BSIM portion of the
program added a bunch of bugs.

1) In subroutine DCOP, several new variables are introduced but not
dimensioned.  These are CDGB, CDDB, CDSB.  I DIMed them to 12.

2) In subroutine READIN, there is a spelling error.  Change IFELD to IFIELD.

3) In subroutine PROCHK, there is a syntax error.  In the line after 395,
the function ISIGN is used.  It should really be DSIGN. (ISIGN is for
integers, DSIGN is for floats.)

4) In subroutine READIN, you might need a REWIND after the OPEN statement.

Good luck!!

--Andy Stevens
aes@zeppo.att.com
...ihnp4!zeppo!aes

Jinfu_Jinfu_Chen@cup.portal.com (01/16/88)

A silly question, what is 'BSIM'?

We have a copy of SPICE2g6 with lots of comments of 'BSIM'. I
compile it under Apollo Domain and it runs okey in some circuit
but crashes in other circuits which have long subcircuit and
model files. The IBM VM/CPS version of SPICE2g6 we have is
different from the 'BSIM' in some data statement, I wonder if
this has something to do with the crash.

Jinfu Chen
Motorola Inc., Logic Division