When AStarRouter encounters a lower cost node along the path to its target, it puts the new node in the path along with the arc by which it reached that node. However the arc by which it reached the node may come from a node not already on the path, so the resulting PIPs may contain antennas.
Unit test router/AStarRouter/AStarRouterBug1 demonstrates the condition. If 'tCostBetter = true' is set as a result of condition 'tCost < mDataMap.find(arcSink)->second.mPathCostG' in void graphSearchFilter(const Arc& newArc, const Tilewire& currentTilewire), the resulting XDL looks like this:
net "a4",
outpin "a2port" AMUX,
inpin "add0/add2" A1,
inpin "add0/add2" AX,
pip CLBLL_X32Y76 SITE_IMUX_B29 -> M_A1,
pip INT_X32Y76 ES2MID2 -> IMUX_B29,
pip INT_X31Y76 ER2END2 -> ES2BEG2,
pip INT_X29Y76 LOGIC_OUTS16 -> ER2BEG2,
pip CLBLM_X29Y76 L_AMUX -> SITE_LOGIC_OUTS16,
pip CLBLL_X32Y76 SITE_BYP_B1 -> M_AX,
pip INT_X32Y76 BYP1 -> BYP_B1,
pip INT_X32Y76 EL2BEG0 -> BYP1, # Note EL2BEG0
pip INT_X32Y74 EL2MID2 -> NL2BEG_S0, # Note NL2BEG_S0
pip INT_X31Y74 SR2END2 -> EL2BEG2,
pip INT_X31Y76 ER2END2 -> SR2BEG2
;
The problem is that NL2BEG_S0@INT_X32Y74 and EL2BEG0@INT_X32Y76 are not on the same segment. This problem goes away if tCostBetter is not set to true. The problem has been bypassed at present but has not yet been fixed.
This might be related to bug 3566690.