From e2dd5f5157ce09de87f22b1403504e5ceb9b8f41 Mon Sep 17 00:00:00 2001 From: Tim Edwards Date: Thu, 16 May 2019 09:52:59 -0400 Subject: [PATCH 1/2] 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. --- commands/CmdTZ.c | 2 +- wiring/wireOps.c | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/commands/CmdTZ.c b/commands/CmdTZ.c index af3467ec..3065450d 100644 --- a/commands/CmdTZ.c +++ b/commands/CmdTZ.c @@ -1411,7 +1411,7 @@ CmdWire(w, cmd) else { width = DRCGetDefaultLayerWidth(type); - WireAddContact(type, width); + WireAddContact(type, (WireWidth < width) ? width : WireWidth); } } else if (!strcmp(cmd->tx_argv[2], "width")) diff --git a/wiring/wireOps.c b/wiring/wireOps.c index 8c4de863..41a249cd 100644 --- a/wiring/wireOps.c +++ b/wiring/wireOps.c @@ -816,22 +816,22 @@ WireAddContact(newType, newWidth) switch (oldDir) { case GEO_NORTH: - i = contactArea.r_ytop - totalSize; + i = contactArea.r_ytop - WireWidth; if (i > contactArea.r_ybot) contactArea.r_ybot = i; break; case GEO_SOUTH: - i = contactArea.r_ybot + totalSize; + i = contactArea.r_ybot + WireWidth; if (i < contactArea.r_ytop) contactArea.r_ytop = i; break; case GEO_EAST: - i = contactArea.r_xtop - totalSize; + i = contactArea.r_xtop - WireWidth; if (i > contactArea.r_xbot) contactArea.r_xbot = i; break; case GEO_WEST: - i = contactArea.r_xbot + totalSize; + i = contactArea.r_xbot + WireWidth; if (i < contactArea.r_xtop) contactArea.r_xtop = i; break; From 704f1dc69f4ebbe8ab5d3ec47fc05a75449e3837 Mon Sep 17 00:00:00 2001 From: Tim Edwards Date: Thu, 16 May 2019 17:41:42 -0400 Subject: [PATCH 2/2] 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. --- cif/CIFtech.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/cif/CIFtech.c b/cif/CIFtech.c index cdc5fcc7..ff9e2b03 100644 --- a/cif/CIFtech.c +++ b/cif/CIFtech.c @@ -1846,6 +1846,24 @@ CIFTechFinal() } } + /* Added by Tim, 5/16/19 */ + /* Layers that depend on hierarchically generated layers */ + /* (i.e., templayers) must themselves be hierarchically */ + /* processed. */ + + for (i = 0; i < style->cs_nLayers; i++) + { + TileTypeBitMask ourDepend, mmask; + + ourDepend = DBZeroTypeBits; + for (op = style->cs_layers[i]->cl_ops; op != NULL; op = op->co_next) + TTMaskSetMask(&ourDepend, &op->co_cifMask); + + TTMaskAndMask3(&mmask, &ourDepend, &style->cs_hierLayers); + if (!TTMaskIsZero(&mmask)) + TTMaskSetType(&style->cs_hierLayers, i); + } + /* Added by Tim, 10/18/04 */ /* Go through the layer operators looking for those that */