Header menu logo issie

Constants Module

Functions and values

Function or value Description

extensionTolerance

Full Usage: extensionTolerance

Returns: float

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

maxCallsToShiftHorizontalSeg

Full Usage: maxCallsToShiftHorizontalSeg

Returns: int
Returns: int

maxCornerSize

Full Usage: maxCornerSize

Returns: float
Returns: float

maxSegmentSeparation

Full Usage: maxSegmentSeparation

Returns: float
Returns: float

maxSettlingRounds

Full Usage: maxSettlingRounds

Returns: int

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

minVisibleSegmentLength

Full Usage: minVisibleSegmentLength

Returns: float

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

minWireLengthToSeparate

Full Usage: minWireLengthToSeparate

Returns: float
Returns: float

minWireSeparation

Full Usage: minWireSeparation

Returns: float
Returns: float

overlapCostWeight

Full Usage: overlapCostWeight

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

overlapTolerance

Full Usage: overlapTolerance

Returns: float

lines within this distance of each other are considered to overlap

Returns: float

sameNetTrunkCapture

Full Usage: sameNetTrunkCapture

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

separateCaptureOverlap

Full Usage: separateCaptureOverlap

Returns: float

corners with max length edge larger than this are not removed

Returns: float

settlingTolerance

Full Usage: settlingTolerance

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

smallOffset

Full Usage: smallOffset

Returns: float
Returns: float

wireSeparationFromSymbol

Full Usage: wireSeparationFromSymbol

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

Type something to start searching.