Commit Graph

1155 Commits

Author SHA1 Message Date
Tim Edwards fdf379ef71 Reinstated the search on subcells when doing "drc check". This is
somewhat inefficient, but otherwise subcells do not get re-checked
for errors.
2020-12-02 13:21:37 -05:00
Tim Edwards 83e2fe55ce Corrected an error in the "close" CIF operator, which was checking
for infinities in space tiles by checking tile dimensions against
TiPlaneRect, where in fact TiPlaneRect is slightly smaller than
the plane boundaries, so this check would always fail, causing
unpredictable behavior due to integer overflow.
2020-11-24 15:57:40 -05:00
Tim Edwards 497c13c34e Updated VERSION to 8.3.89. 2020-11-24 15:38:45 -05:00
Tim Edwards bb83b1df89 Merge branch 'master' of 192.168.0.7:/home/tim/gitsrc/magic/
Pull before push
2020-11-24 15:38:02 -05:00
Tim Edwards f343863ce3 Corrected two annoying errors: (1) SPICE netlist output subcircuits
could have multiple ports of the same name.  This problem had been
worked over before, but there was an indpendent mechanism producing
the same result for a completely different reason, caused by subcells
being much larger than the cookie-cutter extraction method's extraction
regions.  Solved by tracking port names in a hash table and preventing
re-use.  (2) ext2spice was producing "no such node" errors;  like (1)
this had been previously worked on, and like (1) this mechanism was
independent.  Problem came from not passing -1 to extHierSubstrate for
the non-arrayed dimension of a 1-dimensional array.  Also:  Removed
the word "fatal" from extraction error reporting, as nearly all
extraction errors are entirely benign.  This should clear up confusion
among alarmed end-users.
2020-11-24 15:30:49 -05:00
Tim Edwards 3a42a1aa58 Corrected the lefRead routine so that LEF annotation works properly
on cells with multiple ports per pin.  As written, the code was
erasing all labels before creating a new port label, which would
erase all previous port labels.  This should have been done only on
the first port.
2020-11-23 14:28:46 -05:00
Tim Edwards 0ad9ac91e3 Updated version to go along with the pull request merge from github. 2020-11-21 17:25:03 -05:00
Tim Edwards b9f9f73c9b "Partly" corrected an issue in GDS read: The cd_client record is
used both for counting cells during GDS write and for saving
geometry data from the "copyup" operator during GDS read.  The write
routine does not clear the client record, and the read routine was
checking if the cd_client value was default.  Corrected the resulting
crash condition by resetting cd_client before GDS reads.  However, the
underlying problem is that the GDS read is reading data into a cell
that already exists in the database, and is not handling it robustly
by renaming the existing cell.  So this should be revisited.
2020-11-20 19:56:41 -05:00
Tim Edwards 0608784a18 Added an option to "findlabel", a 3rd argument which is the
occurrence of the label to place the box on.  This can be used with
"findlabel -glob <name>" to get a list of labels and determine the
length of the list, and then iterate through each occurrance of the
label in the edit cell.
2020-11-20 10:10:32 -05:00
Tim Edwards 960be0e9b0 Rewrote the hierarchical check routine so that it does not report
disagreements between parent and child cells on GDS generation for
templayers, as these layers are not output;  any resulting differences
showing up eventually on an output layer will be reported.
2020-11-18 22:31:19 -05:00
Tim Edwards f934fc3cf5 Updated version in preparation of forcing the github mirror update. 2020-11-17 14:36:02 -05:00
Tim Edwards 4cac448337 Such a little typo, such a big problem. . . Fixed error from last
commit.
2020-11-17 14:29:21 -05:00
Tim Edwards 7a12bf8f60 Corrected a badly-written routine for the CIF generator for operator
bloat-all, that was resetting flags in the entire plane within the
callback for each tile processed.  This would push DRC run-times from
minutes to hours.  Also corrected another, much more minor, efficiency,
in which the connection mask was generated in the callback routine
for each tile, instead of calculating before the plane search and
passing the mask to the callback function in the client data.
2020-11-16 11:29:36 -05:00
Tim Edwards 750d6c0ecf Corrected a bad error (missing braces around a code block of more
than one line) in the "grow-min" function that was affecting GDS
output for any layers using the grow-min operator.
2020-11-13 10:24:31 -05:00
Tim Edwards 6d009682bc Applied a patch by Matt Guthaus to a routine in the readspice
annotation script, that moves a block of code making a list of
all labels outside of an inner loop where it causes a huge slowdown.
2020-11-12 16:46:51 -05:00
Tim Edwards cd3d765f9d Changed the readspice (annotation) script so that it uses the exact
label name with "port make", resolving any issues that might arise
if the label overlaps another.
2020-11-12 13:59:22 -05:00
Tim Edwards b0616e9f0e Fixed two misspellings in comments. 2020-11-12 10:55:20 -05:00
Tim Edwards 75a18053f8 Modified the CIFGenLayer() routine to be aware of when it is called during
hierarchical processing from CIFGenSubcells() and CIFGenArrays(), and to
avoid certain operators that are useless and harmful when applied
hierarchically; namely squares, slots, bbox, boundary, and net.
2020-11-12 10:34:27 -05:00
Tim Edwards 73629467ed Added a forward reference to prevent a compiler warning. 2020-11-11 14:12:51 -05:00
Tim Edwards ad2857dfab Corrected the "grow-min" CIF operator to grow more than the minimum
amount as needed to land on the specified minimum manufacturing grid.
2020-11-11 14:06:12 -05:00
Tim Edwards 114982fc72 Corrected the handling of DRC in cell instance arrays so that it matches
the handling of subcell instances generally.  Previously it would check
the interaction between neighboring cells in an array without regard to
any material in the parent cell which might remove those errors;
consequently, the array would have to be DRC clean by itself in order for
the parent cell to show as DRC clean.  The array check has been moved
inside the DRCInteractionCheck() routine, so that it runs only where
arrayed instances do not interact with anything else.  Within interaction
areas, the area is flattened and checked, so the array check is not
needed.
2020-11-11 11:50:16 -05:00
Tim Edwards 6b84efa86e Additional correction for the CIF "close" operator. 2020-11-10 13:28:40 -05:00
Tim Edwards 4f7567b864 Problem apparently stems from the routine not being in the header
file, so corrected that, too.
2020-11-10 11:11:41 -05:00
Tim Edwards d2fc99c433 Corrected an error that makes the "drc listall why" command segfault. 2020-11-10 10:52:32 -05:00
Tim Edwards 904a60423e Corrected the CIF "close" function to accommodate non-manhattan
geometry.
2020-11-10 10:26:01 -05:00
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 d50fd1c42c Corrected a wayward cut-and-paste error from the last commit. 2020-10-26 13:23:52 -04:00
Tim Edwards 1891abe348 Also added code to not put parameters for a device marked "Ignore"
into the .ext file, in case such devices were assigned parameters.
2020-10-26 13:12:18 -04:00
Tim Edwards 3755661196 Changed the behavior of searches for labels in the basic extraction
such that it looks for material connecting to the label at the
center point of the label and not the lower left corner.  This keeps
the behavior of looking for tiles on the corners of a degenerate
label line or point between layers, but avoids problems with sticky
labels that are not quite aligned with the rectangle (due to certain
commercial EDA tools that have a sloppier notion of labeling).
2020-10-26 13:01:04 -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 8da47b6e84 Made a change to the way ext2sim determines if a FET type is an n or
p device;  this was previously dependent only on the first character
of the extracted device model name.  Since the tech file has control
over what the device layer names are but not the extracted model
names, the device layer type name is used as a backup way to determine
if the type is n or p, if that cannot be determined from the extracted
model name.
2020-10-20 12:22:02 -04:00
Tim Edwards 503a6bc190 Corrected the (minor) problem caused by the slightly different handling
of an alias that defines only one type (which is treated like it
would be if it were declared on the same line as the original type
declaration), such that the alias name does not become the default
name for the layer (which is the one that ends up showing in the
title bar when hovering over the layer toolbar icon).  Mainly the
problem showed up as "nwell" for the sky130A process appearing in the
toolbar as "allwellplane".
2020-10-18 14:28:23 -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 a015b7f8eb Corrected a problem in which extraction of MOS caps (or any device
with two or more terminals other than the device identifier type
tied together) would fail if there were not a device record
specifically matching a one-S/D-terminal device.  This is
inconsistent with past behavior, and so has been fixed.
2020-10-17 12:43:22 -04:00
fabian-l-c c872db78b3 Added new cif operator bridge-lim
The new CIF operator BRIDGE-LIM is similar to the BRIDGE operator with the difference that the material created to meet the minimum spacing/width rules do not overlap the limiting layers. Syntax of the new operator is:

