Provided by: magic_8.3.105+ds.1-1.1_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.

4th Berkeley Distribution                                                                               MAGIC(1)