Spice decks

All of the cells on this web site have been simulated electrically to check their functionality. In addition, they have been characterised in a generic 0.13um technology. Each cell's Spice deck is available as a subckt (a) written from the Xcircuit schematic; (b) extracted from the AP files (the Graal ones) using the 0.13um RDS files and the Alliance software Cougar; (c) extracted from the Magic cells using the .tech27 technology file.

Xcircuit

  .subckt an2v0x2 a b vdd vss z
  m1 z n2 vdd vdd p w=28u l=2.3636u ad='28u*5u+12p' …
  m2 z n2 vss vss n w=14u l=2.3636u ad='14u*5u+12p' …
  m3 n1 a vss vss n w=13u l=2.3636u ad='13u*5u+12p' …
  m4 n2 a vdd vdd p w=16u l=2.3636u ad='16u*5u+12p' …
  m5 n2 b n1  vss n w=13u l=2.3636u ad='13u*5u+12p' …
  m6 n2 b vdd vdd p w=16u l=2.3636u ad='16u*5u+12p' …
  .ends
  
  .OPTION card in file params.inc
  .param vdd=1.2 vss=0
  .OPTIONS scale=0.055
The Xcircuit Spice deck (example on right) is written out in a nominal 2um technology which matches the lambda sizing of the transistors. When using the subckt in a Spice run, the transistor sizes must be scaled by the lambda value using a .OPTIONS card. For the 0.13um examples here, .OPTIONS scale=0.055 was used.

The Spice deck written from Xcircuit is not formatted as a subckt with an alphabetical ordering of the connectors. The one written from Graal is. A script copies the subcircuit header and footer from the Spice deck written from Graal in order to make the Xcircuit Spice decks compatible.

If the lambda scaling requires a transistor channel length over or under-size, then a further script adjusts the channel length. This is the case for example with the 0.13um technology, where lambda=0.055um. Scaling the 2um transistors written from Xcircuit by 0.055 gives a channel length of 0.11um instead of the desired 0.13um. The script adjusts the channel length from 2um to 2.3636um , which after scaling by 0.055 gives a simulated channel length of 0.13um.

The schematic symbols have a property attached to model the transistor diffusion area and perimeter. The value used is the minimum value without allowing for any diffusion sharing. This means that the source/drain width is 5 lambda wide with a single contact to metal. For most cells this is pessimistic, but the timing is optimistic compared to the real layout because the parasitics caused by the poly and metal interconnect are missing. The effect of source/drain resistance is not modelled.

Alliance Graal

  .subckt an2v0x2 a b vdd vss z 
  M1  vdd b   6   vdd p L=0.12U W=0.88U  AS=0.242P    … 
  M2  6   a   vdd vdd p L=0.12U W=0.88U  AS=0.242P    … 
  M5  vdd 6   z   vdd p L=0.12U W=1.54U  AS=0.4235P   …
  M3  6   b   n1  vss n L=0.12U W=0.715U AS=0.196625P …
  M4  n1  a   vss vss n L=0.12U W=0.715U AS=0.196625P …
  M6  vss 6   z   vss n L=0.12U W=0.77U  AS=0.21175P  … 
  C7  vdd vss 0.510f
  C6  b   vss 0.339f
  C4  a   vss 0.406f
  C3  6   vss 0.793f
  C1  z   vss 0.779f
  .ends
The Alliance extraction software Cougar is used to write a Spice deck from the Graal layout (example on right). It has certain advantages:

There are also some disadvantages:

The column listing and superfluous information limitations can be filtered by a script, as in the example, but the internal node labelling and wrong diffusion areas cannot. The inaccuracy caused by the wrong diffusion area is significant, and for this reason the characterisation uses Spice decks extracted from Magic.

