From e7e3e7b6f87cbade72333b21eefab33cd3703b03 Mon Sep 17 00:00:00 2001 From: Mikolaj Wielgus Date: Wed, 17 Sep 2025 13:26:34 +0200 Subject: [PATCH] test: Add test routines for `4x4_1206_led_matrix_breakout` --- tests/single_layer.rs | 52 ++- .../autoroute_all.cmd | 212 +++++++++++ .../autoroute_all_in_predefined_order.cmd | 334 ++++++++++++++++++ ... => autoroute_all_in_predefined_order.cmd} | 0 4 files changed, 588 insertions(+), 10 deletions(-) create mode 100644 tests/single_layer/4x4_1206_led_matrix_breakout/autoroute_all.cmd create mode 100644 tests/single_layer/4x4_1206_led_matrix_breakout/autoroute_all_in_predefined_order.cmd rename tests/single_layer/tht_de9_to_tht_de9/{autoroute_all_in_an_order.cmd => autoroute_all_in_predefined_order.cmd} (100%) diff --git a/tests/single_layer.rs b/tests/single_layer.rs index 57fa0c7..863e64b 100644 --- a/tests/single_layer.rs +++ b/tests/single_layer.rs @@ -23,13 +23,14 @@ mod common; fn test_master(#[case] variant: &str) {} #[apply(test_master)] -fn test_tht_de9_to_tht_de9_in_order(variant: &str) { - let autorouter = - common::load_design("tests/single_layer/tht_de9_to_tht_de9/tht_de9_to_tht_de9.dsn"); +fn autoroute_4x4_1206_led_matrix_breakout(variant: &str) { + let autorouter = common::load_design( + "tests/single_layer/4x4_1206_led_matrix_breakout/4x4_1206_led_matrix_breakout.dsn", + ); let mut invoker = common::create_invoker_and_assert(autorouter); common::replay_and_assert( &mut invoker, - "tests/single_layer/tht_de9_to_tht_de9/autoroute_all_in_an_order.cmd", + "tests/single_layer/4x4_1206_led_matrix_breakout/autoroute_all.cmd", variant, ); @@ -38,7 +39,23 @@ fn test_tht_de9_to_tht_de9_in_order(variant: &str) { } #[apply(test_master)] -fn test_tht_de9_to_tht_de9(variant: &str) { +fn autoroute_4x4_1206_led_matrix_breakout_in_predefined_order(variant: &str) { + let autorouter = common::load_design( + "tests/single_layer/4x4_1206_led_matrix_breakout/4x4_1206_led_matrix_breakout.dsn", + ); + let mut invoker = common::create_invoker_and_assert(autorouter); + common::replay_and_assert( + &mut invoker, + "tests/single_layer/4x4_1206_led_matrix_breakout/autoroute_all_in_predefined_order.cmd", + variant, + ); + + let (mut autorouter, ..) = invoker.dissolve(); + common::assert_single_layer_groundless_autoroute(&mut autorouter, "F.Cu"); +} + +#[apply(test_master)] +fn autoroute_tht_de9_to_tht_de9(variant: &str) { let autorouter = common::load_design("tests/single_layer/tht_de9_to_tht_de9/tht_de9_to_tht_de9.dsn"); let mut invoker = common::create_invoker_and_assert(autorouter); @@ -54,7 +71,22 @@ fn test_tht_de9_to_tht_de9(variant: &str) { } #[apply(test_master)] -fn test_0603_breakout(variant: &str) { +fn autoroute_tht_de9_to_tht_de9_in_predefined_order(variant: &str) { + let autorouter = + common::load_design("tests/single_layer/tht_de9_to_tht_de9/tht_de9_to_tht_de9.dsn"); + let mut invoker = common::create_invoker_and_assert(autorouter); + common::replay_and_assert( + &mut invoker, + "tests/single_layer/tht_de9_to_tht_de9/autoroute_all_in_predefined_order.cmd", + variant, + ); + + let (mut autorouter, ..) = invoker.dissolve(); + common::assert_single_layer_groundless_autoroute(&mut autorouter, "F.Cu"); +} + +#[apply(test_master)] +fn autoroute_0603_breakout(variant: &str) { let mut autorouter = common::load_design("tests/single_layer/0603_breakout/0603_breakout.dsn"); common::assert_navnode_count(&mut autorouter, "R1-2", "J1-2", 22); let mut invoker = common::create_invoker_and_assert(autorouter); @@ -71,7 +103,7 @@ fn test_0603_breakout(variant: &str) { } #[apply(test_master)] -fn test_tht_diode_bridge_rectifier(variant: &str) { +fn autoroute_tht_diode_bridge_rectifier(variant: &str) { let mut autorouter = common::load_design( "tests/single_layer/tht_diode_bridge_rectifier/tht_diode_bridge_rectifier.dsn", ); @@ -108,7 +140,7 @@ fn test_tht_diode_bridge_rectifier(variant: &str) { } #[apply(test_master)] -fn test_4x_3rd_order_smd_lc_filters(variant: &str) { +fn autoroute_4x_3rd_order_smd_lc_filters(variant: &str) { let mut autorouter = common::load_design( "tests/single_layer/4x_3rd_order_smd_lc_filters/4x_3rd_order_smd_lc_filters.dsn", ); @@ -150,7 +182,7 @@ fn test_tht_3pin_xlr_to_tht_3pin_xlr(#[case] variant: &str) { }*/ #[apply(test_master)] -fn test_vga_dac_breakout(variant: &str) { +fn autoroute_vga_dac_breakout(variant: &str) { let mut autorouter = common::load_design("tests/single_layer/vga_dac_breakout/vga_dac_breakout.dsn"); common::assert_navnode_count(&mut autorouter, "J1-2", "R4-1", 272); @@ -167,7 +199,7 @@ fn test_vga_dac_breakout(variant: &str) { } #[apply(test_master)] -fn test_smd_non_rectangular_buck_converter(variant: &str) { +fn autoroute_smd_non_rectangular_buck_converter(variant: &str) { let path = "tests/single_layer/smd_non_rectangular_buck_converter/smd_non_rectangular_buck_converter.dsn"; let autorouter = common::load_design(&path); diff --git a/tests/single_layer/4x4_1206_led_matrix_breakout/autoroute_all.cmd b/tests/single_layer/4x4_1206_led_matrix_breakout/autoroute_all.cmd new file mode 100644 index 0000000..5e638f0 --- /dev/null +++ b/tests/single_layer/4x4_1206_led_matrix_breakout/autoroute_all.cmd @@ -0,0 +1,212 @@ +{ + "done": [ + { + "Autoroute": [ + [ + { + "pin": "D1-1", + "layer": "F.Cu" + }, + { + "pin": "D1-2", + "layer": "F.Cu" + }, + { + "pin": "D10-1", + "layer": "F.Cu" + }, + { + "pin": "D10-2", + "layer": "F.Cu" + }, + { + "pin": "D11-1", + "layer": "F.Cu" + }, + { + "pin": "D11-2", + "layer": "F.Cu" + }, + { + "pin": "D12-1", + "layer": "F.Cu" + }, + { + "pin": "D12-2", + "layer": "F.Cu" + }, + { + "pin": "D13-1", + "layer": "F.Cu" + }, + { + "pin": "D13-2", + "layer": "F.Cu" + }, + { + "pin": "D14-1", + "layer": "F.Cu" + }, + { + "pin": "D14-2", + "layer": "F.Cu" + }, + { + "pin": "D15-1", + "layer": "F.Cu" + }, + { + "pin": "D15-2", + "layer": "F.Cu" + }, + { + "pin": "D16-1", + "layer": "F.Cu" + }, + { + "pin": "D16-2", + "layer": "F.Cu" + }, + { + "pin": "D2-1", + "layer": "F.Cu" + }, + { + "pin": "D2-2", + "layer": "F.Cu" + }, + { + "pin": "D3-1", + "layer": "F.Cu" + }, + { + "pin": "D3-2", + "layer": "F.Cu" + }, + { + "pin": "D4-1", + "layer": "F.Cu" + }, + { + "pin": "D4-2", + "layer": "F.Cu" + }, + { + "pin": "D5-1", + "layer": "F.Cu" + }, + { + "pin": "D5-2", + "layer": "F.Cu" + }, + { + "pin": "D6-1", + "layer": "F.Cu" + }, + { + "pin": "D6-2", + "layer": "F.Cu" + }, + { + "pin": "D7-1", + "layer": "F.Cu" + }, + { + "pin": "D7-2", + "layer": "F.Cu" + }, + { + "pin": "D8-1", + "layer": "F.Cu" + }, + { + "pin": "D8-2", + "layer": "F.Cu" + }, + { + "pin": "D9-1", + "layer": "F.Cu" + }, + { + "pin": "D9-2", + "layer": "F.Cu" + }, + { + "pin": "J1-1", + "layer": "F.Cu" + }, + { + "pin": "J1-2", + "layer": "F.Cu" + }, + { + "pin": "J1-3", + "layer": "F.Cu" + }, + { + "pin": "J1-4", + "layer": "F.Cu" + }, + { + "pin": "J2-1", + "layer": "F.Cu" + }, + { + "pin": "J2-2", + "layer": "F.Cu" + }, + { + "pin": "J2-3", + "layer": "F.Cu" + }, + { + "pin": "J2-4", + "layer": "F.Cu" + }, + { + "pin": "R1-1", + "layer": "F.Cu" + }, + { + "pin": "R1-2", + "layer": "F.Cu" + }, + { + "pin": "R2-1", + "layer": "F.Cu" + }, + { + "pin": "R2-2", + "layer": "F.Cu" + }, + { + "pin": "R3-1", + "layer": "F.Cu" + }, + { + "pin": "R3-2", + "layer": "F.Cu" + }, + { + "pin": "R4-1", + "layer": "F.Cu" + }, + { + "pin": "R4-2", + "layer": "F.Cu" + } + ], + { + "presort_by": "RatlineIntersectionCountAndLength", + "permutate": true, + "router_options": { + "routed_band_width": 100.0, + "wrap_around_bands": true, + "squeeze_through_under_bends": true + } + } + ] + } + ], + "undone": [] +} \ No newline at end of file diff --git a/tests/single_layer/4x4_1206_led_matrix_breakout/autoroute_all_in_predefined_order.cmd b/tests/single_layer/4x4_1206_led_matrix_breakout/autoroute_all_in_predefined_order.cmd new file mode 100644 index 0000000..ed695af --- /dev/null +++ b/tests/single_layer/4x4_1206_led_matrix_breakout/autoroute_all_in_predefined_order.cmd @@ -0,0 +1,334 @@ +{ + "done": [ + { + "Autoroute": [ + [ + { + "pin": "D13-1", + "layer": "F.Cu" + }, + { + "pin": "D14-1", + "layer": "F.Cu" + }, + { + "pin": "D15-1", + "layer": "F.Cu" + }, + { + "pin": "D16-1", + "layer": "F.Cu" + }, + { + "pin": "J2-1", + "layer": "F.Cu" + }, + { + "pin": "J2-2", + "layer": "F.Cu" + }, + { + "pin": "J2-3", + "layer": "F.Cu" + }, + { + "pin": "J2-4", + "layer": "F.Cu" + }, + { + "pin": "R1-1", + "layer": "F.Cu" + }, + { + "pin": "R1-2", + "layer": "F.Cu" + }, + { + "pin": "R2-1", + "layer": "F.Cu" + }, + { + "pin": "R2-2", + "layer": "F.Cu" + }, + { + "pin": "R3-1", + "layer": "F.Cu" + }, + { + "pin": "R3-2", + "layer": "F.Cu" + }, + { + "pin": "R4-1", + "layer": "F.Cu" + }, + { + "pin": "R4-2", + "layer": "F.Cu" + } + ], + { + "presort_by": "RatlineIntersectionCountAndLength", + "permutate": true, + "router_options": { + "routed_band_width": 100.0, + "wrap_around_bands": true, + "squeeze_through_under_bends": true + } + } + ] + }, + { + "Autoroute": [ + [ + { + "pin": "D1-2", + "layer": "F.Cu" + }, + { + "pin": "D13-2", + "layer": "F.Cu" + }, + { + "pin": "D5-2", + "layer": "F.Cu" + }, + { + "pin": "D9-2", + "layer": "F.Cu" + }, + { + "pin": "J1-1", + "layer": "F.Cu" + }, + { + "pin": "J1-2", + "layer": "F.Cu" + }, + { + "pin": "J1-3", + "layer": "F.Cu" + }, + { + "pin": "J1-4", + "layer": "F.Cu" + } + ], + { + "presort_by": "RatlineIntersectionCountAndLength", + "permutate": true, + "router_options": { + "routed_band_width": 100.0, + "wrap_around_bands": true, + "squeeze_through_under_bends": true + } + } + ] + }, + { + "Autoroute": [ + [ + { + "pin": "D1-2", + "layer": "F.Cu" + }, + { + "pin": "D10-2", + "layer": "F.Cu" + }, + { + "pin": "D11-2", + "layer": "F.Cu" + }, + { + "pin": "D12-2", + "layer": "F.Cu" + }, + { + "pin": "D13-2", + "layer": "F.Cu" + }, + { + "pin": "D14-2", + "layer": "F.Cu" + }, + { + "pin": "D15-2", + "layer": "F.Cu" + }, + { + "pin": "D16-2", + "layer": "F.Cu" + }, + { + "pin": "D2-2", + "layer": "F.Cu" + }, + { + "pin": "D3-2", + "layer": "F.Cu" + }, + { + "pin": "D4-2", + "layer": "F.Cu" + }, + { + "pin": "D5-2", + "layer": "F.Cu" + }, + { + "pin": "D6-2", + "layer": "F.Cu" + }, + { + "pin": "D7-2", + "layer": "F.Cu" + }, + { + "pin": "D8-2", + "layer": "F.Cu" + }, + { + "pin": "D9-2", + "layer": "F.Cu" + } + ], + { + "presort_by": "RatlineIntersectionCountAndLength", + "permutate": true, + "router_options": { + "routed_band_width": 100.0, + "wrap_around_bands": true, + "squeeze_through_under_bends": true + } + } + ] + }, + { + "Autoroute": [ + [ + { + "pin": "D1-1", + "layer": "F.Cu" + }, + { + "pin": "D13-1", + "layer": "F.Cu" + }, + { + "pin": "D5-1", + "layer": "F.Cu" + }, + { + "pin": "D9-1", + "layer": "F.Cu" + } + ], + { + "presort_by": "RatlineIntersectionCountAndLength", + "permutate": true, + "router_options": { + "routed_band_width": 100.0, + "wrap_around_bands": true, + "squeeze_through_under_bends": true + } + } + ] + }, + { + "Autoroute": [ + [ + { + "pin": "D10-1", + "layer": "F.Cu" + }, + { + "pin": "D14-1", + "layer": "F.Cu" + }, + { + "pin": "D2-1", + "layer": "F.Cu" + }, + { + "pin": "D6-1", + "layer": "F.Cu" + } + ], + { + "presort_by": "RatlineIntersectionCountAndLength", + "permutate": true, + "router_options": { + "routed_band_width": 100.0, + "wrap_around_bands": true, + "squeeze_through_under_bends": true + } + } + ] + }, + { + "Autoroute": [ + [ + { + "pin": "D11-1", + "layer": "F.Cu" + }, + { + "pin": "D15-1", + "layer": "F.Cu" + }, + { + "pin": "D3-1", + "layer": "F.Cu" + }, + { + "pin": "D7-1", + "layer": "F.Cu" + } + ], + { + "presort_by": "RatlineIntersectionCountAndLength", + "permutate": true, + "router_options": { + "routed_band_width": 100.0, + "wrap_around_bands": true, + "squeeze_through_under_bends": true + } + } + ] + }, + { + "Autoroute": [ + [ + { + "pin": "D12-1", + "layer": "F.Cu" + }, + { + "pin": "D16-1", + "layer": "F.Cu" + }, + { + "pin": "D4-1", + "layer": "F.Cu" + }, + { + "pin": "D8-1", + "layer": "F.Cu" + } + ], + { + "presort_by": "RatlineIntersectionCountAndLength", + "permutate": true, + "router_options": { + "routed_band_width": 100.0, + "wrap_around_bands": true, + "squeeze_through_under_bends": true + } + } + ] + } + ], + "undone": [] +} \ No newline at end of file diff --git a/tests/single_layer/tht_de9_to_tht_de9/autoroute_all_in_an_order.cmd b/tests/single_layer/tht_de9_to_tht_de9/autoroute_all_in_predefined_order.cmd similarity index 100% rename from tests/single_layer/tht_de9_to_tht_de9/autoroute_all_in_an_order.cmd rename to tests/single_layer/tht_de9_to_tht_de9/autoroute_all_in_predefined_order.cmd