"echo", because there is at least one OS variant out there where
the two buffer independently and cause the output to have lines
out of order. The script had previously used "printf" because
"echo -n" is not POSIX-compliant and so not necessarily universally
compatible. The script was changed to use "printf" throughout.
the output to have an obstruction area over the entire cell except
for a keep-out area around each pin. Instead of marking every
part of the pin geometry, only the "chunk" (largest immediate
rectangle) surrounding the port label is output as part of port
LEF geometry. This avoids making unnecessarily complicated
abstract views, and makes it easier for other tools to read and
manage the same abstract views.
to prefix all library components read from GDS files pointed to by
an abstract view (other than the cell itself) with a prefix. But
this does not account for the fact that the same library may be read
by other cells. The solution is for every cell in the library, check
if there is a cell in magic with the same name which is also an abstract
view that points to the same GDS library. Those cells do not get
prefixes. At the same time, however, it was discovered that the GDS
cellname character limit is set at 32, and so prefixes must be kept
short. To keep the prefixes unique, the prefix was changed to a 4
character random alphanumeric sequence, and a warning is issued if
any GDS cell exceeds the 32 character limit.
options "text", "port", and "noport" in the techfile. The
incorrect interpretation was preventing backwards compatibility,
such that ports would not be output on GDS layers if the "port"
option was not used.
all the settings normally used for LVS (hierarchy on, cthresh
infinite, subcircuit top auto, etc.). (2) Extract and extract
unique ignore cells marked as abstract views (property LEFview
is set) when checking for unconnected nets with the same name
label.
in the SPICE netlist when using new device "csubcircuit" due to
a mismatch in the expected number of parameters. However, more
work needs to be done to cover capacitor top and bottom plates on
different planes.
added a long time ago, since capacitors use a different method for
calculating width and length than either transistors or resistors,
so subcircuits need a special class designator or else the extraction
may calculate the wrong dimensions for device width by totalling the
perimeter between the device and terminal types, as it would for a
MOSFET.
8.2.74. Top-level port names are now flagged independently of
any subcircuit port, so they are easier to identify when determining
naming precedence for the net. This makes the code cleaner and
removes the problems arising from non-top-level ports and global
names overriding the subcircuit port names.
window to change after hiding a layer using the toolbar and then
refreshing the layout. Fixed by saving and restoring the graphics
state around the routine that configures the toolbar image. Also
added a check to CifPaintCurrent to guard against using an unassigned
ClientData record as a pointer (causes a crash), and added braces
around "expr" values in the Tcl wrapper, which reportedly results in
faster execution of the expression.
routine was erasing and redrawing in one step, which ignored the
possibility of having to erase from one window and redraw in
another if the cursor moved focus from one window to another.
This led to crosshairs being improperly drawn and erased when
multiple windows were present, if the windows had different cells
loaded.
the patch was attempting to fix. For node naming, ports were given
precedence over globals. However, this failed to distinguish between
ports on the top level and ports down in the hierarchy. This has now
been fixed. Ports on the hierarchy top level have naming precedence
over everything else; otherwise, the traditional rules of node
naming precedence apply.
symmetric with writing them. Since the writing of .ext files
was changed to preferably use the location of the cell being
read, and since the extflat database does not save this path
information, it was necessary to check the main database entry
for each cell to determine if there is a non-default path where
the .ext file may have been saved (with the current working
directory used as a fall-back if the directory is not writeable).