Magic

  .subckt an2v0x2 a b vdd vss z 
  m00 vdd  n1   z    vdd p w=28u l=2.3636u ad=145.6p …
  m01 n1   a    vdd  vdd p w=16u l=2.3636u ad=64p …
  m02 vdd  b    n1   vdd p w=16u l=2.3636u ad=83.2p …
  m03 vss  n1   z    vss n w=14u l=2.3636u ad=107.852p …
  m04 n2   a    vss  vss n w=13u l=2.3636u ad=32.5p …
  m05 n1   b    n2   vss n w=13u l=2.3636u ad=77p …
  C0  z    vdd  0.055f
  C1  n1   n2   0.018f
  C2  a    vss  0.034f
  C3  n1   b    0.101f
  C4  z    vss  0.091f
  C5  vdd  b    0.046f
  C6  n1   vdd  0.151f
  C7  z    a    0.020f
  C8  b    vss  0.016f
  C9  n1   vss  0.146f
  C10 a    b    0.192f
  C11 n1   a    0.265f
  C12 z    b    0.016f
  C13 vdd  a    0.025f
  C14 n1   z    0.275f
  C16 b    vss  0.023f
  C17 a    vss  0.027f
  C19 z    vss  0.010f
  C20 n1   vss  0.019f
  .ends
The Magic format libraries have been created with an automated flow and are used to make the 0.13um Spice subcircuits for characterisation. The Magic layout comes from a CIF file written from Alliance. The Alliance CIF file cannot be read directly by Magic because the connector syntax is different. This is fixed by a script hack to the CIF file. The CIF is read using one of the technology files: vsc200.tech27 for the vsclib or vx200.tech27 for the vxlib and sxlib.

Unfortunately, Magic too is unable directly to write out correct Spice subcircuits, but it is possible to hack the output into something usable. (Recent improvements to Magic might remove this limitations, and are being investigated.) This hack is described in the Magic 0.13um technology file, vsc013.tech27. The parasitic diffusion area on the transistors in the Spice subcircuits coming from Magic is (nearly) correct, and the fixed capacitances are calculated in a more accurate manner than with Alliance.

The script also improves the columnisation for easy reading and checking, and adjusts the transistor length from 2U to 2.3636U. The nasty internal node names generated by Magic are replaced with the sequence n1, n2 etc, which unfortunately does not match the names used in Graal or Xcircuit. As with Xcircuit, a .OPTIONS card must be used to scale the circuit to 0.13um.
The extraction coefficients used by Alliance Cougar have been correlated to Magic, which uses a much more sophisticated extraction algorithm, so that hopefully on average the fixed capacitances in Alliance are the same as the ones from Magic.

All of this means that you can find three sets of 0.13um Spice decks for each library:
vsclib from Alliance, from Magic and from Xcircuit.
vxlib from Alliance, from Magic and from Xcircuit.
sxlib from Alliance, from Magic and from Xcircuit.

All of these Spice subckts are in the library download file.
The Magic extracted subckts, which have been used for the characterisation, are in magic/subckt/vsclib013, magic/subckt/vxlib013 and magic/subckt/sxlib013. Similarly the Alliance subckts are in alliance/subckt and the Xcircuit ones in xcircuit/subckt.

The library characterisation simulates the subckts many times with winspice, and then runs a script which reformats the results into a Synopsys format .LIB file and Alliance format VBE files. The 3 .LIB files have been checked with the liberty_parse program available from Synopsys. The library files are
vsclib013.lib
vxlib013.lib
sxlib013.lib

The timing numbers are in Lookup Table (LUT) format, and power numbers are supplied too.

The Spice simulator used is WinSpice3, which I have found very powerful. It is available free, and is just $65 for a registered copy. It works under Windows and also under Linux using wine (which is where I ran most of my jobs). You will need to use versions 1.05.00, 1.05.02 or 1.05.04 or later to run the characterisation jobs (1.05.01 and 1.05.03 don't work).

The Spice transistor model is a publicly available 0.13um one available from the UoC Berkeley site. I'm not sure it is very accurate, but the proprietary ones from foundries are considered to be trade secrets and I can't make them available on this site.