Corrected an error in the check for coincident instances. This

check was too aggressive and would delete coincident instances
based on cell def and bounding box only.  If the cells were at
different orientation or mirrored, they would be incorrectly
flagged as coincident.  Instances read from GDS could be
deleted due to this issue.
This commit is contained in:
Tim Edwards 2023-02-28 16:49:17 -05:00
parent 0058000c22
commit 26da5adf98
1 changed files with 11 additions and 1 deletions

View File

@ -107,7 +107,17 @@ DBCellFindDup(use, parent)
BPEnumInit(&bpe, parent->cd_cellPlane, &use->cu_bbox, BPE_EQUAL,
"DBCellFindDup");
while (dupUse = BPEnumNext(&bpe))
if (dupUse->cu_def == use->cu_def) break;
if (dupUse->cu_def == use->cu_def)
/* Transforms must be equal---Aligned bounding boxes are
* an insufficient measure of exact overlap.
*/
if ((dupUse->cu_transform.t_a == use->cu_transform.t_a) &&
(dupUse->cu_transform.t_b == use->cu_transform.t_b) &&
(dupUse->cu_transform.t_c == use->cu_transform.t_c) &&
(dupUse->cu_transform.t_d == use->cu_transform.t_d) &&
(dupUse->cu_transform.t_e == use->cu_transform.t_e) &&
(dupUse->cu_transform.t_f == use->cu_transform.t_f))
break;
BPEnumTerm(&bpe);
return dupUse;