fix(autorouter/anterouter): Use correct ratline principal layer instead of layer 0

This commit is contained in:
Mikolaj Wielgus 2025-10-17 23:21:32 +02:00
parent 64a519420f
commit 2f7cee62a6
3 changed files with 16 additions and 6 deletions

View File

@ -25,7 +25,7 @@ use crate::{
},
geometry::{shape::AccessShape, GenericNode, GetLayer},
graph::{GenericIndex, MakeRef},
layout::{poly::MakePolygon, via::ViaWeight, LayoutEdit},
layout::{poly::MakePolygon, via::ViaWeight},
math::Circle,
};
@ -79,7 +79,7 @@ impl Anterouter {
match terminating_scheme {
TerminatingScheme::ExistingFixedDot(terminating_dot) => autorouter
.ratsnests
.on_principal_layer_mut(0)
.on_principal_layer_mut(ratline.principal_layer)
.assign_terminating_dot_to_ratvertex(
endpoint_indices.0,
*layer,
@ -105,7 +105,7 @@ impl Anterouter {
match terminating_scheme {
TerminatingScheme::ExistingFixedDot(terminating_dot) => autorouter
.ratsnests
.on_principal_layer_mut(0)
.on_principal_layer_mut(ratline.principal_layer)
.assign_terminating_dot_to_ratvertex(
endpoint_indices.1,
*layer,
@ -166,6 +166,7 @@ impl Anterouter {
autorouter,
recorder,
ratvertex,
ratline,
source_dot,
small_bbox,
target_layer,
@ -200,6 +201,7 @@ impl Anterouter {
autorouter,
recorder,
ratvertex,
ratline,
source_dot,
large_bbox,
target_layer,
@ -216,6 +218,7 @@ impl Anterouter {
autorouter,
recorder,
ratvertex,
ratline,
source_dot,
small_bbox,
target_layer,
@ -232,6 +235,7 @@ impl Anterouter {
autorouter,
recorder,
ratvertex,
ratline,
source_dot,
large_bbox,
target_layer,
@ -251,6 +255,7 @@ impl Anterouter {
autorouter: &mut Autorouter<impl AccessMesadata>,
recorder: &mut BoardEdit,
ratvertex: NodeIndex<usize>,
ratline: RatlineUid,
source_dot: FixedDotIndex,
bbox: AABB<[f64; 2]>,
target_layer: usize,
@ -262,6 +267,7 @@ impl Anterouter {
autorouter,
recorder,
ratvertex,
ratline,
source_dot,
bbox,
target_layer,
@ -285,6 +291,7 @@ impl Anterouter {
autorouter,
recorder,
ratvertex,
ratline,
source_dot,
bbox,
target_layer,
@ -304,6 +311,7 @@ impl Anterouter {
autorouter,
recorder,
ratvertex,
ratline,
source_dot,
bbox,
target_layer,
@ -328,6 +336,7 @@ impl Anterouter {
autorouter: &mut Autorouter<impl AccessMesadata>,
recorder: &mut BoardEdit,
ratvertex: NodeIndex<usize>,
ratline: RatlineUid,
source_dot: FixedDotIndex,
bbox: AABB<[f64; 2]>,
target_layer: usize,
@ -338,6 +347,7 @@ impl Anterouter {
autorouter,
recorder,
ratvertex,
ratline,
source_dot,
bbox,
target_layer,
@ -385,6 +395,7 @@ impl Anterouter {
autorouter: &mut Autorouter<impl AccessMesadata>,
recorder: &mut BoardEdit,
ratvertex: NodeIndex<usize>,
ratline: RatlineUid,
source_dot: FixedDotIndex,
bbox: AABB<[f64; 2]>,
target_layer: usize,
@ -451,7 +462,7 @@ impl Anterouter {
.unwrap();
autorouter
.ratsnests
.on_principal_layer_mut(0)
.on_principal_layer_mut(ratline.principal_layer)
.assign_terminating_dot_to_ratvertex(ratvertex, target_layer, *terminating_dot);
Ok((via, dots))
} else {

View File

@ -95,7 +95,7 @@ impl<M: AccessMesadata> Autorouter<M> {
.unwrap();
let origin_dot = match self
.ratsnests
.on_principal_layer_mut(0)
.on_principal_layer_mut(options.principal_layer)
.graph()
.node_weight(ratvertex)
.unwrap()

View File

@ -150,7 +150,6 @@ impl<R: AccessRules> Layout<R> {
#[debug_ensures(ret.is_ok() -> self.drawing.node_count() == old(self.drawing.node_count()) + weight.to_layer - weight.from_layer + 2)]
#[debug_ensures(ret.is_err() -> self.drawing.node_count() == old(self.drawing.node_count()))]
/// Insert [`Via`] into the [`Layout`]
pub fn add_via(
&mut self,
recorder: &mut LayoutEdit,