From 2f7cee62a6bef0a25084ce661fd59a8b373c8c05 Mon Sep 17 00:00:00 2001 From: Mikolaj Wielgus Date: Fri, 17 Oct 2025 23:21:32 +0200 Subject: [PATCH] fix(autorouter/anterouter): Use correct ratline principal layer instead of layer 0 --- src/autorouter/anterouter.rs | 19 +++++++++++++++---- src/autorouter/autorouter.rs | 2 +- src/layout/layout.rs | 1 - 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/autorouter/anterouter.rs b/src/autorouter/anterouter.rs index 902243d..652d301 100644 --- a/src/autorouter/anterouter.rs +++ b/src/autorouter/anterouter.rs @@ -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, recorder: &mut BoardEdit, ratvertex: NodeIndex, + 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, recorder: &mut BoardEdit, ratvertex: NodeIndex, + 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, recorder: &mut BoardEdit, ratvertex: NodeIndex, + 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 { diff --git a/src/autorouter/autorouter.rs b/src/autorouter/autorouter.rs index f72870a..0183fe4 100644 --- a/src/autorouter/autorouter.rs +++ b/src/autorouter/autorouter.rs @@ -95,7 +95,7 @@ impl Autorouter { .unwrap(); let origin_dot = match self .ratsnests - .on_principal_layer_mut(0) + .on_principal_layer_mut(options.principal_layer) .graph() .node_weight(ratvertex) .unwrap() diff --git a/src/layout/layout.rs b/src/layout/layout.rs index 04478c0..521d84a 100644 --- a/src/layout/layout.rs +++ b/src/layout/layout.rs @@ -150,7 +150,6 @@ impl Layout { #[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,