From aba86f0f380e5f09aa1d9603860af54c89d46637 Mon Sep 17 00:00:00 2001 From: boyang2022 Date: Wed, 22 Jan 2025 09:11:22 +0100 Subject: [PATCH] FIX: merge_via bugs (#991) * fix net_filter bug fix start and stop layer bug * add merge_via test3 --- src/pyedb/dotnet/edb_core/padstack.py | 7 ++++--- .../TEDB/merge_via_4layers.aedb/edb.def | Bin 0 -> 36014 bytes tests/legacy/system/test_edb_padstacks.py | 16 ++++++++++++++++ 3 files changed, 20 insertions(+), 3 deletions(-) create mode 100644 tests/example_models/TEDB/merge_via_4layers.aedb/edb.def diff --git a/src/pyedb/dotnet/edb_core/padstack.py b/src/pyedb/dotnet/edb_core/padstack.py index 7a16534e1d..110372b532 100644 --- a/src/pyedb/dotnet/edb_core/padstack.py +++ b/src/pyedb/dotnet/edb_core/padstack.py @@ -1651,9 +1651,7 @@ def merge_via(self, contour_boxes, net_filter=None, start_layer=None, stop_layer raise Exception(f"No padstack instances found inside {contour_box}") else: if net_filter: - instances = [ - self.instances[id] for id in instances if not self.instances[id].net_name in net_filter - ] + instances = [id for id in instances if not self.instances[id].net_name in net_filter] net = self.instances[instances[0]].net_name x_values = [] @@ -1690,6 +1688,9 @@ def merge_via(self, contour_boxes, net_filter=None, start_layer=None, stop_layer ): raise Exception(f"Failed to create padstack definition {new_padstack_def}") merged_instance = self.place(position=[0, 0], definition_name=new_padstack_def, net_name=net) + merged_instance.start_layer = start_layer + merged_instance.stop_layer = stop_layer + merged_via_ids.append(merged_instance.id) [self.instances[id].delete() for id in instances] return merged_via_ids diff --git a/tests/example_models/TEDB/merge_via_4layers.aedb/edb.def b/tests/example_models/TEDB/merge_via_4layers.aedb/edb.def new file mode 100644 index 0000000000000000000000000000000000000000..3bf538c74bcdee90c9ddd87f0a68998b8283e089 GIT binary patch literal 36014 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