%%
%%     Copyright 1999, 2000, Compaq Computer Corporation
%%
%%     See the file "license.terms" for information on usage and redistribution
%%     of this file, and for a DISCLAIMER OF ALL WARRANTIES.
%%
\documentstyle[11pt,local,epsfig]{article}
\setlength{\fboxrule}{0.8pt}        % fatter rules in boxes for LN03
\setlength{\arrayrulewidth}{0.8pt}  % fatter rules in tables for LN03
\newcommand{\mcm}{\multicolumn}
%%\newcommand{\_}{\_}
\newcommand{\degrees}{^{\rm o}}
%% For latex2html, switch comments on next two lines... jvf
%%\newcommand{\largetableindent}{0.0in}
\newcommand{\largetableindent}{-1.0in}
%  keep now defined in local.sty
%\newenvironment{keep}%
%{\vspace{-\partopsep}\vspace{-\topsep}\begin{center}%
%\begin{minipage}[t]{\textwidth}}%
%{\end{minipage}\end{center}\vspace{-\topsep}\vspace{-\partopsep}\hbox{}}
%\newenvironment{offsetkeep}%
%{\begin{center}\begin{minipage}[t]{\textwidth}}%
%{\end{minipage}\end{center}\hbox{}}
%
\newcommand{\sstring}{$<$string$>$}
\newcommand{\rreal}{$<$real$>$}
\newcommand{\iint}{$<$int$>$}
%
\begin{document}
% Title page
\thispagestyle{empty}
\vspace*{1.5in}
\begin{center}
%
{\LARGE POSTMINI User's Manual\\[+0.15in]
Version 9.2-000}\\
%
\vspace*{2.0in}
{\Large John Faricelli\\[+0.1in]
Alpha Semiconductor Technology\\[+0.1in]
Compaq Computer Corporation\\[+0.1in]
}
\end{center}
\newpage
\pagenumbering{roman}
\tableofcontents
\newpage
\pagenumbering{arabic}
\section{Introduction}
POSTMINI is an interactive graphical postprocessor for device and
process simulators.
The postprocessor reads the save files from a number of simulation
programs (e.g. MINIMOS, PISCES, SUPREM4 etc.)
and allows the user to examine or plot quantities stored in the file.
In addition, POSTMINI can import data from ASCII files,
and can be used as a general plotting program.
Graphical output under Tru64 Unix or OpenVMS is available on
workstations running X/Motif,
PostScript printers (monochrome, color and encapsulated forms),
HP7550 (HP-GL) plotters, HP PCL,
and all VT series graphics terminals (e.g. VT340).
Under Win32, hardcopy output is limited to screen dumps of windows.
The POSTMINI command language can be used to re-create any plot
from commands in a file.
\section{Functionality}
The available functions in POSTMINI are:
\begin{itemize}
\item
1D - Plot an X-Y graph of 1D data, or
plot a 1D cross-section of 2D data along any vertical or horizontal line.
\item
2D - Plot 2D contours of a quantity.
\item
3D - Plot a quantity as a surface in 3D.
These kind of plots are also known as ``bird's eye'' plots.
\item
Compare - Plot several curves on the same graph (can be from the
same or different data files). Can also plot bar charts.
\item 
Find - Find where an internal quantity reaches a specified value.
\item 
Integrate - Integrate an internal quantity in a region or along a line.
\item 
Line - Print a cross-section of a 2D data along
any vertical or horizontal cut line into a file.
\item 
Minmax - Determine the minimum/maximum of an internal quantity.
\item 
Print - Print 2D data in a formatted report into a file.
\item 
Read - Read in another data file.
\item 
Show - List information about the simulation run (e.g. terminal
voltages and currents). Currently only for MINIMOS.
\item 
Default - Change default plot attributes of POSTMINI
\item 
Restore - Restore a plot from a Postmini command file
\item 
Shell - Execute operating commands without leaving POSTMINI.
\item 
Save  - Save the current plot in a Postmini command file
\item 
Window - Manage multiple plot windows on workstations.
\item 
Exit, Quit - Terminate POSTMINI.
\end{itemize}

The quantities that can be printed/plotted depend on
the simulation program. For MINIMOS, they are:
\begin{itemize}
\item 
Potential
\item 
Doping concentration
\item 
Electron/hole concentration
\item 
Electric field (x,y components, magnitude)
\item 
Electron/hole current density (x,y components, magnitude)
\item 
Generation rate
\item 
Electron/hole quasi-Fermi levels
\item 
Electron/hole mobility
\item 
Electron/hole carrier temperature
\item 
Interface charge (fixed and chargeable)
\end{itemize}
%
\section{How to run POSTMINI on VMS}
Place the Postmini program in any directory on your machine,
for example {\tt DISK:[TCAD.BIN]}.
To run POSTMINI, type:
\begin{verbatim}
     $ POSTMINI :== $DISK:[TCAD.BIN]POSTMINI.EXE
     $ POSTMINI [ options ] [ datafile ] [ filetype ]
\end{verbatim}
where {\tt datafile} is a datafile (e.g. MINIMOS binary file)
and {\tt filetype} is the type of datafile being read (e.g. MINIMOS,
PROMIS, etc.). If the datafile has an extension that POSTMINI recognizes
(e.g. {\tt .bin} for MINIMOS, {\tt .pmi} for POSTMINI command file),
then the filetype is optional.
For a complete list of datafiles and command line options, see Appendix F.
Note: since POSTMINI uses the Digital GKS graphics package,
you must have Digital GKS installed on your system.
It is suggested that you have Digital GKS V6.0 or higher installed.

By default, POSTMINI assumes that you will be displaying your
graphics on a workstation running Motif.
You can specify a different plot output device by using the {\tt /device}
option on the POSTMINI command line.
The following devices are supported:
\begin{center}
\begin{tabular}{ll}
\hline
Option name    & Output device \\
\hline
{\tt MOTIF }   & Workstation running Motif \\
{\tt VT240 }   & Digital color VT240 \\
{\tt VT240BW } & Digital B\&W VT240 \\
{\tt VT330 }   & Digital VT330 \\
{\tt VT340 }   & Digital VT340 \\
{\tt XTERM }   & Xterm using Tek4014 emulation \\
{\tt integer}  & GKS workstation type (e.g. 231) \\
\hline
\end{tabular}
\end{center}
Example:
\begin{verbatim}
     $ postmini /device=vt340
\end{verbatim}
If you are running Motif, you must also have the logical name
{\tt DECW\$DISPLAY} defined to point to your X display device.
This is normally done automatically for you by the operating system.

Finally, when you first make a plot with POSTMINI, you may get an error
message similar to:

\begin{verbatim}
WARNING - 'TITLE SIZE' attribute incorrect: use
"DEFINE GKS$DECW_TITLE_SIZE 20" and restart application.
\end{verbatim}

The message may come up quickly and get overwritten by later output by
POSTMINI. POSTMINI should open up a window about 1/4 of the screen,
in the upper right hand corner. If you do not get this behavior,
it is likely that the above logical name has to be set.
Unfortunately, the value you need to use depends on the particulars
of your workstation (e.g. screen resolution).
Also, if you are running Motif V1.2, and you continue to see these messages,
even though you have set the logicals,
see the comments in the ``Things to look out for'' section.

{\it NOTE!} POSTMINI V7.3 and higher no longer examines the logical name
{\tt GKS\$WS\_TYPE} to determine which output device to use.
POSTMINI also tries to work correctly if the logical name
{\tt GKS\$CONID} is not defined.
%
\section{Operation under Tru64 Unix (Digital Unix)}
POSTMINI runs under the Tru64 Unix operating systems.
POSTMINI operation is essentially the same as under VMS.
You must have Digital GKS V5.2 or higher installed on your system.
Binary data files must have been created under Tru64 Unix,
as the format of binary files differs between VMS and (Tru64 Unix).
If you need to read VMS binary files on (Tru64 Unix) contact the
support person, as this is possible to do with a special version of Postmini.

The following implementation differences are noted:
\begin{itemize}
\item Place the postmini executable into a directory contained
in your {\tt PATH} shell variable.
Alternately, C-shell and Korn-shell users can define an alias
for postmini as follows:
\begin{verbatim}
   alias postmini /directory/where/postmini/is/postmini
\end{verbatim}
\item The shell command creates a process running the C-shell.
\item Since (Tru64 Unix) do not support file versions,
the plot file naming scheme is slightly different.
If a new plot file would overwrite an existing file,
the new plot file name is modified to be of the form ``{\tt file.n.extension}''
where ``{\tt n}'' is an integer. For example: {\tt nmos.2.ps}.
\item Environment variables are used instead of logical names.
The following environment variables are used by Postmini;
remember (Tru64 Unix) are case sensitive.
\begin{center}
\begin{tabular}{ll}
\hline
\mcm{1}{c}{Environment variable}    &  \mcm{1}{c}{Function} \\
\hline
{\tt DISPLAY      } &    Default X window display \\
\hline
\end{tabular}
\end{center}
C-shell example:
\begin{verbatim}
     % setenv DISPLAY  asda02:0
\end{verbatim}
\end{itemize}
%
\section{Operation under Win32 (Windows 95/98/NT)}
POSTMINI runs under the Windows 95/98/NT operating systems.
POSTMINI operation is essentially the same as under OpenVMS or Tru64 Unix.

The following implementation differences are noted:
\begin{itemize}
\item Hardcopy is limited to screen dumps of the plot window,
due to the limitations of the graphics library used.
\item The shell environment symbol {\tt Windows-NT} is used to determine
whether Postmini is running on Windows-NT.
It used is mainly to determine which executable to use to start up a new shell.
\item Since win32 does not support file versions,
the plot file naming scheme is slightly different.
If a new plot file would overwrite an existing file,
the new plot file name is modified to be of the form ``{\tt file.n.extension}''
where ``{\tt n}'' is an integer. For example: {\tt nmos.2.ps}.
\end{itemize}
%
\section{Supported datafile formats}
POSTMINI can read the output file formats for a number of
simulators: DEC SPICE output files (via the ASCII file reader),
HSPICE output files (via the ASCII file reader),
SPICE3 ``raw'' files,
MINIMOS (binary internals {\tt .BIN}, binary doping
{\tt .DOP, .2DOP}, binary dump format {\tt .USEOUT}),
SUPREM3 structure files,
SUPREM4 ASCII structure files,
PISCES-IIB mesh and solution file (Stanford version 9009),
TMA TIF (TMA Interchange Format) files,
Vector Technologies FAIM and MCP2D files,
and PROMIS ({binary \tt .SAVE}) files.

POSTMINI can read binary files from either 2D or 3D MINIMOS runs.
If you are plotting from a 3D binary file, you will be requested
for a ``cut plane'' which will ``slice'' the device along the
length, width or wafer (top view) direction.
POSTMINI supports 3D MINIMOS doping files in a similar manner.

In the case of DSUPREM3, only 1D and comparison
plots are possible, since DSUPREM3 is only a 1D simulator.
POSTMINI also shifts the DSUPREM3 coordinate system such that the zero
coordinate occurs at the silicon surface. This is to be consistent
with other simulators. This also allows quantites such as junction
depths to be directly read off plots.

You can also import data from an external ASCII file.
The data should be arranged in columns.
Any line which begins with a ``C'', ``c'', ``!'' or ``\#''is taken
as a comment line. You can also use {\tt .OFF} and {\tt .ON}
to exclude portions of a file from being read.
If you do not have enough data in a line to satisfy a read request,
or have non-numeric data on a line, that line is silently ignored.
You can specify which columns are to be read, as well as
data scaling factors {\tt mx, my} and {\tt ax, ay}. These scaling factors
transform the data as follows:
\begin{equation}
{\rm scaled\; data = mx \cdot (input\; data) + ax}
\end{equation}
You can also specify how many lines to skip, and how many lines to read
in a file. If you have a data file which contains several data sets
appended together,
you can read all the data in one step by setting the option
{\tt Multiple curves in datafile} to {\tt yes}.
This will suppress the retrace when the X axis value goes ``backwards.''
This is useful for plotting current-voltage or capacitance-voltage
data files.
You can also set the ``sampling'' frequency, which will cause Postmini
to use every second, third, fourth, etc. point in a file.
This is useful for reducing the size of large, closely spaced, data sets,
especially if symbols are also plotted.
Postmini also recognizes SPICE output files and has special support
to skip automatically to the simulation results output via
{\tt .PRINT} statements.

Postmini can handle ASCII files with up to 50000 data points each
(version 9.0 and higher). If you wish to plot different
columns of data as one curve, you can specify more than Y column
(version 8.2 and higher) or {\tt ALL} to select all remaining columns.

In version 8.1 and higher, Postmini can import ASCII
files which have X-Y-Z data. The X-Y-Z format is simple way to import
2D data from an arbitrary simulator. Postmini normally expects the
the data to lie on a rectangular grid. The file format
is similar to the X-Y ASCII format. You may use the same commenting
conventions, along with scaling factors, including scaling the Z axis.
The file format is:
\begin{verbatim}

    x1  y1  z
    x2  y1  z
    x3  y1  z
    .
    .
    xn  y1  z
    x1  y2  z
    x2  y2  z
    x3  y2  z
    .
    .
    xn  y2  z
    .
    .
    .

\end{verbatim}
where the x's are the X coordinate, the y's are the Y coordinate,
and the z's are the function value f(x,y).
The X and Y coordinates must be unique and must be specified
in increasing order. In version 8.2 and higher, the ASCII file reader
has been extended to read data that is not on a rectangular grid.
A triangular grid is imposed on the data.

In version 8.3 and higher, Postmini can apply general expressions to
ASCII data. For example, given a file with quantities {\tt C}
and {\tt E}, one could plot {\tt C**2 } vs. {\tt 1/E}.

In version 8.3 and higher, Postmini can also process ASCII files
that have character string labels in the X column.
Character strings are delimited by blanks, tabs, equal signs
or commas. Mathmode strings may be used.
To embed a blank, use the mathmode escape {\tt \\;}.
This type of data is used to place labels under each bar
on the X axis on bar charts.
Up to 200 labels may be input.
The user must tell Postmini to expect X column character data via
the datafile type option in the ASCII file reader menu.
%%
\section{Using POSTMINI for visualization}
After you have read in a file, you can examine the data with a
number of visualization techniques.
POSTMINI allows the user to visualize his/her simulation results
with contour maps (both filled color and tradition level curves),
quasi-3D plots, plots at various cross-sections in the structure, etc.
After selecting a menu item, the program will display the data
that can be examined (e.g. potential, doping). Select the quantity
to be plotted, or enter {\tt 999}, {\tt Q} or {\tt <return>} to exit this menu.

You will then be placed into a full menu screen that will allow you
to make a plot on your graphics device, annotate the plot,
make a hardcopy, or alter the plot characteristics, such as the
horizontal axis limits.
To alter a quantity, enter the number next to the quantity to be
modified. You will then be prompted for the quantity.
If, at this point, you decide that you don't want to change the
quantity, enter an end-of-file (control-Z on VMS, control-D on
Tru64 Unix).
If you enter an invalid response, an error message will appear under
the ``Messages:'' line.
If the screen becomes corrupted by a mail message notification or other
system message, enter {\tt R} to repaint the menu on the screen.
%
\subsection{MINIMOS coordinate system and terminology}
The following remarks are specific to using POSTMINI when examining
MINIMOS output files.
The x coordinate goes along the length direction of the FET,
from source to drain. X=0  occurs at the source end of the gate edge.
The y coordinate goes along the depth direction of the FET,
with y increasing with increasing depth. Y=0
is at the oxide/silicon interface.
Thus, negative y coordinates are in the oxide;
positive y coordinates are in the silicon.
For binary files from 3D MINIMOS runs, you have a third (width) dimension.
In the width (z) dimension, the device extends from the middle
of the channel width ($-$W/2) towards the field oxide (positive).
Z=0 occurs at the thin oxide mask edge in the width direction.

The following diagram illustrates the MINIMOS coordinate system.
%%
\mbox{}\\
\epsfxsize 4.0in
\centerline{\epsfbox{postmini_coords.eps}}
%
\subsection{1D plots}
POSTMINI provides a quick way to do an X-Y plot, or plot a quantity
along either a vertical or horizontal line.
POSTMINI provides the following default plot scales,
which the user can override:
\begin{itemize}
\item The default limits for the abscissa (horizontal) axis is the entire
device width/length/depth.
%
\item The default limits for the ordinate (vertical) axis is the entire
data range, rounded to ``nice'' numbers.
Data outside the range 0.001 to 1000.0 will be scaled by a power
of ten.
\end{itemize}
You have the option of changing the default limits to plot a portion of the
data or range.

On 1D and comparison plots, you can modify the ``scale factor''
or remote exponent for the plot
(Note, as of Postmini V7.2, you can only modify the scale factor
for the ordinate).
The scale factor is an integer power of ten that will be used as the
remote exponent in the graph.
The plot data will then be scaled according to the following relation
\begin{displaymath}
\rm scaled\_data = actual\_data / 10^{scale\_factor}
\end{displaymath}
A suggested scale factor will be displayed,
this usually results in the best plotting.
A zero scale factor means no scaling will take place before plotting.
Example: to plot data with a range of $2.2 \times 10^{3}$
to $3.5 \times 10^{3}$, you might select a data range of 2.0 to
4.0, with a scale factor of 3 (this would have been the default!).

Axis tic marks are also provided.
You can specify the major tic mark increment (real) and the
frequency of minor ticmarks (integer).
A major ticmark is a long tic mark which has a number next to it.
Example: a major tic mark increment of 0.1 with a minor tic frequency
of 5 would plot major tics every 0.1 units, and plot a minor tic every
0.02 units (thus dividing the major tic interval in five).

The annotation option can be used to interactively add text,
lines, arrows, boxes, symbols and elliptical arcs to the plot.
Text is processed by the ``mathmode'' utility,
which allows you to enter sub and/or superscripts, Greek letters,
and certain math symbols using a subset of the \TeX\ math syntax.
Read section~\ref{sec:mathmode} for details on how to enter
mathmode format strings.
%
\subsection{2D contour plots}
POSTMINI can plot a contour map (level curves) of simulation
quantities over all or a portion of the device.
The user is asked to specify the portion of the device to plot,
and the contour values to plot. POSTMINI can plot up to 9 contours
on one graph.
There are several different ways to specify contour values:
\begin{itemize}
\item You can specify the contours by individual value, e.g.
\begin{verbatim}
  1.0 2.0 3.0 4.0 5.0
\end{verbatim}
%
\item To specify a number of contours equally spaced between a
min and max range, use the {\tt e} notation:
\begin{verbatim}
  e number-of-contours  minimum  maximum
\end{verbatim}
For example, to specify 5 contours between 1 and 5:
\begin{verbatim}
  e 5 1 5
