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.	 Para-
	      meters  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	 para-
		     meters  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	 para-
			    meter  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
		     everything	visible	on the screen.

       plow direction [layers]

       plow option [args]
	      The first	form of	this command invokes the plowing operation  to
	      stretch  and/or compact a	cell.  Direction is a Manhattan	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	mater-
		     ial 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	mater-
		     ial  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
	      (whichever is closest).

       tool [name | info]
	      Change the current tool.	The result is that the cursor shape is
	      different	and the	mouse buttons mean different things.  The 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
	      spaces and followed by a newline.	 If the	-n switch is given, no
	      newline is output	after the command.

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

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

       macro [char [command]]
	      Command is associated with char such that	 typing	 char  on  the
	      keyboard	is equivalent to typing	``:'' followed by command.  If
	      command is omitted, the current macro for	char is	 printed.   If
	      char  is	also omitted, then all current macros are printed.  If
	      command contains spaces, tabs, or	semicolons  then  it  must  be
	      placed in	quotes.	 The semicolon acts as a command separator 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
	      everything in the	window is visible.

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

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

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

MOUSE BUTTONS FOR NETLIST WINDOWS
       When the	 netlist menu is opened	using the command special  netlist,  a
       menu  appears  on  the  screen.	 The  colored areas on the menu	can be
       clicked with various mouse buttons to perform various actions, such  as
       placing	labels	and  editing  netlists.	 For details on	how to use the
       menu, see ``Magic Tutorial #7: Netlists and Routing''.  The  menu  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)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=magic&sektion=1&manpath=FreeBSD+Ports+14.3.quarterly>

home | help