uninitialized variable, with the result that writing GDS would
claim that it cannot scale down enough and that the output units
are either wrong or the output style must have "units angstroms".
Using angstrom units would solve the problem but did not treat
the root of the problem.
from the cifoutput section, NOT the cifinput section. This change
underscores the point that LEF and DEF formats define mask data,
and therefore all LEF and DEF routines should be using the CIF
input/output methods and layers. That is a major code change;
meanwhile, getting via layer values from the cifoutput parameters
is slightly more reliable than using cifinput, since there is good
reason to use templayers to read vias, and that sort of indirection
makes it difficult to determine a simple relationship between a
LEF cut layer and a magic contact.
order of layers than specified in the LEF/DEF spec. It is not clear
whether this is common practice, or a bug in the tool that produced the
DEF file that prompted this change. NOTE: The "grow" function applied
in this case should be replaced by the actual GDS input rule sequence,
that includes the grow and shrink merge. Otherwise, vias read from
DEF files do not match the layout from those read from GDS, even though
the mask layers represented by the layouts are the same.
DRC records contain an index into a string array instead of containing
a copy of a string. This is preliminary to changing the way the DRC
error plane is painted, so that the types painted will mark the error
type. This will (1) allow "drc why" to simply scan the DRC error
plane rather than running the DRC engine, (2) allow DRC errors to be
counted by area rather than by tile, and (3) let the DRC count be the
same whether done by "drc listall why" or "drc count".
which had been changed a few months back to remove the individual
cell count and only list the top level cell. The behavior has been
changed a bit so that "list" returns values for the top level cell
only, but "listall" returns a complete list. "drc list count total"
gives the DRC count for the top cell, but "drc listall count total"
gives the DRC count for everything (probably not very useful).
Also: Implemented a behavior by request to automatically removed
the (UNNAMED) cell whenever a new cell is loaded and the (UNNAMED)
cell has not been modified.
to be investigated here. I am no longer sure why I removed the
cell search from DRC count, but it appears that the cell search is
non-functional, and it should be determined why. There is no
particular reason not to have a DRC count search. It could be
implemented such that "list" vs. "listall" counts the top cell vs.
all cells. First it must be determined why there are no subcell
counts.
force an update of the repository, which caused the script handling
the tarball generation and mirror to github to be hosed, which I did
not notice for three weeks.
preproc.py script from another project. Had to further develop it to
get around the amazingly complicated preprocessor usage in the scmos
subdirectory. Needed to add handling of parameterized definitions;
could not figure out how to align the syntax used in scmos/extract_template
with any consistent syntax. Gave up and rewrote some of the contents of
extract_template to avoid the more ambiguous usage. All of this is to
support a completely deprecated scmos.tech. However, it does avoid both
the M4 and cpp preprocessors altogether. Also did auto-detection of
python3 in the configure script for use of the preproc.py preprocessor,
and applied the same preprocessor to the macro definitions.
now scale with Opts(scale), which is a zoom scalefactor (default 1), and
Opts(toolscale) sets an independent sizing for the toolbar icons, which is
multiplied by the Opts(scale) scalefactor. Also: Added GR_LIBS to the
link options for magicexec and magicdnull, to avoid compile-time problems
on some systems (thank you to Charlene of OpenBSD for the patch!).
scale with the given size (default 16). This can be put in the site.def
or .magicrc file as, e.g., "set Opts(toolsize) 32". This is the first
part of an attempt to get everything to scale properly on ultra-high-
resolution monitors.
and merged the contents into drcmgr.tcl, with a new button in the
DRC manager for saving the DRC contents. Loading is somewhat less
useful since the DRC error tiles are interactive. The DRC manager
still has the issue that every checked edge becomes a separate
entry; this is an artifact of the way the DRC checker works, but
it creates large numbers of error areas, many of which are redundant.
changed to ignore labels below the top level of hierarchy. This
turned out to be a bad idea. However, the original behavior was
problematic due to confusion over what part of the hierarchy the
labels were in. The new behavior prefixes each label with the
cell hierarchy, eliminating both problems. (2) Corrected the
problem where the attachment box for rendered labels is not
displayed if the label name is not in the viewing area. (3)
Corrected the problem where redirection of input from the layout
window to the console window with the ":" command gets inadvertently
canceled; this turned out to be due to a missing "*bypass" in
front of the command that finds the output scale to display the
pointer coordinates, and this was happening whenever the mouse was
moved while typing in a command.
down in the hierarchy when selecting a region or net, but with a
(hopefully very useful) twist: To avoid the problem of ambiguous
labels in subcells, the subcell name hierarchy is generated in
the same way as is done when flattening a cell, with the instance
name prepended. For example, when selecting a net in a standard
cell design, a terminal would highlight the name "OR2X1_1/B"
instead of just "B".
to copy and search on a label that already exists in the flattened,
copied database. Otherwise multiple labels on a single net can cause
the search to go into an infinite loop, repeatedly copying and erasing
the same label over and over again.
of generating scalable output. Some libcairo update had caused
the output to use the wrong version of SVG by default, which
generates an SVG-wrapped PNG data block, which is not scalable,
and not what was intended with the "plot svg" command.
Currently the SVG output is a SVG file with an embedded `image/png`
file. Restricting to `CAIRO_SVG_VERSION_1_2` means the file goes back to
being a vector.
Signed-off-by: Tim 'mithro' Ansell <me@mith.ro>
distributed installations, where the immediate installation location
is different from the final installation location, but in the case
where it is not desirable to put the entire install hierarchy as a
subdirectory of DESTDIR.
sticky flag set, and the type of the label does not correspond
exactly to the type under the label (e.g., label defined on m1
but is on top of a contact).
views. Because the abstract view does not necessarily represent
actual connectivity, rely on the port indexes in the .ext file
to determine the number of ports and port order. Do not use
SpiceNodeName() to look up the node name, or unique ports that
are deemed shorted will go missing. Also: Modified the read-in
of .ext files so that use names may contain backslashes. Only
backslashes that end a line will be handled differently.
flag definition had been put in database.h instead of database.h.in,
and so was deleted on "make clean". Also, corrected a problem that
causes the cif output style to be lost when running DRC-CIF checks
if the first output style is the DRC style.
only at the time of running the command "load". But cells are generally
loaded only on an as-needed basis, so the dereferencing option must be
saved as a flag in the cell and honored whenever its subcells are expanded
or otherwise read at a later time.
limit of the Calma definition, and probably has not done so for ages.
Nobody informed me of this. The restriction has been lifted from
GDS input and output in Magic. It can be reinstated if necessary by
setting a flag in the cifoutput section of the techfile, but it is
likely that this will not be necessary unless there are other tools
that enforce the limit and will not read a GDS file that exceeds it.
the right argument type (float, not int). Otherwise all resistances
from extresist come out zero when doing "ext2spice extresist on"
and "ext2spice hierarchy on". Also changed the format of the resistance
in the SPICE output to type float, since values are in standard units of
ohms, and rounding to the nearest ohm seems excessively coarse-grained.
a long-standing error (introduced with the "extresist geometry"
option) that can cause nets not to be extracted (due to the first
record not having extraction data, which was itself a long-standing
error in the code but which was not fixed correctly); (2) handle
"device mosfet" type transistors (previously only handled the old
"fet" type extraction devices); and (3) correct for the res.ext
file having a different scalefactor relative to the .ext file. The
latter item was solved by forcing all input to scale like
ExtCurStyle->exts_unitsPerLambda, locally correcting all input as
needed. Note that extresist still needs to handle other extraction
devices (e.g., resistors and capacitors) but those will require
additional handling in the routines which analyze the current path
to determine how to break up wires into paths.
include (1) specification of sidewall or surface to use for
each type individually, rather than a single method for all
types, and (2) specification of a linear model R = Ax + B for
the ratio limit when diodes are attached to the wire, where x
is the diode surface area (unitless, as this is a ratio).