\end{verbatim}
This would result in contours at 1, 2, 3, 4 and 5.
%
\item To specify contours with a given step value, use the {\tt s}
notation:
\begin{verbatim}
  s step-value  minimum  maximum
\end{verbatim}
For example, to specify contours between 1 and 5 with a step of 1:
\begin{verbatim}
  s 1 1 5
\end{verbatim}
This would result in contours at 1, 2, 3, 4 and 5.
%
\item To specify a number of contours with logarithmic spacing,
use the {\tt l} notation:
\begin{verbatim}
  l number-of-contours  minimum  maximum
\end{verbatim}
For example, to specify 5 contours between $10^{14}$ and $10^{18}$
in logarithmic steps:
\begin{verbatim}
  l 5 1E14 1E18
\end{verbatim}
This would result in contours at $10^{14}$, $10^{15}$, $10^{16}$, $10^{17}$,
and $10^{18}$.
%
\item To specify contours with a logarithmic step,
use the {\tt d} notation:
\begin{verbatim}
  d step minimum  maximum
\end{verbatim}
For example, to specify contours between $10^{4}$ and $10^{6}$ with a
log step of 10:
\begin{verbatim}
  d 10 1E4 1E6
\end{verbatim}
This would result in contours at $10^{4}$, $10^{5}$, $10^{6}$.
When using log steps, the minimum and maximum have the same sign.
\end{itemize}

You can combine any or all of these notations when specifying
contour values, but you must not exceed the total number of contours.

On devices supporting many colors such as workstations,
the default is to plot
contours with color fill between the contours. A different color is used
to denote different data values. This makes the contour map easier to
interpret. A legend on the side of the plot tells what values the colors
represent. The first color represents all data below the first contour
value (note the ``$<$'' before the printed value),
the second color represents all values between the first and second
contour value, etc. The last color represents all values above the maximum
of the data (note the ``$<$'').

You may also specify tranditional contour plots using lines.
Different contours may be distinguished by different colors
or by different line styles (solid, dashed, dotted, etc.),
depending on the output device.
A key to the contour values is plotted on the right side of the plot.

You can optionally plot the location of all the junctions in the
structure.
If you select this option, a dashed line will be plotted
at the approximate junction location.
If you request, the plot software will place small labels on
each level curve so they can be distinguished.

On workstations, you can use the mouse to intteractively zoom in on
a portion of the plot. Enter the {\tt Z} (zoom) command at the menu prompt.
A crosshair cursor will appear in the plot window.
Click and release the first mouse button to enter the new lower left
corner of the plot.
The cursor will change to a ``stretchy'' box. Click the first mouse
button again to enter the new upper right corner of the plot.
If you click outside the plot area, the coordinate of the closest
corner is used.
Press the second mouse button to cancel input.
To return to the full coordinates, enter the {\tt U} (unzoom) command.

On workstations, you can use the mouse to interactively take a ``sample''
of the contour data, and display the data value and coordinates.
Enter the {\tt S} (sample) command a the menu prompt.
A crosshair cursor will appear in the plot window.
Click and release the first mouse button to take a sample.
The data value at that point, plus its coordinates, will be displayed
on the menu. You can continue to click the mouse button to sample other
areas of the plot. Press mouse button two to exit sample mode.

If your data is better represented by discrete values, rather than a
continuous function, you can switch Postmini into a mode where it
plots a box around each data point in a different color,
rather than interpolating a surface. Go to the top level ``Defaults''
menu, and change the ``Default hidden line method'' to histogram.
This will also change 3D surface plots, so that Postmini plots a 3D
histogram around each data point, rather than interpolating a surface.

The annotation option can be used to interactively add text,
lines, arrows, boxes, symbols and elliptical arcs to the plot.
Text is processed by the ``mathmode'' utility,
which allows you to enter sub and/or superscripts, Greek letters,
and certain math symbols using a subset of the \TeX\ math syntax.
Read section~\ref{sec:mathmode} for details on how to enter
mathmode format strings.
%
\subsection{3D surface plots}
POSTMINI can plot an internal quantity as a surface in 3D
perspective. The user is asked to specify the portion of the device to plot;
this can be used to ``zoom'' in on a region of detail in the
device.

You can also move the viewing position of your ``eye''
relative to the 3D plot. POSTMINI uses a polar coordinate system
to specify the eye position. Position is specified with three
numbers: a radius $r$ in microns, polar angle $\phi$, in degrees,
and azimuth angle $\theta$, in degrees.
Increasing $\theta$ rotates the eye counter-clockwise around
the ``equator.''
Values for $\theta$ range from $0\degrees$ to $360\degrees$.
You may also specify a negative angle; it is converted to the corresponding
positive angle.
Increasing $\phi$ moves the eye down from the ``north'' pole
to the ``south'' pole. Values for $\phi$ range from $0\degrees$
to $180\degrees$.
The default eye position is $r = 8.0$, $\phi = 45\degrees$,
and $\theta = -45\degrees$.

The following diagram illustrates the polar coordinate system.
You may notice that this is a left-handed coordinate system.
A left-handed system
is used to be consistent with the way 3D plots are displayed by
other workers. In the default view, the source is on the left,
and the drain on the right. Note that this is {\em opposite} from
the way the SURF program displays MINIMOS data.
%%
\mbox{}\\
\epsfxsize 3.5in
\centerline{\epsfbox{spherical_coords.eps}}

On devices that support color, the plot will
be done using color area fill technique. This method plots the surface
in different colors, depending on the ``height'' of the data.
This makes is very simple to determine the actual value of data being
plotted.
A legend is printed on the side of the plot, similar to the
2D color contour map.
On all other devices, the surface will be plotted using a
hidden line removal technique. On color devices, the ``underside''
of the plot will be done in a different color.

On workstations, you can use the mouse to intteractively rotate the 3D plot.
Enter the {\tt O} (orbit) command at the menu prompt.
A box around the 3D plot will appear in the plot window.
Click and release the first mouse button at the right edge of the window
to rotate the plot clockwise.
Click and release the first mouse button at the left edge of the window
to rotate the plot counter-clockwise.
Click and release the first mouse button at the top edge of the window
to move your eye position towards the ``north pole''.
Click and release the first mouse button at the bottom edge of the window
to move your eye position towards the ``south pole''.

If your data is better represented by discrete values, rather than a
continuous function, you can switch Postmini into a mode where it
plots a 3D histogram, rather than a surface. Go to the top level ``Defaults''
menu, and change the ``Default hidden line method'' to histogram.
This will also change contour plots, so that Postmini plots boxes
centered on each data point, rather than interpolating a surface.

The annotation option can be used to interactively add text,
lines, arrows, boxes, symbols and elliptical arcs to the plot.
Text is processed by the ``mathmode'' utility,
which allows you to enter sub and/or superscripts, Greek letters,
and certain math symbols using a subset of the \TeX\ math syntax.
Read section~\ref{sec:mathmode} for details on how to enter
mathmode format strings.
%
\subsection{Comparison plots}
POSTMINI can plot several 1D cross-sections on the same graph.
The 1D slices can be of the same internal quantity, different quantites,
or from different simulation runs. You can also import data files from
different simulators, including 1D ASCII files, for plotting.

To use this feature, select COMPARE at the main menu. You will be put into
a subsystem which has these features:
\begin{itemize}
\item 
Add - Add a curve to the plot list. You will be prompted for
the quantity to plot, the cut line and coordinate (for 2D data sets).
You can also specify plot attributes
such as line type (e.g. solid, dashed), color, and plotting of symbols.
A total of forty separate curves can be plotted at once.

Postmini version 8.1 and higher supports multiple X and Y axes
(earlier versions only supported separate axes from Postmini command files).
You can associate a data curve with either the top or bottom X axis,
and the left or right Y axis. Use the {\tt xaxis\_tag} and {\tt yaxis\_tag}
menu items.
\item 
Barchart - Plot all the data as a bar chart.
\item 
Clear - Delete all curves from the plot list. Useful for ``starting over''.
\item 
Delete - Delete a curve from the plot list.
\item 
Integrate - Integrate a quantity vertically or horizontally,
and add to plot list. This option applies to 2D data only.
\item 
List - List all curves to be plotted, with their labels.
\item 
Modify - Modify various aspects of a curve, such as the plot label,
curve color, linetype, or symbol. You can also modify the scale factors
(AX, AY, MX, MY) that were applied the data, or apply an expression
to the data.
You can also select whether a curve
will be included in the plot. This is useful if you wish to store
a number of data items at one time, but selectively plot the entries.
You can also change the axes the curve will be plotted on.
Postmini supports a top and bottom X axis, and a left and right Y axis.
\item 
Plot - Plot all the data as an X--Y graph.
\item 
Read - Read a new data file.
\item 
Show - List information about a curve
\item 
Exit, quit - Return to main menu.
\end{itemize}

On workstations, you can use the mouse to interactively take a ``sample''
of the plot, and display the X-Y coordinates.
Enter the {\tt S} (sample) command at the menu prompt.
A crosshair cursor will appear in the plot window.
Click and release the first mouse button to take a sample.
The data value coordinates will be displayed
on the menu. You can continue to click the mouse button to sample other
areas of the plot --- the change from the last sample point is also
printed. Press mouse button two to exit sample mode.

On workstations, you can use the mouse to interactively ``zoom''
into a region of the plot.
Enter the {\tt Z} (zoom) command at the menu prompt.
A crosshair cursor will appear in the plot window.
Click and release the first mouse button to define the lower left of the
zoom area. The cursor will now change to a ``strechy'' box, which defines
the area to be zoomed. Click and release the first mouse button
to perform the zoom. Press mouse button two to cancel the zoom.
The unzoom function {\tt U} will rescan all the curves and
pick bounds which will enclose all the data.

The annotation option can be used to interactively add text,
lines, arrows, boxes, symbols and elliptical arcs to the plot.
Text is processed by the ``mathmode'' utility,
which allows you to enter sub and/or superscripts, Greek letters,
and certain math symbols using a subset of the \TeX\ math syntax.
Read section~\ref{sec:mathmode} for details on how to enter
mathmode format strings.
%
\subsection{Overlay plots}
An overlay plot consists of multiple 2D contour plots in the same window.
Plots can overlay each other, such as line contours
of electron concentration over color contours of doping concentration,
or they can be spaced apart by scaling the x and y coordinates.

To use this feature, select OVERLAY at the main menu. You will be put into
a subsystem which has these features:
\begin{itemize}
\item 
Add - Add a contour plot to the plot list. You will be prompted for
the quantity to plot, if the dataset contains multiple quantities.
You can also specify plot attributes such as contour values,
grid, junctions, etc. You can also apply scaling or expressions
to the x and y coordinates and the data itself.
A total of forty separate contour plots can be plotted at once.
\item 
Clear - Delete all data from the plot list. Useful for ``starting over''.
\item 
Delete - Delete a dataset from the plot list.
\item 
List - List all data to be plotted.
\item 
Modify - Modify various aspects of a dataset, such as contour values,
grid, junctions, etc. You can also apply scaling or expressions
to the x and y coordinates and the data itself.

You can also select whether a dataset
will be included in the plot. This is useful if you wish to store
a number of data items at one time, but selectively plot the entries.
\item 
Plot - Plot all the data as an contour graph. The plot menu allows the
user to set certain global plot attributes, such as applying a global set of
contours to be used with all datasets, and setting the dataset that
will be used for the sample function and also for plotting the contour
map legend at the side of the plot. The other functions available
for contour plots (e.g. zoom, unzoom, sample, save) are available
for overlay plots.
\item 
Read - Read a new data file.
\item 
Show - List information about a dataset
\item 
Exit, quit - Return to main menu.
\end{itemize}
%
\subsection{The FIND function}
The FIND function will search along a 1D cut line in the
device and print out where a simulation quantity reaches a certain
value. For example, you can use FIND to determine where the
lateral electric field is zero along the surface of the MOSFET
(Y=0).
%
\subsection{The INTEGRATE function}
The INTEGRATE function will integrate a quantity in an arbitrary
rectangular region in the device, or along a 1D cut line in the
X, Y or Z direction.
INTEGRATE prompts for the region to integrate, and will
check to make sure the region is inside the device.
INTEGRATE prints out certain landmarks
in the device, such as
the source and drain contact positions, and the gate position,
for the user's convenience in specifing the region.
Note that the integration area is rounded to the nearest simulation
mesh line, so integration over exact regions is not
possible in general. In most cases, there are sufficient mesh lines
to resolve the use specified integration region.
As a check, POSTMINI will print out the actual integration region
for the user to check.
Also note that the resulting integrated value is given per centimeter (cm)
device width (or length/depth, if 3D data is being integrated).

Integration over a line can be thought of as integrating over a plane
that is inserted perpendicularly to the simulated device (in the z,
or width direction, for example).
When performing a line integration of a vector
quantity, such as current density or electric field, the
vector component perpendicular to the cut line is usually chosen.
For example, if the cut line is in the vertical (Y) direction,
the integral of the x component of the current density gives the
amount of current flowing though across that line.
One should be cautious when integrating the y component of the electric
field at the oxide interface since field is discontinuous at that
point.
POSTMINI computes the electric field at the
semiconductor side of the interface and uses the result at that point.

POSTMINI also allows you to perform a 1D integration of any 1D data
that has been loaded, e.g. from an ASCII file, SUPREM3, etc.

Note well: integrating over an area with the same X or Y coordinate
is {\em not} the same as integrating over a line. Quantities integrated
over a region are weighted by area ($\rm cm^2$),
while those integrated over a line
are weighted by length (cm). POSTMINI prints the units of the integrated
quantity to remind the user.

Note well: the integration method does not take nonplanar boundaries
correctly into account (uses entire area weight, rather than area in
just silicon). Use caution when integrating near nonplanar features.

Example 1: Integrate the avalanche generation over the entire device.
Multiply this number by the electronic charge q to get the
bulk current per cm of device width.
Note: this number can be different from what MINIMOS
prints, especially when the bulk current is very small compared to
the drain current.

Example 2: Integrate the X component of the minority current in a
vertical direction in the middle of the channel. This gives the
drain current per cm width of the device. Note, if MODEL=AVAL or HOT,
there may be a slight difference between this current and the drain current
printed by MINIMOS, due to additional current generated by
impact ionization. By varing the length of the integration line,
one can determine the amount of current that passes a certain depth.
%
\subsection{The LINE function}
Using the LINE function, you can print simulation internal quantities
along any vertical or horizontal line.
The first lines of the file are a header which lists the
quantity and cut line selected. This header is commented out using the CURV
program convention, so these files can be directly read by CURV.
Following the header, the data is printed out in two
columns: the coordinate (in microns) and the quantity at that coordinate.

When you print data into a file, POSTMINI creates a file
in your current directory, using the following algorithm to
generate the file name:
\begin{enumerate}
\item The stem of the binary file name is the first part of the print
file. Example: binary file is GEN505000.BIN; stem is GEN505000.
%
\item The coordinate of the cut is appended
to the file name in the format {\tt \_nnnnC}, where {\tt nnnn} is the
absolute value of the
cut coordinate value in 1000'ths of microns, and C is the
cut direction (X or Y). Examples: cut at X = 1.25 microns $\rightarrow$
{\tt \_1250X}; cut at Y = $-0.050$ microns $\rightarrow$ {\tt \_0050Y}.
%
\item The file type is a mnemonic code which depends on the quantity
selected. See section~\ref{sec:startup}dix B for the list of extensions and their meaning.
\end{enumerate}
%
\subsection{The MINMAX function}
The MINMAX function allows you to locate the minimum and
maximum of a quantity in the simulation.
Note that it is possible that there will be several places in the
device which have the same minimum or maximum value.
POSTMINI will report the first one it finds as it scans the device.
You can limit the seach to a portion of the device;
this is useful if you wish to limit seaching to the semiconductor
region (e.g. $y \ge 0$ in a planar MOSFET).
%
\subsection{The PRINT function}
Using the PRINT function, you can print simulation internal quantities
over the entire device to a file.
Output consists of a neatly printed array of data
values, with corresponding x and y coordinates.

When you print data into a file, POSTMINI creates a file
in your current directory, using the following algorithm to
generate the file name:
\begin{enumerate}
\item The stem of the binary file name is the first part of the print
file. Example: binary file is GEN505000.BIN; stem is GEN505000.
%
\item The file type is a mnemonic code which depends on the quantity
selected. See section~\ref{sec:startup} for the list of extensions and their meaning.
\end{enumerate}
%
\subsection{Changing POSTMINI defaults}
POSTMINI allows you to change a number of default plot attributes.
Use the {\tt default} function to modify them.
The following attributes can be modified from within Postmini:
\begin{center}
\begin{tabular}{ll}
\hline
Attribute & Possible values \\
\hline
Force solid lines on contour plots  & Yes/No \\
Linewidth scale factor & 0.0 -- 5.0 \\
Hidden line algorithm  & Device dependent \\
                       & Horizon function \\
                       & Painter's algorithm\\
Default hardcopy device & (See list of supported devices) \\
Workstation window size factor & 0.1 $>=$ factor $>=$ 1.0 \\
                               & the factor is a percent of \\
                               & the full workstation screen \\
Hardcopy reduction factor   &  0.1 $>$ factor $>$ 1.0\\
Hardcopy orientation    & Landscape/Portrait \\
Text scale factor       & $>$ 1.0 enlarges all text\\
                        & $<$ 1.0 shrinks \\
Force autoscale of coordinate axes & Yes/No \\
Length unit name & Arbitrary string \\
\hline
\end{tabular}
\end{center}
%
\subsection{The shell function}
You can execute operating system commands without leaving
POSTMINI by using the shell function.
Under VMS, your DCL prompt will be set to \verb+Postmini>+,
to remind you that you must return to POSTMINI (type LOGOUT to do this).
Under Tru64 Unix,
a C-shell process is created. Type ``exit'' or ``control-D''
to return to POSTMINI.
%
\subsection{Managing windows on workstations}
When POSTMINI is run on a workstation, it can plot data in
multiple windows. Select the ``windows'' option from the main menu.
From there, you can opt to delete any or all plot windows on the screen,
or select the ``style'' of window management.
The three available styles are:
\begin{itemize}
\item Single window - All plots go to a single window.
\item Multiple - Each plot type (e.g. 1D, contour, 3D, comparison)
uses a separate window.
\item Reactivate - Reactivate plot windows that have been ``saved''
on the screen.
\item Retained - All plots go to a single window; however,
you can elect to save the current window on screen.
POSTMINI will prompt you when the plot is completed if you want
to save the window.
POSTMINI will open a new window for the next plot.
Retained windows remain on the screen until you delete them.
You may keep up to 10 windows on the screen at once.
\end{itemize}
The default style is ``retained''.

