Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
MAGIC(1)		    General Commands Manual		      MAGIC(1)

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 re-
       sources links below).

       Magic uses two windows: one for text and	a separate window for display-
       ing  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 in-
       stead 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	inter-
		     faces  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 op-
		     tions for .Xdefaults files, may be	found in ``Magic Main-
		     tainer'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	appro-
       priate  (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  ex-
       ists.   The .magicrc file format	is described under the source command.
       If magic	is compiled with Tcl/Tk	support, then any magic	or Tcl/Tk com-
       mands  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  but-
       ton.	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  com-
       mand  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 win-
       dows 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 cur-
       sor (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  cur-
	      sor.  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 cor-
		     ners.  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.  Nor-
		     mally 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 but-
		     ton, three	corners	of the box move	in order to place  the
		     selected  corner at the cursor location (the corner oppo-
		     site 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) un-
		     derneath  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  pro-
	      vide 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 indi-
	      cated 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	.magi-
       crc 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  in-
	      stances  in  the x-direction and ysize instances in the y-direc-
	      tion.  Paint and labels are arrayed by copying  them.   Subcells
	      are  not copied, but instead each	instance is turned into	an ar-
	      ray instance with	elements numbered from 0 to xsize-1 in the  x-
	      direction,  and from 0 to	ysize-1	in the y-direction.  The spac-
	      ing 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	 coor-
		     dinates  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 inte-
		     gers.

       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  li-
	      brary 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 op-
		     tions.

	      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	 visi-
		     ble.   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 en-
		     tered, except that	 the  output  is  written  into	 file-
		     Name.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  en-
		     abled,  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 iden-
		     tifies 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 de-
		     termines  how  the	CIF layers are converted to Magic lay-
		     ers.  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  re-
		     quires  the area under the	box to be flattened and	there-
		     fore 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  cur-
		     rent  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 over-
		     lapping cells.

       clockwise [degrees]
	      Rotate the selection by 90, 180 or 270 degrees.  After the rota-
	      tion, 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  di-
	      rection  is given, it must be a Manhattan	direction (e.g.	north,
	      see the ``DIRECTIONS'' section below).  The copy of  the	selec-
	      tion 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 cur-
	      sor were pointing	to (x, y) in the edit cell; a copy of the  se-
	      lection  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  cor-
	      rectly.	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 in-
	      tact, as does the	disk file containing the cell.	Selected mate-
	      rial 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  recheck-
		     ing.   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 back-
		     ground 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 in-
		     tended 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 la-
	      bel,  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	avail-
	      able 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	recur-
	      sively 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)	deter-
	      mines 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  describ-
	      ing  the type of error.  Option and args are used	in the follow-
	      ing ways:

	      extract all
		     All cells in the window beneath  the  cursor  are	re-ex-
		     tracted  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 se-
		     lected, this command uses the upper-leftmost one.

	      extract do [ option ]

	      extract no option
		     Enable or disable various options governing how  the  ex-
		     tractor  will work.  Use :extract do with no arguments to
		     print a list of available options and their current  set-
		     tings.   When the adjust option is	enabled, the extractor
		     will  compute  compensating  capacitance  and  resistance
		     whenever  cells overlap or	abut; if disabled, the extrac-
		     tor 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,	resis-
		     tance governs whether or not node	resistances  are  com-
		     puted.  The coupling option controls whether coupling ca-
		     pacitances	are computed or	not; if	disabled, flat extrac-
		     tion is significantly faster than if coupling capacitance
		     computation is enabled.  Finally, the length  option  de-
		     termines  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  op-
		     tions.

	      extract length [ option args ]
		     Provides  several options for controlling which point-to-
		     point path	lengths	are extracted explicitly.  The extrac-
		     tor  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  ex-
		     traction	of   pathlengths  is  enabled  (``:extract  do
		     length''),	then when the root cell	in an extract  command
		     is	being extracted, the extractor will compute the	short-
		     est and longest path between each	driver	and  each  re-
		     ceiver  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 re-
		     moves all the entries from	both the driver	 and  receiver
		     tables.

	      extract parents
		     Extract  the  currently selected cell and all of its par-
		     ents.  All	of its parents must be	loaded	in  order  for
		     this  to  work  correctly.	  If more than one cell	is se-
		     lected, 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 du-
		     plicate nodenames that don't end in a ``!''  are reported
		     by	leaving	a warning feedback area.  This command is pro-
		     vided 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 dis-
		     able 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  per-
	      formed 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 pro-
	      duce  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  ap-
	      pended  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	resis-
	      tor 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, out-
		     line, 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 ar-
		     eas.

	      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 ex-
		     planation associated with the feedback area is printed.

	      feedback help
		     Prints  a	short synopsis of all the feedback command op-
		     tions.

	      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 exam-
	      ple, if direction	is north, then paint is	sampled	under the bot-
	      tom  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	speci-
	      fied in the current netlist.  (See the route command for further
	      information).   Unlike  the  route  command, this	command	is in-
	      tended 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  pro-
		     vided,  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	possi-
		     ble  (``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 com-
		     mands, 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 ``obsta-
		     cles'' to routing (see ``Tutorial #7: Netlists and	 Rout-
		     ing''  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  op-
		     tions.

	      garoute nowarn
		     If	a given	terminal appears in more than one place	inside
		     a cell, the router	can leave feedback if it is not	possi-
		     ble  to route to all of the places	where the terminal ap-
		     pears.  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 prepara-
		     tion 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) coor-
	      dinates  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 Tu-
	      torial #11:  Using IRSIM and RSIM	with Magic for	more  informa-
	      tion 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  in-
	      stance_id.   Instance_id must be unique among all	instance iden-
	      tifiers in the parent of the selected  cell.   Initially,	 Magic
	      guarantees uniqueness of identifiers by giving each cell an ini-
	      tial 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  mag-
	      nets (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.  Pa-
	      rameters 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  na-
	      ture  of the routes.  Several search parameters permit tuning to
	      achieve acceptable routes	in as short a time as possible.	 Rout-
	      ing  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	param-
		     eters 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	 spac-
	      ingn]
		     Default  minimum  spacings	between	a route-type placed by
		     the router	and other types	are derived from the drc  sec-
		     tion  of  the technology file.  The defaults can be over-
		     ridden 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.  La-
	      bels  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  un-
	      derneath 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  se-
	      lection  is moved	in that	direction by amount.  If the box is in
	      the same window as the selection,	it is moved too.   Amount  de-
	      faults 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  li-
	      brary 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 in-
		     dicated 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 parame-
		     ters 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	 argu-
		     ments,  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 Ver-
			    satec 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  in-
			    stance-identifier  of  each	 unexpanded subcell is
			    displayed inside its bounding box.	If this	param-
			    eter  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  re-
			    placed  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	gener-
			    ate	 in  memory  at	 one time.  The	raster file is
			    generated in swaths	in order to  keep  the	memory
			    requirements  reasonable.	This  parameter	deter-
			    mines the size of the swaths.  It must be an inte-
			    ger	greater	than zero, and should be a multiple of
			    16 in order	to avoid misalignment of stipple  pat-
			    terns.

		     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 in-
		     formation	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 (in-
		     cluding labels and	subcells) to plot;  it defaults	to ev-
		     erything 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	direc-
	      tion.   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  fol-
	      lowing ways:

	      plow boundary
		     The  box specifies	the area that may be modified by plow-
		     ing.  This	area is	highlighted with a pale	 stipple  out-
		     line.   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	suffi-
		     cient 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	 hori-
		     zon.  Every time plowing considers	introducing a jog in a
		     piece of material,	it looks up and	down that piece	of ma-
		     terial  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 plow-
		     ing 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 com-
		     mand is equivalent	to plow	horizon	0.

	      plow noboundary
		     Remove any	boundary specified with	a previous plow	bound-
		     ary command.

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

	      plow nostraighten
		     Don't straighten jogs automatically after each plow oper-
		     ation.

	      plow selection [direction	[distance]]
		     Like the move or stretch commands,	this moves all the ma-
		     terial  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 se-
		     lect and move).  If direction isn't given and the	cursor
		     isn't  exactly left, right, up, or	down from the box cor-
		     ner, 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	direc-
		     tion, and over the	area changed by	plowing.

       resist cell [tolerance]
	      This command is similar to extresist above,  but	used  for  ex-
	      tracting	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 ex-
	      tresist 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, mea-
		     sured in router grid units.  Higher values	for this  con-
		     stant  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 rout-
		     ing, since	the preferred routing layer generally has bet-
		     ter  electrical characteristics; however, designers wish-
		     ing 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	conve-
		     nience so you need	not open the netlist menu before rout-
		     ing.

	      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  di-
		     mensionless  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 rout-
		     ing 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 rout-
		     ing 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-exist-
		     ing 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	 mate-
		     rial 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  con-
		     stant.   If  a value is supplied, set the steady net con-
		     stant to the value.  The steady net constant, measured in
		     router grid units,	specifies how far beyond the next ter-
		     minal 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  of-
		     ten.

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

	      route viamin
		     Minimize vias in (previously) routed netlist.  This  sub-
		     command  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 tech-
		     nology 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 in-
		     troducing	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 dis-
		     play 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 er-
		     rors 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 "*"  ex-
		     pands  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	facil-
		     ity 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  be-
	      fore  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 com-
		     mand  is invoked again without moving the cursor, the se-
		     lection 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  se-
		     lection  is  not first cleared.  The result is to add the
		     newly-selected material to	what is	already	in the	selec-
		     tion.

	      select less
		     This  chooses material just as select does, but the mate-
		     rial 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	speci-
		     fied,  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 un-
		     der the cursor.  If name is given,	it is treated as a hi-
		     erarchical	instance identifier starting from the root  of
		     the  window underneath the	cursor.	 The named cell	is se-
		     lected.  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 lay-
		     out;  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  se-
		     lected.   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 se-
	      lected 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 ma-
	      terial 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 (which-
	      ever 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 com-
	      mand 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:	multi-
	      ple invocations will cycle through all of	the available tools.

       unexpand
	      Unexpand all cells that touch the	box but	don't completely  con-
	      tain 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.  Se-
	      lected 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  lo-
		     cation.   The  contact  type is chosen to connect the old
		     and new routing materials.	 The box is placed at the  po-
		     sition  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 un-
		     derneath  the  cursor,  a square chunk of material	is se-
		     lected 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 ask-
	      ing for permission.

COMMANDS FOR ALL WINDOWS
       These commands are not used for layout, but are instead used for	 over-
       all, 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  spa-
	      ces  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 al-
	      lowing 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 con-
	      ventions 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 be-
	      low).  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 de-
	      faults 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	inter-
	      active command.  Without arguments, just prints out the  current
	      point location.  This command is normally	invoked	only from com-
	      mand 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 follow-
	      ing line.	 The commands setpoint,	pushbutton, echo,  sleep,  and
	      updatedisplay are	useful in command files, and seldom used else-
	      where.

       specialopen [x1 y1 x2 y2] type [args]
	      Open a window of type type.  If the optional x1 y1 x2 y2 coordi-
	      nates  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	inter-
	      preted 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	expan-
	      sion/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 up-
	      date the screen only at the end of the script.

       view   Choose a view for	the window underneath the cursor so  that  ev-
	      erything 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  but-
       tons  all correspond to commands	that could be typed in netlist or lay-
       out 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  ter-
	      minals,  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 ma-
	      terial  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  descrip-
	      tion  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	 argu-
	      ment, then find a	piece of paint in the edit cell	under the box.
	      Trace out	all paint in the edit cell that	is  electrically  con-
	      nected  to the starting piece, and delete	all of this paint.  If
	      netlist is typed,	find all paint in the edit cell	that is	 elec-
	      trically	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 elec-
	      trically 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	start-
	      ing  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 high-
	      lighted.

       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, Satu-
       ration, 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.	Other-
	      wise, the	 color	map  is	 read  from  the  file	techStyle.dis-
	      playStyle.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	direc-
       tion  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 technolo-
       gies:

       *      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 in-
       dividual	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	subse-
       quent 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 docu-
       mentation 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/lo-
       cal/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 peo-
       ple, 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	termi-
       nal,  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)

NAME | SYNOPSIS | DESCRIPTION | COMMANDS -- GENERAL INFORMATION | MOUSE BUTTONS FOR LAYOUT WINDOWS | LONG COMMANDS FOR LAYOUT WINDOWS | COMMANDS FOR ALL WINDOWS | MOUSE BUTTONS FOR NETLIST WINDOWS | COMMANDS FOR NETLIST WINDOWS | MOUSE BUTTONS FOR COLORMAP WINDOWS | COMMANDS FOR COLORMAP WINDOWS | DIRECTIONS | LAYERS | SEE ALSO | FILES | AUTHORS | BUGS

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=magic&manpath=FreeBSD+12.1-RELEASE+and+Ports>

home | help