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
       resources 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
       instead of plain	X11 ("-d OGL"),	 or  to	 use  24  bit  plane  graphics
       instead	of 8 bit planes	("-d 24BITS") if both are available on a video
       card with overlay support.

       Here are	the options accepted by	Magic:

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

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

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

	      X11    X-windows,	 version  11.  The is the preferred interface.
		     Magic acts	as a client to the X window server and	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
		     options  for  .Xdefaults  files,  may be found in ``Magic
		     Maintainer's Manual #4:  Using Magic Under	X Windows''.

	      XWIND  Simply another name for the X11 driver.
       If no device is specified, Magic	tries to guess which driver is	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
       exists.	 The  .magicrc	file format is described under the source com-
       mand.  If magic is compiled with	Tcl/Tk	support,  then	any  magic  or
       Tcl/Tk  commands	may be used inside the startup file.  The startup file
       name was	changed	to ".magicrc" to avoid conflicts with a	common	system
       file named ".magic".  However, the name ".magic"	will be	searched after
       ".magicrc" for backward compatibility.

COMMANDS -- GENERAL INFORMATION
       Magics uses types of commands:  Key  macros  and	 long  commands.   The
       first  form  consists  of  single-key  (or button) abbreviations	called
       ``macros''; macros are invoked by pressing a single key or  mouse  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)
		     underneath	the crosshair.	If the crosshair is over white
		     space, then the area of the box is	erased.

       Wiring Tool
	      The wiring tool, indicated by an arrow cursor, is	used  to  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
	      instances	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
	      array instance with elements numbered from 0 to xsize-1  in  the
	      x-direction,  and	 from  0  to  ysize-1 in the y-direction.  The
	      spacing between elements of the array is determined by  the  box
	      x- and y-dimensions.

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

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

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

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

	      width [size]

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

	      x1 y1 x2 y2
		     Move the box to the coordinates specified (these  are  in
		     edit  cell	 coordinates if	the edit cell is in the	window
		     under the cursor;	otherwise these	are in the root	 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
	      library  is  the	same as	the name of the	root cell.  Option and
	      args may be used to invoke one of	several	additional operations:

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

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

	      calma labels
		     Output labels whenever writing a Calma output file.

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

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

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

	      calma nolower
		     Convert lower to upper case when outputting labels.

	      calma read file
		     The file file.strm	is read	in Calma format	and  converted
		     to	 a  collection	of Magic cells.	 The current CIF input
		     style determines how the Calma layers  are	 converted  to
		     Magic  layers.   The new cells are	marked for design-rule
		     checking.	Calma format doesn't identify the root of  the
		     collection	 of  cells  read in, so	none of	the cells read
		     will appear on the	display; use load to make  them	 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
		     entered, 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
		     enabled,  area  labels  are written via the 95 cif	exten-
		     sion.  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
		     determines	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
		     requires  the  area  under	 the  box  to be flattened and
		     therefore is slow.

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

	      cif write	fileName
		     Writes out	CIF just as if no arguments had	been  entered,
		     except  that the CIF is written into fileName.cif instead
		     of	using the root cell name for the file name.  The  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
	      direction	 is  given,  it	 must  be  a Manhattan direction (e.g.
	      north, see the ``DIRECTIONS'' section below).  The copy  of  the
	      selection	 is  moved in that direction by	amount.	 If the	box is
	      in the same window as the	selection, it is  moved	 too.	Amount
	      defaults to 1.  The second form of the command behaves as	though
	      the cursor were pointing to (x, y) in the	edit cell; a  copy  of
	      the  selection  is picked	up by the point	beneath	the lower-left
	      corner of	the box	and placed so that this	point lies at (x, y).

       corner direction1 direction2 [layers]
	      This command is similar to fill, except  that  it	 generates  L-
	      shaped  wires that travel	across the box first in	direction1 and
	      then in direction2.  For example,	corner north  east  finds  all
	      paint  under the bottom edge of the box and extends it up	to the
	      top of the box and then across to	the right  side	 of  the  box,
	      generating  neat	corners	at the top of the box.	The box	should
	      be at least as tall as it	is wide	for this command to work  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
	      intact,  as  does	 the  disk file	containing the cell.  Selected
	      material outside the edit	cell is	not deleted.

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

	      drc catchup
		     Let the checker process all the areas that	need  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
		     intended primarily	for system maintenance purposes.

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

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

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

       erase [layers]
	      For  the	area  enclosed	by the box, erase all paint in layers.
	      (See the ``LAYERS'' section for the syntax of layer lists).   If
	      layers  is omitted it defaults to	*,labels.  See your technology
	      manual, or use the layers	command, to find out about the	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-
		     extracted	regardless  of whether they have changed since
		     last being	extracted.

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

	      extract do [ option ]

	      extract no option
		     Enable or	disable	 various  options  governing  how  the
		     extractor	will  work.  Use :extract do with no arguments
		     to	print a	list of	available options  and	their  current
		     settings.	When the adjust	option is enabled, the extrac-
		     tor 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
		     capacitances are  computed	 or  not;  if  disabled,  flat
		     extraction	 is  significantly  faster  than  if  coupling
		     capacitance computation is	enabled.  Finally, the	length
		     option  determines	whether	or not pathlengths in the root
		     cell are computed (see extract length below).

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

	      extract length [ option args ]
		     Provides  several options for controlling which point-to-
		     point path	lengths	are extracted explicitly.  The 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
		     extraction	 of  pathlengths  is  enabled  (``:extract  do
		     length''),	then when the root cell	in an extract  command
		     is	being extracted, the extractor will compute the	short-
		     est  and  longest	path  between  each  driver  and  each
		     receiver on the same electrical net, and output it	to the
		     .ext file for the root cell.  Normally, one should	create
		     a	file  of  these	Magic commands for the circuit drivers
		     and receivers of interest,	and use	source to read	it  in
		     prior   to	 circuit  extraction.	Extract	 length	 clear
		     removes all the entries from both the driver and receiver
		     tables.

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

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

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

	      extract unique [#]
		     For  each cell in the window beneath the cursor, check to
		     insure that no label is attached to more than  one	 node.
		     If	 the  #	keyword	was not	specified, whenever a label is
		     attached to more than one node, the labels	in all but one
		     of	the nodes are changed by appending a numeric suffix to
		     make them unique.	If the # keyword  is  specified,  only
		     names  that  end  in  a  ``#'' are	made unique; any other
		     duplicate nodenames  that	don't  end  in	a  ``!''   are
		     reported  by  leaving a warning feedback area.  This com-
		     mand is provided for converting  old  designs  that  were
		     intended for extraction with Mextra, which	would automat-
		     ically 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
	      appended	to cell.ext, and then ext2simrun for a second time, to
	      produce a	new network with explicit  resistors.	The  threshold
	      parameter	 is used to control which nodes	are turned into	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
		     areas.

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

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

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

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

       fill direction [layers]
	      Direction	is a Manhattan direction (see the  section  DIRECTIONS
	      below).  The paint visible under one edge	of the box is sampled.
	      Everywhere that the edge touches paint, the paint	is extended in
	      the  given direction to the opposite side	of the box.  For 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
	      intended to be used for routing types of circuits, such as gate-
	      arrays, whose routing channels can be determined in advance, and
	      which require the	ability	to  river-route	 across	 the  tops  of
	      cells.	The   channels	 must	have   been  predefined	 using
	      garoute channel commands prior to	this  command  being  invoked.
	      Unlike  the  route  command, where the box indicates the routing
	      area, this command ignores the box entirely.  The	new wires  are
	      placed  in  the edit cell.  The netlist used is that selected by
	      the route	netlist	command, or the	current	netlist	 being	edited
	      in  a netlist window if no route netlist command has been	given.
	      Options and args have the	following effects:

	      garoute channel [type]

	      garoute channel xlo ylo xhi yhi [type]
		     Define a channel.	If xlo,	ylo, xhi,  and	yhi  are  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
		     options.

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

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

	      garoute reset
		     Clear all channels	defined	by garoute channel in 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
	      Tutorial #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
	      instance_id.   Instance_id  must	be  unique  among all instance
	      identifiers in the parent	 of  the  selected  cell.   Initially,
	      Magic  guarantees	 uniqueness of identifiers by giving each cell
	      an initial identifier consisting of  the	cell  definition  name
	      followed by an underscore	and a small integer.

       iroute subcommand [args]
	      This  command  provides  an  interactive	interface to the Magic
	      maze-router.  Routing is done one	connection at a	 time.	 Three
	      internal	hint layers, magnet, fence, and	rotate,	allow the user
	      to guide routing graphically.  Routes are	chosen close  to  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.
	      Parameters specifying costs for horizontal and vertical  routing
	      on  each	layer,	cost for jogs and contacts, and	cost (per unit
	      area) for	distance between a path	and  magnets,  help  determine
	      the nature of the	routes.	 Several search	parameters permit tun-
	      ing to achieve acceptable	routes in as short a time as possible.
	      Routing  can  always be interrupted with ^C.  The	iroute subcom-
	      mands are	as follows:

	      iroute Routes from cursor	to inside box.

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

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

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

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

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

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

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

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

	      iroute version
		     Prints irouter version information.

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

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

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

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

       move [direction [amount]]

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

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

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

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

	      plot gremlin file	[layers]
		     Generate a	Gremlin-format description of everything under
		     the  box,	and  write the description in file.  If	layers
		     isn't specified, paint, labels, and  unexpanded  subcells
		     are  all included in the Gremlin file just	as they	appear
		     on	the screen.  If	layers is  specified,  then  just  the
		     indicated	layers are output in the Gremlin file.	Layers
		     may include the special layers labels and	subcell.   The
		     Gremlin  file  is scaled to have a	total size between 256
		     and 512 units; you	should use the width and/or height Grn
		     commands  to  ensure that the printed version is the size
		     you want.	Use the	mg stipples in Grn.  No	 plot  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
			    instance-identifier	of each	unexpanded subcell  is
			    displayed inside its bounding box.	If this	param-
			    eter is ``false'' then only	the  bounding  box  of
			    the	cell is	displayed.

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

		     swathHeight
			    How	many raster lines of Versatec output to	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
		     information about the parameters that are used to control
		     Versatec  plotting.  Size	is  used to scale the plot:  a
		     scalefactor is chosen so that the area of the box is size
		     inches  across on the printed page.  Size defaults	to the
		     width  of	the  printer.	Layers	selects	 which	layers
		     (including	 labels	and subcells) to plot;	it defaults to
		     everything	visible	on the screen.

       plow direction [layers]

       plow option [args]
	      The first	form of	this command invokes the plowing operation  to
	      stretch  and/or compact a	cell.  Direction is a Manhattan	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
		     material for a distance equal to the jog horizon.	If  it
		     finds  an	existing jog within this distance, it uses it.
		     Only if no	jog is found within the	jog horizon does 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
		     material in the selection that belongs to the edit	 cell.
		     However,  any material not	in the selection is pushed out
		     of	its way, just as though	each piece  of	the  selection
		     were plowed individually.	If no arguments	are given, the
		     selection is picked up by the point underneath the	lower-
		     left corner of the	box and	plowed so that this point lies
		     at	the cursor location.  The box is moved along with  the
		     selection.	 If direction is given,	it must	be a Manhattan
		     direction (e.g. north).  The selection is moved  in  that
		     direction by amount.  If the box is in the	same window as
		     the selection, it is moved	too.  Amount  defaults	to  1.
		     If	 there	is  selected  material	that isn't in the edit
		     cell, it is ignored (note that  this  is  different  from
		     select  and move).	 If direction isn't given and the cur-
		     sor 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	 clos-
		     est).

	      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
	      extracting  resistance  networks for individual nodes.  Only the
	      node underneath the box is processed.  The network for this node
	      is  output  to  the  file	cell.res.ext.  See the description for
	      extresist	for an explanation of tolerance.

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

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

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

	      route jog	[int]
		     Print the value of	the minimum jog	 length	 used  by  the
		     channel  router.  If a value is supplied, the minimum jog
		     length is set to that value.  The channel router makes no
		     vertical  jogs  shorter than the minimum jog length, 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
		     dimensionless  multiplier	used  in  deciding  how	far in
		     front of an obstacle the channel router should begin jog-
		     ging  nets	 out of	the way.  Larger values	mean that nets
		     will jog out of the way earlier; however, if nets jog out
		     of	the way	too early routing area is wasted.

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

	      route settings
		     Print the values of all router parameters.

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

	      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
		     introducing  one or two vias.  The	via constant specifies
		     the amount	of converted wiring that makes	it  worthwhile
		     to	add vias to the	routing.

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

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

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

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

	      see no layers
		     Do	not display the	given layers in	the window  under  the
		     cursor.   If  labels is given as a	layer name, don't 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
		     errors and	labels will still be shown.  See the  "LAYERS"
		     section at	the end	of this	manual page for	an explanation
		     of	layer naming in	Magic.

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

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

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

	      see allSame
		     Display all cells the same	way.  This disables the	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
	      before  operating	 on  them with commands	like move and copy and
	      delete.  It has several forms:

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

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

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

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

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

	      select clear
		     Clear  out	 the selection.	 This does not affect the 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
		     selected.	 This  behavior	allows entire regions of mate-
		     rial to be	moved, even if see has been used to  turn  off
		     the display of some of the	layers.

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

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

       snap [on]

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

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

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

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

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

       unexpand
	      Unexpand all cells that touch the	box but	don't completely  con-
	      tain it.

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

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

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

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

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

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

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

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

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

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

COMMANDS FOR ALL WINDOWS
       These commands are not used for layout, but are instead used for	 over-
       all, housekeeping functions.  They are valid in all windows.

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

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

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

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

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

       openwindow [cell]
	      Open a new, empty	window at  the	cursor	position.   Placement,
	      sizing,  and  methods of manipulation are	determined by the 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
	      below).  The number of commands to redo defaults to 1  if	 n  is
	      not specified.

       redraw Redraw the graphics screen.

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

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

       setpoint	[x y [windowID]]
	      Fakes  the location of the cursor	up until after the next	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
	      update the screen	only at	the end	of the script.

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

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

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

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

MOUSE BUTTONS FOR NETLIST WINDOWS
       When the	 netlist menu is opened	using the command special  netlist,  a
       menu  appears  on  the  screen.	 The  colored areas on the menu	can be
       clicked with various mouse buttons to perform various actions, such  as
       placing	labels	and  editing  netlists.	 For details on	how to use the
       menu, see ``Magic Tutorial #7: Netlists and Routing''.  The  menu  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
	      material	in  the	 edit  cell.  Where this material touches sub-
	      cells, 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
       individual layer	names.	The individual layer names may be abbreviated,
       as  long	 as  the  abbreviations	 are unique.  For example, to indicate
       polysilicon and n-diffusion, use	poly,ndiff or ndiff,poly.  The special
       character  -  causes  all  subsequent  layers to	be subtracted from the
       layer mask.  For	example, *-p means  ``all  layers  but	polysilicon''.
       The special character + reverses	the effect of a	previous -; all	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/local/lib,	by default).  Normally one  would  change  the	search
       path (see below)	rather than redirect the entire	CAD_ROOT location.

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

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

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

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

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

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

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

4th Berkeley Distribution					      MAGIC(1)

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

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

home | help