Post by Stefan Salewski
Is this intended, is this what we want?
No, preserving connections and avoiding shorts is what is wanted.
The value is in being a conceptual short cut compared to redrawing all moved connections.
Instead of diagonal, lines could be in steps as needed to avoid shorting out.
Avoiding shorting out may be more AI logic than you want to try programming!
A simple kind of rubber-band mode that is valuable is select instances and net segments,
then when a move starts, the selected set does not change shape, the unselected set
does not change position, and nets to preserve connectivity
fill in with two-right-angle-segments-with-one-common-point, or diagonals if that would cause shorts.
Often, two-right-angle-segments-with-one-common-point do not work well, as in connections between two
parallel rows of pins when one row is moved away and to the side. Then one would need
three-right-angle-segments-with-two-common-points to fill in between moved and stationary sets of instances and nets.
Sometimes rubber-band moving is only a conceptual short cut and takes a lot of time to do.
A good way to get quick results would be to just do the diagonals, then use a tool on selected set
to convert them to rectilinear nets that do not change the netlist. Then scoot those around to suit
your aesthetics. A one net at a time tool could be just a mode with mouse actions: click-drag
to convert a diagonal to rectilinear and influence where right angle points are. Keep them from
changing the netlist, and when the mouse moves in a direction, move the nearest bend point with it
while keeping netlist same, and only affecting the adjacent two points that are bend points or
connected to a pin.
Too many words, needs a drawing...gotta go though...