If you use several windows, you will probably want to rearrange or
shrink/expand the windows to your liking.
Use the normal Motif window manager functions to manipulate the
GKS plot window.
Under Motif, when a window is re-sized,
the underlying graphics are redrawn to fit in the window, while maintaining
the original aspect ratio of the plot.

Under Motif, you may notice that the window ``input focus'' is transferred
to the GKS window whenever there in any input or output to that window.
This is inconvenient when using Postmini, since you need to click on your
terminal window to restore input focus so you can type at the terminal
window. This also has the side effect of popping the terminal window
up so that it covers the graphics output.
This is especially annoying when performing graph annotations.
One way to avoid this problem is to change the Motif window manager
input focus policy so that input focus is assigned to the window
where the mouse is pointing. To do this, click and hold down mouse button 1
on any part of the background window. A menu should come up.
Point to ``Options $\rightarrow$'' and select the ``Workspace'' submenu.
Under ``To make a window active'',
select the ``Move the pointer into the window'' option.
Also, turn off the option ``Raise it to the top of the screen'' under
``When a window becomes active.''
Then save the settings and restart the Motif window manager.

If you do not like the ``focus follows mouse'' approach,
you can just turn off the option ``Raise it to the top of the screen''
and restart the Motif window manager. When the Postmini graphic window
comes up, focus will be on the graphics window, but you can move it
back to the terminal string by clicking anywhere on the terminal window.
Click on the window border to raise the window to the foreground.
%
\subsection{The save/restore functions}
Postmini supports the option to save a description of the current plot
in a Postmini command file.
The command file is ASCII text, and can be edited with any text editor.
It contains all the information necessary to re-plot your graphics.
The command file consists of several sections:
\begin{itemize}
\item PLOT -- The PLOT command describes the type of plot -- e.g.
1D, 2D, 3D or COMPARE.
%
\item GLOBAL -- The GLOBAL command and its subsequent lines set overall
factors, such as defining colors
%
\item AXIS -- The AXIS command defines the limits on the various
axis parameters, such as minimum, maximum, tic marks, etc.
%
\item CURVE -- The CURVE command defines the how to restore an individual
curve of a 1d or comparison plot. It contains datafile information
(filename, data type, cut line coordinate, etc.) as well as plotting
information (color/marker information).
%
\item CONTOUR -- The CONTOUR command defines how to restore a contour plot.
It contains datafile information (filename, data type, etc)
as well as contour values used, and other plot options.
%
\item SURFACE -- The SURFACE command defines how to restore a surface plot.
It contains datafile information (filename, data type, etc)
as well as other options, such as eye position.
%
\item ANNOTATE -- The ANNOTATE command defines the various annotations
of the plot -- boxes, lines/arrows, text, markers and ellipses.
\end{itemize}
%
In general, you would generate a POSTMINI command file using the save function.
It is entirely possible to generate one yourself, although it would probably
be better to use a POSTMINI generated file as a template.
The restore function attempts to catch invalid input as best as possible,
and reports syntax errors to the terminal by line number of the POSTMINI
command file. Section~{sec:pmifile} lists the current set of command file keywords.

Once you restore a plot,
you will be placed into an appropriate full screen, e.g.
if you restored a 2D contour plot, you will be placed in the
2D contour plot menu. You can then plot, annotate, make a hardcopy, etc.

Note that POSTMINI when restores a plot, it
re-reads the original datafiles. If the datafiles
have been deleted, modified or are in another directory,
then POSTMINI may not be able to restore
the plot, or a unexpected graph may be displayed.

POSTMINI automatically saves your last plot in a file called {\tt POSTMINI.PMI}
when you exit the program. Under VMS, a new version of the file is
created, so you should occasionally purge the {\tt POSTMINI.PMI} files.
\section{POSTMINI printer support}
If you want to make a hardcopy plot file,
select the {\tt Hardcopy} menu option.
Another full screen menu will come up.
To generate a hardcopy, enter {\tt P}. To return to the previous
menu without making a hardcopy, enter {\tt Q} or {\tt E}.
Note: POSTMINI will only create the plot file;
it is up to you to print the file.
Note: unlike previous versions of POSTMINI, you may make a hardcopy
without previewing the graph on your screen.

POSTMINI supports a number of output devices.
The supported devices are:
color and monochrome PostScript,
encapsulated PostScript (for inclusion in other documents, like
Microsoft Word or LaTeX),
HP-7550 (HPGL), Laserjet-II (HP-PCL),
and the LJ250 (color sixels).
The plot file will have the name corresponding to the data file
you read in, with an extension of {\tt .ps}, {\tt .eps},
{\tt .hpgl} and {\tt .pcl} for the PostScript, Encapsulated PostScript,
HP7550 and PCL devices,
respectively. You may specify a different output file name
from the hardcopy menu.

One might ask why there are two PostScript file types:
color and monochrome. Postmini will alter the graphics appearance
for the monochrome device for maximum legibility.
For example, if one has an X-Y plot with curves of different colors,
the curves might be indistinguishable when printed to a non-color
printer. For example, both red and blue will appear as black.
Postmini will change the different line colors to different line types,
in order to clearly show them. The expert user will, of course,
just modify graph to use line types and not use color if s/he knows that the
graphic will be printed on a non-color printer.

When you generate encapsulated PostScript for inclusion in other documents,
you should generate the file in portrait mode, so that the graph does
not appear rotated by 90 degrees.
%
\section{Plot annotations}
POSTMINI allows the user to interatively annotate any graph.
This feature is available only on workstations.
The user can add the following items to a graph:
\begin{itemize}
\item Boxes, both filled or outline
\item Elliptical arcs (useful in grouping multiple curves together)
\item Horizontal, vertical or angled lines
\item Horizontal, vertical or angled arrows
\item Markers
\item Mathmode text
\end{itemize}
Each item is positioned on the graph using the workstation mouse.
The user can also delete any item, or reposition items.
The final result is a professional looking graph, especially when
plotted to the PostScript output device.

Here are a few hints on using the plot annotation feature:
\begin{itemize}
\item When you ask to draw a vertical or horizontal line,
POSTMINI will ``snap'' the line to the vertical or horizontal,
even if you try to draw a line that is at an angle.
\item Filled boxes drawn using a color of ``0'' (background color)
can be used to block out portions of the plot (like electronic
``white--out''). This is especially useful in placing text in colored
or busy areas of a plot. First draw a filled box the size of the text,
then place the text over the box.
\item Elliptical arcs are drawn in two steps (v8.2 and higher).
First, the user clicks on the lower left and upper right corners
of a rectangle that is the bounding box for the arc.
Postmini then displays an elliptical arc
in ``real time.'' The end points of the arc change as the user moves
the mouse. Clicking on mouse button one finishes the process.
\item Under some conditions, it is possible for an elliptic arc
to ``cover'' another item, so that the underlying item cannot be selected
for deletion or re-positioning.
To uncover the item, move the elliptic arc off the item you wish to select.
\item POSTMINI uses the built-in PostScript fonts (default: Helvetica Bold)
when plotting to the PostScript device. These fonts are professional
quality, and are highly legible, even after photo-reduction.
The down side of using these fonts is that they are not
exactly the same as the fonts used on the workstation.
Although the fonts are all scaled to the same size,
it is possible that text may come out slightly different in size on
these two devices. The difference is usually negligible.
The other hardcopy devices do not have this problem.
\item You can use horizontal or vertical line annotations to ``measure''
distances. For example, to measure the horizontal distance from the edge
of a MOSFET gate to the junction edge, enter a horizontal line with one
end on the gate and the other on the junction edge (remember, horizontal
lines ``snap'' to horizontal, so you enter an angled line if that's more
convenient). Then move the horizontal line down to the horizontal plot
axis to determine its length.
\end{itemize}
%
\section{Expression Evaluator}
Postmini V8.3 and higher introduces an expression evaluator code.
This allows the user to apply arbitrary expressions to their X or Y
axis data, either when read in from an ASCII file, or in a comparison
plot. Expressions use a syntax similar to Fortran.
The common operators +, -, *, / and ** (exponentiation) are allowed,
parenthesis to group operations, as well as a number of functions, listed below.
A single variable is allowed, either {\tt x} or {\tt y},
which refers to the X or Y data which will be transformed.
If an expression is used, any linear scaling factors
({\tt AX,AY,MX,MY}) are not used.
\begin{center}
\begin{tabular}{lp{3.0in}}
\hline
function & Operation\\
name     & \\
\hline
sqrt & sqrt \\
log  & log base e \\
exp  & exponential function\\
log10 & log base 10\\
abs  & absolute value\\
sin  & sine function (radian argument)\\
cos  & cosine function (radian argument)\\
tan  & tangent function (radian argument)\\
asin & arcsin function (returns radians)\\
acos & arccos function (returns radians)\\
atan & arctan function (returns radians)\\
atan2 & arctan function with two arguments (returns radians)\\
max(...) & maximum function (arb. number of arguments)\\
min(...) & minimum function (arb. number of arguments)\\
sind & sine function (degree argument)\\
cosd & cosine function (degree argument)\\
tand & tangent function (degree argument)\\
ran  & random function [0,1.0], takes one (dummy) argument \\
\hline
\mcm{2}{l}{The following functions are valid for 1-D data}\\
\hline
integrate(y,x) & Integrate y(x) from initial x to current x value \\
deriv(y,x) & Differentiate y with respect to x\\
\hline
\end{tabular}
\end{center}

