next up previous contents
Next: 3.1.4 Two-Dimensional Doping Characterization Up: 3.1 Device Description Previous: 3.1.2 Source and Drain


3.1.3 The Makedevice Input Deck

The complete device descriptions including the simulation grid are generated using the device generator Makedevice. A short description of this tool can be found in Appendix B. Further information is given in the MINIMOS-NT documentation [6]. A listing of the Makedevice input deck is given below. Depending on which optimization approach is taken there will be further entries in the Knots (for two-dimensional doping characterization) or Peak section (for Gaussian functions) which are left empty here and will be listed in Chapter 4. Parameters between ``$<$('' and ``)$>$'' are template symbols and will be substituted by the optimization framework as described in Chapter 4. The parameter type, for example, determines whether the device is an NMOS or PMOS transistor. By this method the same input deck can be used for the generation of both device types.


templatePif = "$VPROJECT/mkdev/template.pif";
outputPif   = "makedevice.pif";
aux type    = "<(type)>";           // "NMOS" or "PMOS"
Geometry {
  gateLength         = <(L)> um;    // gate length
  aux L              = gateLength;
  oxideThickness     = <(Tox)> nm;  // oxide thickness

  sourceWellLength   = 1./3.*L;     // length of the Source contact
  drainWellLength    = 1./3.*L;     // length of the Drain contact

  sourceSpacerLength = 1./3.*L;     // length of the Source spacer
  drainSpacerLength  = 1./3.*L;     // length of the Drain spacer

  bulkThickness      = 10.*L;       // bulk thickness
  contactThickness   = 0.2 um;      // contact thickness
  soi = no;
  gateSemiconductor = no;
}
Doping {
  NBulkAcceptor = if (~type == "NMOS", pow10(<(Nsub)>) * 1"cm^-3", 1e12 "cm^-3");
  NBulkDonor    = if (~type == "PMOS", pow10(<(Nsub)>) * 1"cm^-3", 1e12 "cm^-3");
  Knots {
  .
  .
  .
  }
  Peak {
     Peak1 {                        // source
        aux L  = ~Geometry.gateLength;
        aux SW = ~Geometry.sourceWellLength;
        aux SG = ~Geometry.sourceSpacerLength;
        on      = yes;              // switch on or off
        mode    = "gauss";          // gauss, cosine, or pearson mode
        dopType = if (~type == "NMOS", "donor", "acceptor");
                                    // acceptor or donor doping
        N         = 1e20 "cm^-3";   // peak doping value
        x         = 0 um;           // x-position of the peak
        xLength   = SW + SG;        // x-length of the peak, must be >= 0
        y         = 0 um;           // y-position of the peak
        yLength   = 0 um;           // y-length of the peak, must be >= 0
        xSigLeft  = L/30.;          // left x-sigma of the peak
        xSigRight = xSigLeft;       // right x-sigma of the peak
        ySigUpper = L/15.;          // upper y-sigma of the peak
        ySigLower = ySigUpper;      // lower y-sigma of the peak
     }
     Peak2 : Peak1 {                // drain
        x         = SW + SG + L;    // x-position of the peak
     }
     .
     .
     .
  }
}
Grid {
  Dop {
     useSimGrid = yes; // whether to use the simulation grid for the doping grid
  }
  Sim {
     aux L  = ~Geometry.gateLength;
     aux SW = ~Geometry.sourceWellLength;
     aux SG = ~Geometry.sourceSpacerLength;
     aux BT = ~Geometry.bulkThickness;
     name = "SimulationGrid";       // simulation grid name
     vNumberOx     = 2;             // number of vertical simulation grid lines
                                    // in the oxide
     vIncCont      = 1.6;           // incremental factor in the contact
     vDistCh       = 0.1  nm;       // distance of vertical simulation grid
                                    // lines in the channel region
     vNumberCh     = 1;             // number of vertical simulation grid lines
                                    // in the channel region
     vInc          = 1.3;           // vertical incremental factor elsewhere
     vDistMin      = L/100.;
     lDistMin      = L/100.;
     vDistMax      = BT;            // maximum distance of vertical simulation
                                    // grid lines
     chBorderLeft  = SW+SG+L/11.;   // left border of the channel region
     chBorderRight = SW+SG+L-L/11.; // right border of the channel region
     lDistChBorder = L/80.;         // distance of lateral simulation grid lines
                                    // at the left or right channel border
     lDistChMiddle = L/5.;          // distance of lateral simulation grid lines
                                    // in the middle of the channel
     lDistMax      = (SW + SG)/5.;  // maximum distance of
                                    // lateral simulation grid lines
     lNumberKnots  = 48;            // minimum number of lateral grid lines
                                    // in the knots region
     vNumberKnots  = 15;            // minimum number of vertical grid lines
                                    // in the knots region
  }
}



Michael Stockinger
2000-01-05