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 */ 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;