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

FreeBSD Manual Pages

  
 
  

home | help
MAGIC(5)		       File Formats Manual			MAGIC(5)

NAME
     magic - format of .mag files read/written by Magic

DESCRIPTION
     Magic  uses  its own internal ASCII format for storing cells in disk files.
     Each cell name is stored in its own file, named name.mag.

     The first line in a .mag file is the string

	       magic

     to identify this as a Magic file.

     The next line is optional and is used to identify the technology in which a
     cell was designed.  If present, it should be of the form

	       tech techname

     If absent, the technology defaults to  a  system-wide  standard,  currently
     nmos.

     The  next	line  is  also optional and gives a timestamp for the cell.  The
     line is of the format

	       timestamp stamp

     where stamp is a number of seconds since 00:00 GMT January  1,  1970  (i.e,
     the  Unix	time returned by the library function time()).	It should be the
     last time this cell or any of its children changed.  The timestamp is  used
     to  detect  when  a  child is edited outside the context of its parent (the
     parent stores the last timestamp it saw for each of its children;	see  be-
     low).   When  this  occurs, the design-rule checker must recheck the entire
     area of the child for subcell interaction errors.	If this field is omitted
     in a cell, Magic supplies a default value that forces the rechecks.

     Next come lines describing the contents of the cell.  There are three kinds
     of groups of lines, describing mask rectangles, subcell uses,  and  labels.
     Each  group  must	appear	contiguously  in the file, but the order between
     groups is arbitrary.

     Each group of mask rectangles is headed with a line of the format

	       << layer >>

     where layer is a layername known in the current technology  (see  the  tech
     line above).  Each line after this header has the format

	       rect xbot ybot xtop ytop

     where  (xbot, ybot)  is  the  lower-left  corner  of the rectangle in Magic
     (lambda) coordinates, and (xtop, ytop) is the upper-right corner.	Degener-
     ate rectangles are not allowed; xbot must be strictly less than  xtop,  and
     ybot  strictly less than ytop.  The smallest legal value of xbot or ybot is
     -67108858, and the largest legal value for xtop or ytop is 67108858.   Val-
     ues  that	approach these limits (within a factor of 100 or 1000) may cause
     numerical overflows in Magic even though they are not strictly illegal.  We
     recommend using coordinates around zero as much as possible.

     Rectangles should be non-overlapping, although this is not essential.  They
     should also already have been merged into maximal	horizontal  strips  (the
     neighbor  to  the	right  or  left of a rectangle should not be of the same
     type), but this is also not essential.

     The second kind of line group describes a single cell use.  Each  cell  use
     group is of the following form:

	       use filename use-id
	       array xlo xhi xsep ylo yhi ysep
	       timestamp stamp
	       transform a b c d e f
	       box xbot ybot xtop ytop

     A	group  specifies  a single instance of the cell named filename, with in-
     stance-identifier use-id.	The instance-identifier use-id	must  be  unique
     among  all  cells	used  by  this .mag file.  If use-id is not specified, a
     unique one is generated automatically.

     The array line need only be present if the cell is an array.  If so, the  X
     indices  run  from xlo to xhi inclusive, with elements being separated from
     each other in the X dimension by xsep lambda.  The Y indices run  from  ylo
     to  yhi  inclusive,  with elements being separated from each other in the Y
     dimension by ysep lambda.	If xlo and xhi are equal, xsep is ignored; simi-
     larly if ylo and yhi are equal, ysep is ignored.

     The timestamp line is optional; if present, it gives  the	last  time  this
     cell  was	aware that the child filename changed.	If there is no timestamp
     line, a timestamp of 0 is assumed.  When the subcell is read in, this value
     is compared to the actual value at the beginning of  the  child  cell.   If
     there  is	a difference, the ``timestamp mismatch'' message is printed, and
     Magic rechecks design-rules around the child.

     The transform line gives the geometric transform from  coordinates  of  the
     child  filename  into coordinates of the cell being read.	The six integers
     a, b, c, d, e, and f are part of the following transformation matrix, which
     is used to postmultiply all coordinates  in  the  child  filename	whenever
     their coordinates in the parent are required:

			 a    d    0
			 b    e    0
			 c    f    1

     Finally, box gives an estimate of the bounding box of cell filename (cover-
     ing all the elements of the array if an array line was present), in coordi-
     nates of the cell being read.

     The third kind of line group in a .mag file is a list of labels.  It begins
     with the line

	       << labels >>

     and is followed by zero or more lines of the following form:

	       rlabel layer xbot ybot xtop ytop position text

     Here  layer  is  the  name of one of the layers specified in the technology
     file for this cell.  The label is attached to material of this type.  Layer
     may be space, in which case the label is not considered to be  attached  to
     any layer.

     Labels  are  rectangular.	The lower-left corner of the label (the part at-
     tached to any geometry if layer is non-space) is at (xbot, ybot),	and  the
     upper-right  corner  at  (xtop, ytop).   The  width of the rectangle or its
     height may be zero.  In fact, most labels in Magic have a lower-left  equal
     to their upper right.

     The  text of the label, text, may be any sequence of characters not includ-
     ing a newline.  This text is located at one of nine  possible  orientations
     relative  to  the	center of the label's rectangle.  Position is an integer
     between 0 and 8, each of which corresponds to a different orientation:

	       0    center
	       1    north
	       2    northeast
	       3    east
	       4    southeast
	       5    south
	       6    southwest
	       7    west
	       8    northwest

     A .mag file is terminated by the line

	       << end >>

     Everything following this line is ignored.

     Any line beginning with a pound sigh (``#'') is considered to be a  comment
     and  ignored.   Beware, however, that these comments are discarded by Magic
     when it reads a cell, so if that cell is written again by Magic,  the  com-
     ments will be lost.

NOTE FOR PROGRAMS THAT GENERATE MAGIC FILES
     Magic's  incremental  design rule checker expects that every cell is either
     completely checked, or contains information to tell the checker which areas
     of the cell have yet to be examined for design-rule  violations.	To  make
     sure  that  the design-rule checker verifies all the material that has been
     generated for a cell, programs that generate .mag files  should  place  the
     following rectangle in each file:

	       << checkpaint >>
	       rect xbot ybot xtop ytop

     This rectangle may appear anywhere a list of rectangles is allowed; immedi-
     ately  following  the  timestamp  line at the beginning of a .mag file is a
     good place.  The coordinates xbot etc. should be large enough to completely
     cover anything in the cell, and must surround all this material by at least
     one lambda.  Be careful, however, not to make this  area  too  ridiculously
     large.   For example, if you use the maximum and minimum legal tile coordi-
     nates, it will take the design-rule  checker  an  extremely  long	time  to
     recheck the area.

SEE ALSO
     magic(1)

4th Berkeley Distribution						MAGIC(5)

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

home | help