|
|
How close are segment extensions caused by corner removal allowed to
get to other elements? Maybe needs to be smaller than some otehr things for
successful corner removal?
-
Returns:
float
|
|
|
-
Returns:
int
|
|
|
-
Returns:
float
|
|
|
-
Returns:
float
|
|
|
Most rounds of (horizontal, then vertical) separation. A round is only entered while the
sheet is still improving, so this binds only where the two directions fight each other.
Measured at 2, 3 and 5 over the WireQuality corpus and a 192-wire sheet: wire drawn, bends
and crossings come out identical, and the extra rounds are time spent for nothing. Raising
it is safe - the loop leaves early when a round does not improve the sheet - so if a design
ever needs more, raise it and let the corpus say whether it helped.
-
Returns:
int
|
|
|
Must be smaller than Buswire.nubLength
Segments shorter than this are drawing artifacts - a port pair misaligned by a fraction of
a pixel puts a jog this size in an otherwise straight wire - and separation must not treat
one as a real segment: on the eep1 alu sheet a 0.04px jog became a movable line, was made
the head of a same-net link whose union bounds were 359px long, and the cluster pass then
dragged a genuinely long riser through a multiplexer by moving the invisible stub it was
linked to. IsZero (epsilon 1e-7) is far too fine to catch these.
-
Returns:
float
|
|
|
-
Returns:
float
|
|
|
-
Returns:
float
|
|
|
What two nets drawn on top of each other cost, per unit length, relative to a unit of wire
drawn. Removing an overlap must always beat any saving in wire length.
-
Returns:
float
|
|
|
lines within this distance of each other are considered to overlap
-
Returns:
float
|
|
|
Same-net segments this close together are one line of the drawing and are linked, so that
separation moves them as one and never pulls them apart.
This used to be modernCirclePositionTolerance (2), which answers a different question: how
close two coordinates must be to count as the same point when working out where a net
crosses itself, so that a circle can be drawn there. A circle is what tells a reader that
four wires meeting at a cross-roads are one net rather than two crossing - so that tolerance
is about whether two things are at the same place, and two units is the right answer to it.
It is the wrong answer to "are these close enough that they should be one line", which is
what this is: a sink port a couple of units off its neighbours' gives that wire a trunk
segment 2 away from theirs, which was then not linked, is movable where theirs are fixed,
and so was pushed a full maxSegmentSeparation clear of a trunk it was almost on.
Measured over the WireQuality corpus: 8, 10 and 12 all merge the stray wire back onto the
trunk and change nothing else; 15 and above cost crossings after a drag without merging
anything more. 10 is the middle of that, and is nubLength - a segment closer to another
than a nub is long is not a separate line of the drawing.
-
Returns:
float
|
|
|
corners with max length edge larger than this are not removed
-
Returns:
float
|
|
|
Improvement in wiring cost below which another round is not worth keeping. Two layouts
within this of each other are a tie, and a tie is broken towards not moving.
-
Returns:
float
|
|
|
-
Returns:
float
|
|
|
How far a wire routed AROUND a symbol clears its edge, when there is room. 15 is the
pitch between two 2-input gate inputs: anything hugging tighter reads as touching, and
separation's channel machinery will still squeeze below this where space demands it.
The obstacle boxes routing shifts past are already expanded by minWireSeparation, so the
shift sites aim (this - minWireSeparation) beyond them. It was 7 for years - equal to the
box expansion, so the shifts aimed a hair past the expanded box and every wire passing a
symbol hugged it at exactly 7px while wires in channels sat 15-30 apart.
-
Returns:
float
|