Provided by: magic_7.5.214-1_i386 bug

NAME

       magic - VLSI layout editor

SYNOPSIS

       magic  [  -T   technology ] [ -d  device_type ] [ -g  graphics_port ] [
       -m  monitor_type ] [ -D ] [ file ]

DESCRIPTION

       Magic is an interactive editor for VLSI layouts  that  runs  under  all
       variants  of  UNIX,  including Mac OS-X and Cygwin.  This man page is a
       reference manual;  if you are a first-time user,  you  should  use  the
       Magic  tutorials  to  get  acquainted  with  the system (see the online
       resources links below).

       Magic uses two  windows:  one  for  text  and  a  separate  window  for
       displaying  layouts.  Magic runs under the window system X11 (use under
       Cygwin requires the presence of an X11 server in Windows;   the  server
       that  comes  packaged with Cygwin works well).  The command line switch
       "-d" can be used to tell Magic which kind of display you  are  running.
       Specifically,  this  is  useful  to  tell  magic to use OpenGL graphics
       instead of plain X11 ("-d OGL"),  or  to  use  24  bit  plane  graphics
       instead  of 8 bit planes ("-d 24BITS") if both are available on a video
       card with overlay support.

       Here are the options accepted by Magic:

       -T     The next argument is the name of a technology.  The tile  types,
              display  information,  and  design rules for this technology are
              read by Magic from a technology file when  it  starts  up.   The
              technology defaults to ``scmos''.

       -d     The next argument is the type of workstation or graphics display
              being used.  Magic supports these types:

              NULL   A null device for running Magic without using a  graphics
                     display, such as a batch job.  Note that the special case
                     "-dnull" (lowercase, no space)  has  a  more  streamlined
                     startup specifically for batch processing.

              X11    X-windows,  version  11.  The is the preferred interface.
                     Magic acts as  a  client  to  the  X  window  server  and
                     interfaces  to  all graphics terminals supported by the X
                     server.

              OGL    OpenGL graphics running under X11.  This is the preferred
                     interface   on  systems  having  hardware-accelerated  3D
                     graphics video cards and drivers.

                     Addition information on  Magic's  X11  driver,  including
                     options  for  .Xdefaults  files,  may be found in ``Magic
                     Maintainer's Manual #4:  Using Magic Under X Windows''.

              XWIND  Simply another name for the X11 driver.
       If no device is  specified,  Magic  tries  to  guess  which  driver  is
       appropriate (by checking the environment variables and by poking around
       in /dev).

       When   Magic   starts   up   it   looks   for   a   command   file   in
       ${CAD_ROOT}/magic/sys/.magicrc  and  processes  it  if it exists.  Then
       Magic looks for a file with the name ``.magicrc'' in the home directory
       and  processes  it  if  it exists.  Finally, Magic looks for a .magicrc
       file in the current directory and reads it as  a  command  file  if  it
       exists.   The  .magicrc  file  format  is  described  under  the source
       command.  If magic is compiled with Tcl/Tk support, then any  magic  or
       Tcl/Tk  commands may be used inside the startup file.  The startup file
       name was changed to ".magicrc" to avoid conflicts with a common  system
       file named ".magic".  However, the name ".magic" will be searched after
       ".magicrc" for backward compatibility.

COMMANDS -- GENERAL INFORMATION

       Magics uses types of commands:  Key  macros  and  long  commands.   The
       first  form  consists  of  single-key  (or button) abbreviations called
       ``macros''; macros are invoked  by  pressing  a  single  key  or  mouse
       button.     Certain   macros   are   predefined   in   the   systemwide
       ${CAD_ROOT}/magic/sys/.magicrc file, but you can override them and  add
       your own macros using the macro command (described below under COMMANDS
       FOR ALL WINDOWS).  The special macro "." is reserved to  mean  "execute
       the last typed long command".

       You  can  enter  long  commands  in the terminal console at the console
       prompt, or from the layout window by typing a : or ; key, which are the
       two other reserved macros meaning "switch keyboard focus to the console
       window".  After typing the : or ; key, type the text  of  the  command,
       which will be written to the terminal window.  Multiple commands may be
       specified on one line by separating them with semicolons.

       Most commands deal with the window  underneath  the  cursor,  so  if  a
       command  doesn't  do what you expect make sure that you are pointing to
       the correct place on the screen.  There are several different kinds  of
       windows  in  Magic  (layout,  color,  and  netlist);  each window has a
       different command set, described in a separate section below.

