When placing a vertical M1 (and setting it's axis), the perpandiculars
M2 extremities changes, and they have a VIA. If they are already placed
too, they may silently create a stacked VIAs because the track markers
of the perpendiculars are not taken into account. Now, force to rip them
up so the markers will be re-read. If no stacked VIAs has been created,
the segment will be re-put at it's previous place, otherwise it will be
placed on another track.
* New: Track::hasViaMarker(), check if a marker of a Net is under a
given interval (so we can know we are about to create a VIA stack).
* New: Manipulator::avoidStackedVias(), ripup perpandiculars to the
current segment that *may* create stacked VIAs. That is perpandicular
in the *up* layer which begin or end on the moved vertical.
* New: In SegmentFsm::insertInTrack(), bindTotrack() & moveToTrack(),
call Manipulator::avoidStackedVias(), if activated.
* Change: In NegociateWidow/loadRoutingPads(), no longer exclude clock
nets. So the TrackMarkers are created for the root net.
* New: In KatanaEngine::digitalInit(), when using a "VH,2RL" style,
protect all RoutingPads of each net, because unlike "2RL+" style,
the standard cell RoutingPads are not in a "below" layer only
used inside the cell, but on the V layer. So the area of the RP,
even if not fully used to connect, must be protected.
* Change: In NegociateOverlapCost(), when computing cost from a fixed
or blockage, do not set the infinite flag if it's the *same* net.
* New: In KatanaEngine::protectRoutingPads(), add a new "flags" argument
to pass on whether we want to protect the the RP candidates or just
the non-used ones.
* Change: In protectRoutingpad(), change the formula (again) to compute
the berth to give to a fixed segment... Should really try to
summarize all the case.
* Change: In TrackFixedSegment::getNet(), no longer return the blockage
net if the real net is tagged as clock.