next up previous contents
Next: 4.3 Simulator Setup Up: 4. Drive Current Optimization Previous: 4.1 Target and Constraint


4.2 Optimizer Setup

Fig. 4.2 shows the evaluation network used for drive current optimizations. After reading a given set of optimization parameters, the device description of the NMOS, represented by a PIF (Profile Interchange Format) file [18] is generated with Makedevice. This PIF file contains all necessary data to perform two-dimensional device simulations with MINIMOS-NT for the drive current $I_{\mathrm{on}}$ and the leakage current $I_{\mathrm{off}}$ in the next steps. Finally, the resulting currents are used to evaluate the target and the constraint using (4.1) and (4.2).

To provide a good initial guess for the device simulations during subsequent optimization steps the output PIF files of both simulations are saved. This is done only after an evaluation step as already shown earlier in Fig. 3.8. The output PIF files from the gradient steps are dropped because the results are very close to the previous evaluation step, anyway.

The SIESTA evaluation network description file network.mod, also called ``network model'' is given in Listing 4.1 and the externally defined sub-models for the device generation mkdev.mod in Listing 4.2 and for the device simulation device.mod in Listing 4.3. The sub-model for the post-processing (evaluation of the target and the constraint) is already included in the file network.mod.

For a specific optimization task all parameters within brackets first have to be substituted by their actual values, for example, [gatelength]. Parameters within ``$<$('' and ``)$>$'' are SIESTA template symbols and will be substituted by their actual values during the model evaluation. These template symbols can be used either in the command line definition of a tool or in a simulator input deck.

Figure 4.2: The evaluation network for drive current optimizations.
\resizebox{0.63\textwidth}{!}{
\includegraphics[width=0.63\textwidth]{../figures/drivecurrent-networkmod.eps}}

Listing 4.1: The SIESTA network model file network.mod for drive current optimizations.
(network-model
 
 (submodel mkdev      "mkdev.mod")
 
 (submodel calc-ion   "device.mod" 
           (inputs  (private (onoff yes)
                             (initfile  "init/mmntinit1.pbf"))
                    (connect (infile mkdev pif-wafer)))
           (outputs (public  (draincurrent ion))))
 
 (submodel calc-ioff  "device.mod" 
           (inputs  (private (onoff no)
                             (initfile  "init/mmntinit2.pbf"))
                    (connect (infile mkdev pif-wafer)))
           (outputs (public  (draincurrent ioff))))
 
 (submodel post (arithmetic-model
                 
                 (inputs (ion           float)
                         (ioff          float))
                 
                 (outputs (target       float)
                          (constraint1  float))
                 
                 (operators (target      (* -1e6 ion))
                            (constraint1 (- -12.0 (log10 ioff)))))
           
           (inputs  (connect (ion   calc-ion   draincurrent)
                             (ioff  calc-ioff  draincurrent)))
           
           (outputs (public target constraint1))))

Listing 4.2: The SIESTA device generation sub-model file mkdev.mod for drive current optimizations.
(simulation-flow-model gendevice
                       
  (inputs (type           string       "NMOS")
          (L              float        [gatelength])       ; um
          (Tox            float        [oxide thickness])  ; nm
          ([opt-param 1]  bound-float  [init] [min] [max])
          .
          .
          .
          ([opt-param n]  bound-float  [init] [min] [max]))
  
  (outputs        (pif-wafer filename))
  (output-mapping (pif-wafer pbfm.wafer))
  
  (tool-flow
   (mkdev (tool
           (controls  (ipd      (file "makedevice.ipd"))
                      (cmdline  "ipd")
                      (command  "makedevice"))
           (results   (wafer    "makedevice.pif" filename))))
   (pbfm  (tool
           (controls  (cmdline  "-a -k <(mkdev.wafer)> makedevice.pbf")
                      (command  "pbfm"))
           (results   (wafer    "makedevice.pbf" filename))))))

Listing 4.3: The SIESTA device simulation sub-model file device.mod for drive current optimizations.
(simulation-flow-model simulate
                       
  (inputs (vdd       float    [Vdd])
          (onoff     string)
          (infile    filename)
          (initfile  filename))

  (outputs        (draincurrent  float))
  (output-mapping (draincurrent  mmnt.curve ID))

  (tool-flow
   (mmnt (tool
          (controls (ipd       (file "mmnt.ipd"))
                    (cmdline   "ipd")
                    (command   "mmnt"))
          (results  (curve     "mmnt.crv" operating-point)
                    (outputpbf "mmnt.pbf" filename))))
   (copy (tool
          (controls (cmdline   "<(aux.type)> <(mmnt.outputpbf)> <(initfile)>")
                    (command   "copy.sh"))
          (results  (dummy     "cmdline" filename))))))

Besides other information, the file mkdev.mod contains the definition of the optimization parameters and their initial, minimum, and maximum values. The first tool in this sub-model (mkdev) writes an ASCII PIF file using Makedevice, which is then converted into a binary PIF file by the pbfm tool.

With the sub-model device.mod the device simulation is performed by the mmnt tool using MINIMOS-NT. In the next step the copy tool copies the simulator output PIF file to the initialization file, but only if the current optimization step is an evaluation step. This is done by the shell-script copy.sh using the SIESTA auxiliary variable aux.type as a condition variable which is either set to gradient or evaluation. The device.mod sub-model is used for both the drive and leakage current simulations.


next up previous contents
Next: 4.3 Simulator Setup Up: 4. Drive Current Optimization Previous: 4.1 Target and Constraint
Michael Stockinger
2000-01-05