From 94daf986ab9aa94a9ae2ac3539fa5def9bd2a1ac Mon Sep 17 00:00:00 2001 From: Tim Edwards Date: Tue, 18 Oct 2022 14:14:22 -0400 Subject: [PATCH] Corrected the GDS write for "boundary" to make sure that the calculation of the area to check for output and the clip box does not reduce the size of any layer associated with the fixed bounding box declared by the FIXED_BBOX property. --- VERSION | 2 +- calma/CalmaWrite.c | 15 +++++++++++++++ doc/html/lef.html | 8 +++++++- 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/VERSION b/VERSION index 6e70b3e3..2a2964ec 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -8.3.330 +8.3.331 diff --git a/calma/CalmaWrite.c b/calma/CalmaWrite.c index f2d4588a..fe609447 100644 --- a/calma/CalmaWrite.c +++ b/calma/CalmaWrite.c @@ -1221,6 +1221,8 @@ calmaOutFunc(def, f, cliprect) int type; int dbunits; calmaOutputStruct cos; + bool propfound; + char *propvalue; cos.f = f; cos.area = (cliprect == &TiPlaneRect) ? NULL : cliprect; @@ -1277,6 +1279,19 @@ calmaOutFunc(def, f, cliprect) /* Output all the tiles associated with this cell; skip temporary layers */ GEO_EXPAND(&def->cd_bbox, CIFCurStyle->cs_radius, &bigArea); + + /* Include any fixed bounding box as part of the area to process, */ + /* in case the fixed bounding box is larger than the geometry. */ + propvalue = (char *)DBPropGet(def, "FIXED_BBOX", &propfound); + if (propfound) + { + Rect bbox; + + if (sscanf(propvalue, "%d %d %d %d", &bbox.r_xbot, &bbox.r_ybot, + &bbox.r_xtop, &bbox.r_ytop) == 4) + GeoInclude(&bbox, &bigArea); + } + CIFErrorDef = def; CIFGen(def, def, &bigArea, CIFPlanes, &DBAllTypeBits, TRUE, TRUE, FALSE, (ClientData)f); diff --git a/doc/html/lef.html b/doc/html/lef.html index 9de27c4e..52b1f31d 100644 --- a/doc/html/lef.html +++ b/doc/html/lef.html @@ -39,7 +39,7 @@ LEF-format input and output to annotate existing layouts, and ignore all other macros.
write [cell] [-tech] [-hide [distance]] [-toplayer] - [-nomaster] + [-pinonly [distance]] [-nomaster]
Write LEF for the current or indicated cell.
Option -tech writes the technology information (layer mapping and rules) to the same file as the cell macro.
@@ -57,6 +57,12 @@ LEF-format input and output Option -toplayer outputs pin geometry only for the topmost layer belonging to the pin; all connected layers underneath will be output as obstructions.
+ Option -pinonly will mark only areas that are port + labels as pins, while marking the rest of each related net + as an obstruction. Value distance, if given, will + extend any pin beyond the marked port label along the length + of the same net, to the specified distance into the interior + of the cell.
Option -nomaster will prevent the generation of output geometry on layers defined as MASTERSLICE.
writeall [-tech] [-hide [distance]]