bridge-lim spacing width layers

where "layers" are the limiting layers.
2020-10-17 12:23:16 -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 65b7ca8dac Corrected a few wayward commas in the "lef" command that prevented
correct operation of "lef write".
2020-10-16 21:14:10 -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 4b0652ecc9 Additional change: The switch to propagating DRC errors up from
the bottom in non-interacting areas means that any change in DRC
to a subcell must be handled before checking DRC in the parent.
Previously the order of checks was reversed, moving parent cells
to the beginning of the check list.  This prevents the error cited
in the previous commit which was showing up as a delayed DRC check
when creating parameterized cells.
2020-10-15 20:59:08 -04:00
Tim Edwards 2a4baa82c3 Substantially overhauled the way that the DRC checker finds and
processes "interaction areas".  This should eliminate weirdnesses
where errors will fail to show up in a subcell that does not
interact with paint or other subcells in the top level edit cell.
These errors cannot be reported directly in the top level cell,
but a new error message has been created to direct the user to
check the subcell for errors.  Also:  Modified the toolkit procedures
to force DRC to be run on newly created or modified parameterized
cell layouts.  There is some oddity about the process that causes
DRC errors to be delayed unless a print statement is put before the
DRC check;  I would like to investigate this further.
2020-10-15 17:31:20 -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 4bbe4ef74e Added another fix from a pull request by Dan Moore, which apparently
fixes a problem with substrate nodes not being flagged as such when
reading .ext files.
2020-10-14 22:53:03 -04:00
Tim Edwards 9f49ad97da Added a fix from Dan Moore to remove the Depend files on "make clean"
(these are automatically removed and regenerated on "make" anyway).
2020-10-14 22:39:48 -04:00