@@ -2995,33 +2995,21 @@ void FlexDRWorker::routeNet_postAstarPatchMinAreaVio(
29952995 frArea reqArea
29962996 = (minAreaConstraint) ? minAreaConstraint->getMinArea () : 0 ;
29972997 // add curr via enclosure
2998- if (nextIdx.z () < currIdx.z ()) {
2999- if (prev_is_wire) {
3000- currArea += getHalfViaEncArea (
3001- currIdx.z () - 1 , false , net->getFrNet ()->getNondefaultRule ());
3002- } else {
3003- currArea = std::max (
3004- (frArea) getHalfViaEncArea (
3005- currIdx.z () - 1 , false , net->getFrNet ()->getNondefaultRule ())
3006- * 2 ,
3007- currArea);
3008- }
3009- endViaHalfEncArea = getHalfViaEncArea (
3010- currIdx.z () - 1 , false , net->getFrNet ()->getNondefaultRule ());
2998+ frMIdx z = (nextIdx.z () < currIdx.z ()) ? currIdx.z () - 1 : currIdx.z ();
2999+ bool isLayer1 = (nextIdx.z () < currIdx.z ()) ? false : true ;
3000+ if (prev_is_wire) {
3001+ currArea += getHalfViaEncArea (
3002+ z, isLayer1, net->getFrNet ()->getNondefaultRule ());
30113003 } else {
3012- if (prev_is_wire) {
3013- currArea += getHalfViaEncArea (
3014- currIdx.z (), true , net->getFrNet ()->getNondefaultRule ());
3015- } else {
3016- currArea = std::max (
3017- (frArea) getHalfViaEncArea (
3018- currIdx.z (), true , net->getFrNet ()->getNondefaultRule ())
3019- * 2 ,
3020- currArea);
3021- }
3022- endViaHalfEncArea = getHalfViaEncArea (
3023- currIdx.z (), true , net->getFrNet ()->getNondefaultRule ());
3004+ currArea = std::max (
3005+ (frArea) getHalfViaEncArea (
3006+ z, isLayer1, net->getFrNet ()->getNondefaultRule ())
3007+ * 2 ,
3008+ currArea);
30243009 }
3010+ endViaHalfEncArea = getHalfViaEncArea (
3011+ z, isLayer1, net->getFrNet ()->getNondefaultRule ());
3012+
30253013 // push to minArea violation
30263014 if (currArea < reqArea) {
30273015 FlexMazeIdx bp, ep;
0 commit comments