MOUSE BUTTONS FOR LAYOUT WINDOWS

       Magic uses a three button mouse.  The buttons are interpreted in a  way
       that  depends  on  the  current  tool, as indicated by the shape of the
       cursor (see the tool command).  The various tools are described  below.
       The  initial  tool is box.  These interpretations apply only when mouse
       buttons are pressed in the interior of a layout window.

       Box Tool
              This is the default  tool,  and  is  indicated  by  a  crosshair
              cursor.  It is used to position the box and to paint and erase:

              left   This  button  is  used  to  move  the  box  by one of its
                     corners.  Normally, this button picks up the box  by  its
                     lower-left  corner.   To  pick  the box up by a different
                     corner, click the right button while the left  button  is
                     down.   This  switches  the  pick-up  point to the corner
                     nearest the cursor.  When the button is released, the box
                     is  moved  to position the corner at the cursor location.
                     If the box has been set to snap to the window's grid (see
                     the  :snap  command), then the box corner is left aligned
                     with the grid that the user has  chosen  for  the  window
                     with the :grid command, even if that grid is not visible.

              right  Change  the  size  of  the  box  by  moving  one  corner.
                     Normally this button moves the upper-right corner of  the
                     box.   To  move a different corner, click the left button
                     while the right button is down.  This switches the corner
                     to  the  one  nearest  the  cursor.  When you release the
                     button, three corners of the box move in order  to  place
                     the  selected  corner  at the cursor location (the corner
                     opposite the one you picked up remains fixed).   Snapping
                     to the window's grid is handled as for the left button.

              middle (bottom)
                     Used  to paint or erase.  If the crosshair is over paint,
                     then the area of the box is  painted  with  the  layer(s)
                     underneath the crosshair.  If the crosshair is over white
                     space, then the area of the box is erased.

       Wiring Tool
              The wiring tool, indicated  by  an  arrow  cursor,  is  used  to
              provide an efficient interface to the wiring commands:

              left   Same as the long command wire type.

              right  Same as the long command wire leg.

              middle (bottom)
                     Same as the long command wire switch.

       Netlist Tool
              This  tool  is  used  to  edit  netlists  interactively.   It is
              indicated by a thick box cursor.

              left   Select the net associated with the terminal  nearest  the
                     cursor.

              right  Find  the terminal nearest the cursor, and toggle it into
                     the current net (if it wasn't already in the current net)
                     or  out  of  the current net (if it was previously in the
                     net).

              middle (bottom)
                     Find the terminal nearest the cursor, and  join  its  net
                     with the current net.

       Rsim Tool
              Used  when  running the IRSIM simulator under Magic.  A pointing
              hand is used as the cursor.

              left   Moves the box just like the box tool.

              right  Moves the box just like the box tool.

              middle (bottom)
                     Displays the Rsim node values of the selected paint.

LONG COMMANDS FOR LAYOUT WINDOWS

       These commands work if you are pointing to the  interior  of  a  layout
       window.   Commands  are invoked by typing a colon (``:'') or semi-colon
       (``;''), followed by a line containing a command name and zero or  more
       parameters.   In  addition,  macros may be used to invoke commands with
       single keystrokes.   Useful  default  macros  are  set  in  the  global
       .magicrc       file       (in      ${CAD_ROOT}/magic/sys,      normally
       /usr/local/lib/magic/sys).  You can list all current  macros  with  the
       macro  command,  described  under  ``LONG  COMMANDS  FOR ALL WINDOWS''.
       Unique abbreviations are acceptable for all keywords in commands.   The
       commands are:

       addpath searchpath
              Add  more  directories  to  the end of Magic's cell search path.
              See the documentation for the path command for an explanation of
              the search path.

       array xsize ysize
              Make  many  copies  of  the  selection.   There  will  be  xsize
              instances in the x-direction  and  ysize  instances  in  the  y-
              direction.   Paint  and  labels  are  arrayed  by  copying them.
              Subcells are not copied, but instead  each  instance  is  turned
              into  an array instance with elements numbered from 0 to xsize-1
              in the x-direction, and from 0 to ysize-1  in  the  y-direction.
              The  spacing  between elements of the array is determined by the
              box x- and y-dimensions.

       array xlo ylo xhi yhi
              Identical to the form of array above, except that  the  elements
              of  arrayed cells are numbered left-to-right from xlo to xhi and
              bottom-to-top from ylo to yhi.   It  is  legal  for  xlo  to  be
              greater than xhi, and also for ylo to be greater than yhi.

       box [args]
              Used  to  change  the  size  of the box or to find out its size.
              There are several sorts of arguments that may be given  to  this
              command:

              (No arguments.)
                     Show  the  box size and its location in the edit cell, or
                     root cell of its window if the edit cell  isn't  in  that
                     window.

              direction [distance]
                     Move  the  box  distance units in direction, which may be
                     one of left, right, up, or down.   Distance  defaults  to
                     the  width  of the box if direction is right or left, and
                     to the height of the box if direction is up or down.

              width [size]

              height [size]
                     Set the box to the width or height indicated.  If size is
                     not specified the width or height is reported.

              x1 y1 x2 y2
                     Move  the  box to the coordinates specified (these are in
                     edit cell coordinates if the edit cell is in  the  window
                     under  the  cursor;   otherwise  these  are  in  the root
                     coordinates of the window). x1 and y1 are the coordinates
                     of  the lower left corner of the box, while x2 and y2 are
                     the upper right corner.   The  coordinates  must  all  be
                     integers.

       calma [option] [args]
              This  command  is  used  to read and write files in Calma GDS II
              Stream format (version 3.0,  corresponding  to  GDS  II  Release
              5.1).   This  format  is like CIF, in that it describes physical
              mask layers instead of Magic layers.  In  fact,  the  technology
              file  specifies  a  correspondence between CIF and Calma layers.
              The current CIF output style (see cif ostyle) controls how Calma
              stream  layers are generated from Magic layers.  If no arguments
              are given, the calma command generates a Calma stream  file  for
              the  layout in the window beneath the cursor in file.strm, where
              file is the name of the root cell.  This stream  file  describes
              the  entire  cell  hierarchy  in  the  window.   The name of the
              library is the same as the name of the root  cell.   Option  and
              args may be used to invoke one of several additional operations:

              calma flatten
                     Ordinarily, Magic arrays are output using the Calma ARRAY
                     construct.  After a calma flatten command, though, arrays
                     will be output instead as a collection of individual cell
                     uses, as occurs when writing CIF.

              calma help
                     Print a short  synopsis  of  all  of  the  calma  command
                     options.

              calma labels
                     Output labels whenever writing a Calma output file.

              calma lower
                     Allow  both  upper  and lower case to be output for label
                     text.  This is the default behavior; calma nolower causes
                     lower case to be converted to upper case on output.

              calma noflatten
                     Undoes  the effect of a prior :calma flatten command, re-
                     enabling the output of Magic arrays using the Calma ARRAY
                     construct.

              calma nolabels
                     Don't output labels when writing a Calma output file.

              calma nolower
                     Convert lower to upper case when outputting labels.

              calma read file
                     The  file file.strm is read in Calma format and converted
                     to a collection of Magic cells.  The  current  CIF  input
                     style  determines  how  the Calma layers are converted to
                     Magic layers.  The new cells are marked  for  design-rule
                     checking.   Calma format doesn't identify the root of the
                     collection of cells read in, so none of  the  cells  read
                     will  appear  on  the  display;  use  load  to  make them
                     visible.  If the Calma file had been produced  by  Magic,
                     then the name of the root cell is the same as the library
                     name printed by the :calma read command.

              calma write fileName
                     Writes a stream file just as if  no  arguments  had  been
                     entered,   except   that   the  output  is  written  into
                     fileName.strm instead of using the root cell name for the
                     file name.

       channels
              This command will run just the channel decomposition part of the
              Magic router, deriving channels for the area under the box.  The
              channels  will  be displayed as outlined feedback areas over the
              edit cell.

       cif [option] [args]
              Read or write files in Caltech Intermediate Form (CIF).   If  no
              arguments  are  given, this command generates a CIF file for the
              window beneath the cursor in file.cif, where file is the name of
              the root cell.  The CIF file describes the entire cell hierarchy
              in the window.  Option and args may be used  to  invoke  one  of
              several additional CIF operations:

              cif arealabels [yes | no]
                     Enables/disables   the   cif  area-label  extension.   If
                     enabled,  area  labels  are  written  via  the   95   cif
                     extension.   If  disabled, labels are collapsed to points
                     when writing cif and the 94 cif construct is used.  Area-
                     labels  are  disabled  by  default  (many  programs don't
                     understand cif area-labels).

              cif help
                     Print a short synopsis of all of the cif command options.

              cif istyle [style]
                     Select the style to be used for CIF input.  If  no  style
                     argument  is provided, then Magic prints the names of all
                     CIF input styles  defined  in  the  technology  file  and
                     identifies  the  current style.  If style is provided, it
                     is made the current style.

              cif ostyle [style]
                     Select the style to be used for CIF output.  If no  style
                     argument  is provided, then Magic prints the names of all
                     CIF output styles defined  in  the  technology  file  and
                     identifies  the  current style.  If style is provided, it
                     is made the current style.

              cif read file
                     The file file.cif is read in CIF format and converted  to
                     a  collection  of  Magic  cells.  The current input style
                     determines how the CIF  layers  are  converted  to  Magic
                     layers.    The  new  cells  are  marked  for  design-rule
                     checking.  Any information in the top-level CIF  cell  is
                     copied  into  the  edit  cell.  Note: this command is not
                     undo-able (it would waste too much space and time to save
                     information for undoing).

              cif see layer
                     In this command layer must be the CIF name for a layer in
                     the current output style.   Magic  will  display  on  the
                     screen  all  the  CIF for that layer that falls under the
                     box, using stippled feedback areas.  It's a bad  idea  to
                     look  at  CIF  over  a  large  area,  since  this command
                     requires the area under  the  box  to  be  flattened  and
                     therefore is slow.

              cif statistics
                     Prints out statistics gathered by the CIF generator as it
                     operates.  This is probably not useful to  anyone  except
                     system maintainers.

              cif write fileName
                     Writes  out CIF just as if no arguments had been entered,
                     except that the CIF is written into fileName.cif  instead
                     of  using  the  root  cell  name  for the file name.  The
                     current  output  style  controls  how  CIF   layers   are
                     generated from Magic layers.

              cif flat fileName
                     Writes  out CIF as in the cif write command, but flattens
                     the design first (e.g. creates an internal  version  with
                     the  cell  hierarchy  removed).   This  is  useful if one
                     wishes to use the  and-not  feature  of  the  CIF  output
                     styles,  but  is  having  problems  with  interactions of
                     overlapping cells.

       clockwise [degrees]
              Rotate the selection by 90,  180  or  270  degrees.   After  the
              rotation,  the lower-left corner of the selection's bounding box
              will be in the same  place  as  the  lower-left  corner  of  the
              bounding  box  before the rotation.  Degrees defaults to 90.  If
              the box is in the same window as the selection,  it  is  rotated
              too.  Only material in the edit cell is affected.

       copy [direction [amount]]

       copy to x y
              If no arguments are given, a copy of the selection is picking up
              at the point lying underneath the  box  lower-left  corner,  and
              placed  so  that  this  point  lies  at the cursor position.  If
              direction is given, it  must  be  a  Manhattan  direction  (e.g.
              north,  see  the ``DIRECTIONS'' section below).  The copy of the
              selection is moved in that direction by amount.  If the  box  is
              in  the  same  window as the selection, it is moved too.  Amount
              defaults to 1.  The second form of the command behaves as though
              the  cursor  were pointing to (x, y) in the edit cell; a copy of
              the selection is picked up by the point beneath  the  lower-left
              corner of the box and placed so that this point lies at (x, y).

       corner direction1 direction2 [layers]
              This  command  is  similar  to fill, except that it generates L-
              shaped wires that travel across the box first in direction1  and
              then  in  direction2.   For example, corner north east finds all
              paint under the bottom edge of the box and extends it up to  the
              top  of  the  box  and then across to the right side of the box,
              generating neat corners at the top of the box.  The  box  should
              be  at  least  as  tall  as  it is wide for this command to work
              correctly.   Direction1  and  direction2   must   be   Manhattan
              directions  (see  the  section  DIRECTIONS  below)  and  must be
              orthogonal to each other.  If  layers  is  specified  then  only
              those layers are used;  otherwise all layers are considered.

       delete Delete  all  the information in the current selection that is in
              the edit cell.  When cells are deleted, only the selected use(s)
              of  the  cell  is  (are) deleted:  other uses of the cell remain
              intact, as does the disk file  containing  the  cell.   Selected
              material outside the edit cell is not deleted.

       drc option [args]
              This  command  is used to interact with the design rule checker.
              Option and args (if needed) are used to invoke a drc command  in
              one of the following ways:

              drc catchup
                     Let   the   checker  process  all  the  areas  that  need
                     rechecking.  This command will not return  until  design-
                     rule  checking is complete or an interrupt is typed.  The
                     checker will run even if the background checker has  been
                     disabled with drc off.

              drc check
                     Mark  the  area under the box for rechecking in all cells
                     that intersect  the  box.   The  recheck  will  occur  in
                     background  after the command completes.  This command is
                     not  normally  necessary,   since   Magic   automatically
                     remembers  which  areas  need to be rechecked.  It should
                     only be needed if the design rules are changed.

              drc count
                     Print the number of errors in each cell  under  the  box.
                     Cells with no errors are skipped.

              drc find [nth]
                     Place  the  box  over  the nth error area in the selected
                     cell or edit cell, and print out  information  about  the
                     error  just  as  if drc why had been typed.  If nth isn't
                     given (or is less than 1), the command moves to the  next
                     error  area.   Successive  invocations  of drc find cycle
                     through all the error tiles in  the  cell.   If  multiple
                     cells  are selected, this command uses the upper-leftmost
                     one.  If no cells are selected,  this  command  uses  the
                     edit cell.

              drc help
                     Print a short synopsis of all the drc command options.

              drc off
                     Turn off the background checker.  From now on, Magic will
                     not recheck design rules immediately after  each  command
                     (but  it will record the areas that need to be rechecked;
                     the command drc on can be used to restart the checker).

              drc on Turn on the background checker.  The checker  will  check
                     whatever  modifications  have  not  already been checked.
                     From now on, the checker will reverify modified areas  as
                     they  result  from  commands.   The checker is run in the
                     background, not synchronously with commands,  so  it  may
                     get temporarily behind if massive changes are made.

              drc printrules [file]
                     Print  out  the compiled rule set in file, or on the text
                     terminal if file isn't  given.   For  system  maintenance
                     only.

              drc rulestats
                     Print out summary statistics about the compiled rule set.
                     This is primarily for use in writing technology files.

              drc statistics
                     Print out statistics kept  by  the  design-rule  checker.
                     For  each  statistic,  two values are printed:  the count
                     since the last time drc statistics was invoked,  and  the
                     total  count  in  this  editing session.  This command is
                     intended primarily for system maintenance purposes.

              drc why
                     Recheck the area underneath the box  and  print  out  the
                     reason  for  each  violation  found.   Since this command
                     causes a recheck,  the  box  should  normally  be  placed
                     around a small area (such as an error area).

       dump cellName [child refPointC] [parent refPointP]
              Copy  the  contents  of cell cellName into the edit cell so that
              refPointC in the child is positioned at point refPointP  in  the
              edit  cell.   The  reference  points can either be the name of a
              label, in which case the lower-left corner of the label's box is
              used  as the reference point, or as a pair of numbers giving the
              (x, y) coordinates of a point explicitly.  If refPointC  is  not
              specified,  the  lower-left corner of cellName cell is used.  If
              refPointP is not specified, the lower-left  corner  of  the  box
              tool  is  used  (the  box must be in a window on the edit cell).
              After this command completes, the new information is selected.

       edit   Make the selected cell the edit cell, and edit  it  in  context.
              The  edit  cell  is  normally  displayed in brighter colors than
              other cells (see the see command to change this).  If more  than
              one  cell  is selected, or if the selected cell is an array, the
              cursor position is used to select one of those cells as the  new
              edit  cell.   Generally,  Magic commands modify only the current
              edit cell.

       erase [layers]
              For the area enclosed by the box, erase  all  paint  in  layers.
              (See  the ``LAYERS'' section for the syntax of layer lists).  If
              layers is omitted it defaults to *,labels.  See your  technology
              manual,  or  use  the  layers  command,  to  find  out about the
              available layer names.

       expand [toggle]
              If the keyword toggle is supplied, all  of  the  selected  cells
              that  are unexpanded are expanded, and all of the selected cells
              that are expanded are unexpanded.  If  toggle  isn't  specified,
              then   all   of  the  cells  underneath  the  box  are  expanded
              recursively until there is nothing but paint under the box.

       extract option [args]
              Extract a layout, producing one or more hierarchical .ext  files
              that  describe the electrical circuit implemented by the layout.
              The  current  extraction  style  (see   extract   style   below)
              determines the parameters for parasitic resistance, capacitance,
              etc. that will be used.  The extract command with no  parameters
              checks  timestamps  and  re-extracts as needed to bring all .ext
              files  up-to-date  for  the  cell  in  the  window  beneath  the
              crosshair,  and all cells beneath it.  Magic displays any errors
              encountered during circuit extraction  using  stippled  feedback
              areas  over  the  area  of  the  error,  along  with  a  message
              describing the type of error.  Option and args are used  in  the
              following ways:

              extract all
                     All  cells  in  the  window  beneath  the  cursor are re-
                     extracted regardless of whether they have  changed  since
                     last being extracted.

              extract cell name
                     Extract  only  the  currently  selected cell, placing the
                     output in the file  name.   If  more  than  one  cell  is
                     selected, this command uses the upper-leftmost one.

              extract do [ option ]

              extract no option
                     Enable  or  disable  various  options  governing  how the
                     extractor will work.  Use :extract do with  no  arguments
                     to  print  a  list of available options and their current
                     settings.   When  the  adjust  option  is  enabled,   the
                     extractor   will  compute  compensating  capacitance  and
                     resistance whenever cells overlap or abut;  if  disabled,
                     the extractor will not compute these adjustments but will
                     run faster.  If capacitance is enabled, node capacitances
                     to   substrate   (perimeter   and   area)  are  computed;
                     otherwise,  all  node  capacitances  are  set  to   zero.
                     Similarly,   resistance   governs  whether  or  not  node
                     resistances are computed.  The coupling  option  controls
                     whether  coupling  capacitances  are  computed or not; if
                     disabled, flat extraction is significantly faster than if
                     coupling  capacitance  computation  is enabled.  Finally,
                     the length option determines whether or  not  pathlengths
                     in the root cell are computed (see extract length below).

              extract help
                     Prints  a  short  synopsis  of  all  the  extract command
                     options.

              extract length [ option args ]
                     Provides several options for controlling which  point-to-
                     point   path   lengths  are  extracted  explicitly.   The
                     extractor maintains two internal tables, one of  drivers,
                     or  places  where  a  signal  is  generated,  and  one of
                     receivers,  or  places  where  a  signal  is  sent.   The
                     components  of  each  table are hierarchical label names,
                     defined by means  of  the  two  commands  extract  length
                     driver  name1  [name2  ...]   and extract length receiver
                     name1 [name2  ...].   If  extraction  of  pathlengths  is
                     enabled (``:extract do length''), then when the root cell
                     in an extract command is being extracted,  the  extractor
                     will  compute  the shortest and longest path between each
                     driver and each receiver on the same electrical net,  and
                     output  it to the .ext file for the root cell.  Normally,
                     one should create a file of these Magic commands for  the
                     circuit drivers and receivers of interest, and use source
                     to read it  in  prior  to  circuit  extraction.   Extract
                     length clear removes all the entries from both the driver
                     and receiver tables.

              extract parents
                     Extract the  currently  selected  cell  and  all  of  its
                     parents.   All of its parents must be loaded in order for
                     this to  work  correctly.   If  more  than  one  cell  is
                     selected, this command uses the upper-leftmost one.

              extract showparents
                     Like extract parents, but only print the cells that would
                     be extracted; don't actually extract them.

              extract style [style]
                     Select the style to be used  for  extraction  parameters.
                     If  no  style argument is provided, then Magic prints the
                     names of all extraction parameter styles defined  in  the
                     technology  file  and  identifies  the current style.  If
                     style is provided, it is made the current style.

              extract unique [#]
                     For each cell in the window beneath the cursor, check  to
                     insure  that  no label is attached to more than one node.
                     If the # keyword was not specified, whenever a  label  is
                     attached to more than one node, the labels in all but one
                     of the nodes are changed by appending a numeric suffix to
                     make  them  unique.   If the # keyword is specified, only
                     names that end in a ``#''  are  made  unique;  any  other
                     duplicate  nodenames  that  don't  end  in  a  ``!''  are
                     reported  by  leaving  a  warning  feedback  area.   This
                     command  is provided for converting old designs that were
                     intended  for  extraction  with   Mextra,   which   would
                     automatically  append  unique suffixes to node names when
                     they appeared more than once.

              extract warn [ [no] option | [no] all ]
                     The extractor always reports fatal errors.  This  command
                     controls the types of warnings that are reported.  Option
                     may be one of the following: dup, to warn  about  two  or
                     more  unconnected  nodes  in  the same cell that have the
                     same name, fets, to warn  about  transistors  with  fewer
                     than the minimum number of terminals, and labels, to warn
                     when nodes are not labeled in the area of  cell  overlap.
                     In  addition,  all  may be used to refer to all warnings.
                     If a warning is preceded  by  no,  it  is  disabled.   To
                     disable  all  warnings,  use ``extract warn no all''.  To
                     see which warning options are in  effect,  use  ``extract
                     warn''.

       extresist [cell [threshold] ]
              Postprocessor   for  improving  on  the  resistance  calculation
              performed by the circuit extractor.  To use  this  command,  you
              first   have   to   extract  the  design  rooted  at  cell  with
              :extract cell, and then flatten  the  design  using  ext2sim(1),
              producing   the   files   cell.sim  and  cell.nodes.   Then  run
              :extresist cell to  produce  a  file,  cell.res.ext,  containing
              differences  between  the  network  described  by the .ext files
              produced  the  first  time  around,  and  a  new  network   that
              incorporates explicit two-point resistors where appropriate (see
              below).  This  file  may  be  appended  to  cell.ext,  and  then
              ext2simrun  for  a  second  time,  to produce a new network with
              explicit resistors.  The threshold parameter is used to  control
              which  nodes  are  turned into resistor networks: any node whose
              total  resistance  exceeds  threshold  times  the  smallest  on-
              resistance  of  any  transistor  connected  to that node will be
              approximated as a resistor network.

       feedback option [args]
              Examine feedback information that is created by several  of  the
              Magic  commands  to  report problems or highlight certain things
              for users.  Option and args are used in the following ways:

              feedback add text [style]
                     Used to create a feedback area manually at  the  location
                     of the box.  This is intended as a way for other programs
                     like Crystal to highlight things on a layout.   They  can
                     generate  a  command  file consisting of a feedback clear
                     command, and a sequence of box and feedback add commands.
                     Text  is associated with the feedback (it will be printed
                     by feedback why and feedback find).  Style tells  how  to
                     display  the  feedback,  and  is  one  of dotted, medium,
                     outline, pale, and solid (if unspecified, style  defaults
                     to pale).

              feedback clear
                     Clears all existing feedback information from the screen.

              feedback count
                     Prints  out  a  count  of  the current number of feedback
                     areas.

              feedback find [nth]
                     Used to locate a particular feedback  area.   If  nth  is
                     specified,  the  box  is moved to the location of the nth
                     feedback area.  If nth isn't specified, then the  box  is
                     moved to the next sequential feedback area after the last
                     one located with feedback find.   In  either  event,  the
                     explanation associated with the feedback area is printed.

              feedback help
                     Prints  a  short  synopsis  of  all  the feedback command
                     options.

              feedback save file
                     This option will  save  information  about  all  existing
                     feedback  areas  in file.  The information is stored as a
                     collection of Magic commands, so that it can be recovered
                     with the command source file.

              feedback why
                     Prints  out the explanations associated with all feedback
                     areas underneath the box.

       fill direction [layers]
              Direction is a Manhattan direction (see the  section  DIRECTIONS
              below).  The paint visible under one edge of the box is sampled.
              Everywhere that the edge touches paint, the paint is extended in
              the  given  direction  to  the  opposite  side  of the box.  For
              example, if direction is north, then paint is sampled under  the
              bottom  edge of the box and extended to the top edge.  If layers
              is specified, then only the given  layers  are  considered;   if
              layers isn't specified, then all layers are considered.

       findbox [zoom]
              Center  the  view  on the box.  If the optional zoom argument is
              present, zoom into the area specified by the box.  This  command
              will  complain  if the box is not in the window you are pointing
              to.

       flush [cellname]
              Cell cellname is reloaded from disk.  All changes  made  to  the
              cell  since it was last saved are discarded.  If cellname is not
              given, the edit cell is flushed.

       garoute option [args]
              This command, with no option or arg, is like the route  command:
              it  generates  routing  in  the  edit  cell  to make connections
              specified in the current netlist.  (See the  route  command  for
              further information).  Unlike the route command, this command is
              intended to be used for routing types of circuits, such as gate-
              arrays, whose routing channels can be determined in advance, and
              which require the ability to  river-route  across  the  tops  of
              cells.    The   channels   must   have   been  predefined  using
              garoute channel commands prior to this  command  being  invoked.
              Unlike  the  route  command, where the box indicates the routing
              area, this command ignores the box entirely.  The new wires  are
              placed  in  the edit cell.  The netlist used is that selected by
              the route netlist command, or the current netlist  being  edited
              in  a netlist window if no route netlist command has been given.
              Options and args have the following effects:

              garoute channel [type]

              garoute channel xlo ylo xhi yhi [type]
                     Define  a  channel.   If  xlo,  ylo,  xhi,  and  yhi  are
                     provided,  they are interpreted as the coordinates of the
                     lower-left and upper-right of the bounding  box  for  the
                     channel  respectively.  Otherwise, the coordinates of the
                     box are used.  The boundary of each channel  is  adjusted
                     inward  to  lie  halfway between routing grid lines if it
                     does not lie there already; if the channel is adjusted, a
                     warning  message  is  printed.  The channel defined is an
                     ordinary routing channel if type is not  specified;  such
                     channels are identical to those used by the router of the
                     route command.  If type is given, it must be either h  or
                     v.   The  channel thereby created will be a river-routing
                     channel  inside  which  only  left-to-right  routes   are
                     possible  (``h'')  or  top-to-bottom  (``v'').   Unlike a
                     normal  channel,  a  river-routing  channel  may  contain
                     terminals in its interior.

              garoute generate type [file]
                     Provides  a  primitive  form of channel decomposition for
                     regular structures such as  gate-array  or  standard-cell
                     layouts.   Generates  a  collection  of  garoute  channel
                     commands, either to the standard output, or  to  file  if
                     the  latter  is  specified.   The  type parameter must be
                     either h or v.  The entire area contained within the  box
                     is  turned  into routing channels.  Each cell inside this
                     area has  its  bounding  box  computed  for  purposes  of
                     routing  by looking only at those layers considered to be
                     ``obstacles'' to routing (see ``Tutorial #7: Netlists and
                     Routing''  for  details).  The bounding box just computed
                     is then extended all the way to the sides of the area  of
                     the  box tool, vertically if type is h or horizontally if
                     type  is  v.   This  extended  area  is  then  marked  as
                     belonging  to  a  river-routing  channel  of  type  type;
                     adjacent channels of this type are merged into  a  single
                     channel.   After  all  cells are processed, the areas not
                     marked as being  river-routing  channels  are  output  as
                     normal channels.

              garoute help
                     Print  a  short  synopsis  of  all  the  garoute  command
                     options.

              garoute nowarn
                     If a given terminal appears in more than one place inside
                     a  cell,  the  router  can  leave  feedback  if it is not
                     possible to route to all of the places where the terminal
                     appears.  The garoute nowarn command instructs the router
                     to leave feedback only if it is not possible to route  to
                     any of the locations of a terminal.  (This is the default
                     behavior of garoute router).

              garoute route [netlist]
                     Route the edit cell.  If netlist is  not  specified,  the
                     netlist used is the same as when garoute is given with no
                     options.  If netlist is given, then it is used instead.

              garoute reset
                     Clear  all  channels  defined  by  garoute   channel   in
                     preparation for redefining a new set of channels.

              garoute warn
                     The  opposite  of  garoute nowarn, this command instructs
                     the router to leave feedback if it  is  not  possible  to
                     route  to all of the places where a terminal appears when
                     a terminal has more than one location, even if not all of
                     those  locations are actually selected for routing by the
                     global router.

       getcell cellName [child refPointC] [parent refPointP]
              This command adds a child cell instance to the edit  cell.   The
              instance  refers to the cell cellName;  it is positioned so that
              refPointC in the child is at point refPointP in the  edit  cell.
              The reference points can either be the name of a label, in which
              case the lower-left corner of the label's box  is  used  as  the
              reference  point,  or  as  a  pair  of numbers giving the (x, y)
              coordinates  of  a  point  explicitly.   If  refPointC  is   not
              specified,  the  lower-left corner of cellName cell is used.  If
              refPointP is not specified, the lower-left  corner  of  the  box
              tool  is  used  (the  box must be in a window on the edit cell).
              The new  subcell  is  selected.   The  difference  between  this
              command  and  dump is that dump copies the contents of the cell,
              while getcell simply makes a reference  to  the  original  cell.
              Cellname must not be the edit cell or one of its ancestors.

       getnode [alias on | alias off]

       getnode [abort [str]]
              Getnode  prints  out  the node names (used by the extractor) for
              all selected paint.  If aliasing turned on, getnode  prints  all
              the  names  it  finds  for a given node.  It may not print every
              name that exists, however.  When turned off, it just prints  one
              name.   The abort option allows the user to tell getnode that it
              is not important to completely search nodes  that  have  certain
              names.   For example, getnode abort Vdd will tell getnode not to
              continue searching the node if it determines  that  one  of  its
              names  is Vdd.  A getnode abort, without a string argument, will
              erase the list of names previously created  by  calling  getnode
              abort  with  string arguments.  Getnode can be safely aborted at
              any time by typing the interrupt  character,  usually  ^C.   See
              Tutorial  #11:   Using  IRSIM  and  RSIM  with  Magic  for  more
              information on this command.

       grid [xSpacing [ySpacing [xOrigin yOrigin]]]

       grid off
              If no arguments are given, a one-unit grid is toggled on or  off
              in  the window underneath the cursor.  Grid off always turns the
              grid off, regardless of whether it was on or off previously.  If
              numerical  arguments are given, the arguments determine the grid
              spacing and origin for the window under the cursor.  In its most
              general  form,  grid  takes four integer arguments.  XOrigin and
              yOrigin specify an origin for the grid:  horizontal and vertical
              grid  lines will pass through this point.  XSpacing and ySpacing
              determine the number of units between adjacent grid  lines.   If
              xOrigin and yOrigin are omitted, they default to 0.  If ySpacing
              is also omitted, the xSpacing value is used for  both  spacings.
              Grid  parameters  will be retained for a window until explicitly
              changed by another grid command.  When the grid is displayed,  a
              solid box is drawn to show the origin of the edit cell.

       identify instance_id
              Set  the  instance  identifier  of  the  selected  cell  use  to
              instance_id.  Instance_id must  be  unique  among  all  instance
              identifiers  in  the  parent  of  the selected cell.  Initially,
              Magic guarantees uniqueness of identifiers by giving  each  cell
              an  initial  identifier  consisting  of the cell definition name
              followed by an underscore and a small integer.

       iroute subcommand [args]
              This command provides an  interactive  interface  to  the  Magic
              maze-router.   Routing  is done one connection at a time.  Three
              internal hint layers, magnet, fence, and rotate, allow the  user
              to  guide  routing  graphically.   Routes  are  chosen  close to
              magnets (if possible), routing does not cross fence  boundaries,
              and  rotate  areas  reverse the preferred routing directions for
              each layer.  The maze-router seeks to find a  lowest-cost  path.
              Parameters  specifying costs for horizontal and vertical routing
              on each layer, cost for jogs and contacts, and  cost  (per  unit
              area)  for  distance  between a path and magnets, help determine
              the nature of the  routes.   Several  search  parameters  permit
              tuning  to  achieve  acceptable  routes  in  as  short a time as
              possible.  Routing can  always  be  interrupted  with  ^C.   The
              iroute subcommands are as follows:

              iroute Routes from cursor to inside box.

              iroute contact [type] [parameter] [value1] ... [valuen]
                     An asterisk, *, can be used for type and parameter.  This
                     command is for setting and examining  parameters  related
                     to contacts.

              iroute help [subcommand]
                     Summarizes  irouter  commands.  If a subcommand is given,
                     usage information for that subcommand is printed.

              iroute layers [type] [parameter] [value1] ... [valuen]
                     An asterisk, *, can be used for type and parameter.  This
                     command  is  for setting and examining parameters related
                     to route layers.

              iroute route [options]
                     Invokes the router.  Options are as follows:
                          -sLayers layers = layers route may start on
                          -sCursor = start route at cursor (DEFAULT)
                          -sLabel name = start route at label of given name
                          -sPoint x y = start route at given coordinates
                          -dLayers layers = layers route may end on
                          -dBox = route to box (DEFAULT)
                          -dLabel name = route to label of given name
                          -dRect xbot ybot xtop ytop = route to rectangle of given coordinates
                          -dSelection = route to selection

              iroute saveParameters <filename>
                     Saves  all  current  irouter  parameter  settings.    The
                     parameters  can  be  restored  to  these  values with the
                     command ``source filename''.

              iroute search [searchParameter] [value]
                     Allows parameters controlling the search to be  modified.
                     If  routing  is  too  slow  try  increasing rate.  If the
                     router is producing bad results, try reducing rate.   Its
                     a good idea to make width at least twice as big as rate.

              iroute   spacings   [route-type]  [type]  [spacing]  ...  [typen
              spacingn]
                     Default minimum spacings between a route-type  placed  by
                     the  router  and  other  types  are  derived from the drc
                     section of the technology  file.   The  defaults  can  be
                     overridden  by this command.  The special type SUBCELL is
                     used to specify minimum spacing to unexpanded subcells.

              iroute verbosity [level]
                     Controls the number of messages printed during routing:
                          0 = errors and warnings only,
                          1 = brief,
                          2 = lots of statistics.

              iroute version
                     Prints irouter version information.

              iroute wizard [wizardparameter] [value]
                     Used to examine and set miscellaneous  parameters.   Most
                     of these are best left alone by the unadventurous user.

       label string [pos [layer]]
              A  label  with  text  string  is positioned at the box location.
              Labels may cover points, lines, or  areas,  and  are  associated
              with specific layers.  Normally the box is collapsed to either a
              point or to a line (when labeling  terminals  on  the  edges  of
              cells).   Normally also, the area under the box is occupied by a
              single layer.  If no layer argument is specified, then the label
              is  attached  to  the  layer under the box, or space if no layer
              covers the entire area of the box.  If layer  is  specified  but
              layer  doesn't  cover the entire area of the box, the label will
              be moved to another layer or space.  Labels  attached  to  space
              will  be considered by CIF processing programs to be attached to
              all layers overlapping the area of the label.  Pos is  optional,
              and  specifies  where the label text is to be displayed relative
              to the box (e.g. ``north'').  If pos  isn't  given,  Magic  will
              pick  a position to ensure that the label text doesn't stick out
              past the edge of the cell.

       layers Prints out the names of all the layers defined for  the  current
              technology.

       load [file]
              Load  the  cell  hierarchy  rooted  at  file.mag into the window
              underneath the cursor.  If no file is supplied,  a  new  unnamed
              cell  is  created.   The  root cell of the hierarchy is made the
              edit cell unless there is already an edit cell  in  a  different
              window.

       move [direction [amount]]

       move to x y
              If  no  arguments  are  given, the selection is picked up by the
              point underneath the lower-left corner of the box and  moved  so
              that  this  point  lies at the cursor location.  If direction is
              given, it must be  a  Manhattan  direction  (e.g.  north).   The
              selection  is  moved in that direction by amount.  If the box is
              in the same window as the selection, it is  moved  too.   Amount
              defaults  to 1.  Selected material that is not in the edit cell,
              is not affected.  The second form of the command  is  as  though
              the  cursor  were  pointing  to  (x, y)  in  the  edit cell; the
              selection is picked up  by  the  point  beneath  the  lower-left
              corner of the box and moved so that this point lies at (x, y).

       paint layers
              The area underneath the box is painted in layers.

       path [searchpath]
              This  command  tells  Magic where to look for cells.  Searchpath
              contains a list of directories separated by colons or spaces (if
              spaces  are used, then searchpath must be surrounded by quotes).
              When looking for a cell, Magic will check each directory in  the
              path  in  order,  until  the  cell is found.  If the cell is not
              found anywhere in the  path,  Magic  will  look  in  the  system
              library  for  it.   If  the  path  command  is  invoked  with no
              arguments, the current search path is printed.

       plot option [args]
              Used to generate hardcopy plots direct from Magic.  Options  and
              args are used in the following ways:

              plot gremlin file [layers]
                     Generate a Gremlin-format description of everything under
                     the box, and write the description in  file.   If  layers
                     isn't  specified,  paint, labels, and unexpanded subcells
                     are all included in the Gremlin file just as they  appear
                     on  the  screen.   If  layers is specified, then just the
                     indicated layers are output in the Gremlin file.   Layers
                     may  include  the special layers labels and subcell.  The
                     Gremlin file is scaled to have a total size  between  256
                     and 512 units; you should use the width and/or height Grn
                     commands to ensure that the printed version is  the  size
                     you   want.   Use  the  mg  stipples  in  Grn.   No  plot
                     parameters are used in Gremlin plotting.

              plot help
                     Print a short synopsis of all the plot command options.

              plot parameters [name value]
                     If  plot  parameters  is  invoked  with   no   additional
                     arguments,  the values for all of the plot parameters are
                     printed.  If name and value are provided,  then  name  is
                     the name of a plot parameter and value is a new value for
                     it.  Plot parameters are used to control various  aspects
                     of  plotting;   all  of  them have ``reasonable'' initial
                     values.  Most of the parameters available now are used to
                     control Versatec-style plotting.  They are:

                     cellIdFont
                            The  name of the font to use for cell instance ids
                            in Versatec plots.  This must be a file  in  Vfont
                            format.

                     cellNameFont
                            The  name  of  the  font  to use for cell names in
                            Versatec plots.  This must  be  a  file  in  Vfont
                            format.

                     color  If this is set to true, the :plot versatec command
                            will generate output  suitable  for  a  four-color
                            Versatec  plotter, using the styles defined in the
                            colorversatec style of the  plot  section  of  the
                            technology file.  If color is false (the default),
                            then :plot versatec  generates  normal  black-and-
                            white plots.

                     directory
                            The  name  of  the  directory  in  which to create
                            raster files for the Versatec.  The  raster  files
                            have  names  of  the  form  magicPlotXXXXXX, where
                            XXXXXX is a process-specific identifier.

                     dotsPerInch
                            Indicates how many dots per inch there are on  the
                            Versatec printer.  This parameter is used only for
                            computing the scale factor for plotting.  Must  be
                            an integer greater than zero.

                     labelFont
                            The name of the font to use for labels in Versatec
                            plots.  This must be a file in Vfont format.

                     printer
                            The name of the printer to which to spool Versatec
                            raster files.

                     showcellnames
                            If  ``true''  (the  default)  then  the  name  and
                            instance-identifier of each unexpanded subcell  is
                            displayed   inside  its  bounding  box.   If  this
                            parameter is ``false'' then only the bounding  box
                            of the cell is displayed.

                     spoolCommand
                            The  command  used to spool Versatec raster files.
                            This must be a text string containing  two  ``%s''
                            formatting  fields.   The  first  ``%s''  will  be
                            replaced with the printer name, and the second one
                            will be replaced with the name of the raster file.

                     swathHeight
                            How  many  raster  lines  of  Versatec  output  to
                            generate in memory at one time.  The  raster  file
                            is generated in swaths in order to keep the memory
                            requirements    reasonable.     This     parameter
                            determines  the size of the swaths.  It must be an
                            integer  greater  than  zero,  and  should  be   a
                            multiple  of  16 in order to avoid misalignment of
                            stipple patterns.

                     width  The number of pixels across the Versatec  printer.
                            Must  be an integer greater than 0, and must be an
                            even multiple of 32.

              plot versatec [size [layers]]
                     Generate a raster file describing all the the information
                     underneath  the  box in a format suitable for printing on
                     Versatec black-and-white or color printers, and spool the
                     file  for  printing.   See  the plot parameters above for
                     information about the parameters that are used to control
                     Versatec  plotting.  Size  is  used to scale the plot:  a
                     scalefactor is chosen so that the area of the box is size
                     inches  across on the printed page.  Size defaults to the
                     width  of  the  printer.   Layers  selects  which  layers
                     (including  labels and subcells) to plot;  it defaults to
                     everything visible on the screen.

       plow direction [layers]

       plow option [args]
              The first form of this command invokes the plowing operation  to
              stretch  and/or  compact  a  cell.   Direction  is  a  Manhattan
              direction.  Layers is an optional  collection  of  mask  layers,
              which  defaults to *.  One of the edges of the box is treated as
              a plow and dragged to the opposite edge of  the  box  (e.g.  the
              left  edge is used as the plow when plow right is invoked).  All
              edges on layers that lie in the plow's path are pushed ahead  of
              it,  and  they push other edges ahead of them to maintain design
              rules, connectivity, and transistor and contact sizes.  Subcells
              are  moved  in their entirety without being modified internally.
              Any mask information overlapping a subcell moved by  plowing  is
              also  moved by the same amount.  Option and args are used in the
              following ways:

              plow boundary
                     The box specifies  the  area  that  may  be  modified  by
                     plowing.   This  area  is highlighted with a pale stipple
                     outline.  Subsequent plows are not allowed to modify  any
                     area  outside  that specified by the box; if they do, the
                     distance  the  plow  moves  is  reduced  by   an   amount
                     sufficient   to  insure  that  no  geometry  outside  the
                     boundary gets affected.

              plow help
                     Prints a short synopsis of all the plow command options.

              plow horizon n

              plow horizon
                     The first form sets the plowing jog horizon to  n  units.
                     The  second  form  simply  prints  the  value  of the jog
                     horizon.  Every time plowing considers introducing a  jog
                     in  a  piece of material, it looks up and down that piece
                     of material for a distance equal to the jog horizon.   If
                     it  finds  an  existing jog within this distance, it uses
                     it.  Only if no jog is found within the jog horizon  does
                     plowing  introduce one of its own.  A jog horizon of zero
                     means that plowing will always introduce new  jogs  where
                     needed.   A  jog  horizon of infinity (plow nojogs) means
                     that plowing will not introduce any new jogs of its own.

              plow jogs
                     Re-enable jog  insertion  with  a  horizon  of  0.   This
                     command is equivalent to plow horizon 0.

              plow noboundary
                     Remove  any  boundary  specified  with  a  previous  plow
                     boundary command.

              plow nojogs
                     Sets the  jog  horizon  to  infinity.   This  means  that
                     plowing  will  not introduce any jogs of its own; it will
                     only use existing ones.

              plow nostraighten
                     Don't  straighten  jogs  automatically  after  each  plow
                     operation.

              plow selection [direction [distance]]
                     Like  the  move  or  stretch commands, this moves all the
                     material in the selection that belongs to the edit  cell.
                     However,  any material not in the selection is pushed out
                     of its way, just as though each piece  of  the  selection
                     were plowed individually.  If no arguments are given, the
                     selection is picked up by the point underneath the lower-
                     left corner of the box and plowed so that this point lies
                     at the cursor location.  The box is moved along with  the
                     selection.  If direction is given, it must be a Manhattan
                     direction (e.g. north).  The selection is moved  in  that
                     direction by amount.  If the box is in the same window as
                     the selection, it is moved too.  Amount  defaults  to  1.
                     If  there  is  selected  material  that isn't in the edit
                     cell, it is ignored (note that  this  is  different  from
                     select  and  move).   If  direction  isn't  given and the
                     cursor isn't exactly left, right, up, or  down  from  the
                     box  corner,  then Magic first rounds the cursor position
                     off to a position that is  one  of  those  (whichever  is
                     closest).

              plow straighten
                     Straighten  jogs automatically after each plow operation.
                     The effect will be as though the straighten command  were
                     invoked   after   each  plow  operation,  with  the  same
                     direction, and over the area changed by plowing.

       resist cell [tolerance]
              This command  is  similar  to  extresist  above,  but  used  for
              extracting  resistance  networks for individual nodes.  Only the
              node underneath the box is processed.  The network for this node
              is  output  to  the  file cell.res.ext.  See the description for
              extresist for an explanation of tolerance.

       route option [args]
              This command, with no option or arg, is used to generate routing
              using  the  Magic  router  in  the edit cell to make connections
              specified in the current netlist.  The box is used  to  indicate
              the routing area:  no routing will be placed outside the area of
              the box.  The new wires are placed in the  edit  cell.   Options
              and args have the following effects:

              route end [real]
                     Print  the  value of the channel end constant used by the
                     channel router.  If a value is supplied, the channel  end
                     constant  is set to that value.  The channel end constant
                     is a dimensionless multiplier used  to  compute  how  far
                     from  the  end of a channel to begin preparations to make
                     end connections.

              route help
                     Print a short synopsis of all the route command options.

              route jog [int]
                     Print the value of the minimum jog  length  used  by  the
                     channel  router.  If a value is supplied, the minimum jog
                     length is set to that value.  The channel router makes no
                     vertical  jogs  shorter  than  the  minimum  jog  length,
                     measured in router grid units.  Higher  values  for  this
                     constant  may  improve  the  quality  of  the  routing by
                     removing unnecessary  jogs;  however,  prohibiting  short
                     jogs may make some channels unroutable.

              route metal
                     Toggle  metal  maximization on or off.  The route command
                     routes the preferred  routing  layer  (termed  ``metal'')
                     horizontally  and the alternate routing layer vertically.
                     By default wires on the alternate routing layer are  then
                     converted,  as  much  as possible, to the preferred layer
                     before being painted into  the  layout.   Enabling  metal
                     maximization   improves  the  quality  of  the  resulting
                     routing, since the preferred routing layer generally  has
                     better  electrical  characteristics;  however,  designers
                     wishing to do hand routing after  automatic  routing  may
                     find  it  easier  to  disable metal maximization and deal
                     with a layer-per-direction layout.

              route netlist [file]
                     Print the name of the current netlist.  If a file name is
                     specified,  it is opened if possible, and the new netlist
                     is loaded.   This  option  is  provided  primarily  as  a
                     convenience  so you need not open the netlist menu before
                     routing.

              route obstacle [real]
                     Print the obstacle constant used by the  channel  router.
                     If  a  value is supplied, set the channel router obstacle
                     constant to that  value.   The  obstacle  constant  is  a
                     dimensionless  multiplier  used  in  deciding  how far in
                     front of an obstacle  the  channel  router  should  begin
                     jogging  nets  out  of  the way.  Larger values mean that
                     nets will jog out of the way earlier;  however,  if  nets
                     jog out of the way too early routing area is wasted.

              route origin [x y]
                     Print  the  x-  and  y-coordinates  of  the origin of the
                     routing grid.  By default, the routing grid  starts  from
                     (0,0).   However,  by  supplying an x and y coordinate to
                     the route origin command, the origin can be  set  to  any
                     other  value.   This  command  is  primarily  useful when
                     routing a chip that has been designed with routing on the
                     same pitch as the router will use, but where the left and
                     bottom edges of the pre-existing routing  don't  line  up
                     with  the  routing  grid  lines  (for  example,  the pre-
                     existing routing might have been centered on routing grid
                     lines).  The alternative to specifying a different origin
                     for the routing  grid  would  be  to  translate  all  the
                     material  in  the cell to be routed so that the prewiring
                     lined up properly with routing grid lines.

              route settings
                     Print the values of all router parameters.

              route steady [int]
                     Print the  value  of  the  channel  router's  steady  net
                     constant.   If  a  value  is supplied, set the steady net
                     constant to the value.  The steady net constant, measured
                     in  router  grid units, specifies how far beyond the next
                     terminal the channel router should look for a conflicting
                     terminal before deciding that a net is rising or falling.
                     Larger values mean that the  net  rises  and  falls  less
                     often.

              route tech
                     Print  the  router technology information.  This includes
                     information such  as  the  names  of  the  preferred  and
                     alternate  routing  layers, their wire widths, the router
                     grid spacing, and the contact size.

              route viamin
                     Minimize  vias  in  (previously)  routed  netlist.   This
                     subcommand  removes unnecessary layer changes in all nets
                     in the  current  netlist  to  minimize  via  count.   The
                     preferred  routing layer, layer1 in the router section of
                     the technology file, is favored by the  algorithm.   Note
                     that  ``route viamin'' is an independent routing postpass
                     that can be applied even if the routing was not generated
                     by  the  route  command,  provided  the layers and widths
                     agree with the router section of the technology file.

              route vias [int]
                     Print the value of the metal maximization  via  constant.
                     If  a  value  is  supplied,  set  the via constant to the
                     value.  The via constant, measured in router grid  units,
                     represents  the  tradeoff  between metal maximization and
                     the via count.  In many cases it is possible  to  convert
                     wiring on the alternate routing layer into routing on the
                     preferred routing layer (``metal'')  at  the  expense  of
                     introducing  one or two vias.  The via constant specifies
                     the amount of converted wiring that makes  it  worthwhile
                     to add vias to the routing.

       rsim [options] [filename]
              Runs  rsim under Magic.  See Tutorial #11:  Using IRSIM and RSIM
              with Magic for more information on what options  and  files  are
              required by rsim.  Normally, IRSIM requires a parameter file for
              the technology and a .sim file describing the circuit.

              The rsim command without any options can  be  used  to  interact
              with  a previously-started rsim.  Type rsim and you will see the
              rsim prompt.  To get back to magic, type q.

       save [name]
              Save the edit cell on disk.  If the edit cell is  currently  the
              ``(UNNAMED)''  cell,  name  must  be specified; in this case the
              edit cell is renamed to name as well as being saved in the  file
              name.mag.   Otherwise, name is optional.  If specified, the edit
              cell is saved in the file name.mag; otherwise, it  is  saved  in
              the file from which it was originally read.

       see option
              This command is used to control which layers are to be displayed
              in the window under the cursor.  It has several forms:

              see no layers
                     Do not display the given layers in the window  under  the
                     cursor.   If  labels  is  given  as  a  layer name, don't
                     display labels in that window either.  If errors is given
                     as  a  layer, no design-rule violations will be displayed
                     (the checker will continue to run, though).  If layers is
                     given  as  "*",  all  mask  layers  will be disabled, but
                     errors and labels will still be shown.  See the  "LAYERS"
                     section at the end of this manual page for an explanation
                     of layer naming in Magic.

              see layers
                     Reenable display of the  given  layers.   Note  that  "*"
                     expands  to  all  mask  layers,  but does not include the
                     label or error layers.  See the "LAYERS" section  at  the
                     end of this manual page for details.

              see no Don't  display  any  mask layers or labels.  Only subcell
                     bounding boxes will be displayed.

              see    Reenable display of all mask layers, labels, and errors.

              see allSame
                     Display all  cells  the  same  way.   This  disables  the
                     facility  where  the  edit  cell  is  displayed in bright
                     colors and non-edit cells are in paler colors.  After see
                     allSame, all mask information will be displayed in bright
                     colors.

              see no allSame
                     Reenable the facility where non-edit cells are  drawn  in
                     paler colors.

       select option
              This  command  is  used  to  select  paint, labels, and subcells
              before operating on them with commands like move  and  copy  and
              delete.  It has several forms:

              select If  the  cursor is over empty space, then this command is
                     identical to select cell.  Otherwise, paint is  selected.
                     The  first  time the command is invoked, a chunk of paint
                     is selected: the largest rectangular area of material  of
                     the  same  type  visible  underneath  the cursor.  If the
                     command is invoked again without moving the  cursor,  the
                     selection is extended to include all material of the same
                     type, regardless of shape.  If the command is  invoked  a
                     third  time,  the  selection is extended again to include
                     all material that is visible and  electrically  connected
                     to the point underneath the cursor.

              select more
                     This  command  is  identical  to  select  except that the
                     selection is not first cleared.  The result is to add the
                     newly-selected   material  to  what  is  already  in  the
                     selection.

              select less
                     This chooses  material  just  as  select  does,  but  the
                     material is removed from the selection, rather than added
                     to it.  The result is to deselect the chosen material.

              select [more | less] area layers
                     Select material by area.  If layers  are  not  specified,
                     then  all  paint, labels, and unexpanded subcells visible
                     underneath the box are selected.  If layers is specified,
                     then   only  those  layers  are  selected.   If  more  is
                     specified, the new  material  is  added  to  the  current
                     selection   rather   than   replacing  it.   If  less  is
                     specified, the new material is removed from the selection
                     (deselected).

              select [more | less] cell name
                     Select  a  subcell.   If  name  isn't given, this command
                     finds a subcell that is visible underneath the cursor and
                     selects  it.   If  the command is repeated without moving
                     the cursor then it will step  through  all  the  subcells
                     under  the  cursor.  If name is given, it is treated as a
                     hierarchical instance identifier starting from  the  root
                     of  the  window underneath the cursor.  The named cell is
                     selected.  If more is specified, the new subcell is added
                     to  the  current  selection  instead of replacing it.  If
                     less is specified, the new subcell is  removed  from  the
                     selection (deselected).

              select clear
                     Clear  out  the  selection.   This  does  not  affect the
                     layout;  it merely deselects everything.

              select help
                     Print a short synopsis of the selection commands.

              select save cell
                     Save all the information in the selection as a Magic cell
                     on disk.  The selection will be saved in file cell.mag.

              select and the see command
                     Select  interacts  with  the see command.  When selecting
                     individual pieces of material, only  visible  layers  are
                     candidates for selection.  When selecting an entire area,
                     however,  both  visible  and  non-visible   material   is
                     selected.    This   behavior  allows  entire  regions  of
                     material to be moved, even if see has been used  to  turn
                     off the display of some of the layers.

       sideways
              Flip  the  selection left-to-right about a vertical axis running
              through the center of the selection's area.  If the  box  is  in
              the  same  window as the selection, it is flipped too.  Selected
              material not in the edit cell is not affected.

       simcmd cmd
              Sends the command cmd to rsim for execution.  See Tutorial  #11:
              Using IRSIM and RSIM with Magic for more information.

       snap [on]

       snap [off]
              Control  whether  the  box  and  point  are  snapped to the grid
              selected for the windows in which they appear (the grid was  set
              by  the grid command), or to the standard 1x1 grid.  The default
              is for snapping to be off, i.e., snapping to a 1x1  grid.   With
              no arguments, snap prints whether snapping is enabled or not.

       startrsim [options] [filename]
              Similar  to the rsim command, except it returns to Magic as soon
              as rsim is started.  See Tutorial #11:   Using  IRSIM  and  RSIM
              with Magic for more information.

       straighten direction
              Straighten  jogs  in wires underneath the box by pulling them in
              direction.  Jogs are only straightened if doing so will cause no
              additional geometry to move.

       stretch [direction [amount]]
              This  command is identical to move except that simple stretching
              occurs as the selection is moved.  Each piece of  paint  in  the
              selection  causes the area through which it's moved to be erased
              in that layer.  Also, each piece of paint in the selection  that
              touches  unselected  material  along  its back side causes extra
              material to be painted to fill in the gap left by the move.   If
              direction  isn't given and the cursor isn't exactly left, right,
              up, or down from the box corner, then  Magic  first  rounds  the
              cursor  position  off  to  a  position  that  is  one  of  those
              (whichever is closest).

       tool [name | info]
              Change the current tool.  The result is that the cursor shape is
              different  and  the  mouse  buttons  mean different things.  The
              command tool info prints out the meanings of the buttons for the
              current tool.  Tool name changes the current tool to name, where
              name is one of box, wiring, or netlist.  If tool is invoked with
              no  arguments,  it  picks  a  new  tool  in  circular  sequence:
              multiple invocations will cycle through  all  of  the  available
              tools.

       unexpand
              Unexpand  all  cells  that  touch  the  box but don't completely
              contain it.

       upsidedown
              Flip the selection upside down about a horizontal  axis  running
              through  the  center  of the selection's area.  If the box is in
              the same window  as  the  selection  then  it  is  flipped  too.
              Selected material that is not in the edit cell is not changed.

       what   Print out information about all the things that are selected.

       wire option [args]
              This  command provides a centerline-wiring style user interface.
              Option and args specify a particular wiring option, as described
              below.   Some  of  the  options can be invoked via mouse buttons
              when the wiring tool is active.

              wire help
                     Print out a synopsis of the various wiring commands.

              wire horizontal
                     Just like wire leg except that the new segment is  forced
                     to be horizontal.

              wire leg
                     Paint  a  horizontal or vertical segment of wire from one
                     side of the box over to the  cursor's  x-  or  y-location
                     (respectively).   The  direction (horizontal or vertical)
                     is chosen so as to produce the longest possible  segment.
                     The segment is painted in the current wiring material and
                     thickness.  The new segment is selected, and the  box  is
                     placed at its tip.

              wire switch [layer width]
                     Switch  routing  layers  and  place  a contact at the box
                     location.  The contact type is chosen to connect the  old
                     and  new  routing  materials.   The  box is placed at the
                     position of the contact, and the contact is selected.  If
                     layer  and  width are specified, they are used as the new
                     routing material and width, respectively.   If  they  are
                     not  specified,  the new material and width are chosen to
                     correspond to the material underneath the cursor.

              wire type [layer width]
                     Pick a material and width for wiring.  If layer and width
                     are  not  given,  then  they are chosen from the material
                     underneath the cursor, a  square  chunk  of  material  is
                     selected  to  indicate  the  layer  and  width  that were
                     chosen, and the box is placed over this chunk.  If  layer
                     and  width  are  given, then this command does not modify
                     the box position.

              wire vertical
                     Just like wire leg except that the new segment is  forced
                     to be vertical.

       writeall [force]
              This command steps through all the cells that have been modified
              in this edit session and gives you a chance to write  them  out.
              If  the  force  option  is specified, then ``autowrite'' mode is
              used:  all modified  cells  are  automatically  written  without
              asking for permission.

COMMANDS FOR ALL WINDOWS

       These  commands  are  not  used  for  layout,  but are instead used for
       overall, housekeeping functions.  They are valid in all windows.

       closewindow
              The window under the cursor is closed.  That area of the  screen
              will now show other windows or the background.

       echo [-n] str1 str2 ... strN
              Prints  str1  str2  ...  strN  in  the text window, separated by
              spaces and followed by a newline.  If the -n switch is given, no
              newline is output after the command.

       help [pattern]
              Displays a synopsis of commands that apply to the window you are
              pointing to.  If pattern is given then only command descriptions
              containing the pattern are printed.  Pattern may contain '*' and
              '?' characters, which match a string of non-blank characters  or
              a single non-blank character (respectively).

       logcommands [file [update]]]
              If  file is given, all further commands are logged to that file.
              If no arguments are given, command logging  is  terminated.   If
              the  keyword  update is present, commands are output to the file
              to cause the screen to be updated after each  command  when  the
              command file is read back in.

       macro [char [command]]
              Command  is  associated  with  char such that typing char on the
              keyboard is equivalent to typing ``:'' followed by command.   If
              command  is  omitted, the current macro for char is printed.  If
              char is also omitted, then all current macros are  printed.   If
              command  contains  spaces,  tabs,  or semicolons then it must be
              placed in quotes.  The semicolon acts  as  a  command  separator
              allowing multiple commands to be combined in a single macro.

       openwindow [cell]
              Open  a  new,  empty  window at the cursor position.  Placement,
              sizing, and  methods  of  manipulation  are  determined  by  the
              conventions  of the window system in use.  If cell is specified,
              then that cell is displayed in the new  window.   Otherwise  the
              area of the box will be displayed in the new window.

       pushbutton button action
              Simulates  a  button  push.   Button  should be left, middle, or
              right.  Action is one of up, or down.  This command is  normally
              invoked  only  from  command scripts produced by the logcommands
              command.

       quit   Exit Magic and return to the shell.  If any cells, colormaps, or
              netlists  have  changed  since they were last saved on disk, you
              are given a chance to abort the command and continue in Magic.

       redo [n]
              Redo the last n  commands  that  were  undone  using  undo  (see
              below).   The  number  of commands to redo defaults to 1 if n is
              not specified.

       redraw Redraw the graphics screen.

       scroll direction [amount]
              The window under the cursor is moved by  amount  screenfulls  in
              direction  relative  to  the  circuit.  If amount is omitted, it
              defaults to 0.5.

       send type command
              Send a command to the window client named by type.   The  result
              is  just  as if command had been typed in a window of type type.
              See specialopen, below, for the allowable types of windows.

       setpoint [x y [windowID]]
              Fakes the location  of  the  cursor  up  until  after  the  next
              interactive  command.   Without  arguments,  just prints out the
              current point location.  This command is normally  invoked  only
              from command scripts.

              If  windowID  is  given, then the point is assumed to be in that
              window's screen coordinate system rather  than  absolute  screen
              coordinates.

       sleep n
              Causes Magic to go to sleep for n seconds.

       source filename
              Each line of filename is read and processed as one command.  Any
              line  whose  last  character  is  backslash  is  joined  to  the
              following line.  The commands setpoint, pushbutton, echo, sleep,
              and updatedisplay are useful in command files, and  seldom  used
              elsewhere.

       specialopen [x1 y1 x2 y2] type [args]
              Open  a  window  of  type  type.   If  the  optional x1 y1 x2 y2
              coordinates are given, then the new window will have  its  lower
              left  corner  at screen coordinates (x1, y1) and its upper right
              corner at screen coordinates (x2, y2).  The args  arguments  are
              interpreted  differently  depending upon the type of the window.
              These types are known:

              layout This type of window is used to edit  a  VLSI  cell.   The
                     command takes a single argument which is used as the name
                     of a cell to be loaded.  The command
                                           open filename
                     is a shorthand for the command
                                   specialopen layout filename.

              color  This type of window allows the color map  to  be  edited.
                     See the section COMMANDS FOR COLORMAP EDITING below.

              netlist
                     This  type  of window presents a menu that can be used to
                     place labels, and to generate and  edit  net-lists.   See
                     the section COMMANDS FOR NETLIST EDITING below.

       underneath
              Move  the  window pointed at so that it lies underneath the rest
              of the windows.

       undo [count]
              Undoes the last count commands.  Almost all  commands  in  Magic
              are   now   undo-able.    The   only   holdouts  left  are  cell
              expansion/unexpansion, and window modifications (change of size,
              zooming, etc.).  If count is unspecified, it defaults to 1.

       updatedisplay
              Update  the display.  This command is normally invoked only from
              command scripts.  Scripts  that  do  not  contain  this  command
              update the screen only at the end of the script.

       view   Choose  a  view  for  the  window  underneath the cursor so that
              everything in the window is visible.

       windscrollbars [on|off]
              Set the flag that determines if new  windows  will  have  scroll
              bars.

       windowpositions [file]
              Write  out the positions of the windows in a format suitable for
              the source command.  If file is specified, then write it out  to
              that file instead of to the terminal.

       zoom [factor]
              Zoom the view in the window underneath the cursor by factor.  If
              factor is less than 1, we zoom in; if it is greater than one, we
              zoom out.

MOUSE BUTTONS FOR NETLIST WINDOWS

       When  the   netlist menu is opened using the command special netlist, a
       menu appears on the screen.  The colored  areas  on  the  menu  can  be
       clicked  with various mouse buttons to perform various actions, such as
       placing labels and editing netlists.  For details on  how  to  use  the
       menu,  see  ``Magic  Tutorial  #7:  Netlists  and  Routing''.  The menu
       buttons all correspond to commands that could be typed  in  netlist  or
       layout windows.

COMMANDS FOR NETLIST WINDOWS

       The  commands  described below work if you are pointing to the interior
       of the netlist menu.  They may also be invoked when you are pointing at
       another  window  by  using the send netlist command.  Terminal names in
       all of the commands below are hierarchical names consisting of zero  or
       more  cell  use  ids  separated by slashes, followed by the label name,
       e.g. toplatch/shiftcell_1/in.  When processing the terminal paths,  the
       search always starts in the edit cell.

       add term1 term2
              Add  the  terminal  named  term1  to the net containing terminal
              term2.  If term2 isn't in a net yet, make a new  net  containing
              just term1 and term2.

       cleanup
              Check  the netlist to make sure that for every terminal named in
              the list there is at least one label in the design.  Also  check
              to  make  sure  that  every  net  contains at least two distinct
              terminals, or one terminal with several labels by the same name.
              When  errors  are  found, give the user an opportunity to delete
              offending terminals and nets.  This command can also be  invoked
              by clicking the ``Cleanup'' menu button.

       cull   Examine  the  current  netlist and the routing in the edit cell,
              and remove those nets from the netlist that are already  routed.
              This  command  is  often used after pre-routing nets by hand, so
              the router won't try to implement them again.

       dnet name name ...
              For each name given, delete the net  containing  that  terminal.
              If  no name is given, delete the currently-selected net, just as
              happens when the ``No Net'' menu button is clicked.

       dterm name name ...
              For each name given, delete that terminal from its net.

       extract
              Pick a piece of paint in the edit cell that lies under the  box.
              Starting  from  this,  trace  out all the electrically-connected
              material  in  the  edit  cell.   Where  this  material   touches
              subcells,  find any terminals in the subcells and make a new net
              containing those terminals.  Note:  this is a different  command
              from the extract command in layout windows.

       find pattern [layers]
              Search  the  area  beneath  the box for labels matching pattern,
              which may contain the regular-expression characters ``*'' ``?'',
              ``['',   ``]'',  and  ``\''  (as  matched  by  csh(1);  see  the
              description of the find button in ``Magic Tutorial #7:  Netlists
              and Routing'').  For each label found, leave feedback whose text
              is  the  layer  on  which  the  label  appears,  followed  by  a
              semicolon,  followed  by  the  full hierarchical pathname of the
              label.  The feedback surrounds the area of the label by one unit
              on  all  sides.   (The reason for the one-unit extension is that
              feedback rectangles must have positive area,  while  labels  may
              have  zero  width  or height).  If layers are given, only labels
              attached to those layers are considered.

       flush [netlist]
              The netlist  named  netlist  is  reloaded  from  the  disk  file
              netlist.net.   Any  changes  made  to the netlist since the last
              time it was written are discarded.  If netlist isn't given,  the
              current netlist is flushed.

       join term1 term2
              Join  together  the  nets  containing terminals term1 and term2.
              The result is a single net containing  all  the  terminals  from
              both the old nets.

       netlist [name]
              Select a netlist to work on.  If name is provided, read name.net
              (if it hasn't already been read before) and make it the  current
              netlist.   If name isn't provided, use the name of the edit cell
              instead.

       print [name]
              Print the names of all the terminals in the net containing name.
              If  name isn't provided, print the terminals in the current net.
              This command has the same effect as clicking  on  the  ``Print''
              menu button.

       ripup [netlist]
              This  command  has  two  forms.   If  netlist  isn't typed as an
              argument, then find a piece of paint in the edit cell under  the
              box.   Trace out all paint in the edit cell that is electrically
              connected to the starting piece, and delete all of  this  paint.
              If  netlist  is  typed,  find all paint in the edit cell that is
              electrically connected to any of the terminals  in  the  current
              netlist, and delete all of this paint.

       savenetlist [file]
              Save  the  current netlist on disk.  If file is given, write the
              netlist in file.net.  Otherwise, write the netlist back  to  the
              place from which it was read.

       shownet
              Find  a piece of paint in any cell underneath the box.  Starting
              from this paint, trace out  all  paint  in  all  cells  that  is
              electrically  connected to the starting piece and highlight this
              paint on the screen.  To make the highlights go away, invoke the
              command  with  the  box  over empty space.  This command has the
              same effect as clicking on the ``Show'' menu button.

       showterms
              Find the labels corresponding to each of the  terminals  in  the
              current  netlist,  and generate a feedback area over each.  This
              command has the same effect as clicking on  the  ``Terms''  menu
              button.

       trace [name]
              This  command  is  similar  to  shownet  except  that instead of
              starting from a piece of paint under the  box,  it  starts  from
              each of the terminals in the net containing name (or the current
              net if no name is given).  All connected paint in all  cells  is
              highlighted.

       verify Compare  the current netlist against the wiring in the edit cell
              to make sure that the nets are implemented exactly as  specified
              in  the netlist.  If there are discrepancies, feedback areas are
              created to describe them.  This command can also be  invoked  by
              clicking the ``Verify'' menu button.

       writeall
              Scan  through  all  the netlists that have been read during this
              editing session.  If  any  have  been  modified,  ask  the  user
              whether or not to write them out.

MOUSE BUTTONS FOR COLORMAP WINDOWS

       Color  windows  display  two  sets  of colored bars and a swatch of the
       color being edited.  The left set of color bars is labeled Red,  Green,
       and  Blue;   these correspond to the proportion of red, green, and blue
       in the color being edited.  The right  set  of  bars  is  labeled  Hue,
       Saturation,  and  Value;   these  correspond to the same color but in a
       space whose axes are hue (spectral color), saturation (spectral  purity
       vs. dilution with white), and value (light vs. dark).

       The  value  of a color is changed by pointing inside the region spanned
       by one of the color bars and clicking any mouse button.  The color  bar
       will  change  so that it extends to the point selected by the crosshair
       when the button was pressed.  The color can also be changed by clicking
       a  button over one of the ``pumps'' next to a color bar.  A left-button
       click makes a 1% increment or decrement, and a right-button click makes
       a 5% change.

       The  color being edited can be changed by pressing the left button over
       the current color box in the editing window, then moving the mouse  and
       releasing the button over a point on the screen that contains the color
       to be edited.  A color value can be copied from an  existing  color  to
       the  current  color by pressing the right mouse button over the current
       color box, then releasing the button when the cursor is over the  color
       whose value is to be copied into the current color.

COMMANDS FOR COLORMAP WINDOWS

       These  commands  work if you are pointing to the interior of a colormap
       window.  The commands are:

       color [number]
              Load number as the color being edited  in  the  window.   Number
              must be an octal number between 0 and 377; it corresponds to the
              entry in the color map that is to be edited.  If  no  number  is
              given,  this command prints out the value of the color currently
              being edited.

       load [techStyle displayStyle monitorType]
              Load a new color map.  If no arguments are specified, the  color
              map  for  the current technology style (e.g, mos), display style
              (e.g,  7bit),  and  monitor  type  (e.g,  std)   is   re-loaded.
              Otherwise,    the    color   map   is   read   from   the   file
              techStyle.displayStyle.monitorType.cmap in the current directory
              or in the system library directory.

       save [techStyle displayStyle monitorType]
              Save the current color map.  If no arguments are specified, save
              the color map in a file determined  by  the  current  technology
              style,  display  style,  and  monitor type as above.  Otherwise,
              save it in the file  techStyle.displayStyle.monitorType.cmap  in
              the current directory or in the system library directory.

DIRECTIONS

       Many  of  the  commands  take  a  direction  as an argument.  The valid
       direction names are north, south, east, west, top,  bottom,  up,  down,
       left,  right,  northeast,  ne, southeast, se, northwest, nw, southwest,
       sw,  and  center.   In  some  cases,  only  Manhattan  directions   are
       permitted,  which  means  only  north,  south,  east,  west,  and their
       synonyms, are allowed.

LAYERS

       The mask layers are different for each technology, and are described in
       the   technology   manuals.   The  layers  below  are  defined  in  all
       technologies:

       *      All mask layers.  Does not include special layers like the label
              layer and the error layer (see below).

       $      All layers underneath the cursor.

       errors Design-rule violations (useful primarily in the see command).

       labels Label layer.

       subcell
              Subcell layer.

       Layer  masks  may  be  formed  by constructing comma-separated lists of
       individual layer names.  The individual layer names may be abbreviated,
       as  long  as  the  abbreviations  are unique.  For example, to indicate
       polysilicon and n-diffusion, use poly,ndiff or ndiff,poly.  The special
       character  -  causes  all  subsequent  layers to be subtracted from the
       layer mask.  For example, *-p means  ``all  layers  but  polysilicon''.
       The  special  character  +  reverses  the  effect  of a previous -; all
       subsequent layers are once again added to the layer mask.

SEE ALSO

       ext2sim(1),   ext2spice(1),   cmap(5),   dstyle(5),   ext(5),   sim(5),
       glyphs(5), magic(5), displays(5), net(5)

       Online documentation can be found at the following URLs:
       http://opencircuitdesign.com/magic/
       http://vlsi.cornell.edu/magic/
       The  OpenCircuitDesign  website  contains  HTML  versions  of  all  the
       documentation  found  in  the  Magic  "doc"   subdirectory,   including
       tutorials,  technology  file  manual;  download,  compile  and  install
       instructions, and command reference.

FILES

       ${CAD_ROOT}/magic/sys/.magicstartup file to create default macros
       ~/.magic            user-specific startup command file
       ${CAD_ROOT}/magic/nmos/*some standard nmos cells
       ${CAD_ROOT}/magic/scmos/*some standard scmos cells
       ${CAD_ROOT}/magic/sys/*.cmapcolormap files, see CMAP(5) man page
       ${CAD_ROOT}/magic/sys/*.dstyledisplay style files, see DSTYLE(5) man page
       ${CAD_ROOT}/magic/sys/*.glyphscursor and window bitmap files, see GLYPH(5) man page
       ${CAD_ROOT}/magic/sys/*.techtechnology files, see ``Maintainer's Manual
                           #2: The Technology File''
       ${CAD_ROOT}/displaysconfiguration file for Magic serial-line displays

       CAD_ROOT variable.  If the shell environment variable CAD_ROOT is  set,
       Magic   uses   that   location   instead   of  the  installed  location
       (/usr/local/lib, by default).  Normally one  would  change  the  search
       path (see below) rather than redirect the entire CAD_ROOT location.

       Search  path.   Magic's  system  and  library files, such as technology
       files  and  display-style   files,   normally   are   placed   in   the
       ${CAD_ROOT}/magic area.  However, Magic first tries to find them in the
       user's current directory.  This makes it easier for an individual  user
       to  override installed system files.  The search path is defined by the
       Magic command path,

AUTHORS

       Original:  Gordon Hamachi, Robert Mayo, John Ousterhout, Walter  Scott,
       George Taylor

       Contributors:   Michael Arnold (Magic maze-router and Irouter command),
       Don Stark (new contact scheme, X11 interface,  various  other  things),
       Mike  Chow  (Rsim  interface).   The  X11 driver is the work of several
       people, including Don Stark, Walter Scott, and Doug Pan.

       Developers:  Ongoing development (magic version 6.5  and  higher)  made
       possible by Stefanos Sidiropolous, Tim Edwards, Rajit Manohar, Philippe
       Pouliquen, Michael Godfrey, and others.

       Many other people have contributed to Magic, but it  is  impossible  to
       list them all here.  We appreciate their help!

BUGS

       If  Magic  gets  stuck for some reason, first try typing Control-C into
       the terminal window (in  the  Tcl/Tk  version,  this  is  the  original
       terminal, not the Tk console window).  Most of Magic's lengthy database
       searches are interruptible.  If this doesn't work,  kill  the  process.
       The  Tcl/Tk  version automatically creates periodic backups that may be
       recovered with "magic -r".

       Report bugs to magic-dev@csl.cornell.edu.  Please be specific: tell  us
       exactly what you did to cause the problem, what you expected to happen,
       and what happened instead.  If possible send along small files that  we
       can  use  to reproduce the bug.  A list of known bugs and fixes is also
       available from the above address.  Tell us which version of  magic  you
       are running.