The Compiler Core
The compiler module reads the device schematic file generated by the Builder
as its input. The compiler interface is shown in the following figure.

Invoking the Compiler
The Compiler software module can be invoked either from the Manager module
or can be run as a stand-alone program by typing 'sn' at the command prompt.
Description of the Interface
The compiler interface can be divided into several separate areas based on
functionalities. The description of these areas are given below.
- Menu area
- The process compiler menu functions have the following structures:
- Device
- Load -- Load a new device
- Compile -- Start compilation of the loaded device
- Quit -- Quit the Compiler
- Output
- Save -- Save the compiled processes
- Save as -- Save the compiled processes in new names
- Statistics -- Show the statistics of compiled processes
- Device name label
- The device name label shows the name of the
currently loaded device. If no device has been loaded to the compiler yet,
this label shows the name 'default'.
- Canvas
- The canvas area is actually a drawing area widget which
displays the currently loaded device.
- Material legend area
- This legend area shows the names of different
materials that have been used in the currently loaded device and their
corresponding colors.
- Process options
- The process option area shows a set of option menus
for selecting different process choices for output processes. They are
described below.
- Reactive growth order: This item can have any one of
the following values.
- Thick to thin (default) -- This setting causes
all output processes to have reactive growths in thick to thin
sequence. Since this is the mostly used sequence of reactive
growths in semiconductor industries, it is the default setting
in MISTIC.
- Unrestricted -- In this setting the reactive
growth steps can occur in any sequence regardless of their
thickness.
- Thin to thin -- This setting causes
all output processes to have reactive growths in only thin to thick
sequence.
- Preset diffusion order: This item can have either
a 'Yes' (default) or a 'No' value. If the 'Yes' value is selected,
the
compiler sequences the diffusion steps prior to actual compilation
based on paired diffusion relations. While the 'Yes' choice
reduces the compilation time significantly for a complicated
device, in some cases it may fail to generate any valid process
for a device when such process does exist. In such cases the 'No'
choice would generate all possible processes, even if the
compilation time can be longer.
- Force implant-through: A 'Yes' choice in this item
generates processes where diffusion impurities are introduced
through thin layers (usually oxide layers) instead of implanting
dopants through bare substrate surfaces. Since this is the
preferred method of impurity implantation, the 'Yes' choice is the
default. A 'No' choice, however,
generates all kinds processes in terms of implant-through thin
layers. But, if the device structure does not permit
implant-through thin layers, this choice is ignored by the
compiler and process compilation proceeds regardless the
setting of this menu.
- Run-time option area
- The run-time option area is divided into two
parts. The first part is a set of radio boxes showing different choices about
the output process files and the second part is a set of text fields which
displays different run-time options and allows changing them. Details of both to
these options are discussed below.
- Output choices: The output choice area contains four radio boxes.
- Suprem deck generation -- This radio box allows
turning on of
off the choice of generating SUPREM files for the generated
processes. The default is 'No'.
- Save processes after generation -- This radio box
allows or stops
creation of process files for each of the generated processes after
compilation is complete. The default value is 'Yes', which causes the
generated
processes to be saved to files after compilation.
- Generate only best process -- Choosing 'Yes'
generates only one process from each linear extension of device
components based on the highest merit and choosing 'No' generates all
processes dictated by different process choices from each linear
extensions.
- Run-time display level -- This radio box controls
the amount of
print-outs to the print window during compilation. The print window
pops up at the beginning of compilation and shows the sequence of
operations that are carried out by the compiler in generating process
flows.
- Max outputs and directory paths: This area contains several text
fields for specification of several run-time parameters.
- Max process output -- This field allows changing
the limit on maximum number of output processes. The default is 50.
- Input directory -- This field shows the path of
the directory from where the input device file is to be read. If the user
issues a 'load' command from the menu or the command panel, the pop-up
file selection box shows a listing of all files in this input
directory.
- Output directory -- This field shows the path of
the directory where all the output proces files are to be stored after
compilation.
- Database file -- This field shows the complete
pathname of the atom database file that is to be loaded for compilation.
- Run-time data option area
- This check box area allows generation of
run-time debug data during compilation of a device. Although, by
default, no such data are generated, any number of the following items
can be selected to have corresponding debug data in a directory named
`_mistic_debug' created under the 'output directory'.
- Polygon lists
- Adjacency matrices
- Transitive closure matrices
- Processes after topological sort
- Final process list before optimization
- Failure check option area
- This chick box area is provided to help
the user find the reason of failure of a device. Selection of one or more
of thses items causes the compiler to check for failure in these
particular modes. If the compiler finds that the device does fail in one
or more of these selected modes, it reports such findings at the end of
compilation. The possible error checking modes are:
- Deposited layer sequence
- Reactive growth schedule
- Eching of layers
- Diffusion schedule
Since simultaneous error-checking during compilation takes additional
times, these error-checking options are by default turned off.
- Command panel
- The command panel implements three menu functions
using push buttons for quick reachability. These are Load, Compile
and Quit.
Input and Output Files
The compiler takes the device description file created by the DeviceBuilder
module as input and generates one file for each generated process along with a
statistics file that contains the statistics of all generated processes. The
output file contain several items:
- Detailed run sheet
- A concise description of process steps
- SUPREM deck
- In-process device cross sections
- Process summary
The process summary contains several important items in it. They are:
- General summary
- Process warnings
- Stringer warning
- Stepped alignment warning
- Total over-etch damage to layers
- Figures of merit
- Process step statistics
- Material/impurity statistics
- Time distribution of process steps
- Cost distribution of process steps
- Time and cost versus step number
- List of masks
The Compilation Procedure
The following sequence of actions can followed to compile a device in the
compiler module.
- Invoke the Compiler: The Compiler can be invoked either from the
Manager or it can be run as a stand-alone program by typing 'sn' at the command
prompt. If the compiler does not get invoked in either of these ways, please
check your path setting and MISTIC installation at your site.
- Load the device: Load the device in the compiler using the
appropriate menu function and popped up file selection box.
- Set options: Set different options described in the previous
section. Under normal circumstances the default setting generates optimal
results.
- Compile: Compile the loaded device using the 'Load' menu
function. If a 'Yes' option has been chosen in the Suprem Deck Generation
run-time option, the compiler prompts the user to mark the location of
SUPREM deck generation by clicking the left mouse button on the canvas.
If the device is too complicated, in the beginning the compiler shows a warning
that the compilation procedure might take a long time. This helps the user have an
early idea about the required compilation time. If the device is too
complicated to be compiled in a reasonable amount of time, the compiler generates
an error message and aborts compilation.
- Recompile for failed runs: If the compiler fails to generate any
process, there can be several reasons for the failure. If there is no terminal
problem in the device, one or two changes in the process option settings result in
successful compilation. Restrictions in the process choices should be taken off
one after another in this recompilation process. 'Reactive growth order' and
'preset diffusion order' choices should be manipulated first in order to get
successful compiler run. If the device contains a terminal problem, it
can be detected by using the failure-checking option box items. After
the problem in the device is found, the compiler should be run again to get process
flow outputs.
- Save processes: If the automatic save option is not chosen in the
run-time option check box, the generated processes can be saved by using the
menu function Output-->Save or Output-->SaveAs.
Summary
The compiler module of the software is the most important one and is the
vehicle of process generation. A little understanding of the compiler
algorithms can help the user use this module intuitively and
efficiently. Usually, a brief amount of practice in this module is sufficient
for learning how to compile most devices.
Back to the Manual Index
MISTIC version 1.0 (July 1997) Copyright © 1997 by University
of Michigan. All rights reserved.