From 0b756907be7f8a828eaa5251ccab79205d4e304d Mon Sep 17 00:00:00 2001 From: svandenb-dev Date: Sun, 22 Mar 2026 13:43:37 +0100 Subject: [PATCH 01/11] port fixed --- src/pyedb/grpc/database/inner/base.py | 9 +++++++ src/pyedb/grpc/database/primitive/path.py | 6 ----- src/pyedb/grpc/database/source_excitations.py | 6 ++--- .../grpc/database/terminal/edge_terminal.py | 3 +-- src/pyedb/grpc/database/terminal/terminal.py | 26 +++++++++++++++++++ tests/system/test_edb.py | 4 +++ 6 files changed, 43 insertions(+), 11 deletions(-) diff --git a/src/pyedb/grpc/database/inner/base.py b/src/pyedb/grpc/database/inner/base.py index 0b1c8c8cd1..7ae3d2a0a8 100644 --- a/src/pyedb/grpc/database/inner/base.py +++ b/src/pyedb/grpc/database/inner/base.py @@ -7,6 +7,15 @@ # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is +# Copyright (C) 2023 - 2026 ANSYS, Inc. and/or its affiliates. +# SPDX-License-Identifier: MIT +# +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in all diff --git a/src/pyedb/grpc/database/primitive/path.py b/src/pyedb/grpc/database/primitive/path.py index cfb5ecd910..6234a0396d 100644 --- a/src/pyedb/grpc/database/primitive/path.py +++ b/src/pyedb/grpc/database/primitive/path.py @@ -280,12 +280,6 @@ def create_edge_port( """ center_line = self.get_center_line() pos = center_line[-1] if position.lower() == "end" else center_line[0] - - # if port_type.lower() == "wave": - # return self._pedb.excitation_manager.create_wave_port( - # self.id, pos, name, 50, horizontal_extent_factor, vertical_extent_factor, pec_launch_width - # ) - # else: return self._pedb.excitation_manager.create_edge_port_vertical( self.edb_uid, pos, diff --git a/src/pyedb/grpc/database/source_excitations.py b/src/pyedb/grpc/database/source_excitations.py index 93b4be28aa..50381097f0 100644 --- a/src/pyedb/grpc/database/source_excitations.py +++ b/src/pyedb/grpc/database/source_excitations.py @@ -2014,7 +2014,7 @@ def create_edge_port_vertical( horizontal_extent_factor: Union[int, float] = 5, vertical_extent_factor: Union[int, float] = 3, pec_launch_width: str = "0.01mm", - ) -> str: + ) -> str | None: """Create a vertical edge port. Parameters @@ -2077,9 +2077,9 @@ def create_edge_port_vertical( prop, ) if not pos_edge_term.is_null: - return pos_edge_term + return pos_edge_term.name else: - return False + return None def create_edge_port_horizontal( self, diff --git a/src/pyedb/grpc/database/terminal/edge_terminal.py b/src/pyedb/grpc/database/terminal/edge_terminal.py index b14e72c753..afcd36accd 100644 --- a/src/pyedb/grpc/database/terminal/edge_terminal.py +++ b/src/pyedb/grpc/database/terminal/edge_terminal.py @@ -108,8 +108,7 @@ def port_post_processing_prop(self, value): @property def is_wave_port(self) -> bool: if self._hfss_port_property: - return True - return False + return True if "Wave" in self._hfss_port_property else False @property def is_reference_terminal(self) -> bool: diff --git a/src/pyedb/grpc/database/terminal/terminal.py b/src/pyedb/grpc/database/terminal/terminal.py index 2c14bd90ff..8e225d69ee 100644 --- a/src/pyedb/grpc/database/terminal/terminal.py +++ b/src/pyedb/grpc/database/terminal/terminal.py @@ -38,6 +38,7 @@ ) from pyedb.grpc.database.primitive.primitive import Primitive +from pyedb.grpc.database.terminal.port_post_processing_properties import PortPostProcessingProperties from pyedb.grpc.database.utility.port_post_processing_prop import PortPostProcessingProp from pyedb.grpc.database.utility.value import Value from pyedb.misc.decorators import deprecated_property @@ -213,6 +214,31 @@ def do_renormalize(self) -> bool: def do_renormalize(self, value): self.port_post_processing_prop.do_renormalize = value + @property + def do_deembed(self) -> bool: + """Determine whether port deembed is enabled. + Returns + """ + return self.port_post_processing_prop.do_deembed + + @do_deembed.setter + def do_deembed(self, value): + self.port_post_processing_prop.do_deembed = value + + @property + @deprecated_property("use do_deembed property instead") + def deembed(self) -> bool: + """Determine whether port deembed is enabled. + + .. deprecated:: 0.71.0 + The `deembed` property is deprecated. Please use `do_deembed` instead. + """ + return self.port_post_processing_prop.do_deembed + + @deembed.setter + def deembed(self, value): + self.port_post_processing_prop.do_deembed = value + @property def renormalization_impedance(self) -> float: """Get the renormalization impedance value. diff --git a/tests/system/test_edb.py b/tests/system/test_edb.py index 8490a7411c..81bc93f783 100644 --- a/tests/system/test_edb.py +++ b/tests/system/test_edb.py @@ -338,11 +338,15 @@ def test_create_edge_port_on_polygon(self): gap_port = edb.ports["pcb_port_2"] if edb.grpc: assert gap_port.component.is_null + assert not gap_port.is_circuit_port else: assert not gap_port.component assert gap_port.source_amplitude == 0.0 assert gap_port.source_phase == 0.0 assert gap_port.impedance + # temp + from ansys.edb.core.database import ProductIdType + assert not gap_port.deembed gap_port.name = "gap_port" assert gap_port.name == "gap_port" From 4df585981d94a92a323c674f8044df487d0a3cfe Mon Sep 17 00:00:00 2001 From: svandenb-dev Date: Sun, 22 Mar 2026 13:48:49 +0100 Subject: [PATCH 02/11] port fixed --- tests/system/test_edb.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/tests/system/test_edb.py b/tests/system/test_edb.py index 81bc93f783..c153604bb2 100644 --- a/tests/system/test_edb.py +++ b/tests/system/test_edb.py @@ -344,9 +344,6 @@ def test_create_edge_port_on_polygon(self): assert gap_port.source_amplitude == 0.0 assert gap_port.source_phase == 0.0 assert gap_port.impedance - # temp - from ansys.edb.core.database import ProductIdType - assert not gap_port.deembed gap_port.name = "gap_port" assert gap_port.name == "gap_port" From 1b5555b764f21929db9ef4a445996c040f2e7c58 Mon Sep 17 00:00:00 2001 From: svandenb-dev Date: Sun, 22 Mar 2026 15:04:52 +0100 Subject: [PATCH 03/11] port fixed --- src/pyedb/grpc/database/inner/layout_obj.py | 73 ++++++++++++++++++- src/pyedb/grpc/database/source_excitations.py | 1 - .../grpc/database/terminal/edge_terminal.py | 5 +- src/pyedb/grpc/database/terminal/terminal.py | 45 +++--------- tests/system/test_edb.py | 4 +- 5 files changed, 87 insertions(+), 41 deletions(-) diff --git a/src/pyedb/grpc/database/inner/layout_obj.py b/src/pyedb/grpc/database/inner/layout_obj.py index 3e1697a87c..a7f411f824 100644 --- a/src/pyedb/grpc/database/inner/layout_obj.py +++ b/src/pyedb/grpc/database/inner/layout_obj.py @@ -20,11 +20,69 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. -from ansys.edb.core.database import ProductIdType as GrpcProductIdType +from dataclasses import dataclass +import re + +from ansys.edb.core.database import ProductIdType as CoreProductIdType from pyedb.grpc.database.inner.base import ObjBase +@dataclass +class HFSSProductProperty: + hfss_type: str = "Gap" + orientation: str = "" + layer_alignment: str = "" + horizontal_extent_factor: float = 0.0 + vertical_extent_factor: float = 0.0 + pec_launch_width: str = "10um" + + def to_hfss_string(self) -> str: + def _fmt_num(val: float) -> str: + try: + v = float(val) + except Exception: + return str(val) + # Render as integer when the float is integral + if v.is_integer(): + return str(int(v)) + return str(v) + + h_val = _fmt_num(self.horizontal_extent_factor) + v_val = _fmt_num(self.vertical_extent_factor) + + return ( + "HFSS(" + f"'HFSS Type'='{self.hfss_type}', " + f"Orientation='{self.orientation}', " + f"'Layer Alignment'='{self.layer_alignment}', " + f"'Horizontal Extent Factor'='{h_val}', " + f"'Vertical Extent Factor'='{v_val}', " + f"'PEC Launch Width'='{self.pec_launch_width}'" + ")" + ) + + +def parse_hfss_string(s: str | None) -> HFSSProductProperty: + if s is None: + return HFSSProductProperty() + + def get(key: str) -> str | None: + match = re.search(rf"'{re.escape(key)}'='([^']*)'", s) + return match.group(1) if match else None + + defaults = HFSSProductProperty() + + return HFSSProductProperty( + hfss_type=get("HFSS Type") or defaults.hfss_type, + orientation=get("Orientation") or defaults.orientation, + layer_alignment=get("Layer Alignment") or defaults.layer_alignment, + horizontal_extent_factor=float(get("Horizontal Extent Factor") or defaults.horizontal_extent_factor), + vertical_extent_factor=float(get("Vertical Extent Factor") or defaults.vertical_extent_factor), + pec_launch_width=get("PEC Launch Width") or defaults.pec_launch_width, + ) + + class LayoutObj(ObjBase): """Represents a layout object.""" @@ -33,9 +91,18 @@ def __init__(self, pedb, core): @property def _edb_properties(self): - p = self.core.get_product_property(GrpcProductIdType.DESIGNER, 18) + p = self.core.get_product_property(CoreProductIdType.DESIGNER, 18) return p @_edb_properties.setter def _edb_properties(self, value): - self.core.set_product_property(GrpcProductIdType.DESIGNER, 18, value) + self.core.set_product_property(CoreProductIdType.DESIGNER, 18, value) + + @property + def _hfss_properties(self) -> HFSSProductProperty: + return parse_hfss_string(self.core.product_solver_option(CoreProductIdType.DESIGNER, "HFSS")) + + @_hfss_properties.setter + def _hfss_properties(self, value): + if isinstance(value, HFSSProductProperty): + self.core.product_solver_option(CoreProductIdType.DESIGNER, "HFSS", value.to_hfss_string()) diff --git a/src/pyedb/grpc/database/source_excitations.py b/src/pyedb/grpc/database/source_excitations.py index 50381097f0..2cf421eb13 100644 --- a/src/pyedb/grpc/database/source_excitations.py +++ b/src/pyedb/grpc/database/source_excitations.py @@ -2060,7 +2060,6 @@ def create_edge_port_vertical( if reference_layer: reference_layer = self._pedb.stackup.signal_layers[reference_layer] pos_edge_term.reference_layer = reference_layer - prop = ", ".join( [ f"HFSS('HFSS Type'='{hfss_type}'", diff --git a/src/pyedb/grpc/database/terminal/edge_terminal.py b/src/pyedb/grpc/database/terminal/edge_terminal.py index afcd36accd..bd0d752612 100644 --- a/src/pyedb/grpc/database/terminal/edge_terminal.py +++ b/src/pyedb/grpc/database/terminal/edge_terminal.py @@ -107,8 +107,9 @@ def port_post_processing_prop(self, value): @property def is_wave_port(self) -> bool: - if self._hfss_port_property: - return True if "Wave" in self._hfss_port_property else False + if self.hfss_type == "Wave": + return True + return False @property def is_reference_terminal(self) -> bool: diff --git a/src/pyedb/grpc/database/terminal/terminal.py b/src/pyedb/grpc/database/terminal/terminal.py index 8e225d69ee..4a03d146f2 100644 --- a/src/pyedb/grpc/database/terminal/terminal.py +++ b/src/pyedb/grpc/database/terminal/terminal.py @@ -31,6 +31,7 @@ from pyedb.grpc.database.primitive.padstack_instance import PadstackInstance import re +from ansys.edb.core.database import ProductIdType from ansys.edb.core.terminal.edge_terminal import EdgeType as CoreEdgeType from ansys.edb.core.terminal.terminal import ( BoundaryType as CoreBoundaryType, @@ -38,7 +39,6 @@ ) from pyedb.grpc.database.primitive.primitive import Primitive -from pyedb.grpc.database.terminal.port_post_processing_properties import PortPostProcessingProperties from pyedb.grpc.database.utility.port_post_processing_prop import PortPostProcessingProp from pyedb.grpc.database.utility.value import Value from pyedb.misc.decorators import deprecated_property @@ -97,30 +97,7 @@ def port_post_processing_prop(self): @property def _hfss_port_property(self): """HFSS port property.""" - hfss_prop = re.search(r"HFSS\(.*?\)", self._edb_properties) - p = {} - if hfss_prop: - hfss_type = re.search(r"'HFSS Type'='([^']+)'", hfss_prop.group()) - orientation = re.search(r"'Orientation'='([^']+)'", hfss_prop.group()) - horizontal_ef = re.search(r"'Horizontal Extent Factor'='([^']+)'", hfss_prop.group()) - vertical_ef = re.search(r"'Vertical Extent Factor'='([^']+)'", hfss_prop.group()) - radial_ef = re.search(r"'Radial Extent Factor'='([^']+)'", hfss_prop.group()) - pec_w = re.search(r"'PEC Launch Width'='([^']+)'", hfss_prop.group()) - - p["HFSS Type"] = hfss_type.group(1) if hfss_type else "" - p["Orientation"] = orientation.group(1) if orientation else "" - p["Horizontal Extent Factor"] = float(horizontal_ef.group(1)) if horizontal_ef else "" - p["Vertical Extent Factor"] = float(vertical_ef.group(1)) if vertical_ef else "" - p["Radial Extent Factor"] = float(radial_ef.group(1)) if radial_ef else "" - p["PEC Launch Width"] = pec_w.group(1) if pec_w else "" - else: - p["HFSS Type"] = "" - p["Orientation"] = "" - p["Horizontal Extent Factor"] = "" - p["Vertical Extent Factor"] = "" - p["Radial Extent Factor"] = "" - p["PEC Launch Width"] = "" - return p + return self._hfss_properties @property def horizontal_extent_factor(self) -> float: @@ -131,12 +108,12 @@ def horizontal_extent_factor(self) -> float: float Extent value. """ - return self._hfss_port_property["Horizontal Extent Factor"] + return self._hfss_port_property.horizontal_extent_factor @horizontal_extent_factor.setter def horizontal_extent_factor(self, value): p = self._hfss_port_property - p["Horizontal Extent Factor"] = value + p.horizontal_extent_factor = value self._hfss_port_property = p @property @@ -149,16 +126,16 @@ def vertical_extent_factor(self) -> float: Vertical extent value. """ - return self._hfss_port_property["Vertical Extent Factor"] + return self._hfss_port_property.vertical_extent_factor @vertical_extent_factor.setter def vertical_extent_factor(self, value): p = self._hfss_port_property - p["Vertical Extent Factor"] = value + p.vertical_extent_factor = value self._hfss_port_property = p @property - def pec_launch_width(self) -> float: + def pec_launch_width(self) -> str: """Launch width for the printed electronic component (PEC). Returns @@ -166,12 +143,12 @@ def pec_launch_width(self) -> float: float Pec launch width value. """ - return self._hfss_port_property["PEC Launch Width"] + return self._hfss_port_property.pec_launch_width @pec_launch_width.setter def pec_launch_width(self, value): p = self._hfss_port_property - p["PEC Launch Width"] = value + p.pec_launch_width = value self._hfss_port_property = p @property @@ -191,12 +168,12 @@ def _hfss_port_property(self, value): @property def hfss_type(self) -> str: """HFSS port type.""" - return self._hfss_port_property["HFSS Type"] + return self._hfss_port_property.hfss_type @hfss_type.setter def hfss_type(self, value): p = self._hfss_port_property - p["HFSS Type"] = value + p.hfss_type = value self._hfss_port_property = p @property diff --git a/tests/system/test_edb.py b/tests/system/test_edb.py index c153604bb2..8affe8712b 100644 --- a/tests/system/test_edb.py +++ b/tests/system/test_edb.py @@ -334,9 +334,11 @@ def test_create_edge_port_on_polygon(self): ) sig = edb.modeler.create_trace([[0, 0], ["9mm", 0]], "sig2", "1mm", "SIG", "Flat", "Flat") assert sig.create_edge_port("pcb_port_1", "end", "Wave", None, 8, 8) - assert sig.create_edge_port("pcb_port_2", "start", "gap") + assert sig.create_edge_port("pcb_port_2", "start", "Gap") gap_port = edb.ports["pcb_port_2"] if edb.grpc: + assert edb.ports["pcb_port_1"].is_wave_port + assert not edb.ports["pcb_port_2"].is_wave_port assert gap_port.component.is_null assert not gap_port.is_circuit_port else: From 155b86bfb0e8c182f2a076d4ebc6be43859cd346 Mon Sep 17 00:00:00 2001 From: pyansys-ci-bot <92810346+pyansys-ci-bot@users.noreply.github.com> Date: Sun, 22 Mar 2026 14:08:17 +0000 Subject: [PATCH 04/11] chore: adding changelog file 1945.fixed.md [dependabot-skip] --- doc/changelog.d/1945.fixed.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 doc/changelog.d/1945.fixed.md diff --git a/doc/changelog.d/1945.fixed.md b/doc/changelog.d/1945.fixed.md new file mode 100644 index 0000000000..399f8d739a --- /dev/null +++ b/doc/changelog.d/1945.fixed.md @@ -0,0 +1 @@ +Wave port terminal fixed From 70f3c07ddd7461c452d9a627743d46371e1dccc4 Mon Sep 17 00:00:00 2001 From: pyansys-ci-bot <92810346+pyansys-ci-bot@users.noreply.github.com> Date: Sun, 22 Mar 2026 14:10:34 +0000 Subject: [PATCH 05/11] chore: adding changelog file 1945.fixed.md [dependabot-skip] --- doc/changelog.d/1945.fixed.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/changelog.d/1945.fixed.md b/doc/changelog.d/1945.fixed.md index 399f8d739a..6741ff214d 100644 --- a/doc/changelog.d/1945.fixed.md +++ b/doc/changelog.d/1945.fixed.md @@ -1 +1 @@ -Wave port terminal fixed +Wave port terminal fixed issue #1909 From 39cb94d77bb7616f7218245e332884ad5e2cfd96 Mon Sep 17 00:00:00 2001 From: svandenb-dev Date: Sun, 22 Mar 2026 16:15:39 +0100 Subject: [PATCH 06/11] codacy fix --- src/pyedb/grpc/database/terminal/terminal.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/pyedb/grpc/database/terminal/terminal.py b/src/pyedb/grpc/database/terminal/terminal.py index 4a03d146f2..c6980d601c 100644 --- a/src/pyedb/grpc/database/terminal/terminal.py +++ b/src/pyedb/grpc/database/terminal/terminal.py @@ -29,9 +29,7 @@ if TYPE_CHECKING: from pyedb.grpc.database.primitive.padstack_instance import PadstackInstance -import re -from ansys.edb.core.database import ProductIdType from ansys.edb.core.terminal.edge_terminal import EdgeType as CoreEdgeType from ansys.edb.core.terminal.terminal import ( BoundaryType as CoreBoundaryType, From c40eac5b771128d48703d379fa2ef296a116446c Mon Sep 17 00:00:00 2001 From: svandenb-dev Date: Sun, 22 Mar 2026 19:19:38 +0100 Subject: [PATCH 07/11] issue #1063 fixed --- src/pyedb/grpc/database/terminal/terminal.py | 2 +- tests/system/test_extensions.py | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/pyedb/grpc/database/terminal/terminal.py b/src/pyedb/grpc/database/terminal/terminal.py index c6980d601c..1c7987d3b2 100644 --- a/src/pyedb/grpc/database/terminal/terminal.py +++ b/src/pyedb/grpc/database/terminal/terminal.py @@ -158,7 +158,7 @@ def reference_layer(self): @_hfss_port_property.setter def _hfss_port_property(self, value): txt = [] - for k, v in value.items(): + for k, v in value.__dict__.items(): txt.append("'{}'='{}'".format(k, v)) txt = ",".join(txt) self._edb_properties = "HFSS({})".format(txt) diff --git a/tests/system/test_extensions.py b/tests/system/test_extensions.py index 26e916e4ee..4fda7b46c8 100644 --- a/tests/system/test_extensions.py +++ b/tests/system/test_extensions.py @@ -104,6 +104,7 @@ @pytest.mark.usefixtures("close_rpc_session") +@pytest.mark.skipif(config["use_grpc"] and config["desktopVersion"] < "2026.1", reason="working with latest release") class TestClass(BaseTestClass): def test_backend_single(self): cfg = { From bdcc59bfa2b8d1b0398c3aaf056a94f2876c2118 Mon Sep 17 00:00:00 2001 From: svandenb-dev Date: Tue, 24 Mar 2026 07:44:39 +0100 Subject: [PATCH 08/11] wave port fixed grpc --- src/pyedb/grpc/database/inner/layout_obj.py | 6 +++--- src/pyedb/grpc/database/terminal/terminal.py | 6 +----- tests/system/test_edb.py | 17 +++++++++++++++-- 3 files changed, 19 insertions(+), 10 deletions(-) diff --git a/src/pyedb/grpc/database/inner/layout_obj.py b/src/pyedb/grpc/database/inner/layout_obj.py index a7f411f824..9dbab2ac09 100644 --- a/src/pyedb/grpc/database/inner/layout_obj.py +++ b/src/pyedb/grpc/database/inner/layout_obj.py @@ -33,8 +33,8 @@ class HFSSProductProperty: hfss_type: str = "Gap" orientation: str = "" layer_alignment: str = "" - horizontal_extent_factor: float = 0.0 - vertical_extent_factor: float = 0.0 + horizontal_extent_factor: float | int = 0.0 + vertical_extent_factor: float | int = 0.0 pec_launch_width: str = "10um" def to_hfss_string(self) -> str: @@ -105,4 +105,4 @@ def _hfss_properties(self) -> HFSSProductProperty: @_hfss_properties.setter def _hfss_properties(self, value): if isinstance(value, HFSSProductProperty): - self.core.product_solver_option(CoreProductIdType.DESIGNER, "HFSS", value.to_hfss_string()) + self.core.set_product_solver_option(CoreProductIdType.DESIGNER, "HFSS", value.to_hfss_string()) diff --git a/src/pyedb/grpc/database/terminal/terminal.py b/src/pyedb/grpc/database/terminal/terminal.py index 1c7987d3b2..8f1783b67c 100644 --- a/src/pyedb/grpc/database/terminal/terminal.py +++ b/src/pyedb/grpc/database/terminal/terminal.py @@ -157,11 +157,7 @@ def reference_layer(self): @_hfss_port_property.setter def _hfss_port_property(self, value): - txt = [] - for k, v in value.__dict__.items(): - txt.append("'{}'='{}'".format(k, v)) - txt = ",".join(txt) - self._edb_properties = "HFSS({})".format(txt) + self._hfss_properties = value @property def hfss_type(self) -> str: diff --git a/tests/system/test_edb.py b/tests/system/test_edb.py index 8affe8712b..9893ace062 100644 --- a/tests/system/test_edb.py +++ b/tests/system/test_edb.py @@ -47,6 +47,9 @@ def test_hfss_create_coax_port_on_component_from_hfss(self): assert edbapp.excitation_manager.create_coax_port_on_component("U1", ["DDR4_DQS0_P", "DDR4_DQS0_N"], True) edbapp.close(terminate_rpc_session=False) + @pytest.mark.skipif( + config["use_grpc"] and config["desktopVersion"] < "2026.1", reason="working with latest release" + ) def test_layout_bounding_box(self): """Evaluate layout bounding box""" edbapp = self.edb_examples.get_si_verse() @@ -278,6 +281,9 @@ def test_export_3d(self): edb.close(terminate_rpc_session=False) + @pytest.mark.skipif( + config["use_grpc"] and config["desktopVersion"] < "2026.1", reason="working with latest release" + ) def test_create_edge_port_on_polygon(self): """Create lumped and vertical port.""" target_path = self.edb_examples.copy_test_files_into_local_folder("TEDB/edge_ports.aedb")[0] @@ -354,6 +360,9 @@ def test_create_edge_port_on_polygon(self): assert gap_port.is_circuit_port edb.close(terminate_rpc_session=False) + @pytest.mark.skipif( + config["use_grpc"] and config["desktopVersion"] < "2026.1", reason="working with latest release" + ) def test_edb_statistics(self): """Get statistics.""" edb = self.edb_examples.get_si_verse_sfp() @@ -1283,7 +1292,9 @@ def test_siwave_simulation_setup_dotnet_compatibility(self): assert "pi_slider_position", "si_slider_position" in setup2.get_configurations().items() edbapp.close() - @pytest.mark.skipif(config["use_grpc"], reason="only dotnet") + @pytest.mark.skipif( + config["use_grpc"] and config["desktopVersion"] < "2026.1", reason="working with latest release" + ) def test_edb_settings(self): edbapp = self.edb_examples.get_si_verse() assert type(edbapp.logger) == EdbLogger @@ -1306,7 +1317,9 @@ def test_edb_settings(self): assert edbapp.are_port_reference_terminals_connected() edbapp.close() - @pytest.mark.skipif(config["use_grpc"], reason="only dotnet") + @pytest.mark.skipif( + config["use_grpc"] and config["desktopVersion"] < "2026.1", reason="working with latest release" + ) def test_ports_and_sources_creation(self): edbapp = self.edb_examples.get_si_verse() p1 = edbapp.padstacks.instances_by_name["Via1"].create_terminal("p1") From cca7e82a93b77b70a5a15e45344bc89407ba7fbd Mon Sep 17 00:00:00 2001 From: svandenb-dev Date: Tue, 24 Mar 2026 13:14:32 +0100 Subject: [PATCH 09/11] test grpc fixed --- tests/system/test_edb.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/system/test_edb.py b/tests/system/test_edb.py index 9893ace062..4a7205f261 100644 --- a/tests/system/test_edb.py +++ b/tests/system/test_edb.py @@ -425,6 +425,9 @@ def test_configure_hfss_analysis_setup_enforce_causality(self): assert setup.sweep_data[0].enforce_causality edb.close() + @pytest.mark.skipif( + config["use_grpc"] and config["desktopVersion"] < "2026.1", reason="working with latest release" + ) def test_create_various_ports_0(self): """Create various ports.""" target_path = self.edb_examples.copy_test_files_into_local_folder("edb_edge_ports.aedb")[0] @@ -539,6 +542,9 @@ def test_create_various_ports_0(self): assert df_port.deembed_length == 1e-3 edb.close(terminate_rpc_session=False) + @pytest.mark.skipif( + config["use_grpc"] and config["desktopVersion"] < "2026.1", reason="working with latest release" + ) def test_create_various_ports_1(self): """Create various ports.""" target_path = self.edb_examples.copy_test_files_into_local_folder("edb_edge_ports.aedb")[0] From 91c4559eb548964a52842c2f216c6c6548ae6042 Mon Sep 17 00:00:00 2001 From: svandenb-dev Date: Tue, 24 Mar 2026 15:31:55 +0100 Subject: [PATCH 10/11] comment resolved --- tests/system/test_rf_libraries.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/system/test_rf_libraries.py b/tests/system/test_rf_libraries.py index 971c698ee1..93f069aef0 100644 --- a/tests/system/test_rf_libraries.py +++ b/tests/system/test_rf_libraries.py @@ -217,6 +217,9 @@ def test_ustrip(self): assert ustrip.width == 300e-6 assert ustrip.impedance == 37.52 + @pytest.mark.skipif( + config["use_grpc"] and config["desktopVersion"] < "2026.1", reason="working with latest release" + ) def test_patch_antenna(self): edb = self.edb_examples.create_empty_edb() stackup = MicroStripTechnologyStackup(pedb=edb) From 77a76ef32e6a89032f44a7b3082417ea28a89887 Mon Sep 17 00:00:00 2001 From: svandenb-dev Date: Tue, 24 Mar 2026 20:15:54 +0100 Subject: [PATCH 11/11] comment resolved --- tests/system/test_rf_libraries.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/system/test_rf_libraries.py b/tests/system/test_rf_libraries.py index 93f069aef0..da18f90020 100644 --- a/tests/system/test_rf_libraries.py +++ b/tests/system/test_rf_libraries.py @@ -237,6 +237,9 @@ def test_patch_antenna(self): assert patch_antenna.length == 0.03337 edb.close(terminate_rpc_session=False) + @pytest.mark.skipif( + config["use_grpc"] and config["desktopVersion"] < "2026.1", reason="working with latest release" + ) def test_circular_patch_antenna(self): edb = self.edb_examples.create_empty_edb() stackup = MicroStripTechnologyStackup(pedb=edb) @@ -248,6 +251,9 @@ def test_circular_patch_antenna(self): assert patch_antenna.radius == 0.0174 edb.close(terminate_rpc_session=False) + @pytest.mark.skipif( + config["use_grpc"] and config["desktopVersion"] < "2026.1", reason="working with latest release" + ) def test_triangular_antenna(self): edb = self.edb_examples.create_empty_edb() stackup = MicroStripTechnologyStackup(pedb=edb)