Commit Graph

330 Commits

Author SHA1 Message Date
Tim Edwards 52a424e511 Added another option to the "extresist" command, this one to include
specific nets to extract, rather than excluding them.  That allows
"extresist" to target specific nets like the power supply or a clock
tree for extraction.
2021-10-04 15:32:37 -04:00
Tim Edwards 98a631144c Updated version to go along with the merge of pull request #90 from
Harald Pretl.
2021-10-02 11:07:17 -04:00
Tim Edwards 36864bc79e Reverted a change made in version 8.1.154. The implementation is
wrong, and it needs revisiting.  This is the cause of a number of
negative capacitances appearing in the netlist (even after accounting
for overlap with subcircuits).
2021-09-28 21:26:27 -04:00
Tim Edwards c101d98921 Modified EFbuild.c to stop generating an error message when an
"equiv" statement is encountered in a .ext file when using the
"ext2spice short" option.
2021-09-20 15:02:57 -04:00
Tim Edwards 35a65a9ba1 Corrected the "def read" command so that when reading PIN blocks,
all geometry will be handled;  the previous behavior expected only
a single rectangle per pin and so would only acknowledge the last
entry in any list of rectangles for the pin.
2021-09-15 14:45:14 -04:00
Tim Edwards bfab888bc9 Cleaned up a few lines related to "equiv" nodes, which are not
actually an issue and probably never relevant.  extresist now works
except for substrate connections and soft connections between substrate
regions.  That will require additional coding, not bugfixing, so I'm
committing the last of this set of bugfixes before starting that.
2021-09-14 13:42:27 -04:00
Tim Edwards c7077d38c3 Separated out the flag used for "ext2spice extresist on" and
"ext2sim extresist on", which was being shared;  that leads to
confusion, especially when using "ext2sim" to generate a node
name input file for "extresist".  Also:  Added a warning when two
ports are merged in a .ext file, as this can lead to numerous
incorrect entries in netlist output.
2021-09-13 10:36:01 -04:00
Tim Edwards 02f42e7260 Corrections to the extresist code. Some of the changes are just
text formatting.  Made one critical correction to ResGetDevice() to
pass the device type;  otherwise, devices on different planes (e.g.,
MiM caps) with the same coordinate will always return the device on
the lowest plane, leading to incorrect results and an eventual crash
when the device record is free'd twice.
2021-09-12 17:20:22 -04:00
Tim Edwards 96b7c20c17 Added option "notopports" to "extract unique". The option
behaves like "extract unique all" on all cells below the topmost
level of hierarchy, and "extract unique noports" on the top
level.
2021-09-09 15:47:48 -04:00
Tim Edwards d63a102515 Made various updates and corrections to the "extresist" code in
support of devices with terminals on different plances, such as
capacitors, diodes, and bipolar transistors.  Output now appears
to give meaningful results for flattened layouts, although
numerous issues remain for hierarchical layouts.
2021-09-08 16:41:36 -04:00
Tim Edwards 0ebdf3e513 Updated VERSION to go along with pull request #87 from Ryan Schmidt.
Also using this to test the last update to the continuous integration.
2021-08-28 13:18:33 -04:00
Tim Edwards 4cba342ad0 Changed README to README.md to be compatible with github. 2021-08-28 13:15:08 -04:00
Tim Edwards 303c4c45dc Corrected the badge link in the README file to point to my own
repository and not Sai Charan's fork.
2021-08-28 13:04:52 -04:00
Tim Edwards 1ffd1c51ec Updated VERSION to go along with the merge of pull request #88 from
Sai Charan.
2021-08-28 13:00:06 -04:00
Tim Edwards d711b12311 Updated the version with the last commit. 2021-08-25 21:42:20 -04:00
Tim Edwards f428b7c792 Corrected a scaling error that causes all extraction dimension values
to be scaled twice when using the "extract style" command and with an
extraction style that uses micron units.  The microns-to-internal
units conversion expects an unscaled result when calling
CIFGetOutputScale(), but except when loading a tech file for the
first time, this value is scaled, and causes the double scaling.
Fixed by unscaling the CIF output before reloading the extraction
style, then scaling it afterward.
2021-08-23 13:46:19 -04:00
Tim Edwards 56d1d9380e Corrected an error caused by the modifications to the DRC engine
to copy up errors from non-interacting subcells.  The routine was
only copying up TT_ERROR_P type errors, but for deep hierarchies,
TT_ERROR_S type errors may have to be propagated up as well.
2021-08-20 21:49:27 -04:00
Tim Edwards e50dab7e52 Modified the way that ToolGetEditBox() works so that it does not
require that an edit cell be defined.  This stops a lot of commands
from failing on non-writeable cells.  There really should not be a
concept of "non-editable" cells at all, just non-writeable ones.
2021-08-04 12:05:21 -04:00
Tim Edwards c776c82445 Fixed an error in the DRC rule optimization ("||" used instead of
"|"), pointed out by Jim Everitt.  The error is pretty major, but
because the section of code it affects is just eliminating
unnecessary DRC rules, I believe that the only effect is that the
DRC ruleset ends up using more memory than it needs to.  But, good
to have fixed.
2021-08-01 12:04:13 -04:00
Tim Edwards 1d8a59049c Added sanity checks to the GDS dump from GDS_FILE pointers. Since
it is easy to subvert the process by updating GDS without updating
the pointers, it is trivial to end up with bad GDS output.  The
sanity checks confirm that the position pointed to is a complete
structure (check begin and end records), and that it has the same
name as the cell (this is not a requirement, as there are reasons
one might want to point to data from a structure of a different
name, but a warning will be printed).
2021-07-30 13:45:03 -04:00
Tim Edwards 07e366ad8a Extended the "cellname rename" command to add an option "-force"
that can be used to force renaming of a read-only cell.  The
action revokes the read-only status of the cell and removes any
GDS filename and pointers from the cell's properties.  This can be
used to swap out a library cell in a layout for a custom version,
by first forcing a rename of the cell, and then resetting the
filepath of the cell and flushing.
2021-07-29 17:34:39 -04:00
Tim Edwards 55bf0ebd54 Corrected the "bridge" operator, which failed to check for "false"
tile corners in the check area to find areas needing bridges.
This prevents generation of unnecessary bridging geometry;  and
since the error made the check rotation-dependent, this may
resolve some "parent and child disagree on CIF" errors.
2021-07-28 09:40:36 -04:00
Tim Edwards 25166f2f7c Corrected issue with finding devices in ResMain()---there is not
necessarily a 1:1 correspondence from tile types to extracted
device names, and not necessarily a 1:1 correspondence in the other
direction, either.  So the search for devices at the location given
by the .sim file has been loosened to look for any tile type at that
location.  Matches are restricted to those in which the plane of the
type found is the same as the plane of the device recorded in the .sim
file;  this prevents matching device like MiM caps that may be in the
same location as a device in another plane.
2021-07-27 14:34:01 -04:00
Tim Edwards cc16b82a79 Corrected a problem in ext2spice which has been in the code for a
very long time but never discovered;  in which any implicit port
connection into a subcell (that is otherwise labeled with ports) that
appears at the end of the node list (i.e., after all the declared
ports), will not be output, either in the subcircuit definition or
calls.
2021-07-25 13:49:13 -04:00
Tim Edwards 758a7d72ec Corrected a potential segfault issue in "extresist" if it encounters
a port label that is not connected to a valid layer (e.g., space).
2021-07-23 10:39:59 -04:00
Tim Edwards 7c973ad91a Corrected an error caused by fixing the unterminated comment in
the last commit, which was an undeclared variable in the block
that was being left out accidentally.  So that has now been fixed.
2021-07-13 14:08:35 -04:00
Tim Edwards 648f27dcf0 Corrected an unterminated comment pointed out by Jim Everitt. 2021-07-12 09:52:14 -04:00
Tim Edwards 1d24d2869d Updated version with the last commit. 2021-07-10 21:17:12 -04:00
Tim Edwards 355399d3ef Modified the startup behavior so that if a ".tcl" script file is
presented on the command line, then all following arguments are
assumed to be arguments of the script and not additional input
to be processed by magic.  This allows arguments to be passed to
scripts passed to magic on the command line.
2021-07-08 16:03:05 -04:00
Tim Edwards 3b70c95013 Updated the version along with the fix to "cif coverage". 2021-07-04 22:34:52 -04:00
Tim Edwards 958d6f1670 Updated the version to match pull request #84 from Dan Moore. 2021-06-29 14:25:33 -04:00
Tim Edwards b0ed7f09a9 Modified the "flatten" command so that when used with "-dobox", it
is not necessary that the target cell not exist.  That allows a
layout to be flattened into a destination in pieces.  Also found
that the "flatten" command never frees memory for the CellUse it
creates for the copy, so fixed that as well.
2021-06-23 17:41:32 -04:00
Tim Edwards e36560fb90 Added a missing include of ctype.h to a source file that uses the
isalnum() subroutine.  Corrected an assignment in utils/tech.c
which was a syntax error that passes through the compiler.
2021-06-19 10:30:47 -04:00
Tim Edwards e55c1ecbda Corrected issues with GDS write that come from two features recently
introduced:  The use of substitutions for PDKPATH and home directory
in path names for GDS files referenced in abstract views, and the
"gds addendum" option.  Both were interfering with magic's handling
of writing GDS files from abstract layout views.
2021-06-17 12:40:21 -04:00
Tim Edwards 39630ea710 Added missing function declaration for GeoCanonicalRect in
geometry.h.
2021-06-14 09:45:36 -04:00
Tim Edwards 6e09586c54 Changed the property attribute number used for cell instance names
from 98 (arbitrarily selected) to 61 (apparently commonly used by
other tools).  This should help increase compatibility with GDS
files output from other tools.
2021-06-13 12:23:07 -04:00
Tim Edwards 75386e6467 Corrected the GDS read routine so that the "gds noduplicates"
option does not get undermined by GDS files that have cell
instances appear before cell definitions.
2021-06-12 11:40:13 -04:00
Tim Edwards 36f61ca601 Modified the CIF/GDS array processing in CIFhier.c, finding that there
were incorrect assumptions made in the code from 35 years back or so,
for the case where the CIF layer halo is larger than the size/separation
of the cells in the array.  The new code will prevent the array routine
from copying hierarchical additions to the mask layers outside of the
array area.  Whether or not the new code has its own faulty assumptions
remains to be seen through thorough vetting.
2021-06-07 16:38:12 -04:00
Tim Edwards 35b60531e5 Corrected CalmaRead to remove a syntax error that managed to end up in
the last commit, unfortunately.  Thanks to Matt Guthaus for alerting me
to this.  Also updated parts of the extresist code that remove the
dependence on ResConDCS;  this is a minor update and should not affect
the operation of extresist.  It is preparatory to doing more work to
support additional device types like capacitors, bipolars, and diodes.
2021-06-06 21:44:52 -04:00
Tim Edwards 78be76a650 Corrected a potential crash condition if attempting to read a GDS
cell without any edit cell defined.
2021-06-05 17:02:39 -04:00
Tim Edwards 0503ce0ebf Corrected the "surround_ok" spacing rule, which did not prevent
the layers2->layers1 swapped case from being implemented;  the
surround_ok rule type is by definition asymmetric and the two
layer sets cannot just be swapped.
2021-06-04 12:26:11 -04:00
Tim Edwards a8fcca13ee Corrected an error in the implementation of the CIF "mask-hints"
operator that failed to set cifplane to curplane before drawing into
it.  This can cause the "mask-hints" layers to vanish, or worse,
cause a segfault.
2021-06-01 10:25:34 -04:00
Tim Edwards 7d6c7f5797 Updated the version number. 2021-05-27 16:15:56 -04:00
Tim Edwards 7f11020ab4 Additional changes, almost all stylistic, to make the resis/ section
style conform to the rest of the database.  It is difficult to work
with code written in a sloppy, random style.
2021-05-26 22:34:36 -04:00
Tim Edwards c22d584ac3 Corrected a problem with character array bound overflow when writing
values to a LEF file.
2021-05-25 11:05:33 -04:00
Tim Edwards 5e02726f7f Modified the cell load routine to avoid creating an "undo" record
for loading a cell after displaying an unmodified "(UNNAMED)" cell,
because "(UNNAMED)" will be deleted, leaving the undo record
invalid and causing a crash if it is attempted to be invoked.
2021-05-23 12:07:31 -04:00
Tim Edwards 123219b5f1 Corrected an error in the extresist code that will cause an infinite
recursive loop and crash magic.  Corrected a number of other issues
along the way, especially one where routines in EFantenna and extresist
make use of array EFDevTypes which was only created by ext2sim and
ext2spice, and freed when done.  Having run extresist through valgrind,
there are still issues in the code.
2021-05-21 16:33:20 -04:00
Tim Edwards 032a2e7221 Merge branch 'master' of 192.168.0.7:/home/tim/gitsrc/magic 2021-05-19 17:24:04 -04:00
Tim Edwards 33edee6b42 Modified the condition under which the (UNNAMED) file is deleted
on loading a layout to avoid doing so with in a suspendall ...
resumeall block.  That avoids weird errors occurring when the
PDK toolkit scripts are run to generate a new device layout if
the top level layout is still (UNNAMED) and empty.
2021-05-19 17:21:59 -04:00
Tim Edwards ff913ddb23 Updated VERSION. 2021-05-17 15:22:27 -04:00