Commit Graph

53 Commits

Author SHA1 Message Date
Tim Edwards ed8117784e Corrected three annoying errors: (1) Select net method had been
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.
2020-02-14 09:36:30 -05:00
Tim Edwards 897a8064ba Restored the behavior of selecting and displaying labels that are
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".
2020-02-14 08:48:47 -05:00
Tim Edwards f2dc4b37f0 Corrected the connectivity search function so that it does not attempt
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.
2020-02-13 10:04:55 -05:00
Tim Edwards 61859d152d Corrected a missing argument from the call to DBFlagMismatches()
that causes the recovery option (magic -r) to fail with a segfault
(which is definitely not helpful for recovering lost work).
2020-01-18 15:55:05 -05:00
Tim Edwards ff2f2de046 Corrected the dereferencing code from the last commit, where the
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.
2020-01-03 12:21:39 -05:00
Tim Edwards 82e33248f2 Corrected dereferencing of cell dependencies, which was being applied
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.
2020-01-02 10:13:04 -05:00
Tim Edwards be38dac9fb Corrected .mag file read-in so that it will not complain about
a layout being redefined if one records the full path name and
the other records the home directory tilde expression.
2019-12-14 18:30:48 -05:00
Tim Edwards 0eb3b1fe1c Corrected an error in ext2spice related to the recent modification to get
rid of redundant port entries in subcircuits.  There is still an outstanding
issue as to whether nodes and connections need to be recursively iterated
to the hierarchy bottom.  The current fix corrected the test case.  Also,
added a "-dereference" option to the "load" command to revert to the
original behavior of using only search paths from "addpath" when searching
for files to load.
2019-11-14 15:18:26 -05:00
Tim Edwards b493334c73 Preliminary changes to support extraction devices other than the original
simple FET device in extresist.  Also:  Extended the bloat-all CIF operator
again, allowing the trigger layer for the bloat operation to include both
CIF layers and magic layers (previously only magic layers were supported).
This extension is possible due to the previous extension allowing the
trigger layer and bloating layers to be on separate planes.  This operator
extension is useful for tagging geometry that is in the proximity of, but
not overlapping, geometry on another plane.
2019-10-17 16:21:56 -04:00
Tim Edwards 8b0a9275a8 Fixed the value of property FIXED_BBOX when saving a file; it needs
to be scaled down by "reducer" like all other values in the cell.
Suggests a need to have property types other than string, so that
a property type "rect" or "box" can be declared that is saved as a
Rect and always scales without special hack handling of the specific
string FIXED_BBOX. . .
2019-10-15 20:40:59 -04:00
Tim Edwards 4b5566af3e Corrected an error that causes alias names for layers to become the
principle layer name, which should not happen (especially in the
case of space, where layers may be aliased to "space" to make them
ignored on input).  Also:  Implemented a "-<types>" option to the
"substrate" record in the techfile to declare types which shield
layers from the substrate.  This allows types like pwell to be used
in different contexts, e.g., as part of the substrate, or as a P-well
in deep N-well, without requiring a different type.  This works in
conjunction with the recently-implemented "+<types>" ID types for
devices.  All of this may seem unnecessary but helps to reduce the
number of layers needing to be defined, and the subsequent complexity
of the DRC rulesets.
2019-09-18 20:48:33 -04:00
Tim Edwards 643c39a2d5 Corrected error where modification to allow use of brackets inside
a cell instance name not related to an array moved a variable that
was used later in the routine to the inside of an if block,
effectively making that variable undefined in most cases.
2019-09-03 14:02:27 -04:00
Tim Edwards aa4bb4b19c Since allowing brackets to be part of cell names in a previous
commit, found that DBTreeFindUse fails to find such uses because
it strips the array delimiters off the name.  Fixed the routine
although the routine really should be checking if the use is a
1- or 2- dimensional array and stripping off only the components
expected.  The current code will probably fail for cell uses
that have brackets in the name AND are arrayed.  Fortunately
this search routine does not appear to be used frequently or in
any critical database functions like netlisting.
2019-08-20 10:37:12 -04:00
Tim Edwards 942eaf8113 Revised the substrate extraction method: Instead of searching on
all types specified in the "substrate" statement, split such types
into those on the declared well plane, and everything else.  Any
types on the well plane are searched as before.  Types not on the
well plane (e.g., psd on active) are searched and added to the
substrate node *only* if overlapping nothing on the well plane.
This allows a type such as "psd" to be used on, e.g., both space
(substrate) and deep pwell, but only be extracted as part of the
substrate when found over space.  Note that if there is NO
implicit substrate, the substrate connections will always be
found through the usual connection rules.
2019-08-20 08:42:07 -04:00
Tim Edwards 381fc0cca4 Removed diagnostic print from last commit. 2019-08-02 14:53:22 -04:00
Tim Edwards 9635f10c5a Removed a badly implemented double-loop from the timestamp mismatch
code.
2019-08-02 14:50:32 -04:00
Tim Edwards 0cd45ae6f7 Modified the cell clear routine so that it removes properties in
addition to subcells, paint, and labels.  Otherwise problems arise
if a cell is read from LEF followed by GDS;  the GDS view overwrites
the LEF but the property "LEFview" remains and causes problems when
writing GDS output subsequently.
2019-06-05 16:48:45 -04:00
Tim Edwards bbf6008363 Enhancements to cifinput and cifoutput in the tech file: Added
option "labels ... cellid" to handle some vendor files where
apparently to get around the 30-character cell name limit, the
actual cellname is encoded on a text layer.  Added new cifop
"boundary" (no arguments) for cases where a cell abutment box
is encoded on a GDS layer;  this now translates the bounding
box to the FIXED_BBOX property, as is done with the LEF bounding
box.  Also corrected the property set function to free existing
property value allocated memory when overwriting a property with
a new value.
2019-06-05 15:03:51 -04:00
Tim Edwards 24786b208a Corrected a badly-implemented search for electrical connectivity
through labels with the same text (particularly necessary for
abstract views, since the real connectivity may not be represented).
The original implementation could generate very deep subroutine call
stacks and lead to stack overflow.  The new implementation performs
the same check but without the deep nesting.
2019-05-22 10:38:00 -04:00
Tim Edwards 770a6f4a17 Updated the handling of fixed bounding boxes for abstract views
(once corrected in an experimental branch but never merged).  This
avoids changing the actual bounding box of the cell to match the
LEF bounding box, but defines a property instead and uses that
property for certain functions such as displaying the bounding box
outline or selecting the cell.  This avoids certain related errors
such as the failure to extract connections to areas outside of the
fixed bounding box.
2019-05-06 16:30:29 -04:00
Tim Edwards 7f1fa3a4c5 Modified the label connect function so that it only copies connected
labels if they are in the top-level cell of the connection search.
Otherwise, this slows the connection search way down for nets with
lots of internal labels, and can also have potentially bad consequences
if, for example, the connected network is copied to another position,
and carries all the flattened and non-hierarchically-named labels with
it.
2019-02-09 17:02:23 -05:00
Tim Edwards 78666d57e0 Modified the behavior of label handling in GDS input so that a
label specified as having type "space" automatically overrides
the "no-reconnect-labels" flag.  Modified the behavior of the
label reconnect algorithm so that it searches by plane order so
that material on the highest plane that matches the reconnection
criteria is chosen over similar materials on lower planes.
2019-01-31 10:56:38 -05:00
Tim Edwards 61beaeaf83 Corrected a problem that can cause super-long run times for
extraction.  The plane mask array that denotes for each type which
planes should be searched for connecting types is supposed to be
a rare case that covers situations where planes connect by types
that are not contacts.  Instead, many planes were in this array,
causing the worst-case extraction methods to be run constantly.
2019-01-28 22:36:20 -05:00
Tim Edwards f8b79133fb Corrected the "port makeall" command so that it actually works, and
since the edit box was undefined in the code, potentially this
fixes any number of random problems that might be seen with the
"port" command.  Also:  Modified the cell bounding box recalculation
so that it does not continually update a parent cell on every
addition of a child cell but only once for each child cell found.
This greatly reduces the time for GDS file input in the case of
large arrays of cells.
2018-09-13 21:09:38 -04:00
Tim Edwards e073394430 Applied another patch by Iain McNally that restores the obscure
function that was available in versions 7.1 and earlier that
allows the use of the command "erase errors" to remove DRC error
paint (only when the DRC checker is off, of course).
2018-08-20 22:43:34 -04:00
Tim Edwards ecf27c9a17 Corrected missing include to tclmagic.h from txCommands.c, where
freeMagic() is used (and is a macro to Tcl_Free()).
2018-06-17 15:12:00 -04:00
Tim Edwards 5e2874a0fa Fixed a crash condition on saving a backup file if a cellDef's
cd_file entry is NULL, relying on cd_name instead.
2018-05-30 22:51:13 -04:00
Tim Edwards c522acab33 Corrected a minor issue with the database read incorrectly generating
an error message when reading uses from a .mag file.  Also modified
the GDS write routine to provide an error message when an abstract
view points to a GDS file but the GDS file cannot be found.
2018-04-24 09:29:05 -04:00
Tim Edwards 5da432b821 Added ever so slightly more information to the output when handling
issues with subcell loading.
2018-04-18 14:09:26 -04:00
Tim Edwards 95b572715c Some minor changes to file instance handling, mostly to make output
less confusing.  Removed leading spaces in instance path which
could cause a failure to recognize that a path was not specified
for a use in an input file.
2018-04-17 10:08:00 -04:00
Tim Edwards e991e2cfc7 Added a fallback method to file reading so as to not create havoc
from the rigorous method of versioning in case files are relocated
and the use paths are no longer valid.  Cells are then searched
for in the search paths in the traditional manner, albeit with a
stern warning.  This should avoid most backwards-compatbility
issues.
2018-04-16 21:43:35 -04:00
Tim Edwards 79cb20cf9a Additional corrections to ensure that every cell that is read or
written interprets the path of every use as either a full
absolute path or a path relative to the parent cell, given the
different ways that a parent cell's path could be specified
(absolute or relative).
2018-04-06 15:09:43 -04:00
Tim Edwards 3bf2441818 Last update contained an error in writing database files in which
the path component of the use def was interpreted as being relative
to the parent when reading the cell def but not when writing,
resulting in paths being interpreted incorrectly.
2018-04-06 12:50:37 -04:00
Tim Edwards 0592b5e48d Removed swap file caused by editing a file during a push. 2018-04-01 22:03:27 -04:00
Tim Edwards dc49771220 Finished restoring the plow function to the original capability.
However, various updates are needed to match changes in magic
over the years, including handling of non-manhattan geometry,
and handling of added DRC rules such as surround and extend.
2018-04-01 22:00:57 -04:00
Tim Edwards 42ec70d4dc Re-implemented plow setup for the first time since about 2006,
enabling the "plow" command.  At this time, however, not all
rules are being implemented correctly given the numerous changes
to the DRC handling since the last time "plow" was working.  Fixes
are ongoing.
2018-04-01 14:40:10 -04:00
Tim Edwards 7edd4baeab Added additional handling for versioning to include relative paths
and home paths.
2018-03-23 13:06:58 -04:00
Tim Edwards e60edf3c58 Finished implementing cell versioning, which was implemented for
file writes by adding the path for each cell use, but being ignored
for file reads.  The cell path saved in the .mag file is now honored
on read-back.  If the cell needs updating, then the cell version
can be manipulated using "cellname filepath".  No UI methods are
currently implemented for managing cell versions.
2018-03-23 10:52:57 -04:00
Tim Edwards aebabc0447 Corrected an error in writing out .mag files with property values
that are longer than the formerly-fixed array size 256.  This
conflicted with the recent addition of holding path data in
properties, where the path coordinates can be significantly
longer than the fixed array size.  Same change as made to magic
version 8.1.
2018-01-08 21:45:19 -05:00
Tim Edwards f4ae5d8789 Corrected extended bounding box for LEF-derived views setting
FIXED_BBOX;  same change made to magic version 8.1.
2017-12-13 11:16:02 -05:00
Tim Edwards 741df0fe01 Removed the "macosx" definition from the configuration file, which
got copied over from another project but apprently causes serious
issues with the OSX compilation.
2017-10-14 18:42:24 -04:00
Tim Edwards cfccdb84c1 Rewrote the configuration scripts, makefiles, and some initialization
routines to use the Tcl and Tk stubs libraries.
2017-10-13 10:28:07 -04:00
Tim Edwards 8ca2db78a2 Corrected failure to update root box and crosshair position when
rescaling the internal units.  The former in particular can
cause problems when moving the root box and importing cells from
a script (same change as made to magic-8.1).
2017-09-26 14:09:35 -04:00
Tim Edwards 1d3bb0d698 Corrected problems having to do with color (blue and green were swapped)
and incorrect call to cairo_set_source_rgba which is in an unused
function and has no effect except with versions of Tcl less than 8.6
where "load -lazy" is not available and unknown functions cause
immediate exit.  Cleaned up remaining references to OpenGL in the
Cairo code, and updated the copyright and acknowledged Chuan Chen, who
coded the Cairo interface.  No attempt yet to deal with memory leaks
caused by calling Cairo "create" functions without the accompanying
"destroy" functions.
2017-09-12 15:42:08 -04:00
Chuan Chen 1bda1206db Remote changes at Fri Sep 1 14:41:47 EDT 2017 by chuan on vivaldi 2017-09-01 14:41:47 -04:00
Tim Edwards 21d558c67d Changed the definition of CPP again so that even in the absence of
the python preprocessor version, the techfiles and .magicrc file
will get the correct arguments, without affecting the use of CPP
in the configure script.
2017-09-01 08:40:58 -04:00
Chuan Chen a40c1f21a7 Remote changes at Wed Aug 30 16:34:42 EDT 2017 by chuan on vivaldi 2017-08-30 16:34:42 -04:00
Chuan Chen 432777a5b1 Remote changes at Tue Aug 29 12:55:06 EDT 2017 by chuan on vivaldi 2017-08-29 12:55:06 -04:00
Chuan Chen 2aaa1667ac Remote changes at Fri Aug 25 14:23:05 EDT 2017 by chuan on vivaldi 2017-08-25 14:23:05 -04:00
Chuan Chen 72854afb8f Remote changes at Thu Aug 24 17:52:02 EDT 2017 by chuan on vivaldi 2017-08-24 17:52:02 -04:00