used both for counting cells during GDS write and for saving
geometry data from the "copyup" operator during GDS read. The write
routine does not clear the client record, and the read routine was
checking if the cd_client value was default. Corrected the resulting
crash condition by resetting cd_client before GDS reads. However, the
underlying problem is that the GDS read is reading data into a cell
that already exists in the database, and is not handling it robustly
by renaming the existing cell. So this should be revisited.
"ignore-unknown-layer-labels" is set, then error messages will not
be displayed when labels in the GDS input are on unknown layers
(this option is and has been otherwise handled correctly; the only
issue is the generation of an error message on the output).
unrecognized layers when the "readonly" read option is set.
Added support to scale elements (from the "element" command,
such as the measurement text and arrows) when the grid scales,
which was missing. Corrected the output of persistent elements
in a .mag file so that they are correctly scaled by the scale
reducer.
attached to a label in a GDS input file; the scalefactor that was
being used is reset at the beginning of a GDS read, and so becomes
invalid after a database rescaling, resulting in improperly scaled
label geometry if "gds read" is used more than once.
option "labels ... cellid" to handle some vendor files where
apparently to get around the 30-character cell name limit, the
actual cellname is encoded on a text layer. Added new cifop
"boundary" (no arguments) for cases where a cell abutment box
is encoded on a GDS layer; this now translates the bounding
box to the FIXED_BBOX property, as is done with the LEF bounding
box. Also corrected the property set function to free existing
property value allocated memory when overwriting a property with
a new value.
input, which failed to update the "lastLabel" record of the cell
in the case that the placeholder label being deleted was the last
label, leading to labels being lost during GDS input.
types that have been specified as being ports or text), since the
labels are in the magic database and at a different scale. Added
code to cope with the fact that the labels may come after the
definition of the rectangle, so a rectangle identified as a port
or text label will generate an empty placeholder label, and all
new labels are checked against any empty labels in the database to
see if they are bounded by them. If so, then the empty label is
removed and the label point is replaced by the rectangle. This is
a ridiculously round-about way to deal with an under-specified
file format. . .
label specified as having type "space" automatically overrides
the "no-reconnect-labels" flag. Modified the behavior of the
label reconnect algorithm so that it searches by plane order so
that material on the highest plane that matches the reconnection
criteria is chosen over similar materials on lower planes.
additional functionality for ports in GDS format. This has been
tested with a techfile encoding pin types on a different purpose
than the metal layer drawing purpose. The label rectangle is
correctly written to the GDS output as geometry on the pin
purpose layer, and the same layer gets read back in from the GDS
file and translated back into the label rectangle. Port order
is maintained.
geometry attached to a label in GDS using specific layer:purpose
pairs. The additional code maintains the order of ports when
writing out text to GDS, and attempts to attach geometry to labels
when the geometry is defined on the same layer:purpose pair as
the text, and the cifinput style declares the purpose to be a
port label.
This allows text appearing on a specific GDS layer:purpose pair
to be interpreted as a port. This does not quite match the
intended behavior of such layers, since it is implied that any
layer geometry coincident with the text should form the area of
the port, which is not (yet) handled. Also, it is presumably
implied that the port order matches the order in which text
appears in the GDS stream, but magic does not preserve this
order when re-writing any GDS output.
from "gds polygon subcell". Previously both polygons and paths
were put into subcells named polygonXXXXX (substitute numbers
for XXXXX). Now polygons go into cells named polygonXXXXX and
paths go into cells named pathXXXXX. This makes it easier to
keep track of the original path. NOTE: The path centerline
should be kept as a cell property in this case, and the path
options like endcap style can also be held as properties. The
polygon boundary should be treated similarly.
development had been halted since it was first created back in April.
Version 8.2 is now the official development version, with the first
development push to create a Cairo graphics interface.