- Adds time and delay units
- Adds time domain tuning parameters entry and storage
- Adds pad-to-die delay property
- Adds time domain parameter interface for length / delay calculations
- Adds unit tracking for numerical constants through LIBEVAL
- Will need future work to truly propagate through binary expressions
- Adds time domain tuning to meander placers
- Adds time delay display to net inspector panel
- Modifies DRC to handle time domain constraints
Note to self: we keep track of the formerly pushed vias in the line stack, but pruning one from the optimizer queue should not prune the lines attached to it.
Note to self: move-endpoints fallback mode must check for vias connected at the obstacle LINE's ends - fallback is only applicable for unconnected ends.
Note to self: managing the shove stack is quite challenging and there were a few corner cases
where reverse via/segment collisions would cause a head segment (or a via) to have multiple clones in the stack.
As SHOVE::removeHeads() took only complete head lines, sometimes it resulted with stray vias/segments.
Fixes https://gitlab.com/kicad/code/kicad/issues/19045
We need to draw all layers on top of the layer behind us, the factor is
rather arbitrary but needs to ensure that the step is still below 0 when
subtracted using the full layer size
Fixes https://gitlab.com/kicad/code/kicad/issues/19795
Using PnS router, when trying to create a blind/buried or micro via with layer
selection with no track in progress, the router crashed because the starting
layer was not defined.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/19750
There are two netclass name methods, which previously were not
obvious in their uses. These have been renamed to now have:
GetName() : Used for internal or tooling (e.g. netlist export) usage
GetHumanReadableName() : Used for display to users (e.g. in infobars)
Fixing the previous unclear naming will result in fewer bugs
when users start using the multiple netclass functionality, as
the incorrect usage had started creeping in to new code. Also this
will help authors of new code select the correct name method.
fixes: https://gitlab.com/kicad/code/kicad/-/issues/19047
(note: it would trigger only in shove mode when the head overlaps exactly an existing trace - removeHeads() would consider the segments already present in the PCB
as belonging to the current head, erasing them for good from subsequent shove iterations)
- allow small modifications for LINE's ends as a fallback scenario in case of shove failure
- make sure unwindLineStack() won't remove tadpole vias with pending collisions on layer other than the current head line
fixes: https://gitlab.com/kicad/code/kicad/-/issues/19082
fixes: https://gitlab.com/kicad/code/kicad/-/issues/19045
(note to self: it often happens on boards imported from foreign tools of when the clearance has been subtly changed, the router would fail
if the start/end of a LINE is inside a hull of another LINE).
Recommendation is to avoid using the year nomenclature as this
information is already encoded in the git repo. Avoids needing to
repeatly update.
Also updates AUTHORS.txt from current repo with contributor names
Edge cuts, margin, and copper shapes need to be included
in the dragged item set
Shapes on the edge cut layer need to be painted with
their original width, but this has to be done by setting
the width on the router shape, not by re-cloning the
parent shape, because the router may now be moving that
shape.
Footprint drag position calculation needs to act only
on pad SOLIDs, not on any SOLID
Fixes https://gitlab.com/kicad/code/kicad/-/issues/19280