Note that only one differentiate function is allowed per expression.
Versions 9.1-002 and higher of Postmini implement a two-pass
function evaluator, which allows implementation of a central difference
differentiator, which is more numerically accurate than in previous
versions.
%
\section{POSTMINI startup file \label{sec:startup}}
When POSTMINI starts up, it reads a file named {\tt POSTMINI\_DEFAULTS.DAT}
from your current directory. If no such file exists, it tried to read it
from your home directory. The startup file can be used to modify many
features of Postmini. The file consists of lines as follows:
\begin{verbatim}
   keyword =  [value1 [[value2] ...]
\end{verbatim}
Keywords are case independent. Blanks or commas may be used to
separate values.
Comment lines begin with an exclamation point ``!'' in column 1.
You may place several items on one line by separating
the items with a semicolon.
The following is a sample startup file:
\begin{verbatim}
!
!  A sample Postmini default file
!
!  Make hardcopy in portrait orientation
hc_orientation = portrait
!  Make all hardcopy at 60% reduction
hc_scale_factor = 0.6
!  Define default 3D view at radius=8, phi=45 degrees,
!  theta=45 degrees
3d_view = 8 45 45
! Use Courier font for Postscript text
ps_font_id = -109
! Redefine color #2 as light gray
color_2 = 0.7 0.7 0.7
\end{verbatim}
%
The following table lists all valid keywords for the Postmini startup
file {\tt POSTMINI\_DEFAULTS.DAT}.
In the following table, \sstring means any string, \iint means any
integer, and \rreal means any real number.
String values are
taken from the first non-blank character after the equal sign to the
last non-blank character of the line.
The following keywords are recognized:
\begin{leftindent}{\largetableindent}
\begin{center}
\begin{tabular}{llp{3in}}
\hline
\mcm{3}{l}{Postmini default file keywords} \\
\hline
Key & Values & Description \\
\hline
\tt 3D$\_$VIEW   & \rreal \rreal \rreal & 
                 Default 3D viewpoint (radius, phi, theta) \\
\tt AUTOSCALE  & {\tt YES | NO} & If ``{\tt YES}'', always generate new default plot axis \\
             & & limits using an autoscaling algorithm\\
             & & If ``{\tt NO}'', remember the last coordinate axis limits
                 the user specified and use for the next plot (default)\\
\tt COLOR\_nn  & \rreal \rreal \rreal
               & Defines  red/green/blue  components  of color {\tt nn}
                 {\tt nn} ranges from 0 to 15. Postmini normally
                 uses colors 0--11. \\
               & & Color 0 specifies the background color \\
 -- or --      & \sstring
               & Name of color nn \\
\tt FONT\_ID   & \iint & GKS stroke font id for plots to the screen (see Digital GKS manual) \\
\tt HARDCOPY   & {\tt postscript | ln03plus } &  Default hardcopy device \\
               & {\tt | hp7550 | lj250 } & \\
\tt HC\_ORIENTATION      &  {\tt portrait | landscape} & Hardcopy orientation \\
\tt HC\_SCALE\_FACTOR    &  \rreal (0.1 to 1.0) & Hardcopy reduction factor \\
\hline
\end{tabular}
\end{center}
\end{leftindent}
%
\newpage
\begin{leftindent}{\largetableindent}
\begin{center}
\begin{tabular}{llp{3.0in}}
\hline
\mcm{3}{l}{Postmini default file keywords (cont)} \\
\hline
Key & Values & Description \\
\hline
\tt HIDDEN\_LINE\_METHOD &  painter | horizon & 3D hidden line method \\
\tt LENGTH\_UNIT\_NAME\_  & \sstring \rreal
                         & Name of length unit and scale to cm \\
\tt AND\_SCALE & & \\
\tt OXIDE\_FILL          & {\tt YES | NO}
                         & Fill regions of oxide with background color
                           if oxide does not have any data associated with it\\
                       & & For debugging only, default: YES \\
\tt PLOT\_SCALE\_FACTOR  & \rreal (0.1 to 10.0)
                         &  Plot reduction/enlargement factor \\
\tt PS\_FONT\_ID         & \sstring
    & Selects text font to use for Postscript plots (see section~\ref{sec:pmifile}) \\
\tt LINEWIDTH\_SCALE     & \rreal  & Linewidth scale factor \\
\tt SOLID\_CONTOUR\_LINES & No value & Makes all 2D contour lines solid \\
\tt TEXT\_SCALE          & \rreal (0.1 to 10.0)
                         & Text reduction/enlargement factor \\
\tt WRITE\_PMIFILE       & {\tt YES | NO}
                         & If YES, writes .PMI file at end of Postmini run
                           (default: YES) \\
\tt Z\_COLORMAP\_MINIMUM & \rreal & Value of colormap minimum for 3D plots \\
\tt Z\_COLORMAP\_MAXIMUM & \rreal & Value of colormap maximum for 3D plots \\
\hline
\end{tabular}
\end{center}
\end{leftindent}
%
\section{POSTMINI command file syntax \label{sec:pmifile}}
The Postmini command file describes all the data needed to recreate
a Postmini plot from the original data files.
The command file breaks a Postmini plot into several parts,
such as type of plot, axis description, data source, annotations, etc.
In order to use the same code as for reading the Postmini defaults file,
the Postmini command file uses a similar general syntax:
a keyword, an (optional) equal sign, and an (optional) list of arguments.
Certain special keywords called {\it main} keywords introduce each
part of the plot, and tell Postmini what to expect next.
Each main keyword is followed by subkeys which give further
information.

The following table lists all valid main keywords for the Postmini command
file. Note that some keys go together;
for example, a file with a {\tt PLOT 2D} key must have a {\tt CONTOUR} key.
Keywords may be in any case. They must be spelled out completely.
Comments are started by an exclamation point {\tt !} in column 1.
A choice is denoted by the syntax {\tt word1 | word2 | ...}.
Note that new main keywords may be added in later versions of Postmini.
\begin{center}
\begin{tabular}{llp{3.0in}}
Key & Values & Description \\
\hline
{\tt PLOT}   & {\tt 1D | 2D | 3D |}   & Type of plot \\
             & {\tt COMPARE | BARCHART}       & \\
             & {\tt OVERLAY}          & \\
{\tt GLOBAL} & none                   & Global plot parameters \\
{\tt TITLE}  & \sstring               & Titling to appear at top of plot \\
{\tt AXIS}   & {\tt X | Y | Z }       & Axis parameters \\
             & (optional)             & \\
             & {\tt BOTTOM | TOP | }  & \\
             & {\tt LEFT | RIGHT}     & \\
{\tt CURVE}  & none                   & Source of data for a 1D or COMPARE
                                        plot. \\
             &                        & There can be multiple {\tt CURVE}
                                        commands in a COMPARE plot        \\
{\tt CONTOUR} & none                  & Source of data for a 2D contour plot \\
             &                        & There can be multiple {\tt CONTOUR}
                                        commands in an OVERLAY plot        \\
{\tt SURFACE} & none                  & Source of data for a 3D surface plot \\
{\tt ANNOTATE} & {\tt LINE | BOX | TEXT | } & Data for an annotation \\
               & {\tt MARKER | ELLIPSE } & \\
\hline
\end{tabular}
\end{center}

\newpage
The subkeywords for each main keyword are listed in the following tables.
Note that new subkeywords may be added in later versions of Postmini.
In the following table, \sstring means any string, \iint means any
integer, and \rreal means any real number. String values are
taken from the first non-blank character after the equal sign to the
last non-blank character of the line. Quoting is not needed to
maintain the case of strings.

Postmini 7.4-000 and higher supports symbolic names for colors,
line types, marker types and PostScript fonts, as well as integers.
Postmini recognizes the following:
\begin{center}
\begin{tabular}{ll}
\hline
Item & Values \\
\hline
Color & Dependent on plot type \\
      & See tables below \\
      & Also: {\tt invisible, off, none} \\
Line types & {\tt solid, dashed, dotted, dash\_dot } \\
             & {\tt dash\_2\_dot dash\_3\_dot long\_dash } \\
             & {\tt long\_short\_dash spaced\_dash spaced\_dot } \\
             & {\tt double\_dot triple\_dot } \\
             & {\tt none off omit} \\
Marker types & {\tt circle, square, triangle\_up, triangle\_down } \\
             & {\tt solid\_circle, solid\_square } \\
             & {\tt solid\_tri\_up, solid\_tri\_down } \\
             & {\tt dot, plus, asterisk, cross} \\
             & {\tt bowtie, hourglass, diamond} \\
             & {\tt solid\_bowtie, solid\_hourglass, solid\_diamond} \\
             & {\tt none off omit} \\
PostScript   & {\tt times, times\_italic} \\
fonts        & {\tt times\_bold, times\_bold\_italic } \\
             & {\tt helvetica, helvetica\_oblique} \\
             & {\tt helvetica\_bold, helvetica\_bold\_oblique } \\
             & {\tt courier, courier\_olblique } \\
             & {\tt courier\_bold, courier\_bold\_oblique } \\
\hline
\end{tabular}
\end{center}
You can still use integers to specify these items, if you wish.
{\it Note well!} If you have used the {\tt COLOR\_NN} command to change
Postmini's default colors, the color name associated with index {\tt NN} will
no longer be recognized by Postmini. In its place, the name {\tt userdefinednn}
will be recognized. The color names are taken from the list of X11 colors
(on Unix, see: {\tt /usr/lib/X11/rgb.txt}).

The default colors for 1D and comparison plots are:
\begin{center}
\begin{tabular}{ll}
\hline
Color Index & Name \\
\hline
0   & white \\
1   & black \\
2   & red \\
3   & green \\
4   & blue \\
5   & cyan \\
6   & magenta \\
7   & yellow \\
8   & lightgreen \\
9   & gold \\
10  & lightblue \\
11  & orange \\
12  & purple \\
13  & brown \\
14  & gray \\
15  & violet \\
\hline
\end{tabular}
\end{center}

The default colors for 2D and 3D plots are:
\begin{center}
\begin{tabular}{ll}
\hline
Color Index & Name \\
\hline
0   & white \\
1   & black \\
2   & purple \\
3   & blue \\
4   & deepskyblue \\
5   & cyan \\
6   & green3 \\
7   & green \\
8   & yellow \\
9   & gold \\
10  & orange \\
11  & red \\
12  & undefined1 \\
13  & undefined2 \\
14  & undefined3 \\
15  & undefined4 \\
\hline
\end{tabular}
\end{center}
%
\newpage
\subsection{Keyword PLOT}
\begin{center}
\begin{tabular}{llp{3.0in}}
\hline
Keyword PLOT & &\\
\hline
Subkey & Values & Description \\
\hline
\\
\multicolumn{3}{l}{Does not have any subkeys at this time.} \\
\\
\hline
\end{tabular}
\end{center}
%
\newpage
\subsection{Keyword GLOBAL}
\begin{leftindent}{\largetableindent}
\begin{center}
\begin{tabular}{llp{3.0in}}
\hline
Keyword GLOBAL & & \\
\hline
Subkey & Values & Description \\
\hline
\tt COLOR$\_$nn & \rreal \rreal \rreal & Red,green,blue componens of color\\
              & or \sstring & color name \\
\tt FONT\_ID & \iint & GKS stroke font id\\
\tt HARDCOPY\_DEVICE & \sstring & Default hardcopy device (see section~\ref{sec:startup})\\
\tt HC\_ORIENTATION & {\tt LANDSCAPE | PORTRAIT} & Hardcopy orientation \\
\tt HC\_SCALE\_FACTOR & \rreal & Hardcopy reduction factor, $<$ 1.0 \\
\tt HIDDEN\_LINE\_METHOD & {\tt device | painter | } & Type of hidden line algorithm\\
                         & {\tt horizon } & \\
\tt LENGTH\_UNIT\_NAME\_ & \sstring \rreal & \\
\tt AND\_SCALE & & \\
\tt LINEWIDTH\_SCALE & \rreal & Scales all lines \\
\tt PLOT\_SCALE\_FACTOR & \rreal & Scales plot window, $<$ 1.0 makes window smaller, $>$ 1.0 makes window larger\\
\tt PS\_FONT\_ID & \sstring & PostScript font name (see list of names above) \\
\tt TEXT\_SCALE & \rreal & Scales all text \\
\tt HC\_SCALE\_FACTOR  & \rreal & Scales the hardcopy plot (0.1 $<$ 1.0)\\
\tt HC\_ASPECT\_RATIO  & \rreal & Modifies the aspect ratio of the hardcopy plot (0.1 $<$ 2.0, default=0.77)\\
\tt HC\_XOFFSET & \rreal & Offsets the hardcopy plot in the X direction ($<$ 1.0) \\
\tt HC\_YOFFSET & \rreal & Offsets the hardcopy plot in the Y direction ($<$ 1.0) \\
\hline
\end{tabular}
\end{center}
\end{leftindent}
%
\newpage
\subsection{Keyword TITLE}
\begin{center}
\begin{tabular}{llp{3.0in}}
\hline
Keyword TITLE & \sstring &\\
\hline
Subkey & Values & Description \\
\hline
\\
\multicolumn{3}{l}{Does not have any subkeys at this time.} \\
\\
\hline
\end{tabular}
\end{center}
The {\tt TITLE} command is used to put text labels at the top of plots.
For {\tt 1D}, {\tt 2D}, {\tt 3D} plots, only one title line can be
specified.
For comparison plots, up to five title lines can be specified.
For overlay plots, up to three title lines can be specified.
If you use more than two titles, you should also specify either
{\tt SUPPRESS\_LABELS} or {\tt CURV\_MODE} on the {\tt GLOBAL} command
to make more room on the plot for titling.
%
\newpage
\subsection{Keyword AXIS}
\begin{leftindent}{\largetableindent}
\begin{center}
\begin{tabular}{llp{3.0in}}
\hline
Keyword AXIS &  & \\
\hline
Subkey & Values & Description \\
\hline
\tt ABS & No value & Take absolute value of data \\
\tt EXPONENT & \iint & Power of 10 used to scale (divide) data \\
\tt LABEL & \sstring & Axis label \\
\tt LOG & No value & Take $\rm log_{10}$ of data \\
\tt LOG\_TIC\_FREQ & \iint & Number of decades between major tic marks on log scale (Z axis only) \\
\tt MAJOR\_TIC & \rreal & Major ticmarks placed at this interval \\
\tt MAX & \rreal & Axis maximum \\
\tt MIN & \rreal & Axis minimum \\
\tt MINOR\_TIC\_FREQ & \rreal & Number of minor ticmarks per major tic \\
\tt UNITS & \sstring & Data units\\
\hline
\mcm{3}{l}{The following are supported for comparison plots only} \\
\hline
\tt AUTOSCALE   & No value & Choose min/max, depending on data \\
                &          & {\tt MIN,MAX,MAJOR\_TIC,MINOR\_TIC\_FREQ}\\
                &          & are ignored.\\
\tt COLOR       & \sstring & Axis color \\
\tt FORMAT      & \sstring & Any value ``C'' language format for a floating point number\\
\tt MAJOR\_GRID & No value & Plot a grid line at each major tic mark \\
\tt MAJOR\_GRID\_LINETYPE & \iint & Linetype for major grid lines \\
\tt MAJOR\_TIC\_FACTOR  & \rreal & Major tic scale factor (ratio of length of major tic to minor tic) \\
\tt MINOR\_GRID & No value & Plot a grid line at each minor tic mark \\
\tt MINOR\_GRID\_LINETYPE & \iint & Linetype for minor grid lines \\
\tt MINOR\_TIC\_SIZE  & \rreal   & Minor tic scale factor (in percent of entire graph) \\
\tt NONUMBERING & No value & Omits numbering at major tic marks \\
\tt OMIT        & No value & Do not draw in the axis at all\\
\tt THICKNESS   & \rreal   & Axis thickness scale factor \\
\hline
\mcm{3}{l}{The following are supported for contour and overlay plots only} \\
\hline
\tt INVERT      & No value & Draw the Y axis with increasing values going down \\
\hline
\end{tabular}
\end{center}
\end{leftindent}
%
\newpage
\subsection{Keyword CURVE}
\begin{leftindent}{\largetableindent}
\begin{center}
\begin{tabular}{llp{3.0in}}
\hline
Keyword CURVE & & \\
\hline
Subkey & Values & Description \\
\hline
\tt ALONG\_OXIDE & No value & Make cutline along oxide interface \\
\tt AX & \rreal & Added to X axis data \\
\tt AY & \rreal & Added to Y axis data \\
\tt COLOR & \sstring & Color of curve\\
\tt CUT\_LINE\_AXIS & {\tt X | Y | Z } & Make cutline along this axis \\
\tt CUT\_LINE\_COORD & \rreal & Make cutline at this coordinate \\
\tt CUT\_PLANE\_AXIS  & {\tt X | Y | Z } & Make cutline on this plane (MINIMOS 3D) \\
\tt CUT\_PLANE\_COORD & \rreal & Make cutline at this plane coordinate (MINIMOS 3D)\\
\tt DATAFILE & \sstring & Data file name \\
\tt DATAFILE\_DIMENSION & {\tt 1 | 2 | 3 } & Spatial dimension (3 for MINIMOS 3D) \\
\tt DATAFILE\_QUANTITY & \sstring & Name of data quantity (see later tables)\\
\tt DATAFILE\_TYPE & {\tt MINIMOS | PROMIS | } & Data file type\\
                   & {\tt SUPREM3S | SUPREM3P | } & \\
                   & {\tt 2DOP | USEOUT | } & \\
                   & {\tt SUPREM4 | PISCES | } & \\
                   & {\tt ASCII | TIF | } & \\
                   & {\tt SPICE3 | FAIM | MCP2D | } & \\
                   & {\tt BAMBI | VLSICAP } & \\
                   & {\tt ANALYTICAL } & \\
\tt DATAFILE\_RECORD & \iint & Record number of data set inside a file \\
                     &       & (PROMIS, USEOUT, PISCES)\\
\tt DOPFILE\_GATE\_LENGTH & \rreal & Scaling length for MINIMOS doping file\\
\tt DOPFILE\_INTERFACE\_FILE & \sstring & Interface file associated with a MINIMOS doping file \\
\tt INTEGRATED &  & Quantity is integrated \\
\tt INTEGRATION\_DIRECTION & {\tt X | Y | Z} & Direction to integrate \\
\hline
\end{tabular}
\end{center}
\end{leftindent}
%
\newpage
\begin{leftindent}{\largetableindent}
\begin{center}
\begin{tabular}{llp{3.0in}}
\hline
Keyword CURVE (cont) & & \\
\hline
Subkey & Values & Description \\
\tt LABEL        & \sstring & Text string \\
\tt LINETYPE     & \sstring & Line types (see list above) \\
\tt LINEWIDTH    & \rreal & Linewidth (1.0 == default) \\
\tt MARKER\_COLOR & \sstring & Marker color \\
\tt MARKER\_SIZE & \rreal & Marker size (1.0 == default) \\
\tt MARKER\_TYPE & \sstring & Postmini marker type (see list above) \\
\tt MX & \rreal & Multiplies X axis data \\
\tt MY & \rreal & Multiplies Y axis data \\
\tt SORT & No value & Sorts data on X coordinate before plotting \\
\tt XABS       & No value & Takes absolute value of X coordinate \\
\tt XAXIS\_TAG & {\tt TOP | BOTTOM } & Associates this curve with the\\
               &                     & top or bottom axis\\
               &                     & (comparison plots only)\\
\tt X\_EXPRESSION & \sstring & Expression to apply to X axis data \\
\tt YABS       & No value & Takes absolute value of Y coordinate \\
\tt YAXIS\_TAG & {\tt LEFT | RIGHT } & Associates this curve with the\\
               &                     & left or right axis\\
               &                     & (comparison plots only)\\
\tt Y\_EXPRESSION & \sstring & Expression to apply to Y axis data \\
\tt VLSICAP\_GATE\_EDGE & \rreal & Position of gate edge \\
\tt VLSICAP\_SI\_SIO2\_INTERFACE & \rreal & Position of Si/SiO2 interface \\
\hline
\end{tabular}
\end{center}
\end{leftindent}
%
\newpage
\begin{leftindent}{\largetableindent}
\begin{center}
\begin{tabular}{llp{3.0in}}
\hline
Keyword CURVE (cont) & & \\
\hline
\mcm{3}{l}{The following parameters are valid only for the ASCII datatype}\\
\hline
Subkey & Values & Description \\
\tt AZ     & \rreal & Adds to Z coordinate \\
\tt CHARACTER\_DATA\_IN\_X\_COL & No value & Labels for barcharts \\
\tt COL\_X & \iint  & Column which has X axis data \\
\tt COL\_Y & \iint  & Column(s) which have Y axis data \\
  -- or -- & {\tt ALL} & All remaining columns \\
\tt COL\_Z & \iint  & Column which has Z axis data \\
\tt ERRORBARS &     & Plot error bars using Z column data \\
\tt MZ     & \rreal & Multiplies Z coordinate \\
\tt READ\_LINES & \iint & Read only n lines in file\\
\tt SAMPLE\_FREQ & \iint & Read every \iint lines \\
\tt SKIP\_LINES & \iint & Skip n lines in file before reading \\
\tt SWEEP & No value & Suppress retrace if X axis data is \\
          &          & non-monotonic\\
\tt ZABS  & No value & Takes absolute value of Z coordinate \\
\tt ZSORT & No value & Sorts data on Z coordinate before plotting \\
\hline
\mcm{3}{l}{The following parameters are valid only for the SPICE3 datatype}\\
\hline
Subkey & Values & Description \\
\tt SPICE3\_XAXIS\_QUANTITY &  & Quantity to plot along X axis \\
\end{tabular}
\end{center}
\end{leftindent}
%
\newpage
\begin{leftindent}{\largetableindent}
\begin{center}
\begin{tabular}{llp{3.0in}}
\hline
Keyword CURVE (cont) & & \\
\hline
\mcm{3}{l}{The following parameters are valid only for the ANALYTICAL datatype}\\
\hline
Subkey & Values & Description \\
\tt ANALYTICAL\_EXPRESSION     & \sstring & Analytical expression \\
\tt ANALYTICAL\_FUNCTION\_TYPE & {\tt F(X) | } & Analytical function type \\
                               & {\tt F(X,P) | F(X,Y) } & \\
\tt ANALYTICAL\_XSTART & \rreal & Starting x value \\
\tt ANALYTICAL\_XEND   & \rreal & Ending x value \\
\tt ANALYTICAL\_XSTEP  & \rreal & X step\\
\tt ANALYTICAL\_PSTART & \rreal & Starting p value\\
\tt ANALYTICAL\_PEND   & \rreal & Ending p value\\
\tt ANALYTICAL\_PSTEP  & \rreal & P step\\
\tt ANALYTICAL\_YSTART & \rreal & Starting y value\\
\tt ANALYTICAL\_YEND   & \rreal & Ending y value\\
\tt ANALYTICAL\_YSTEP  & \rreal & Y step\\
\hline
\end{tabular}
\end{center}
\end{leftindent}
%
\newpage
\subsection{Keyword CONTOUR}
\begin{leftindent}{\largetableindent}
\begin{center}
\begin{tabular}{llp{2.5in}}
\hline
Keyword CONTOUR & & \\
\hline
Subkey & Values & Description \\
\tt COLOR & No value & Enables color fill contour \\
\tt CUT\_PLANE\_AXIS  & {\tt X | Y | Z } & Make plot on this plane (MINIMOS 3D) \\
\tt CUT\_PLANE\_COORD & \rreal & Make plot at this plane coordinate (MINIMOS 3D)\\
\tt DATAFILE & \sstring & Data file name \\
\tt DATAFILE\_DIMENSION & {\tt 2 | 3 } & Spatial dimension (3 for MINIMOS 3D) \\
\tt DATAFILE\_QUANTITY & \sstring & Name of data quantity (see later tables)\\
\tt DATAFILE\_TYPE & {\tt MINIMOS | PROMIS } & Data file type\\
                   & {\tt SUPREM3S | SUPREM3P | } & \\
                   & {\tt 2DOP | USEOUT | } & \\
                   & {\tt SUPREM4 | PISCES | } & \\
                   & {\tt ASCII | TIF | } & \\
                   & {\tt FAIM | MCP2D | } & \\
                   & {\tt BAMBI | VLSICAP } & \\
                   & {\tt ANALYTICAL } & \\
\tt DATAFILE\_RECORD & \iint & Record number of data set inside \\
                     &       & a file (PROMIS, USEOUT, PISCES)  \\
\tt DOPFILE\_GATE\_LENGTH & \rreal & Scaling length for MINIMOS doping file\\
\tt DOPFILE\_INTERFACE\_FILE & \sstring & Interface file associated with a MINIMOS doping file \\
\tt JUNCTIONS & No value & Plots junctions \\
\tt GRID & No value & Plots grid \\
\tt NEGATE & No value & Negates data before plotting \\
\tt VLSICAP\_GATE\_EDGE & \rreal & Position of gate edge \\
\tt VLSICAP\_SI\_SIO2\_INTERFACE & \rreal & Position of Si/SiO2 interface \\
\tt VALUES & \rreal \rreal ... & Contour values \\
           & (up to 9 values)  & \\
\hline
\end{tabular}
\end{center}
\end{leftindent}
%
\newpage
\begin{leftindent}{\largetableindent}
\begin{center}
\begin{tabular}{llp{2.5in}}
\hline
Keyword CONTOUR (cont) & & \\
\hline
\mcm{3}{l}{The following parameters are valid only for the ASCII datatype}\\
\hline
Subkey & Values & Description \\
\tt AX & \rreal & Added to X axis data \\
\tt AY & \rreal & Added to Y axis data \\
\tt AZ & \rreal & Added to Z axis data \\
\tt COL\_X & \iint  & Column which has X axis data \\
\tt COL\_Y & \iint  & Column which has Y axis data \\
\tt COL\_Z & \iint  & Column which has Z axis data \\
\tt MX & \rreal & Multiplies X axis data \\
\tt MY & \rreal & Multiplies Y axis data \\
\tt MZ & \rreal & Multiplies Z axis data \\
\tt SKIP\_LINES & \iint & Skip n lines in file before reading \\
\hline
\mcm{3}{l}{The following parameters are valid only for the ANALYTICAL datatype}\\
\hline
Subkey & Values & Description \\
\tt ANALYTICAL\_EXPRESSION     & \sstring & Analytical expression \\
\tt ANALYTICAL\_FUNCTION\_TYPE & {\tt F(X) | } & Analytical function type \\
                               & {\tt F(X,P) | F(X,Y) } & \\
\tt ANALYTICAL\_XSTART & \rreal & Starting x value \\
\tt ANALYTICAL\_XEND   & \rreal & Ending x value \\
\tt ANALYTICAL\_XSTEP  & \rreal & X step\\
\tt ANALYTICAL\_PSTART & \rreal & Starting p value\\
\tt ANALYTICAL\_PEND   & \rreal & Ending p value\\
\tt ANALYTICAL\_PSTEP  & \rreal & P step\\
\tt ANALYTICAL\_YSTART & \rreal & Starting y value\\
\tt ANALYTICAL\_YEND   & \rreal & Ending y value\\
\tt ANALYTICAL\_YSTEP  & \rreal & Y step\\
\hline
\end{tabular}
\end{center}
\end{leftindent}
%
\newpage
\begin{leftindent}{\largetableindent}
\begin{center}
\begin{tabular}{llp{2.5in}}
\hline
Keyword CONTOUR (cont) & & \\
\hline
\mcm{3}{l}{The following parameters are may be used for any datatype in OVERLAY plots}\\
\hline
Subkey & Values & Description \\
\tt AX & \rreal & Added to X axis data \\
\tt AY & \rreal & Added to Y axis data \\
\tt AZ & \rreal & Added to Z data \\
\tt MX & \rreal & Multiplies X axis data \\
\tt MY & \rreal & Multiplies Y axis data \\
\tt MZ & \rreal & Multiplies Z data \\
\tt X\_EXPRESSION & \sstring & Expression to apply to X axis data \\
\tt Y\_EXPRESSION & \sstring & Expression to apply to Y axis data \\
\tt Z\_EXPRESSION & \sstring & Expression to apply to Z data \\
\hline
\end{tabular}
\end{center}
\end{leftindent}
%
\newpage
\subsection{Keyword SURFACE}
\begin{leftindent}{\largetableindent}
\begin{center}
\begin{tabular}{llp{2.5in}}
\hline
Keyword SURFACE & & \\
\hline
Subkey & Values & Description \\
\hline
\tt CUT\_PLANE\_AXIS  & {\tt X | Y | Z } & Make plot on this plane (MINIMOS 3D) \\
\tt CUT\_PLANE\_COORD & \rreal & Make plot at this plane coordinate (MINIMOS 3D)\\
\tt DATAFILE & \sstring & Data file name \\
\tt DATAFILE\_DIMENSION & {\tt 2 | 3} & Spatial dimension (3 for MINIMOS 3D) \\
\tt DATAFILE\_QUANTITY & \sstring & Name of data quantity (see later tables)\\
\tt DATAFILE\_TYPE & {\tt MINIMOS  | } & Data file type\\
                   & {\tt PROMIS   | } & \\
                   & {\tt SUPREM3S | } & \\
                   & {\tt SUPREM3P | } & \\
                   & {\tt 2DOP     | } & \\
                   & {\tt USEOUT   | } & \\
                   & {\tt ASCII    | } & \\
                   & {\tt BAMBI    | } & \\
                   & {\tt VLSICAP  | } & \\
                   & {\tt ANALYTICAL    } & \\
\tt DATAFILE\_RECORD & \iint & Record number of data set inside a file (PROMIS, USEOUT)\\
\tt DOPFILE\_GATE\_LENGTH & \rreal & Scaling length for MINIMOS doping file\\
\tt DOPFILE\_INTERFACE\_FILE & \sstring & Interface file associated with a MINIMOS doping file \\
\tt EYE\_POSITION & \rreal \rreal & Eye position (radius, phi, theta) \\
                  & \rreal        & phi and theta are in degrees \\
                  &               & phi rotates eye around graph \\
                  &               & (-180 to 180) \\
                  &               & theta moves eye over or under \\
                  &               & graph (0 to 180) \\
                  &               & Default: 8 -45 45 \\
\tt VLSICAP\_GATE\_EDGE & \rreal & Position of gate edge \\
\tt VLSICAP\_SI\_SIO2\_INTERFACE & \rreal & Position of Si/SiO2 interface \\
\hline
\end{tabular}
\end{center}
\end{leftindent}
%
\newpage
\begin{leftindent}{\largetableindent}
\begin{center}
\begin{tabular}{llp{2.5in}}
\hline
Keyword SURFACE (cont) & & \\
\hline
\mcm{3}{l}{The following parameters are valid only for the ASCII datatype}\\
\hline
Subkey & Values & Description \\
\tt AX & \rreal & Added to X axis data \\
\tt AY & \rreal & Added to Y axis data \\
\tt AZ & \rreal & Added to Z axis data \\
\tt COL\_X & \iint  & Column which has X axis data \\
\tt COL\_Y & \iint  & Column which has Y axis data \\
\tt COL\_Z & \iint  & Column which has Z axis data \\
\tt MX & \rreal & Multiplies X axis data \\
\tt MY & \rreal & Multiplies Y axis data \\
\tt MZ & \rreal & Multiplies Z axis data \\
\tt SKIP\_LINES & \iint & Skip n lines in file before reading \\
\hline
Subkey & Values & Description \\
\tt ANALYTICAL\_EXPRESSION     & \sstring & Analytical expression \\
\tt ANALYTICAL\_FUNCTION\_TYPE & {\tt F(X) | } & Analytical function type \\
                               & {\tt F(X,P) | F(X,Y) } & \\
\tt ANALYTICAL\_XSTART & \rreal & Starting x value \\
\tt ANALYTICAL\_XEND   & \rreal & Ending x value \\
\tt ANALYTICAL\_XSTEP  & \rreal & X step\\
\tt ANALYTICAL\_PSTART & \rreal & Starting p value\\
\tt ANALYTICAL\_PEND   & \rreal & Ending p value\\
\tt ANALYTICAL\_PSTEP  & \rreal & P step\\
\tt ANALYTICAL\_YSTART & \rreal & Starting y value\\
\tt ANALYTICAL\_YEND   & \rreal & Ending y value\\
\tt ANALYTICAL\_YSTEP  & \rreal & Y step\\
\hline
\end{tabular}
\end{center}
\end{leftindent}
%
\newpage
\subsection{Keyword ANNOTATE BOX}
\begin{leftindent}{\largetableindent}
\begin{center}
\begin{tabular}{llp{3.0in}}
\hline
\mcm{3}{l}{Keyword ANNOTATE BOX} \\
\hline
\mcm{3}{l}{Coordinate range from X=0 to 1.0 and Y=0 to 1.0} \\
\mcm{3}{l}{(unless using graph coordinates)} \\
\hline
Subkey & Values & Description \\
\hline
\tt COLOR & \sstring & Color of box outline \\
\tt FILLED & No value & Fill interior of box with color\\
\tt INTERIOR\_COLOR & \sstring & Color of interior of box\\
\tt X\_LOC & \rreal & X coordinate of lower left corner\\
\tt X\_LOC2 & \rreal & X coordinate of upper right corner\\
\tt Y\_LOC & \rreal & Y coordinate of lower left corner\\
\tt Y\_LOC2 & \rreal & Y coordinate of upper right corner\\
\tt USE\_GRAPH\_COORDS &  & Use graph coordinates to position annotation\\
\hline
\end{tabular}
\end{center}
\end{leftindent}
%
\newpage
\subsection{Keyword ANNOTATE LINE}
\begin{leftindent}{\largetableindent}
\begin{center}
\begin{tabular}{llp{3.0in}}
\hline
\mcm{3}{l}{Keyword ANNOTATE LINE} \\
\hline
\mcm{3}{l}{Coordinate range from X=0 to 1.0 and Y=0 to 1.0} \\
\mcm{3}{l}{(unless using graph coordinates)} \\
\hline
Subkey & Values & Description \\
\hline
\tt ARROW & No value & Put arrow head on line \\
\tt DOUBLE\_ARROW & No value & Put arrow head on both ends of line \\
\tt COLOR & \sstring & Color of line \\
\tt LINETYPE & \sstring & Linetype \\
\tt X\_LOC & \rreal & X coordinate of lower left corner\\
\tt X\_LOC2 & \rreal & X coordinate of upper right corner\\
\tt Y\_LOC & \rreal & Y coordinate of lower left corner\\
\tt Y\_LOC2 & \rreal & Y coordinate of upper right corner\\
\tt USE\_GRAPH\_COORDS &  & Use graph coordinates to position annotation\\
\hline
\end{tabular}
\end{center}
\end{leftindent}
%
\newpage
\subsection{Keyword ANNOTATE TEXT}
\begin{leftindent}{\largetableindent}
\begin{center}
\begin{tabular}{llp{3.0in}}
\hline
\mcm{3}{l}{Keyword ANNOTATE TEXT} \\
\hline
\mcm{3}{l}{Coordinate range from X=0 to 1.0 and Y=0 to 1.0} \\
\mcm{3}{l}{(unless using graph coordinates)} \\
\hline
Subkey & Values & Description \\
\hline
\tt COLOR & \sstring & Text color \\
\tt JUSTIFICATION & {\tt LEFT | RIGHT } & \\
                  & {\tt CENTERED} & Text justification \\
\tt LABEL & \sstring & Text string \\
\tt ORIENTATION & {\tt HORIZONTAL} & Text orientation \\
                & {\tt VERTICAL} & \\
\tt SCALE & \rreal & Scale factor for text (default: 1.0)\\
\tt X\_LOC & \rreal & X coordinate of lower left corner\\
\tt Y\_LOC & \rreal & Y coordinate of lower left corner\\
\tt USE\_GRAPH\_COORDS &  & Use graph coordinates to position annotation\\
\hline
\end{tabular}
\end{center}
\end{leftindent}
%
\newpage
\subsection{Keyword ANNOTATE MARKER}
\begin{leftindent}{\largetableindent}
\begin{center}
\begin{tabular}{llp{3.0in}}
\hline
\mcm{3}{l}{Keyword ANNOTATE MARKER} \\
\hline
\mcm{3}{l}{Coordinate range from X=0 to 1.0 and Y=0 to 1.0} \\
\mcm{3}{l}{(unless using graph coordinates)} \\
\hline
Subkey & Values & Description \\
\hline
\tt MARKER\_COLOR & (See list of colors) & Color of marker \\
\tt MARKER\_TYPE  & (See list of markers) & Marker type \\
\tt X\_LOC & \rreal & X coordinate of lower left center of marker\\
\tt Y\_LOC & \rreal & Y coordinate of lower left center of marker\\
\tt USE\_GRAPH\_COORDS &  & Use graph coordinates to position annotation\\
\hline
\end{tabular}
\end{center}
\end{leftindent}
%
\newpage
\subsection{Keyword ANNOTATE ELLIPSE}
\begin{leftindent}{\largetableindent}
\begin{center}
\begin{tabular}{llp{3.0in}}
\hline
\mcm{3}{l}{Keyword ANNOTATE ELLIPSE} \\
\hline
\mcm{3}{l}{Coordinate range from X=0 to 1.0 and Y=0 to 1.0} \\
\mcm{3}{l}{(unless using graph coordinates)} \\
\hline
Subkey & Values & Description \\
\hline
\tt COLOR & \iint & Color of ellipse \\
\tt X\_LOC  & \rreal & X coordinate of lower left corner of bounding box\\
\tt X\_LOC2 & \rreal & X coordinate of upper right corner of bounding box\\
\tt X\_LOC3 & \rreal & X coordinate of cut vector from center of bounding box\\
\tt Y\_LOC  & \rreal & Y coordinate of lower left corner of bounding box\\
\tt Y\_LOC2 & \rreal & Y coordinate of upper right corner of bounding box\\
\tt Y\_LOC3 & \rreal & Y coordinate of cut vector from center of bounding box\\
\tt USE\_GRAPH\_COORDS &  & Use graph coordinates to position annotation\\
\hline
\end{tabular}
\end{center}
\end{leftindent}
%
\newpage
\section{Mathmode \label{sec:mathmode}}
The mathmode utility provides a way to enter strings with sub and/or
superscripts, Greek letters, and a limited number of mathematical
symbols using a subset of the \TeX\ math syntax.
\subsection{Features}
\begin{itemize}
\item Subscripts --- Underscore (\_) followed by subscript in curly braces.\\
Example: \verb+V_{gs}+ produces $\rm V_{gs}$
\item Superscripts --- Caret (\verb+^+) followed by superscript
in curly braces.\\
Example: \verb!n^{+}! produces $\rm n^{+}$
\item Greek letters --- Backslash ($\backslash$) followed by the name of
the Greek letter. Upper case letters are specified by capitalizing the
{\it first} letter only.\\
Example: \verb+\delta+ produces $\delta$\\
Example: \verb+\Delta+ produces $\Delta$
\item Text font styles: Mathmode supports three text styles:
\verb+\rm+ (Roman, or normal) \verb+\bf+ (bold) and \verb+\it+ (italic).
You can change the font of a portion of text by enclosing the text
in curly braces.
\item Text fonts (PostScript output only): Mathmode supports three text fonts:
\verb+\Times+, \verb+\Courier+ and \verb+\Helvetica+.
Note that these keys must be entered with an initial upper case in order
to be recognized.
You can change the font of a portion of text by enclosing
these
in curly braces. On devices other than PostScript, these keys have no meaning.
\item Mathematical symbols --- Mathmode can produce the following
\TeX\ math symbols:
\begin{center}
\begin{tabular}{|ll|ll|ll|}
\hline
\verb+\cdot+   & $\cdot$   & \verb+\oint+    & $\oint$    & \verb+\_+ & \_ \\
\verb+\geq+    & $\geq$    & \verb+\partial+ & $\partial$ & \verb+\^+ & \verb+^+ \\
\verb+\infty+  & $\infty$  & \verb+\pm+      & $\pm$      & \verb+\{+ & \{ \\
\verb+\int+    & $\int$    & \verb+\prime+   & $\prime$   & \verb+\}+ & \} \\
\verb+\leq+    & $\leq$    & \verb+\sum+     & $\sum$     & \verb+\\+ & $\backslash$ \\
\verb+\nabla+  & $\nabla$  & \verb+\times+   & $\times$   & \verb+\;+ & (space) \\
\verb+\AA+     & \AA       & \verb+\bot+     & $\bot$     & \verb+\surd+ & $\surd$ \\
\hline
\end{tabular}
\end{center}
\item Mathmode also defines the following control sequences:
\begin{center}
\begin{tabular}{|ll|}
\hline
\verb+\time+   & Current time \\
\verb+\date+   & Current date \\
\verb+\user+   & User name \\
\hline
\end{tabular}
\end{center}
\end{itemize}
\subsection{Implementation details}
\begin{itemize}
\item  Input is always considered to be in-line mathematics mode;
that is, there is no need to include dollar signs (\$) to start math mode.
\item  Unlike \TeX, you must always enclose any subscripts or superscripts
in braces, even if the superscript or subscript is only one character.
This exception was allowed so other underscores in the
text will not inadventantly cause subscripts.
\begin{center}
\begin{tabular}{cc}
Right & Wrong \\
\hline
\verb|10^{2}|  & \verb|10^2| \\
\verb|\mu_{0}|  & \verb|\mu_0| \\
\end{tabular}
\end{center}
\item  Unlike \TeX, spaces are not ignored, with the following exceptions:
\begin{itemize}
\item  initial spaces before the first non-blank character
\item  trailing spaces after the last non-blank character
\item  the first space after a \TeX\ command
\end{itemize}
NOTE: In mathmode context, \verb+\\+ means output a \verb+\+
not ``end of line.''
\item  Only one level of super/sub scripting is supported.
\item  The hardware fonts on VTxxx terminals are used
to increase plotting speed and legibility.
As a result, there is limited support for mathmode on these terminals.
All commands are output verbatim to the terminal,
minus the intial \verb+\+. Example: \verb+\mu A+ becomes \verb+muA+.
Sub and superscripts are still plotted correctly.
\end{itemize}
%
\section{Things to look out for (bugs)}
\begin{itemize}
\item POSTMINI prints out all quantities at the coordinates
of simulation mesh points.
MINIMOS prints out electric field and current density
at the mid-points between mesh points. The user must
be careful in comparing MINIMOS printouts of these quantities with
POSTMINI printouts.
%
\item The horizon hidden line removal algorithm for hardcopy devices sometimes
makes mistakes when the plotted data has spikes in it.
It also will fail if you select a theta angle within a few degrees of
zero. To work around the problem,
switch to the painters method, which is more accurate,
but takes longer to plot.
%
\item Users who use the Motif window manager that comes with Motif V1.2
(e.g. those who use VMS V6.1 and higher), may get a series of messages
from GKS to adjust the logicals {\tt GKS\$DECW\_BORDER\_SIZE}
and {\tt GKS\$DECW\_TITLE\_SIZE}. Normally, exiting the program and setting
the logicals (environment variables on Tru64 Unix) will stop the
messages. A change in Motif V1.2 causes them to reappear again and again
with different values. To workaround this, add the entry:
\begin{verbatim}

Mwm*clientAutoPlace:    False

\end{verbatim}
in your Motif Window manager startup file (DECW\$MWM.DAT on VMS;
Mwm on Tru64 Unix). Then re-start the Motif window manager
(click mouse button 1 outside any window or icon to get the Motif
window manager pop-up menu, then release over the restart menu item).
%
\item GKS V6.5 under Tru64 Unix V4.0F reports a memory deallocation error
when it closes any plot window or hardcopy file,
and the process is terminated. The workaround is to link in
the malloc library from libc from V4.0E. This is probably a bug in the
GKS package.
%
\item The QuickWin library supplied with certain versions of
Compaq Visual Fortran does not use fixed width fonts to display text
from Fortran IO statements under Windows98. The solution is to use
the updated library in Compaq Visual Fortran V6.1. This bug does not appear
under Windows95 or NT 4.0.
%
\item There is a GKS bug in displaying the text path on certain labels
in surface plots on the PostScript output devices. Some labels may print
at incorrect angles, depending on the eye position used to view the plot.
See the Postmini contact for a workaround.
This bug should be fixed in GKS V6.0.
%
\item There is a GKS bug in creating color encapsulated PostScript files.
A second file with just the GKS PostScript header information is created.
On Unix, the file is of the form {\tt filename.eps\_2}.
You may delete this file.
This bug does not appear in when creating regular PostScript files.
It appears that this bug was introduced sometime in the GKS V6.0
timeframe. This bug does not seem to occur on VMS under GKS V6.4,
so it may have been fixed.
\end{itemize}
%
\section{List of improvements and bug fixes}
\subsection{Improvements in version V9.2-000}
\begin{itemize}
\item Analytical functions can now be specified and plotted.
Two 1D datasets functions are supported: y as a function of x (y=f(x))
and y as a function of x with an additional parameter p (y=f(x,p)).
In addition, a 2D dataset function z as a function of x and y (z=f(x,y))
may be created. The range of independent variables (e.g. x)
is specified by a start/stop/step triad.
Analytical functions are specified by using the Read function,
and specifying the analytical datatype.
\item Annotations can now be ``attached'' to either the background
(how things used to work before) or to the graph coordinates
When annotations are attached to the background, their position
remains fixed as the graph's minimum or maximum X or Y plot bounds
are changed. In effect, the annotations are overlaid on the graphics window.
When annotations are attached to the graph, their position tracks
changes in the graph's minimum or maximum X or Y plot bounds.
When annotations are attached to graph coordinates,
their angle, aspect ratio, etc. will change according to the aspect
ratio of the graph. Text font size, however, remains fixed.
Please note: attachment to graph coordinates is not available for 3D plots,
since it is impossible to map a 2D position on the plot window
uniquely onto a 3D space.
\item The function evaluator has been enhanced to allow implementation
of central difference differentiation, which is more numerically
accurate that the backward difference previously used.
As a side-effect, functions that have use the deriv() expression are now
evaluated twice.
\item The function evaluator now supports more than one integrate
function in an expression.
\item The print function will now print data from triangular datasets.
Data is output in x,y,value triplets. Triangle information is not output.
\item The size of two dimensional data sets (both rectangular and triangular
grid based) from process and device simulation tools has been raised to
from 14400 to 22500 points.
\item Arrays used in 3D surface plots are now allocated dynamically.
This reduces the memory usage of Postmini when these features are not used.
\item Line annotations may now have arrowheads on both ends.
\item Mathmode now has expressions for \verb+\date+, \verb+\time+
and \verb+\user+.
\item Rotated text in annotations used to appear distorted.
This has been corrected.
\end{itemize}
%
\subsection{Improvements in version V9.1-000}
\begin{itemize}
\item Multiple 2D plots can be performed using the 'overlay' set of functions.
Overlay works much like 'compare' plot does, but for 2D contour plots.
Multiple datasets can be read in, and plot attributes for each dataset
(e.g. contour levels) can be set.
The user can apply linear scaling
or arbitrary expressions to the X, Y or Z data.
Plots can overlap each other, or can be spaced apart by scaling the
x or y coordinates. NOTE: the contour plot routines for rectangular grid
datasets assume that the X and Y coordinates are monotonically
increasing. If you change this by using scaling or applying an
expression, the plot may be invalid or crash Postmini.
\item 3D surface plots are now supported for triangular based meshes.
A crude clipping algorithm has been implemented: any triangle that crosses
the current X or Y axis limits is not plotted.
3D histogram plots are not yet implemented; it is not obvious how to do
determine how large to make each histogram box.
\item An option to set the axis parameters so that the plot appears
in the correct aspect ratio has been added to comparison plots.
The aspect ratio flag is not obeyed if any axis has log scaling.
\item A new command line option ``papersize'' has been added to
select the papersize (e.g. A4, legal) for hardcopy plots.
\end{itemize}
%
\subsection{Improvements in version V9.0-000}
\begin{itemize}
\item The limit on the number of data points in X-Y
plots (1D or comparison) is now 50000.
Some arrays which are used to store data are now dynamically allocated,
in order to reduce memory consumption.
Standard Fortran90 features are used to implement dynamic arrays.
\item The ASCII file reader has been enhanced to support plotting
expressions which involve multiple columns of data.
For example, if one had three columns of data,
one could load column 1 for the X axis, and columns 2 and 3 for the Y
axis. One could then apply a y expresion involving column 2 and 3.
When more than one Y column is loaded, the Y expression uses variable names
of the form "ynnn", where "nnn" is the column number.
To continue the previous example, to plot the average of columns 2 and 3,
use the y expression: "(y2+y3)/2".
\item The zoom/unzoom feature of contour and comparison plots
has been enhanced. If the user types {\tt Z2}, Postmini will zoom in
by a factor of 2X in each direction.
Similarly, if the user types {\tt U2}, Postmini will zoom out
by a factor of 2X in each direction.
\item A bug parsing the {\tt .PRINT} header of DECSpice ASCII output files
has been fixed (commas were treated as field delimiters).
\item A SPICE3 file reader has been added. The SPICE3 reader can input
so-called SPICE3 "raw" files, both ASCII files generated by SPICE3,
and ASCII and binary files generated by PowerSpice.
Byte swapping of big-endian binary data files is provided as an option.
\item The ASCII file reader has been enhanced to better deal with
output files generated by HSPICE. In order for Postmini to read HSPICE files,
the HSPICE input file should specify ".options ingold = 2"
in his/her input file so that numbers are formatted in exponential notation,
rather than use letter suffixes (e.g. {\tt 1.0n} for {\tt 1.0e-9}).
\end{itemize}
\subsection{Improvements in version V8.3-001}
\begin{itemize}
\item The number of curves in a comparison plot has been increased to 40.
\item For 1D or comparison plots, the maximum number of X-Y points
has been reduced to 10000 in order to conserve memory.
\item The ASCII file reader for X-Y data
has been enhanced to allow non-numeric data in any column that is not used.
For example, if the X column is 1, and the Y column is 4, the following
lines represent valid input:
\begin{verbatim}

    1.0   2.0  3.0    4.0
    1.0   ABC  3.0    4.0
    1.0   2.0  DEFG   4.0
    1.0  A:B/C Y2K    4.0

\end{verbatim}
Note: the field separators are any number of blanks, tabs,
commas or equal signs.
\item The PISCES file reader has been converted to read the 'classic'
Stanford PISCES format (version 9009), rather than the one specific
to Digital's internal PISCES.
\end{itemize}
\subsection{Improvements in version V8.3-000}
\begin{itemize}
\item It is now possible to apply a general expression to X or Y data as
read in from an ASCII file, or as applied to a comparsion
(multiple X-Y curve) plot.

The expression can use the operators +, -, /, *, ** (exponentiation)
parenthesis and the functions:
\begin{verbatim}
sqrt == sqrt
log  == log base e
exp  == exponential function
log10 == log base 10
abs  == absolute value
sin  == sine function (radian argument)
cos  == cosine function (radian argument)
tan  == tangent function (radian argument)
asin == arcsin function (returns radians)
acos == arccos function (returns radians)
atan == arctan function (returns radians)
atan2== arctan function with two arguments (returns radians)
max(...) == maximum function (arb. number of arguments)
min(...) == minimum function (arb. number of arguments)
sind == sine function (degree argument)
cosd == cosine function (degree argument)
tand == tangent function (degree argument)
\end{verbatim}

Example: to plot $I_{ds}$ vs. $1/L_{eff}$, one would set then the
X expression to $1/x$.

Example: to plot failure rate vs. time using the Weibull probability
distribution function, one would set the Y expression to
$log(log(1/(1 - y)))$.
\item On contour plots, an option has been added to color regions of different
materials with different colors. This is useful to examine the output
of process simulation. If you wish to color materials, you must switch
off color filled contours and plot contour lines.
\item Hardcopy output options have changed. The options
X and Y reduction factor, isotropic scaling and expand to full page
have been removed. Hardcopy output now always expands to the
full extent of the page, consistent with the portrait/landscape
orientation of the plot. The user can manipulate the shape of the plot
by changing the aspect ratio (height/width) and an overall reduction
factor. The default aspect ratio is 0.77. Text scaling for the
PostScript output device has been enhanced to try to maintain
undistorted text, even when the plot aspect ratio changes drastically.
\item Bar charts are now available as an option from the compare plot
submenu. Plots with multiple datasets are supported; each dataset
appears as a separately colored bar.
On monochome output devices, colors are replaced by different types
of hatch marks.

In addition, the ASCII file reader has been extended to support
character labels which are displayed under the X axis to label each bar.
This new mode can be selected interactively from the {\tt Datafile type}
menu item, or the {\tt CHARACTER\_DATA\_IN\_X\_COL} key in
a Postmini command file.
Up to 200 strings can be read in.
Character strings are delimited in the file by
spaces, tabs, commas or equal signs.
Mathmode strings may be used. If you wish to embed a blank in a string,
use the Mathmode escape code ({\tt \\;}) for a space.

Labels are normally displayed horizontally. Postmini estimates the
overall label length and switched to vertical display when there are too
many labels to plot legibly. The current heuristic is
to switch when the product of the maximim string label length times
the number of bars is greater than 80.
\item  Mathmode has been extended to support three different fonts for
text (using codes: \verb+\Times+ \verb+\Courier+ \verb+\Helvetica+)
and three different font styles
(using codes: \verb+\roman+ \verb+\italic+ \verb+\bold+). Only the PostScript
output device fully supports this new feature. On X displays,
only the font style changes.

In order to support this change, Postmini now uses three GKS stroke
fonts that have been modified to include more international characters.

On VMS, add these logicals to your login.com file
(change the file disk and directory to where you copied the .FNT files)
\begin{verbatim}
$   DEFINE/NOLOG GKS$STROKE_FONT_NEG9
    yourdisk:[your.directory]VAXGFX$FONT_NEG09_MOD.FNT
$   DEFINE/NOLOG GKS$STROKE_FONT_NEG11 -
    yourdisk:[your.directory]VAXGFX$FONT_NEG11_MOD.FNT
$   DEFINE/NOLOG GKS$STROKE_FONT_NEG15 -
    yourdisk:[your.directory]VAXGFX$FONT_NEG15_MOD.FNT
\end{verbatim}
On Unix, add these to your .login file
(change the file disk and directory to where you copied the .fnt files)
\begin{verbatim}
setenv GKSstroke_font_neg9  ~/font_neg09_mod.fnt
setenv GKSstroke_font_neg11 ~/font_neg11_mod.fnt
setenv GKSstroke_font_neg15 ~/font_neg15_mod.fnt
\end{verbatim}
\item The XY ASCII column data reader now supports up to 100 columns.
Some data files created by Warren Anderson use a "*" to indicate a
missing value from a column. Postmini interprets the "*" as a zero.
\item The TIF X-Y data reader now supports up to 250 columns.
\end{itemize}
%
\subsection{Improvements in version V8.2-001}
\begin{itemize}
\item Plot windows that have been ``kept'' on the screen can now be reactivated.
Go to the top level menu and enter the ``window'' menu.
The ``reactivate'' function can be used to reactivate any plot window
on the screen. The current window is automatically ``kept'' and can
be restored later. Postmini implements this function by saving
a Postmini command file for each kept window to a temporary file
in your home directory.  The files are called {\tt PM\_TEMPWIN.xxxx},
where {\tt xxxx} is a unique string. Restoring a window may require
that a datafile be re-read; this may cause some delay.
\item One dimensional data of up to 20000 points can now be handled.
Support for larger data sizes have been frequently requested by users.
This has significantly increased the amount of memory used by Postmini.
\item Two dimensional data from ASCII files on a rectangular grid
can support up to 50000 points. Data that is not on a rectangular grid
has a limit of 14400 points.
\item One can now load multiple Y columns when reading X-Y data from
ASCII files. One can also specify {\tt ALL} to load all the columns
in the file (except for the X column). Postmini automatically assumes
{\tt SWEEP} mode, so that any retraces are suppressed.
\item The ASCII file reader can now accept X-Y-Z data that is not
on a rectangular grid, via a user controlled switch.
A Delaunay triangulation code from Steve Fortune of AT\&T Bell Laboratories
(unencumbered) is used to impose a grid on the data.
3D surface plots are still not supported on triangular data.
\item The ASCII file reader has been enchanced: the reader ``understands''
output files from both DEC SPICE and SOI-SPICE (and probably other SPICE
derivatives). The {\tt READ\_LINES} option now works for all ASCII file
types.
\item The method for adding elliptical arc annotations has been improved.
The user first draws a rubber-band box which is the bounding box
of the ellipse. The user then moves the mouse around the ellipse;
Postmini will draw the elliptical arc using the mouse position
to cut the ellipse in ``real time.''
Click mouse button 1 to add; mouse button 2 to reject.
\item Mathmode has been extended so that it can be used to label the
X and Y axes on surface plots (these appear at non-right angles).
\item Postmini now intercepts interrupts
(control-C on Unix, control-C and control-Y on VMS)
and will make an orderly exit, including deleting any temporary files.
\end{itemize}
\subsection{Improvements in version V8.1-003}
\begin{itemize}
\item Most process and device simulators assume that the Y (depth)
coordinate increases in the downward direction. In order for surface
plots to appear correct, Postmini has always flipped the X and Y axes.
Surface plots now have the option of using a ``normal'' coordinate system,
which is useful for visualizing data from other simulators.
When data is imported from ASCII files, the axes are set to use
a right-handed coordinate system.
\item The way to suppress lines or symbols in comparison plots has
been made more intuitive.
Previously, one had to specify that the color of the curve or symbol
was "invisible" to suppress it. User feedback suggested that it was
clearer to use the line type or symbol type field to suppress
the line or symbol. Hence, users can now specify a line type or symbol type
of {\tt none} to suppress the line or symbol.
Users can still use the old method of specifying an invisible
color if they wish.
\end{itemize}
\subsection{Improvements in version V8.1-001}
\begin{itemize}
\item The ASCII file reader has been enhanced to use the Z column data
to draw error bars on a curve. The error bar is drawn from Y-Z to Y+Z,
in other words, the the Z column data is used as the $\pm$ ``delta.''
The error bar takes the color of the curve. If only symbols are plotted,
then the error bar takes the color of the symbol.

Error bars are only supported for comparison plots.
\item The MINIMOS binary file reader has been enhanced to handle
files created by recent versions of DEC MINIMOS (dated 6/96 or later).
\item In the contour plot menu, both the min/max of the entire dataset
and the min/max within the current X-Y plot limits is now shown.
\item The number of symbols has been increased by six:
bowtie, hourglass, diamond, and filled versions of the above.
\item Linetypes for line annotations could be set to values 1-12,
but only line types 1-4 would appear on the graph.
\item Fix bug in which annotations did not show up in hardcopy
plot when using the restore function and a plot was not first made to the
screen.
\end{itemize}
%
\subsection{Improvements in version V8.1}
\begin{itemize}
\item It is now possible to specify two different X or Y axes
interactively in comparison plots. Before, one had to use the Postmini
command file to access this feature.
\item The ASCII file reader has been enhanced to support X-Y-Z
data and also X-Y data that is sorted on the Z column.
The latter feature is only supported for comparison plots.
\item The ASCII file reader has been enhanced to recognize
DEC SPICE output files and extract column data from SPICE {\tt .PRINT}
statements. No special user intervention is necessary:
Postmini examines the first line of the file
to determine if the file is SPICE output.
\item Handling of VT graphics terminals (ReGIS) is improved.
The color sidebar on 3D plots is now readable.
A better attempt is made to reset the colormap after each plot.
\item Axis labels with values between 0.01 and 0.001 were not formatted
with enough decimal places. This could cause erroneous roundup/down.
Real numbers printed in the full screen menus had a similar problem.
These numbers are now formatted with an additional decimal place.
\end{itemize}
%
\subsection{Improvements in version V8.0}
\begin{itemize}
\item Two new datatypes, {\tt FAIM} and {\tt MCP2D},
are now supported. These output file formats are generated by
Vector Technologies tools. Due to the nature of the data from these
tools, surface plots of FAIM output can be performed, but not for MCP2D.
X--Y or contour plots can be done on either format file.
\item Postmini versions up to 8.0 could only handle 1D data of up to
500 points, and 2D rectangular grid data of no more than 120 by 120 points.
Postmini internals have been re-written to relax these limits
without significantly increasing the amount of memory required by
the program.
One dimensional data of up to 2000 points can now be handled.
2D rectangular grid data (MINIMOS, 2DOP, PROMIS, VLSICAP, BAMBI)
can have up 2000 points in either
x or y direction, as long as the total number of points does not exceed
14,400.
In addition, the FAIM and USEOUT data formats can support up to
50,000 data points.
Datasets based on triangles (e.g. TIF, SUPREM4) are unaffected,
and have total data point limit of 14,400.
These new limits are also available to programs which use
the callable (subroutine) interface to Postmini.
\item In contour plots, a new mode is available which alters the
coordinate plot bounds so that the plot appears in the correct aspect
ratio. This is useful for examining physical features in process
simulation. The mode may be set or unset from the contour plot menu.
Note that when the aspect ratio flag is set, the zoom feature
will not follow the exact bounding box that the user inputs with
the mouse, but rather a box that maintains the correct aspect ratio.
\item A new 3D surface plot type called {\tt HISTOGRAM} is now
available. In {\tt HISTOGRAM} mode, 3D surface plots of data consist
of rectangular box at each data point, with the box height and color
corresponding to the size of the data. This mode can be entered
through the {\tt DEFAULTS} menu, or from the statement
{\tt HIDDEN\_LINE\_METHOD = HISTOGRAM} under the {\tt GLOBAL} section
of the {\tt .PMI} file.
\item The number of regions for TIF, SUPREM4, and PISCES plots
has been increased to 20.
\item Eight additional linetypes are available for comparison plots:
dash-two-dots, dash-three-dots, long-dash, long-short-dash, spaced-dash,
spaced-dot, double-dot, triple-dot.
\item The 1D integration module now provides some program defined defaults
for the integration limits and cut lines.
\item Postmini now creates its GKS error log file in the user's home
directory, rather than in the current directory. This allows Postmini
to run in a directory where it does not have write permission.
The form of the error log filename is now
{\tt GKSERRORS\_DATE\_PID\_COUNT}. This change allows more than one
Postmini to run in the same directory without each of them stomping
on the GKS error file.
\item On Ultrix and Digital Unix, Postmini now closes
and then re-opens standard output to enable FORTRAN carriage control.
This is mainly needed for callable Postmini.
\end{itemize}
%
\subsection{Improvements in version V7.4}
\begin{itemize}
\item In the POSTMINI command language, you can now use symbolic names
for colors, markers and linetypes, e.g. {\tt COLOR = RED}.
Check section~\ref{sec:pmifile} for more information.
\item When Postmini computes the quasi-Fermi potentials from data in a
2D MINIMOS binary file, it now sets the majority carrier potential to the bulk
voltage (or source voltage for SOI) when only minority carriers are
solved for (e.g. {\tt MODEL=2-D}). This is consistent with what
MINIMOS uses internally.
\item POSTMINI can now read the ``new'' TIF and SUPREM4
file formats created by TMA tools such as TSUPREM-4 6.1.
POSTMINI automatically detects the old or new file format.
\item A number of bugs were fixed in TIF file support:
certain quantities which should have appeared in non-silicon regions
were not being plotted in contour plots;
nodes were being assigned an incorrect material type,
sometimes leading to oddities in contour plots;
POSTMINI always computed the net doping, even if it appeared in the TIF file;
TIF files that had oxide velocity in them caused POSTMINI to mislabel
the quantities that appeared in the file.
\item POSTMINI now maintains the entire MINIMOS 3D
binary file in memory; this makes taking slices of the data
along different planes much faster. The arrays to hold the 3D data
are allocated only when needed; this minimizes memory requirements
for users who do not process 3D files.
This change avoids the need for the POSTMINI ``incore'' version.
\item POSTMINI can now interpret CURV command files. POSTMINI uses the
actual CURV language parser to read the file, in order to maintain
maximum compatibility. You can invoke the CURV parser on a file
by specifying the {\tt /curv} option on the command line, or by
simply using a file with an extension of {\tt .crv}.
POSTMINI's X-Y comparison plots were signficantly
enhanced to support most of CURV's features (see below).
\item You can now specify separate X and Y scaling factors,
as well as X and Y offsets, for any graph when output to a hardcopy
device.
\item You can now specify an ``isotropic'' scaling
for any graph when output to a hardcopy device.
This will scale the plot to the largest square that will fit on the
output device.
\item A semicolon in column 1 or 2 may be used as a comment character
for ASCII files.
\end{itemize}

The following new features apply only to X-Y comparison plots:
\begin{itemize}
\item If you do not specify the {\tt MIN}, {\tt MAX} or {\tt MAJOR\_TIC}
parameters on a {\tt AXIS} command, Postmini will use default values
which depend on the data.
\item You can now overlay an X or Y grid on the plot by using the
{\tt MAJOR\_GRID}, {\tt MINOR\_GRID}, 
{\tt MAJOR\_GRID\_LINETYPE}, {\tt MINOR\_GRID\_LINETYPE} parameters.
\item You can alter the axis apperance using the {\tt COLOR}, {\tt OMIT},
{\tt NONUMBERING}, {\tt FORMAT}, {\tt THICKNESS}, {\tt MINOR\_TIC\_SCALE}
and {\tt MAJOR\_TIC\_FACTOR} parameters.
\item Specifying the {\tt XABS} and {\tt YABS} parameters on
a {\tt CURVE} command will make Postmini take the absolute value of
the X or Y coordinate before plotting that data.
\item Specifying the {\tt SORT} parameter
on a {\tt CURVE} command will make Postmini sort the data by X coordinate.
\item Specifying the {\tt ZSORT} parameter
on a {\tt CURVE} command will make Postmini sort the data by a third
column (Z coordinate) in an ASCII data file.
Associated parameters are {\tt COL\_Z}, {\tt MZ}, {\tt AZ} and {\tt ZABS}.
This is equivalent to the CURV {\tt CONTOUR} feature.
\item The {\tt TITLE} command can be used to specify multiple titles
for a plot. If the main title is set from the interactive menu,
that title will now appear the any saved .PMI file.
\item Specifying the parameter {\tt CURV\_MODE} in the {\tt GLOBAL}
command will alter the the position and size of the plot so that it
is compatible with the CURV program. Titles are centered over the
graph. PostScript output files use the Times Roman font.
The {PS\_FONT\_ID} key has no effect in {\tt CURV\_MODE}.
\end{itemize}
%
\subsection{Improvements in version V7.3}
\begin{itemize}
\item POSTMINI no longer uses the GKS logical {\tt GKS\$WS\_TYPE}
to determine which output device to use. The {\tt /device}
option can be used to specify this from the command line.
The default type is Motif.
\item Support has been added for PROMIS 1.7, which can use a
curvilinear coordinate system mesh (this is approximated in Postmini
by converting to a triangular mesh).
\item Support has been added for TMA ``TIF'' (Technology Independent
Format) files. Note well: Postmini can read TIF files generated by the
current field test version of TMA tools on AXP OSF/1.
The data formatting will change slightly
in the released version of the TMA tools; this will require a small change
to the TIF read routines in Postmini.
\item Linear data scaling for ASCII files can now be done when the
file is read in.
\item Integration of 2D triangular data has been implemented.
\item Multiple X and/or Y axes are now supported in COMPARE plots.
This functionality is accessible at this time only through the .PMI file.
The user may now specify a different X axis on the top or bottom of
the graph, or a different Y axis on the left or right side of the
graph. To acess this feature, specify {\tt LEFT} or {\tt RIGHT}
on the {\tt AXIS Y} command, or {\tt BOTTOM} or {\tt TOP}
on the {\tt AXIS X} command. To associate a {\tt CURVE} with a
particular axis, use {\tt XAXIS\_TAG = BOTTOM or TOP} and
{\tt YAXIS\_TAG = LEFT or RIGHT}.
\begin{verbatim}
   AXIS Y LEFT
   MIN = ...; MAX = ...; ...
   AXIS Y RIGHT
   MIN = ...; MAX = ...;
   CURVE
   DATAFILE = ...;  ...; YAXIS_TAG = LEFT
   CURVE
   DATAFILE = ...;  ...; YAXIS_TAG = RIGHT
\end{verbatim}
\item Sample mode is now available in COMPARE plots. Sample mode now
prints the change in coordinates since the last sample point,
so it can be used as a measuring device.
\item Lines in an ASCII file which contain non-numerical data are
quietly skipped.
\item Contour plots can use log or linear interpolation to compute
contours. The interpolation type is selected depending on the specific data,
but the use can override it.
\item The Y axis on contour plots can be flipped, so that contour data from
external sources where positive Y is ``up'' can be plotted correctly.
\item Numeric values on the color bar in contour and surface plots
are now done in scientific notation using Mathmode, rather than computer
``E'' notation, so plots conform to IEEE publication standards.
\item You can suppress the label legends at the bottom of comparison plots
via a switch from the comparison plot menu. This is useful when preparing
plots for inclusion in another document, or for publication.
It also allows more space for annotation text at the top of the graph.
\end{itemize}
%
\subsection{Improvements in version V7.2.5}
\begin{itemize}
\item Support for the SUPREM4 and PISCES simulators has been
implemented. Postmini was extended to support the triangular meshes
used by these simulators. 3D surface plots are not yet supported.
In the case of SUPREM4, Postmini reads the ASCII structure file
output by SUPREM4. In the case of PISCES, a new output file format was
created which has mesh and simulation results all in one file.
To create this file, specify {\tt post=t} and {\tt outfile=filename}
on the PISCES {\tt solve} statement.
A second type of PISCES output file can be created where multiple
bias points (or time steps) can be include in one file.
Only doping, potential and carrier concentrations are available in this format,
in order to conserve disk space.
To create this file, specify {\tt movie=t} and {\tt outfile=filename}
on the PISCES {\tt solve} statement.
\item Manipulation of ASCII files containing X-Y data in columns has
been rationalized. To read an ASCII datafile into Postmini,
the {\tt READ} command is now used. This change allows Postmini to
treat ASCII data the same as any other source of 1D data.
Thus, one can now perform a 1D X-Y plot or integration of ASCII data.
\item 1D X-Y plots can now have a logarithmic X axis.
\item The user can now specify the colormap type (color, gray scale,
inverse gray scale) from the hardcopy menu.
\item The GKS V5.0A bug which causes POSTMINI to crash when
linear scale X-Y plots have a large range has been worked around.
\item In comparison plots, the user can cause the plot labels at the bottom
of the graph to be suppressed via an option from the plot menu.
The graph is then moved down on the page, leaving room for
text annotations at the top of the graph.
\item Initial plot attributes for a curve in a comparison plot are now set
from a full screen menu. Information required for importing an ASCII file
is now gotten from a full screen menu.
\end{itemize}
%
\subsection{Improvements in version V7.2.4}
\begin{itemize}
\item The {\tt modify} submenu of comparison plots has been converted
to a full screen menu, rather than prompting the user with several
questions.
\item The user can now change the {\tt AX}, {\tt MX}, {\tt AY}, {\tt MY}
scaling parameters used in comparison plots
``on the fly'' without re-reading the datafile.
The scaling parameters can now be applied to data from any source,
not just ASCII data.
\item  Several small code changes were made to accomodate GKS V5.0A
changes in default parameters.
\item The input parser for PMI and default setting files
has been altered to allow multiple parameters on one line.
Use a semicolon to separate items. Example:
\begin{verbatim}
AXIS X; MIN=0.0; MAX=10.0; LABEL= X axis;
\end{verbatim}
If you need to have a semicolon included in an item (a text label,
or file name, for instance), use single quotes to quote the string. Example:
\begin{verbatim}
LABEL='This is a string with a ; in it';
\end{verbatim}
Note that you only need to quote strings if you are placing them
together with other items on a single line and only if they contain
a semicolon.
To enter a single quote in a quoted string, use two quotes.
\item Many internal routines were re-named to make external name
conflicts less likely when linking callable postmini with another
application. Such applications should avoid external names beginning
with {\tt pm}, {\tt anno\_}, {\tt surf\_} and {\tt mathmode\_}.
Not all external Postmini names have been converted to have unique
prefixes at this time.
\end{itemize}
%
\subsection{Improvements in version V7.2.3}
\begin{itemize}
\item 2D contour plots now have a sample mode, where the user can
use the mouse to point to a position on the graph and find out
the corresponding data value and coordinate information.
\item 3D surface plots have an orbit feature, which allows the
user to manipulate the bounding box of the plot with the mouse,
then replot.
\item If the axis min/max is changed such that the current
axis tic mark parameters are invalid, they are automatically re-computed.
\item A SWEEP mode for interpreting ASCII data has been implemented.
This allows for plotting information such as multiple I--V curves
in a single file by suppressing the 'retrace' at the start of the
next curve.
\end{itemize}
%
\subsection{Improvements in version V7.2.1}
\begin{itemize}
\item The specification of contours has been enhanced.
The user may specify contours by min/max/number of contours,
or min/max/step value. Either a linear or log step may be used.
\item 2D contour plots now have a zoom mode, where the user can
use the mouse to zoom in on a region of interest.
\item A logarithmic X (abscissa) axis may now be specified on
comparison (multiple curve X--Y) plots.
\item Save/restore of integrated quantities is now supported.
\item Read of ASCII files with up to 25 columns of data and up to
250 characters per line are now supported. The user can specify a number
of lines to be skipped before reading data.
\end{itemize}
%
\subsection{Improvements in version V7.2}
\begin{itemize}
\item POSTMINI has changed its plot user interface to a full screen
menu mode. Users can change one or more plot attributes and re-plot without
having to answer questions on all the plot attributes.
More attributes, like plot labeling, can be now modified by the user.
\item Hardcopy is more flexible. Users may request a hardcopy without
making a screen preview first. User may change the hardcopy output file
name, orientation, and use of color.
\item The monochrome hidden line drawing algorithm has been optimized to be
more efficient. Drawing speed has improved 20--50\%, and PostScript
hardcopy file size has decreased by 20--50\%.
\item A subroutine interface to Postmini is now available.
\item POSTMINI now takes options from the command line.
\end{itemize}
%
\subsection{Improvements in version V7.1}
\begin{itemize}
\item POSTMINI now has the ability to save all the information necessary
to re-create any plot in a file and restore it.
\item The format of the POSTMINI.NOTE file has changed to an new format
compatible with the POSTMINI command file.
\item POSTMINI can now display arbitrary slices through a 3D doping file.
It automatically reads in the interface file (.INT) file associated
with a MINIMOS doping file (if it exists) and displays it.
\item 2D PROMIS plots now include the oxide shape information.
\end{itemize}
%
\subsection{Improvements in version V7.0}
\begin{itemize}
\item POSTMINI can now read a number of device and process simulation
data files, including PROMIS, SUPREM3, BAMBI, VLISCAP, 2DOP and USEOUT
files.
\item Plot file names are no longer always {\tt POSTMINI.XXX},
but take the name of the data file from which they were read.
\item Curves in contour plots can now be automatically labeled, if desired.
\item Plot annotations are automatically saved and can be restored.
Line style can be specified on annotations.
\item In contour plots of MINIMOS data, the oxide is painted
white in order to be better distinguished. This is not done if
the plotted quantity has a value in the oxide.
\item In contour plots of VLSICAP data, the boundaries and original
triangular mesh can be plotted. POSTMINI gets this information
from the VLSICAP {\tt .INP} and {\tt .LGF} files.
POSTMINI looks in the ``standard'' VLSICAP directories for
these files (e.g. {\tt .INP} files are in [.input] and {\tt .LGF} files
are in [.lgf\_vlsi]).
If these files do not exist or are inconsistent with the {\tt .L3D} data file,
then these annotations may not be plotted or may be incorrect.
\item A {\tt POSTMINI\_DEFAULTS.DAT} file is read at startup to define
Postmini defaults.
\end{itemize}
\subsection{Improvements in version V6.1}
\begin{itemize}
\item POSMTINI now supports color PostScript.
Color PostScript can be printed on an LJ250 printer using the
DEC PSPRINT utility (DECprint Utility for PostScript to Sixel Printing).
This provides outstanding color printing.
\item POSTMINI can now plot data from plain ASCII files, as long as the
data is in columns. It supports the CURV {\tt .ON} and {\tt .OFF} commands
in data files, comment lines using C or !, as well as
scaling of the input data.
\item POSTMINI now gives the user complete control of line type,
line color, symbol type and symbol color on COMPARE plots.
\item In comparison plots, you can now select whether a curve
will be included in a plot.
With this feature, you can load several different data curves at once,
and plot only the ones you want.
\item The user is now supplied with default values for most prompts.
\end{itemize}
%
\subsection{Improvements in version V6.0}
\begin{itemize}
\item POSTMINI now supports both 2D and 3D MINIMOS binary files.
In the 3D case, users can plot data along the length, width or
top (wafer) planes.
\item A new 3D plotting algorithm has been developed which provides hidden line
removal on hardcopy devices.
\item Color fill contour and 3D plots are now available.
\item Contour plots now have a position scale plotted next to the
plot window.
\item Plotting of the axis tic marks and scales now uses a ``sliding-scale''
technique, which is better for plot bounds that are not even numbers.
\item 3D plots now zoom to the exact device coordinates specified
by the user, interpolating when necessary.
\item POSTMINI now supports DECWindows and the LJ250 printer.
\end{itemize}
%
\section{For further information and support}
The support contact (and author) of POSTMINI is John Faricelli, 508-841-3237,
RICKS::FARICELLI.
Your comments, questions, bug reports and suggestions for improvements to
POSTMINI are highly valued. If you would like to see a new
feature in POSTMINI, please contact me.
%
\section{Acknowledgments}
Nadim Khalil provided the 3D plot routines from his
SURF program for use in POSTMINI and for the CURV parser code.
Marden Seavey provided the initial code
used to read VLSICAP data files, and
Christian Schiebl provided assistance in interpreting the input
and mesh files.
Gerd Nanz provided the code to read BAMBI files.
Nadim Khalil, Bill McGee and Christian Schiebl provided invaluable
input on the new full screen menu user interface in POSTMINI V7.2.

The Delaunay triangulation code used in Postmini was written
by Steve Fortune of AT\&T Bell Laboratories. He requested that
the following notice appear in any documentation.
\begin{verbatim}
/* The author of this software is Steven Fortune.  Copyright (c) 1994 by AT&T
 * Bell Laboratories.
 * Permission to use, copy, modify, and distribute this software for any
 * purpose without fee is hereby granted, provided that this entire notice
 * is included in all copies of any software which is or includes a copy
 * or modification of this software and in all copies of the supporting
 * documentation for such software.
 * THIS SOFTWARE IS BEING PROVIDED AS IS, WITHOUT ANY EXPRESS OR IMPLIED
 * WARRANTY.  IN PARTICULAR, NEITHER THE AUTHORS NOR AT&T MAKE ANY
 * REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY
 * OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE.
 */
\end{verbatim}
%
\appendix
%
\section{File quantity names}
%
\newpage
\subsection{MINIMOS quantity names}
\begin{center}
\begin{tabular}{ll}
\hline
\mcm{2}{l}{MINIMOS quantity names} \\
\hline
Quantity & Description \\
\hline
\tt POTENTIAL & Electrostatic potential \\
\tt NET\_DOPING & Net doping concentration \\
\tt ELECTRONS  & Electron concentration \\
\tt HOLE & Hole concentration \\
\tt EX & X component of electric field \\
\tt EY & Y component of electric field \\
\tt EJ & Electric field in direction of current density \\
\tt EMAG & Magnitude of electric field \\
\tt JX\_N & X component of electron current density \\
\tt JY\_N & Y component of electron current density \\
\tt JMAG\_N & Magnitude of electron current density \\
\tt JX\_P & X component of hole current density \\
\tt JY\_P & Y component of hole current density \\
\tt JMAG\_P & Magnitude of hole current density \\
\tt AVL & Avalanche generation rate \\
\tt QFN & Electron quasi-Fermi potential \\
\tt QFP & Hole quasi-Fermi potential \\
\tt MU\_N & Electron mobility \\
\tt MU\_P & Hole mobility \\
\tt EXCESS\_N & $N_{d}^{+} - n$ \\
\tt EXCESS\_P & $p - N_{a}^{-}$ \\
\tt NET\_CHARGE & $N_{d}^{+} - n + p - N_{a}^{-}$ \\
\tt NSS & Fixed interface charge \\
\tt DIT & Fast interface charge \\
\tt DIT\_CHARGED & Charged fast interface charge \\
\tt JZ\_N & Z component of electron current density \\
\tt JZ\_P & Z component of hole current density \\
\tt EZ\_P & Z component of electric field \\
\tt VX\_N & X component of electron velocity \\
\tt VY\_N & Y component of electron velocity \\
\tt VMAG\_N & Magnitude of electron velocity \\
\tt VX\_P & X component of hole velocity \\
\tt VY\_P & Y component of hole velocity \\
\tt VMAG\_P & Magnitude of hole velocity \\
\hline
\end{tabular}
\end{center}
%
\newpage
\subsection{SUPREM3 quantity names}
\begin{center}
\begin{tabular}{ll}
\hline
\mcm{2}{l}{SUPREM3 quantity names} \\
\mcm{2}{l}{Starred quantities only available from SUPREM structure files} \\
\hline
Quantity & Description \\
\hline
\tt B & Active boron concentration \\
\tt P & Active phosphorous concentration \\
\tt AS & Active arsenic concentration \\
\tt SB & Active antimony concentration \\
\tt NET\_DOPING & Net active concentration \\
\tt B\_CHEM & Chemical boron concentration$^{*}$ \\
\tt P\_CHEM & Chemical phosphorous concentration$^{*}$ \\
\tt AS\_CHEM & Chemical arsenic concentration$^{*}$ \\
\tt SB\_CHEM & Chemical antimony concentration$^{*}$ \\
\tt B\_INACTIVE & Inactive boron concentration$^{*}$ \\
\tt P\_INACTIVE & Inactive phosphorous concentration$^{*}$ \\
\tt AS\_INACTIVE & Inactive arsenic concentration$^{*}$ \\
\tt SB\_INACTIVE & Inactive antimony concentration$^{*}$ \\
\hline
\end{tabular}
\end{center}
%
\newpage
\subsection{PROMIS quantity names}
\begin{center}
\begin{tabular}{ll}
\hline
\mcm{2}{l}{PROMIS quantity names} \\
\hline
Quantity & Description \\
\hline
\tt B & Boron concentration \\
\tt P & Phosphorous concentration \\
\tt AS & Arsentic concentration \\
\tt SB & Antimony concentration \\
\tt AS\_INACTIVE & Inactive arsenic concentration \\
\tt INTERSTITIALS & Silicon interstitial concentration \\
\tt VACANCIES & Silicon vacancy concentration \\
\tt ELECTRONCS & Electron concentration \\
\tt HOLES & Hole concentration \\
\tt ATOMIC\_NO\_NN & Element with atomic number NN \\
\tt POTENTIAL & Electrostatic potential \\
\tt SI\_SIO2\_INTERFACE & Silicon/Oxide interface \\
\tt SIO2\_THICKNESS & Oxide thickness \\
\tt NET\_DOPING & Net doping concentration \\
\hline
\end{tabular}
\end{center}
%
\newpage
\subsection{USEOUT quantity names}
\begin{center}
\begin{tabular}{ll}
\hline
\mcm{2}{l}{USEOUT quantity names} \\
\hline
Quantity & Description \\
\hline
\tt USEOUT & Useout quantity (may represent anything) \\
\hline
\end{tabular}
\end{center}
%
\newpage
\subsection{VLSICAP quantity names}
\begin{center}
\begin{tabular}{ll}
\hline
\mcm{2}{l}{VLSICAP quantity names} \\
\hline
Quantity & Description \\
\hline
\tt POTENTIAL & Potential \\
\tt EX & X component of electric field \\
\tt EY & Y component of electric field \\
\hline
\end{tabular}
\end{center}
%
\newpage
\subsection{BAMBI quantity names}
\begin{center}
\begin{tabular}{ll}
\hline
\mcm{2}{l}{BAMBI quantity names} \\
\hline
Quantity & Description \\
\hline
\tt POTENTIAL & Electrostatic Potential \\
\tt ELECTRONS & Electron concentration \\
\tt HOLES & Hole concentration \\
\tt EX & X component of electric field \\
\tt EY & Y component of electric field \\
\tt EMAG & Magnitude of electric field \\
\tt MU\_N & Electron mobility \\
\tt MU\_P & Hole mobility \\
\tt JX\_N & X component of electron current density \\
\tt JY\_N & Y component of electron current density \\
\tt JMAG\_N & Magnitude of electron current density \\
\tt JX\_P & X component of hole current density \\
\tt JY\_P & Y component of hole current density \\
\tt JMAG\_P & Magnitude of hole current density \\
\tt JX\_TOTAL & X component of total current density \\
\tt JY\_TOTAL & Y component of total current density \\
\tt JMAG\_TOTAL & Magnitude of total current density \\
\tt NET\_DOPING & Net doping concentration \\
\tt NET\_CHARGE & $N_{d}^{+} - n + p - N_{a}^{-}$ \\
\tt NET\_RECOMBINATION & Net recombination rate \\
\tt X\_ERROR & X error estimate \\
\tt Y\_ERROR & Y error estimate \\
\tt TOTAL\_ERROR & Total error estimate \\
\tt N\_INT & Integrated electron concentration \\
\tt P\_INT & Integrated hole concentration \\
\tt N\_P\_INT & Integrated $n - p$ \\
\tt RECOMB\_INT & Integrated recombination \\
\tt QFN & Electron quasi-Fermi potential \\
\tt QFP & Hole quasi-Fermi potential \\
\hline
\end{tabular}
\end{center}
%
\newpage
\subsection{2DOP quantity names}
\begin{center}
\begin{tabular}{ll}
\hline
\mcm{2}{l}{2DOP quantity names} \\
\hline
Quantity & Description \\
\hline
\tt DONORS & Donor concentration \\
\tt ACCEPTORS & Acceptor concentration \\
\tt NET\_DOPING & Net doping \\
\tt UPPER\_OXIDE & Upper oxide shape \\
\tt LOWER\_OXIDE & Lower oxide shape \\
\hline
\end{tabular}
\end{center}
%
\newpage
\subsection{PISCES quantity names}
\begin{center}
\begin{tabular}{ll}
\hline
\mcm{2}{l}{PISCES quantity names} \\
\hline
Quantity & Description \\
\hline
\tt POTENTIAL & Electrostatic potential \\
\tt NET\_DOPING & Net doping concentration \\
\tt ELECTRONS  & Electron concentration \\
\tt HOLES & Hole concentration \\
\tt QFN & Electron quasi-Fermi potential \\
\tt QFP & Hole quasi-Fermi potential \\
\tt EX & X component of electric field \\
\tt EY & Y component of electric field \\
\tt JX\_T & X component of total current density \\
\tt JY\_T & Y component of total current density \\
\tt JX\_N & X component of electron current density \\
\tt JY\_N & Y component of electron current density \\
\tt JX\_P & X component of hole current density \\
\tt JY\_P & Y component of hole current density \\
\tt CUR\_POT & Current flowlines \\
\tt NET\_RECOMB & Net recombination \\
\hline
\end{tabular}
\end{center}
\newpage
%
\newpage
\subsection{SUPREM4 quantity names}
\begin{center}
\begin{tabular}{ll}
\hline
\mcm{2}{l}{SUPREM4 quantity names} \\
\hline
Quantity & Description \\
\hline
\tt POTENTIAL & Electrostatic potential \\
\tt NET\_DOPING & Net doping concentration \\
\tt VACANCIES & Vacancy concentration \\
\tt INTERSTITIALS & Interstitial concentration \\
\tt ELECTRONS  & Electron concentration \\
\tt HOLES & Hole concentration \\
\tt AS\_CHEM & Chemical arsenic concentration \\
\tt P\_CHEM & Chemical phosphorous concentration \\
\tt B\_CHEM & Chemical boron concentration \\
\tt SB\_CHEM & Chemical antimony concentration \\
\tt XVELOCITY & X component of interface velocity \\
\tt YVELOCITY & Y component of interface velocity \\
\tt DRYO2     & Dry O2 concentration \\
\tt WETO2     & Wet O2 concentration \\
\tt ITRAPS & Interstitial trap concentration \\
\tt DELA & Delta Interface Area \\
\tt AS & Active arsenic concentration \\
\tt P & Active phosphorous concentration \\
\tt B & Active boron concentration \\
\tt SB & Active antimony concentration \\
\tt SUPREM\_ID\_NN & Impurity NN \\
\hline
\end{tabular}
\end{center}
\newpage
%
% Appendix B
\section{Notes for operation on Alpha based systems (OpenVMS and Digital Unix)}
POSTMINI runs on Alpha based computers (OpenVMS and Digital Unix).
Digital GKS V5.3 and higher supports all graphical output devices.
For compatibility with VAX based systems, Postmini on OpenVMS Alpha
is compiled with {\tt /D\_FLOAT}. This means that all binary files
read by POSTMINI must be in {\tt D\_FLOAT} format.
If you need to read data in {\tt G\_FLOAT} (default on OpenVMS Alpha systems),
or {\tt IEEE} float, you can do this by defining a logical name
which will cause the floating point data to be converted on the fly.
For OpenVMS:
\begin{verbatim}
   $ define FOR$CONVERT009 vaxg
    or
   $ define FOR$CONVERT009 ieee
\end{verbatim}

On Digital Unix, Postmini only supports IEEE floating point.
FORTRAN binary datafiles are incompatible between OpenVMS
and DEC Digital Unix, due to different on-disk data and floating point
formats. The Postmini code can be easily customized to read OpenVMS
FORTRAN binary data files by making a one line change to the FORTRAN
{\tt OPEN} statement. See the contact person for details.
\newpage
% Appendix C
\section{Interoperability with PC X displays}
Postmini was built using the Digital GKS layered product,
an ANSI/ISO standard for two dimension graphic programs.
Digital's implementation for X displays assumes that you are running
a Motif window manager, along with the normal X server.
Unfortunately, Digital's GKS does not interoperate well with many PC X
servers, including Digital's eXcursion X server software,
since the Windows 3.1 version does not come with the Motif window
manager software. The symptom is that the Postmini icon appears
on the PC screen, but the graphics window never de-iconizes.
GKS verion 6.5 has some changes to improve interoperability with PC X
servers. It is not perfect, but it usually works.
\begin{itemize}
\item Make sure eXcursion is running on your PC.
\item If you do not already have your X display set on the host
(VMS or Unix) machine, set it as follows:
\begin{verbatim}
VMS:
set display/create/node=xxxx/transport=tcpip
\end{verbatim}
\begin{verbatim}
Unix:
setenv DISPLAY xxxx:0
\end{verbatim}
Note: {\tt xxxx} should be replaced by the actual tcpip node name of your PC.
You can find this from the eXcursion control panel. Right click
on the eXcursion icon and select "Control panel".

\item Run postmini as usual. Contrary to previous instructions,
do not start up a Motif window manager process.
\item When you make a plot, the window comes up the wrong size and position.
Move the window slightly and then press the "Reset" button in the
plot window. It should resize to the correct size and position.
\end{itemize}

As an alternative, you may wish to use the ReGIS graphics capabilities
of the KEATerm terminal emulator that is commonly distributed on
PC's in Digital. The display speed is quite good, although advanced
capabilities, such as annotation, zoom, etc. are not supported.
It is also the recommended solution for displaying Postmini graphics
over a phone line to a home PC. Use the {\tt /device=vt340} command
line option (VMS) or {\tt -device vt340} (Unix)
to tell Postmini to output ReGIS graphics.
% Appendix D
\section{Displaying Postmini Graphics to a Home PC}
If you are logged into a VMS or Unix host from your home PC
running Windows software
via a dial-up phone line, the best performance can be achieved
by using the ReGIS graphics mode of the KEAterm 340 terminal emulator.
Although it is possible to run eXcursion software on the PC
using the phone line as a network transport, the performance is very poor.
You may wish to try the free PC X server software
(Web URL: {\tt http://www.microimages.com/freestuf})
as this is reported to be faster (I have not tried it with Postmini).

If you are running Linux on your PC, you may wish to log into your
VMS or Unix host and use the {\tt xterm} display device
(e.g. on VMS: {\tt /device=xterm}, or on Unix: {\tt -device xterm}).
This will cause Postmini to pop up the xterm's Tektronix 4014 emulation
window and draw its graphics there. The text window
retains the Postmini text menu, much like under Motif.
Unfortunately, I can't get interactive features like annotation
or zoom to work correctly, so I have disabled them for this device.
%
\newpage
% Appendix E
\section{ASCII output file extensions}
The following extensions are used for data files created
by the LINE and PRINT functions for MINIMOS. Similar extensions
are used for other simulators.
\begin{center}
\begin{tabular}{ll}
  {\tt .PSI}  &  potential \\
  {\tt .DCONC}  &   doping concentration \\
  {\tt .ECONC}  &  electron carrier density \\
  {\tt .HCONC}  &  hole carrier density \\
  {\tt .EL}  &   lateral electric field \\
  {\tt .ET}  &   transverse electric field \\
  {\tt .EJ}  &   field in direction of current \\
  {\tt .EMAG}  &  magnitude of electric field \\
  {\tt .JL\_E}  &  lateral electron current density \\
  {\tt .JT\_E}  &  transverse electron current density \\
  {\tt .JMAG\_E}  &  magnitude of electron current density \\
  {\tt .JL\_H}  &  lateral hole current density \\
  {\tt .JT\_H}  &  transverse hole current density \\
  {\tt .JMAG\_H}  &  magnitude of hole current density \\
  {\tt .AVL}  &  avalanche generation rate \\
  {\tt .QF\_E}  &  electron quasi-Fermi level \\
  {\tt .QF\_H}  &  hole quasi-Fermi level \\
  {\tt .ML\_E}  &  electron lateral mobility \\
  {\tt .MT\_E}  &  electron transverse mobility \\
  {\tt .ML\_H}  &  hole lateral mobility \\
  {\tt .MT\_H}  &  hole transverse mobility \\
  {\tt .CH\_E}   &  ($\rm N_d - n$) \\
  {\tt .CH\_H}   &  ($\rm p - N_a$) \\
  {\tt .CH\_NET} &  net charge \\
  {\tt .ICH} &  Fixed interface charge \\
\end{tabular}
\end{center}
%
\newpage
% Appendix F
\section{POSTMINI command line arguments and options}
POSTMINI takes two optional arguments: the name of a data file to be read,
and a datafile name type. If the data file name does not have an extension
that POSTMINI recognizes, you must also specify the type.
You may abbreviate the data file type, as long as it is unambiguous. Example:
\begin{verbatim}
   $  postmini nchan_test.bin m
\end{verbatim}
reads a {\tt MINIMOS} binary file named {\tt nchan\_test.bin}
into POSTMINI. You may also specify a {\tt PMI} or {\tt CURV}
file on the command line.

The following table lists the supported data file types:
\begin{center}
\begin{tabular}{lp{3.0in}}
\hline
Datafile type & Description \\
\hline
{\tt 2dop}           & 2D or 3D MINIMOS doping file \\
{\tt Ascii}          & ASCII columns data file \\
{\tt Bambi}          & BAMBI data file \\
{\tt Curv}           & Curv command file \\
{\tt Minimos}        & MINIMOS 2D or 3D binary file \\
{\tt PIsces}         & PISCES binary save file (from DEC PISCES) \\
{\tt PMi}            & POSTMINI command file \\
{\tt PRomis}         & PROMIS binary save file \\
{\tt SPICE3}         & SPICE3 (PowerSpice) save file \\
{\tt SUPREM3P}       & SUPREM3 {\tt PRINT MINIMOS} file \\
{\tt SUPREM3S}       & SUPREM3 binary structure file \\
{\tt SUPREM4}        & SUPREM4 ASCII structure file \\
{\tt Useout}         & USEOUT binary data file \\
{\tt Vlsicap}        & VLSICAP data file \\
{\tt TIF}            & TMA interchange format \\
\hline
\end{tabular}
\end{center}

The following table lists the datafile extensions that POSTMINI recognizes:
\begin{center}
\begin{tabular}{lp{3.0in}}
\hline
Datafile extension & Description \\
\hline
{\tt .2dop or .dop}  & 2D or 3D MINIMOS doping file \\
{\tt .bin or .bin3d} & MINIMOS 2D or 3D binary file \\
{\tt .crv}           & CURV command file \\
{\tt .crv2d or .crv3d} & MINIMOS I-V data file (ASCII) \\
{\tt .pmi}           & POSTMINI command file \\
{\tt .raw}           & SPICE3 (or PowerSpice) save file \\
{\tt .save}          & PROMIS binary save file \\
{\tt .spo}           & DEC SPICE output file \\
{\tt .tif}           & TMA TIF output file \\
{\tt .useout}        & USEOUT binary data file \\
\hline
\end{tabular}
\end{center}

\newpage
POSTMINI takes several command line options:
\begin{center}
\begin{tabular}{lp{3.0in}}
\hline
\mcm{2}{l}{VMS options} \\
Option & Action \\
\hline
{\tt /batch}       & Runs Postmini in non-interactive mode \\
{\tt /output=file} & Specifies output file for hardcopy \\
{\tt /curv}        & Invokes the CURV parser on the input file \\
{\tt /device=type} & Specifies default plot or hardcopy device \\
                   & Plot devices: \\
                   & {\tt motif, vt240, vt240bw, vt330, vt340, xterm} \\
                   & Hardcopy devices (normally used with {\tt /batch}): \\
                   & {\tt postscript color\_postscript hpgl ddif epsf color\_epsf ln03 lj250 } \\
{\tt /inverse\_gray}  & Use inverted gray scale on color output devices \\
{\tt /portrait}    & Use portrait mode on hardcopy output devices \\
{\tt /scale=fac}   & Hardcopy reduction scale factor \\
                   & 0.1 $<=$ fac $<=$ 1.0 \\
{\tt /gray}        & Uses a gray scale on color output devices \\
{\tt /convert=type}& Apply byte swapping to binary file (SPICE3 only) \\
                   & Allowed types: big\_endian \\
{\tt /papersize=type}& Set papersize for hardcopy plots \\
                   & Allowed types: A,B,C,D,E,legal (US) \\
                   & A0,A1,A2,A3,A4,B4,B5 (metric) \\
\hline
\end{tabular}
\end{center}

\begin{center}
\begin{tabular}{lp{3.0in}}
\hline
\mcm{2}{l}{Ultrix, Digital Unix options} \\
Option & Action \\
\hline
{\tt -batch}       & Runs Postmini in non-interactive mode \\
{\tt -o file}      & Specifies output file for hardcopy \\
{\tt -curv}        & Invokes the CURV parser on the input file \\
{\tt -device type} & Specifies default plot or hardcopy device \\
                   & Plot devices: \\
                   & {\tt motif, vt240, vt240bw, vt330, vt340, xterm} \\
                   & Hardcopy devices (normally used with {\tt \mbox{-batch}}): \\
                   & {\tt postscript color\_postscript hpgl ddif epsf color\_epsf ln03 lj250 } \\
{\tt -inverse\_gray}  & Use inverted gray scale on color output devices \\
{\tt -portrait}    & Use portrait mode on hardcopy output devices \\
{\tt -scale fac}   & Hardcopy reduction scale factor \\
                   & 0.1 $<=$ fac $<=$ 1.0 \\
{\tt -gray}        & Use gray scale on color output devices \\
{\tt -convert type}& Apply byte swapping to binary file (SPICE3 only) \\
                   & Allowed types: big\_endian \\
{\tt -papersize type}& Set papersize for hardcopy plots \\
                   & Allowed types: A,B,C,D,E,legal (US) \\
                   & A0,A1,A2,A3,A4,B4,B5 (metric) \\
\hline
\end{tabular}
\end{center}
%
\newpage
% Appendix G
\section{Papersizes}
\begin{tabular}{cc}
\hline
\mcm{2}{c}{US sizes (inches)}\\
Name    &   Size \\
\hline
 A      &   8.5" x 11" \\
 LEGAL  &   8.5" x 14" \\
 B      &   11" x 17" \\
 C      &   17" x 22" \\
 D      &   22" x 34" \\
 E      &   34" x 44" \\
 COMP   &   11" x 14" \\
\hline
\mcm{2}{c}{Metric sizes (cm)}\\
Name    &   Size \\
\hline
 A0     &  84.1 x 118.9 \\
 A1     &  59.4 x 84.1 \\
 A2     &  42.0 x 59.4 \\
 A3     &  29.7 x 42.0 \\
 A4     &  21.0 x 29.7 \\
 A5     &  14.8 x 21.0 \\
 B4     &  25.7 x 36.4 \\
 B5     &  18.2 x 25.7 \\
\hline
\end{tabular}
%
\newpage
\section{Plot examples}
This section contains four plots from the results of a simulation
of an n-channel device simulated with MINIMOS.
Plot annotations were added to POSTMINI graphs interactively using a
workstation and mouse.
All plots were printed on a PostScript printer.
\begin{itemize}
\item A 1D plot of the electron current density versus depth
at X = 0.5 $\mu$m.
\item A comparison plot showing the electron concentration
from source to drain at depths of Y = 0.0 $\mu$m, 0.01 $\mu$m and 0.02 $\mu$m.
\item A 3D surface plot of the doping (log scale)
over the region from X = -0.5 $\mu$m to 1.5 $\mu$m,
and Y = 0.0 $\mu$m to 0.4 $\mu$m.
\item A contour map of the doping in the same region as the 3D plot.
\end{itemize}
\newpage
\setlength{\parindent}{0.0in}%  Turn off par indent (don't indent rules)
%
\epsfxsize 4.0in
\begin{minipage}{5.0in}
\centerline{\epsfbox{figure1.eps}}
\end{minipage}
\rule{\textwidth}{.5pt}
%
\epsfxsize 4.0in
\begin{minipage}{5.0in}
\centerline{\epsfbox{figure2.eps}}
\end{minipage}
\newpage
%
\epsfxsize 4.0in
\begin{minipage}{5.0in}
\centerline{\epsfbox{figure3.eps}}
\end{minipage}
\rule{\textwidth}{.5pt}
%
\epsfxsize 4.0in
\begin{minipage}{5.0in}
\centerline{\epsfbox{figure4.eps}}
\end{minipage}
\end{document}
