forms of syntax found in the LEF/DEF spec up to version 5.8. Handles
vias formed by parameter and a number of syntax variations that mess
up the usual parsing. Corrected an error in the calculation of wire
extensions when wires are given with three coordinates.
the compiler. Some are obscure functions (plot verstatec hasn't
been used in years) but others (like SPICE distributed junctions)
are potentially significant sources of unexpected crashes on
systems that don't zero uninitialized memory.
64 because I overran the 64 array with too many resistclasses in
a techfile. This really should be dynamically allocated; this
requires parsing the line to count tokens and reallocating as
needed (to be done).
discovered that not all LEF/DEF rectangle coordinates are in
canonical order. Took the opportunity to update the LefError()
routine with an additional argument so that it can separate
errors, warnings, and informational messages, and will correctly
state whether the output is for a LEF or DEF read operation.
addition to subcells, paint, and labels. Otherwise problems arise
if a cell is read from LEF followed by GDS; the GDS view overwrites
the LEF but the property "LEFview" remains and causes problems when
writing GDS output subsequently.
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.
were made where contacts are placed when shifting up on metal
layer but not made for the reverse case. Also corrected one
inconsistency with non-minimum width wires.
the same interpretation as the scalefactor for the DRC section:
Values in the section are interpreted as lambda divided by the
scalefactor. That allows the wiring values to be real units such
as nanometers and avoid problems with fractional lambda values.
lengths exceeding the maximum GDS name length (32 characters),
truncate by removing all but the last 32 characters, instead of
the previous behavior which was to remove all but the first 32
characters. The last 32 characters are far more likely to be
unique than the first 32, given that the usual reason for extra-
long names is the concatentation of hierarchical names.
through labels with the same text (particularly necessary for
abstract views, since the real connectivity may not be represented).
The original implementation could generate very deep subroutine call
stacks and lead to stack overflow. The new implementation performs
the same check but without the deep nesting.