addition to wire overlaps, and added a method when painting
contacts to draw the necessary wire extension past the contact.
Since the wiring method draws single contacts by default, this
wiring method assumes a change in direction between layers. But
the main point is to generate wire contacts without DRC errors.
the wires stay centered on a centerline with respect to each other.
Also corrected the long-standing minor issue that the outline
drawing of the wire does not update when using the mouse scroll
wheel, making it unclear that the wire size has changed until the
wire position changes.
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. . .
Cairo graphics package (magic -d XR), will map the display onto
an SVG surface and save it to a file using the Cairo SVG backend.
Due to the simplicity of the mapping, there are no options to this
plot command; it just creates a file that is a (scalable!)
replica of the layout window.
label in a DEF file is on a layer that has not been properly
mapped to a magic layer. This would apply a negative index to
a TileType bitmask and crash the program. Also: Changed the
style and colormap slightly to make the via2 and via4 styles
more visible.
labels if they are in the top-level cell of the connection search.
Otherwise, this slows the connection search way down for nets with
lots of internal labels, and can also have potentially bad consequences
if, for example, the connected network is copied to another position,
and carries all the flattened and non-hierarchically-named labels with
it.
a scaling issue in extract) which was caused by the addition of
hierarchical netlist generation. Finding hierarchical connections
requires finding instances by name, so it is vastly better to create a
hash table of instances instead of a linked list.
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.
where devices extracted as "device resistor" or "device capacitor"
and defining parameters (e.g., area, perimeter) will generate the
device arguments in the wrong order in the .ext file, resulting in
incorrect readback when attempting to do ext2spice, resulting in the
device being omitted from the resulting netlist.
extraction times, which is an incorrect units conversion of the
"step" parameter in the extract section. It was converting based
on the "lambda" parameter in the same section, which has to do with
the scaling of values in the output file, not the scale factor of
the database to be extracted, which is set by the current CIF output
scale. Once fixed, extraction times are minimized using the rule of
thumb mentioned in the techfile reference, which is 50 times the
minimum feature size. Also: Give the lengthy nature of extraction
on large designs no matter how well optimized, added a feature to
mark the progress of the extraction in increments of 5%. Does not
output progress for small cells that extract quickly.
extraction. The plane mask array that denotes for each type which
planes should be searched for connecting types is supposed to be
a rare case that covers situations where planes connect by types
that are not contacts. Instead, many planes were in this array,
causing the worst-case extraction methods to be run constantly.
the undo mechanism in the wrong state when writing a LEF header
with no route track information. Also added code to the DEF write
routine to handle subcell arrays. Thanks to Martin Devera for
both patches.