Skip to content

Commit

Permalink
Corrected an error in the calculation of the number of contact
Browse files Browse the repository at this point in the history
cuts per contact area during parasitic resistance extraction.
Previously, the result was divided by the via pitch twice,
resulting in most contact areas being reported as a single
cut.
  • Loading branch information
RTimothyEdwards committed Sep 28, 2023
1 parent 7aa8464 commit 656b5db
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 11 deletions.
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
8.3.434
8.3.435
6 changes: 2 additions & 4 deletions resis/ResMakeRes.c
Original file line number Diff line number Diff line change
Expand Up @@ -831,14 +831,12 @@ ResDoContacts(contact, nodes, resList)
else
{
viawidth += spacing;
squaresf = (float)((contact->cp_width * cscale) - minside) / (float)viawidth;
squaresf *= ExtCurStyle->exts_unitsPerLambda;
squaresf = (float)((contact->cp_width * cscale) - minside);
squaresf /= (float)viawidth;
squaresx = (int)squaresf;
squaresx++;

squaresf = (float)((contact->cp_height * cscale) - minside) / (float)viawidth;
squaresf *= ExtCurStyle->exts_unitsPerLambda;
squaresf = (float)((contact->cp_height * cscale) - minside);
squaresf /= (float)viawidth;
squaresy = (int)squaresf;
squaresy++;
Expand Down
10 changes: 4 additions & 6 deletions resis/ResSimple.c
Original file line number Diff line number Diff line change
Expand Up @@ -880,7 +880,7 @@ ResDoSimplify(tolerance, rctol, goodies)
/* we're calculating lumped values so that the capacitance */
/* values get calculated correctly. */

(void) ResDistributeCapacitance(ResNodeList,goodies->rg_nodecap);
(void) ResDistributeCapacitance(ResNodeList, goodies->rg_nodecap);

if (((tolerance > bigres) || ((ResOptionsFlags & ResOpt_Simplify) == 0)) &&
((ResOptionsFlags & ResOpt_DoLumpFile) == 0))
Expand All @@ -895,9 +895,9 @@ ResDoSimplify(tolerance, rctol, goodies)
oldres->rr_status &= ~RES_HEAP;
if (oldres->rr_status & RES_TDI_IGNORE)
{
ResDeleteResPointer(oldres->rr_node[0], oldres);
ResDeleteResPointer(oldres->rr_node[1], oldres);
ResEliminateResistor(oldres, &ResResList);
ResDeleteResPointer(oldres->rr_node[0], oldres);
ResDeleteResPointer(oldres->rr_node[1], oldres);
ResEliminateResistor(oldres, &ResResList);
}
}

Expand Down Expand Up @@ -940,7 +940,6 @@ ResDoSimplify(tolerance, rctol, goodies)
goodies->rg_Tdi != -1)
return 0;


/* Simplify network; resistors are still in milliohms, so use
* millitolerance.
*/
Expand All @@ -963,7 +962,6 @@ ResDoSimplify(tolerance, rctol, goodies)
}
if (ResOriginNode != NULL)
{

/* if Tdi is enabled, prune all branches whose end nodes */
/* have time constants less than the tolerance. */

Expand Down

0 comments on commit 656b5db

Please sign in to comment.