Commit Graph

389 Commits

Author SHA1 Message Date
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 8f7db3942c Fixed the "writeall force" command, which was behaving exactly the
same as "writeall", meaning that "force" was not being honored and
only cells that were modified were being written, in either case.
2019-06-04 16:17:17 -04:00
Tim Edwards 8170dbe01f Additional corrections to the wiring for some code changes that
were made where contacts are placed when shifting up on metal
layer but not made for the reverse case.  Also corrected one
inconsistency with non-minimum width wires.
2019-06-04 12:13:47 -04:00
Tim Edwards e4bfe864ba Modified the techfile "wiring" section to allow a scalefactor with
the same interpretation as the scalefactor for the DRC section:
Values in the section are interpreted as lambda divided by the
scalefactor.  That allows the wiring values to be real units such
as nanometers and avoid problems with fractional lambda values.
2019-06-04 09:15:56 -04:00
Tim Edwards b098fbbfbb Modified the "def write" routine to strip any path component off of
a cell name (although cell names are not supposed to have path
components, so need to find out where they came from. . .).
2019-05-28 17:14:24 -04:00
Tim Edwards a56309fdb6 Additional change to CalmaWrite: when handling cellnames with
lengths exceeding the maximum GDS name length (32 characters),
truncate by removing all but the last 32 characters, instead of
the previous behavior which was to remove all but the first 32
characters.  The last 32 characters are far more likely to be
unique than the first 32, given that the usual reason for extra-
long names is the concatentation of hierarchical names.
2019-05-22 17:03:52 -04:00
Tim Edwards 30a2226dbb Corrected a problem in CalmaWrite where a cell that was defined
redundantly was flagged, and output anyway, but the cellname was
not being written to the output, resulting in a bad GDS file.
2019-05-22 16:52:34 -04:00
Tim Edwards 243e9652e5 Added information to the GDS read routine error output to indicate
the byte position of the error.
2019-05-22 16:12:13 -04:00
Tim Edwards ec8ffe7333 Corrected an error in the GDS read routine which attempts to kill
a hash table that was never initialized, if the GDS file input
reader encounters an error in the GDS data.
2019-05-22 14:24:44 -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 704f1dc69f Corrected an error that has been in the magic code forever, in which
if a GDS (CIF) layer is dependent on, and only on, a templayer or
layers that get hierarchically processed, it will not get added to
the list of layers needing hierarchical processing, and therefore
end up not being generated in the output.
2019-05-16 17:41:42 -04:00
Tim Edwards e2dd5f5157 Corrected the wiring command (adjustment to recent change for
centering wires on grid lines when using a snap grid) so that
the wire width is maintained when switching from one layer to
another, when the wire width is larger than the minimum for the
route layer.
2019-05-16 09:52:59 -04:00
Tim Edwards f7d57c913c Modified "def write" to prevent out-of-bounds array access when
writing vias.  However, the underlying problem, which is that
stacked vias are not decomposed into their constituent parts, has
not been addressed.  A "-units" option was added to the "def write"
command to force the units of the output file to be different than
the default of 1000 (nanometers).  No checks are made for whether
values can be accurately represented at the specified scale.
2019-05-11 15:09:01 -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 fc7249b04c Extended the "port" command to operate on labels in non-edit cells
as long as the command is not attempting to modify the port.
Attempts to modify ports in non-edit cells result in an error
message that is more helpful than the previous "Exactly one label
must be present..." text.
2019-05-03 10:13:06 -04:00
Tim Edwards b8bfaa5066 Corrected command option "select [more|less] cell <cellname>", which
was not recognizing the more|less option and therefore failing to
search for the instance <cellname>, rendering the command non-functional.
2019-05-03 09:14:25 -04:00
Tim Edwards 9ec23203fb Extended the wiring section definition to add wire extensions in
addition to wire overlaps, and added a method when painting
contacts to draw the necessary wire extension past the contact.
Since the wiring method draws single contacts by default, this
wiring method assumes a change in direction between layers.  But
the main point is to generate wire contacts without DRC errors.
2019-04-24 10:48:45 -04:00
Tim Edwards 5e9f274f65 Modified the way magic does wiring so that when working on a grid,
the wires stay centered on a centerline with respect to each other.
Also corrected the long-standing minor issue that the outline
drawing of the wire does not update when using the mouse scroll
wheel, making it unclear that the wire size has changed until the
wire position changes.
2019-04-23 14:32:11 -04:00
Tim Edwards 7e738576bc Corrected errors in LEF output syntax (missing semicolons at
statement ends on properties imported from a LEF file).  Never
noticed before because writing LEF after reading LEF was unusual.
2019-04-01 12:23:48 -04:00
Tim Edwards f6d4da56ce Extended the "lef read" command when used to annotate existing cells
so that PIN information including USE and CLASS are added to port
labels (previously only the bounding box was annotated).
2019-04-01 11:26:00 -04:00
Tim Edwards 465a46c1c6 Merge branch 'master' into work 2019-03-20 10:09:07 -04:00
Tim Edwards 9e364111fb Update at Wed Mar 20 10:09:07 EDT 2019 by tim 2019-03-20 10:09:07 -04:00
Tim Edwards 92bf587a46 Fixed an error in the previous commit handling pin labels in GDS
input, which failed to update the "lastLabel" record of the cell
in the case that the placeholder label being deleted was the last
label, leading to labels being lost during GDS input.
2019-03-20 10:07:25 -04:00
Tim Edwards 5c36296acf Merge branch 'master' into work 2019-03-19 22:29:31 -04:00
Tim Edwards b7884f7917 Update at Tue Mar 19 22:29:29 EDT 2019 by tim 2019-03-19 22:29:29 -04:00
Tim Edwards 1533424590 Corrected scaling of label rectangles in GDS (that is, GDS layer
types that have been specified as being ports or text), since the
labels are in the magic database and at a different scale.  Added
code to cope with the fact that the labels may come after the
definition of the rectangle, so a rectangle identified as a port
or text label will generate an empty placeholder label, and all
new labels are checked against any empty labels in the database to
see if they are bounded by them.  If so, then the empty label is
removed and the label point is replaced by the rectangle.  This is
a ridiculously round-about way to deal with an under-specified
file format. . .
2019-03-19 22:25:25 -04:00
Tim Edwards ca408a8f22 Merge branch 'master' into work 2019-03-12 13:31:35 -04:00
Tim Edwards e183a5bd5c Update at Tue Mar 12 13:31:32 EDT 2019 by tim 2019-03-12 13:31:32 -04:00
Tim Edwards 1f3a512909 Added a "plot svg" command that, when used in conjuction with the
Cairo graphics package (magic -d XR), will map the display onto
an SVG surface and save it to a file using the Cairo SVG backend.
Due to the simplicity of the mapping, there are no options to this
plot command;  it just creates a file that is a (scalable!)
replica of the layout window.
2019-03-12 13:29:24 -04:00
Tim Edwards c08ddd355f Merge branch 'master' into work 2019-02-18 10:02:00 -05:00
Tim Edwards 6c69c67e17 Update at Mon Feb 18 10:01:58 EST 2019 by tim 2019-02-18 10:01:58 -05:00
Tim Edwards 677692e59f Corrected a potential problem with the substrate finding search,
which can be given an invalid area for the search.
2019-02-18 10:01:17 -05:00
Tim Edwards 834a4504de Merge branch 'master' into work 2019-02-14 12:21:59 -05:00
Tim Edwards d6cffb09f5 Update at Thu Feb 14 12:21:56 EST 2019 by tim 2019-02-14 12:21:56 -05:00
Tim Edwards 5693729ad5 Added code to avoid mishandling negative layer numbers when a
label in a DEF file is on a layer that has not been properly
mapped to a magic layer.  This would apply a negative index to
a TileType bitmask and crash the program.  Also:  Changed the
style and colormap slightly to make the via2 and via4 styles
more visible.
2019-02-14 12:19:50 -05:00
Tim Edwards 4348c11f10 Merge branch 'master' into work 2019-02-09 17:05:50 -05:00
Tim Edwards 8e1d57e234 Update at Sat Feb 9 17:05:48 EST 2019 by tim 2019-02-09 17:05:48 -05: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 dfa95351cb Merge branch 'master' into work 2019-02-07 10:56:35 -05:00
Tim Edwards 2dba7e7c5e Update at Thu Feb 7 10:56:32 EST 2019 by tim 2019-02-07 10:56:32 -05:00
Tim Edwards 9f5936c7cb Found an additional scaling-up problem in ext2spice (previously handled
a scaling issue in extract) which was caused by the addition of
hierarchical netlist generation.  Finding hierarchical connections
requires finding instances by name, so it is vastly better to create a
hash table of instances instead of a linked list.
2019-02-07 10:54:07 -05:00
Tim Edwards c669d83dc6 Merge branch 'master' into work 2019-02-06 11:09:55 -05:00
Tim Edwards 512f5a7419 Update at Wed Feb 6 11:09:52 EST 2019 by tim 2019-02-06 11:09:52 -05:00
Tim Edwards 1beb7cd741 Corrected error that potentially causes a segfault in "lef write"
when accessing the inverse layer map array beyond its defined
allocated limit of DBNumUserLayers.
2019-02-06 11:09:46 -05:00
Tim Edwards af3ac0dde4 Merge branch 'master' into work 2019-01-31 11:00:26 -05:00
Tim Edwards 5eed0da098 Update at Thu Jan 31 11:00:23 EST 2019 by tim 2019-01-31 11:00:24 -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 dc6b0c5776 Merge branch 'master' into work 2019-01-30 17:18:51 -05:00
Tim Edwards ae76d92426 Update at Wed Jan 30 17:18:49 EST 2019 by tim 2019-01-30 17:18:49 -05:00