Commit Graph

194 Commits

Author SHA1 Message Date
Tim Edwards 61188031cb Corrected the LEF read routine so that it preserves the sticky flag
on labels while annotating other properties (this error was a simple
typo).
2020-11-07 17:00:17 -05:00
Tim Edwards 6d463a20fe Corrected the "suspendall" and "resumeall" Tcl scripts so that they
do not fail when using "magicexec -dnull" (because there are no
layout windows, there is nothing to suspend and resume).
2020-11-06 14:39:10 -05:00
Tim Edwards 9931244e1e Corrected what appears to be a long-standing error in the "extract
unique" code.  It was using DBEraseLabelsByContent() which would
erase all matching labels, and could potentially erase labels that
were still remaining on the list being processed, causing a segfault.
Also corrected minor errors identified by valgrind during debugging
the above-referenced problem.
2020-11-03 12:17:16 -05:00
Tim Edwards f7eb54fac7 Corrected the paint table from "compose", which was improperly
handling compose lines that override contact behavior.
2020-10-30 20:19:29 -04:00
Tim Edwards 06ab6b3a8a Made a change to the way that the parameterized cells are handled.
Instead of a 6-character suffix generated randomly, the 6-character
suffix is generated by a hash algorithm from the device parameters.
If the cell parameters are changed, then the cell itself changes.
If the instance name was default (derived from the cell name) then
the instance name changes accordingly.  The result is that there
cannot be two (auto-)generated cells with the same parameters but
with different cell names.
2020-10-30 11:20:19 -04:00
Tim Edwards 1fe032a79b Changed the readspice script to avoid changing pin direction from
a CDL file unless the existing pin direction is set to "default".
This is consistent with the way the LEF annotation works, as well.
2020-10-27 15:39:12 -04:00
Tim Edwards 0a1cb9ca99 Added a method to ignore a specific device extraction combination
by setting the model name to "Ignore" in the tech file.
2020-10-26 11:41:36 -04:00
Tim Edwards be17067e13 Corrected a problem with argument passing in the DRC subcell
copying up of DRC errors into the parent cell.
2020-10-22 10:44:59 -04:00
Tim Edwards d1793ce19f Updated version to go along with the last commit. 2020-10-20 12:25:10 -04:00
Tim Edwards a67b8cc395 Corrected an error in the "bloat-all" operator of the CIF generation,
which was failing to clear tiles in the layout of the "processed" state,
leading to unpredicatable results if the same layout layer is used in
a subsequent CIF operation.
2020-10-18 14:03:15 -04:00
Tim Edwards 6b633be797 Corrected the algorithm created yesterday for copying up DRC errors
from child cells, which was incorrectly descending all the way down
into the hierarchy;  not only can this produce the incorrect result
but it also wastes time searching cells that don't need to be
searched.
2020-10-17 11:26:01 -04:00
Tim Edwards d99d84c533 Removed the scalefactor from the DRC-CIF rule parsing, so that rules
are interpreted in the dimensions used in the cifoutput section rather
than always in centimicrons (otherwise, rules at, say, 5nm cannot be
represented in the DRC section).
2020-10-16 09:37:24 -04:00
Tim Edwards 5cb645e2d5 Fixed a missing requirement of a reverse direction check on spacing
rules with "surround_ok" on different planes.
2020-10-15 12:18:14 -04:00
Tim Edwards e7074e5723 Added two small features: (1) Added the "-annotate" option to "lef
read".  While "lef read" normally annotates existing layout, this
option ensures that no additional cells are created from macros in
the input LEF file.  (2) Added a check on the "Input off lambda grid"
warning during CIF/GDS input such that it is not repeated once issued,
as it tends to be output many times when it occurs.
2020-10-14 17:20:45 -04:00
Tim Edwards c0015efbe0 Added experimental "calma addendum" option to output only references
to readonly cells but not the readonly cells themselves when writing
a GDS library.
2020-10-13 09:47:54 -04:00
Tim Edwards 581ad6041b Added new command option "box remove" that removes the cursor box
from the layout window.  The main reason for this is to keep the
box out of the image when doing "plot svg".  The "plot" command was
also modified to always do a plot of the entire cell in the active
layout window if the box is not present.
2020-10-08 13:50:14 -04:00
Tim Edwards 076ee09e2e Added two new command options: "select bbox", which returns the
bounding box of the selection (somewhat unuseful, especially as the
result gets absorbed by the tag callback), and "box select", which
sets the cursor box to the bounding box of the selection (much more
useful).  Also corrected the "port" command so that the command
"port make" will search only for non-port labels.
2020-10-07 15:37:31 -04:00
Tim Edwards 52d9639011 Added a "-nomaster" option to "lef write", and made writing masterslice
layers in the output a default option.  Use "-nomaster" to prevent the
output of masterslice layers.
2020-10-06 15:41:35 -04:00
Tim Edwards aac2c06dfd Corrected a problem with both the "port" command and the "lef read"
command when annotating an existing layout from a LEF database, if
there is a port in the layout that is shadowed by a label with the
same name that is not a port.
2020-09-25 22:39:50 -04:00
Tim Edwards b846c45056 Changed the behavior of the "compose" paint and erase rules to allow
multiple types to be painted;  for example, to paint over both planes
of a contact when a paint type causes the contact to disappear.
2020-09-22 15:25:26 -04:00
Tim Edwards 380b287aa9 Modified the extraction code to properly handle length and width
of devices that have a terminal underneath the device.  Code not
yet tested.
2020-09-21 16:03:37 -04:00
Tim Edwards 813bc223ac Updated version to force the overnight github mirror. 2020-09-15 21:57:20 -04:00
Tim Edwards a52590a10e Updated the version number to trigger the git mirror. 2020-09-11 17:40:46 -04:00
Tim Edwards ebe12fecfe Corrected an extraction error that prevented the use of the same
device layer type to describe the extraction for both a regular FET
and an extended-drain device.  Note that the current code still
requires that the extended-drain device be declared first, and does
not check for this or attempt to reorder if incorrect.
2020-09-10 21:44:02 -04:00
Tim Edwards 6cf5f65b51 Corrected a tiny but bad error in the extract section reading of the
tech file that completely undermined the ability to describe an
asymmetric device (different materials for terminals).
2020-09-09 12:18:09 -04:00
Tim Edwards 1ef4190589 Corrected issue with parent and child cells in completely different
directories starting from root getting the root directory "/"
removed from the front of the child cell path.
2020-09-04 09:57:16 -04:00
Tim Edwards 5148049ffc Modified version to make sure the github repo and tarball gets updated. 2020-09-03 19:31:46 -04:00
Tim Edwards f4b1518825 Changed the "port renumber" command option to sort ports by case-
insensitive alphabetical order instead of case-sensitive.
2020-09-02 09:20:09 -04:00
Tim Edwards 9c1c365a5e Added new command options "port first" and "port next" to make it
easier to scan through a cell's ports.  Used that capability in the
"readspice" script to handle case sensitivity problems, and to find
labels that are not ports and force them to be ports to match the
reference netlist.
2020-09-01 17:16:22 -04:00
Tim Edwards 0df5f6d073 Provisionally switched the memory allocation definitions away from
Tcl_Alloc() and Tcl_Free() because Tcl_Alloc() uses (unsigned int)
for the argument type and therefore limits memory allocations to
what can fit in 32 bits.  Using the system malloc(size_t) should not
cause any issues.
2020-08-11 16:50:26 -04:00
Tim Edwards 18131e26b3 Pulled merge request from Jan Belohoubek, but corrected the problem
of needing to revert parameter definitions after swapping them
during a device source/drain swap.
2020-08-09 13:11:38 -04:00
Tim Edwards 0a532f5721 Applied a patch from Ahmed Ghazy that corrects an error reading PINS
from a DEF file that have the PLACED or FIXED property declared before
LAYER.
2020-08-08 14:02:29 -04:00
Tim Edwards 8b05346409 Added an assertion in ExtCell.c to force a fault if the technology
is NULL when writing a .ext file;  this should help with tracking
down an obscure bug.
2020-08-03 08:18:58 -04:00
Tim Edwards 0598f4edf7 Corrected a potential segfaulting error in which (apparently)
port labels that are unnattached ("attached" to space), or possibly
sticky labels without any geometry underneath, end up with a NULL
node during EFBuild().
2020-08-02 09:37:45 -04:00
Tim Edwards 5fb41a68c8 Modified the routine that determines contact size from the CIF rules
to accomodate a method used for processes that require additional
spacing between contacts for large via arrays;  this requires
distinguishing between large and small areas to output vias, and
so requires use of "and" and "and-not" before "squares".  This
highlights the arbitrary nature of this routine, which probably
works better getting data from cifinput, or not at all (i.e., it is
used when reading LEF, but it is known that the LEF read routines
would be better implemented by running input through CIFGen().  If
that were done, then this problem would not come up).
2020-07-31 14:11:24 -04:00
Tim Edwards 2e0e7af3f3 Corrected an error with the "slots" function that prevents slots
from being generated in areas of negative coordinates when a
grid limit is defined for the output style.
2020-07-30 21:01:24 -04:00
Tim Edwards 313112329c Updated version to force new tarball and github mirror. 2020-07-29 14:16:05 -04:00
Tim Edwards 917d7590d3 Implemented a string truncation with ellipsis for the output to the
caption line in the GUI window, which was causing problems with
long filenames overrunning the string array dedicated to the caption
line.  Thanks to Sylvain Munaut for the patch.
2020-07-27 12:10:08 -04:00
Tim Edwards 13ab2c3e59 Modified the warning in database/DBio.c that says "Cannot open file
for writing!" so that it actually tells you what is the name of the
file that it is trying to write.
2020-07-26 10:58:36 -04:00
Tim Edwards 19dd5638d6 Removed "UNITS \n DATABASE MICRONS" entry from all LEF file output
other than the technology LEF (when given the option to dump the
technology LEF information).
2020-07-25 12:00:18 -04:00
Tim Edwards 850df529b9 Removed "NAMESCASESENSITIVE" from "lef write", since this has been
deprecated since LEF version 5.6.
2020-07-22 12:18:47 -04:00
Tim Edwards ae1743e5ad Removed handling of LEF macro "SOURCE", which is only valid pre-
version 5.6, and Magic now officially writes version 5.7.
2020-07-21 08:40:25 -04:00
Tim Edwards f7b5f38461 Corrected an error in the last commit in which I expanded the body of
a "for" loop in extract/ExtHier.c from one line to two but failed to
then put braces around the whole loop.
2020-07-19 17:08:51 -04:00
Tim Edwards d755e4400a Corrected an error in the the extSubtreeFunc() routine, that is
supposed to pull "sticky labels" into the cumulative flattened
layout.  Because it failed to check for the "sticky" flag, it
would copy all labels, causing extraction time to go exponential
as the number of labels in the design increases.  Based on this
correction, the extHierConnectFunc1() routine should be able to
be optimized by stopping the search for sticky labels on the first
non-sticky label, since extSubtreeFunc() ensures that all sticky
labels come first in the label list.
2020-07-18 15:49:20 -04:00
Tim Edwards 1a774e92d1 Corrected an error pointed out by Sylvain Munaut in which the "plow"
command fails for the tutorial tut3d cell due to a missing
initialization of the cd_cellPlane record in DBCellCopyDefBody().
This was missed in the implementation of "bplane", and was not
checked because the routine is only called from the "plow" command
routines.
2020-07-17 12:38:21 -04:00
Tim Edwards 838c9b840d Added a "calma library" command option, to generate a GDS library
from the subcircuits of a top-level layout without also writing the
top level.
2020-07-16 08:55:46 -04:00
Tim Edwards 7a8e6352a3 Two changes to "lef write": (1) Added support for generating output
for geometry on MASTERSLICE layers (which was inadvertantly broken),
and (2) Added option "lef write -toplayer", which outputs pin geometry
only for the topmost layer belonging to a pin, with connected layers
underneath being designated as obstructions.
2020-07-15 17:29:56 -04:00
Tim Edwards 72b4053774 Updated VERSION to force an update on the system; no changes were
made.
2020-07-05 21:38:28 -04:00
Tim Edwards 52dadcff08 Modified the "plot svg" command to remove the window trimmings
(scrollbar, title bar, etc.) from the output if the command is
called from the non-GUI-wrapper environment (where the border area
is part of the rendered output).  This was required due to an
unsolved bug in which calling magic to write SVG output from the
wrapper in some pathological case exposed a Tk bug that caused
the Tk grid manager to infinite loop, filling memory without
limit.
2020-06-30 16:07:31 -04:00
Tim Edwards f6de28c760 Corrected defs.mak.in to use @LD@ passed from the configure script
instead of hard-coding "ld" for the LINK variable.
2020-06-29 11:07:43 -04:00