[Magic-dev] Magic - GDSII arefs
Jeff Sondeen
sondeen at ISI.EDU
Mon Jul 26 10:18:35 EDT 2004
jmailguard-1 at yahoo.com writes:
> I'm writing a program to extract information from GDS2
> files and want the program to work well with files
> generated from Magic.
>
> The documentation for the GDSVU program from
> www.artwork.com mentions that Magic writes AREFS in a
> non-standard way (not according to the gdsii spec).
>
> Does this refer to old versions of Magic or does it
> still apply to the latest versions of Magic? Is this
> issue documented anywhere? What format does Magic use
> for AREFS?
>
Hi Brain, here's some older (related) info i sent Tim; i don't know if
he ever fixed it:
/jeff
To: tim at stravinsky.jhuapl.edu
Subject: calma arrays
Date: Mon, 15 Dec 2003 18:05:19 -0800
hi Tim, i can't remember if i brought this up before, but there's an
error in how magic outputs stream (gds) for some type of arrays (where
the user has arrayed them in descending X and/or Y): magic
"propagates" this negative direction into the AREF it builds, but
Mosis's CATS software views this as an error, believing that the GDS
specs require that the original array must always be built in the
positive direction and then re-oriented to any new orientation (like
descending X and/r Y).
excerpts from email with J. Goldberg at Mosis follow in the PS.
(however, he refers to the software as "Cadence" -- it's really
"magic" -jws)
my 'workaround' in the magic code was just to invoke the code to
flatten an array if it's X and/or Y direction(s) were negative, and
here's the code patch (applied to 7.1) mostly for clarity.
diff old/CalmaWrite.c 6.new/CalmaWrite.c
< if (CalmaFlattenArrays)
---
> if (CalmaFlattenArrays ||
>
> use->cu_xsep < 0 || use->cu_ysep < 0) /* jws */
>
> /* Cats wants only positive separations */
>
> /* jws: AREF fix as per Joel Goldberg of Mosis: "Calma semantics
> require that col.y = trans.y and row.x = trans.x:
> */
thanks,
/jeff
PS. other email snipets from Mosis' J. G.:
> A GDS array is used only in the AREF (Arrayed Structure Reference)
> construct. The location and size of the array is defined by three
> points: the origin (lower left corner), the lower right corner, and
> the upper left corner. Per Calma's definition, even though you
> specify 6 numbers, the two lower Ys and the two left Xs MUST be
> identical (pairwise). Cats will complain, as above, when they are
> not. Cats also has two different modes of interpretation of the
> non-standard array to mimic the two different ways that various
> tools handle them. This construct is therefore clearly NOT A GOOD
> THING (tm) in a library file. Shame on Cadence for ever allowing
> them to be generated!!
> > Under "28 ANGLE" in the GDSII Stream Format Manual is the statement,
> > "For an AREF, the ANGLE rotates the entire array lattice (with the
> > individual array elements rigidly attached) about the array
> > reference point."
>
> in other words. the above suggest that you first contruct the array
> (using the #rows/#cols and the X/Y dimensions) then rotate the whole
> thing. (and probably also apply any transforms)
"Suggests"? No way. "Clearly states" is more like it.
> so would you say that regardless of rotation/translation:
> xy2.x = xy1.x + xseparation*#cols
> xy3.y = xy1.y + yseparation*#rows
Don't think "regardless of ...", think "prior to ..." or "in the Cartesian
plane of the array prior to ...".
More information about the magic-dev
mailing list