Provided by: magic_7.5.233-2_amd64 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.