Index: trunk/src/plugins/rt_topo/laa3_solve.c =================================================================== --- trunk/src/plugins/rt_topo/laa3_solve.c (revision 1387) +++ trunk/src/plugins/rt_topo/laa3_solve.c (revision 1388) @@ -149,15 +149,16 @@ /* need to update the other side of the crossing; via/layer cost doesn't need update as it didn't change */ laa_cost_2net_calc_cross(laa3, cr->cn, cr->cn_cridx, 1); -#warning TODO: turn this extra check off -#define DOUBLE_CHECK_CROSSING 1 +/* can not do this check: it may be that some crossing happens to be on the + same coord as an unrelated pin; common when the board uses grid and well + aligned pins */ #ifdef DOUBLE_CHECK_CROSSING for(cridx2 = 0; cridx2 < cr->cn->cross.used; cridx2++) { cr2 = &cr->cn->cross.array[cridx2]; if ((fabs(cr2->x-cr->x) < 0.0001) && (fabs(cr2->y-cr->y) < 0.0001)) { + if (cr->cn_cr != cr2) + printf(" update2 mismatch %d %d at {%f %f} vs {%f %f} (%p == %p)\n", cr->cn_bridx, cr2->bridx, cr->x, cr->y, cr2->x, cr2->y, cr->cn_cr, cr2); assert(cr->cn_cr == cr2); - if (cr->cn_cr != cr2) - printf(" update2 mismatch %d %d at %f %f (%p == %p)\n", cr->cn_bridx, cr2->bridx, cr->x, cr->y, cr->cn_cr, cr2); } } #endif