pyedb 0.54.0__py3-none-any.whl → 0.55.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of pyedb might be problematic. Click here for more details.

Files changed (95) hide show
  1. pyedb/__init__.py +1 -8
  2. pyedb/configuration/cfg_boundaries.py +69 -151
  3. pyedb/configuration/cfg_components.py +201 -460
  4. pyedb/configuration/cfg_data.py +4 -2
  5. pyedb/configuration/cfg_general.py +13 -36
  6. pyedb/configuration/cfg_modeler.py +2 -1
  7. pyedb/configuration/cfg_nets.py +21 -35
  8. pyedb/configuration/cfg_operations.py +22 -151
  9. pyedb/configuration/cfg_package_definition.py +56 -112
  10. pyedb/configuration/cfg_padstacks.py +292 -688
  11. pyedb/configuration/cfg_pin_groups.py +32 -79
  12. pyedb/configuration/cfg_ports_sources.py +19 -6
  13. pyedb/configuration/cfg_s_parameter_models.py +67 -172
  14. pyedb/configuration/cfg_setup.py +102 -295
  15. pyedb/configuration/configuration.py +64 -5
  16. pyedb/dotnet/database/cell/connectable.py +38 -9
  17. pyedb/dotnet/database/cell/hierarchy/component.py +28 -28
  18. pyedb/dotnet/database/cell/hierarchy/model.py +1 -1
  19. pyedb/dotnet/database/cell/layout.py +63 -2
  20. pyedb/dotnet/database/cell/layout_obj.py +2 -2
  21. pyedb/dotnet/database/cell/primitive/path.py +6 -8
  22. pyedb/dotnet/database/cell/primitive/primitive.py +3 -24
  23. pyedb/dotnet/database/cell/terminal/edge_terminal.py +2 -2
  24. pyedb/dotnet/database/cell/terminal/padstack_instance_terminal.py +1 -1
  25. pyedb/dotnet/database/cell/terminal/pingroup_terminal.py +1 -1
  26. pyedb/dotnet/database/cell/terminal/point_terminal.py +1 -1
  27. pyedb/dotnet/database/cell/terminal/terminal.py +24 -24
  28. pyedb/dotnet/database/cell/voltage_regulator.py +0 -21
  29. pyedb/dotnet/database/components.py +96 -88
  30. pyedb/dotnet/database/definition/component_def.py +4 -4
  31. pyedb/dotnet/database/definition/component_model.py +1 -1
  32. pyedb/dotnet/database/definition/package_def.py +2 -3
  33. pyedb/dotnet/database/dotnet/database.py +3 -199
  34. pyedb/dotnet/database/dotnet/primitive.py +3 -3
  35. pyedb/dotnet/database/edb_data/control_file.py +5 -5
  36. pyedb/dotnet/database/edb_data/hfss_extent_info.py +6 -6
  37. pyedb/dotnet/database/edb_data/layer_data.py +23 -23
  38. pyedb/dotnet/database/edb_data/padstacks_data.py +63 -88
  39. pyedb/dotnet/database/edb_data/primitives_data.py +5 -5
  40. pyedb/dotnet/database/edb_data/sources.py +6 -6
  41. pyedb/dotnet/database/edb_data/variables.py +1 -1
  42. pyedb/dotnet/database/geometry/point_data.py +14 -10
  43. pyedb/dotnet/database/geometry/polygon_data.py +3 -3
  44. pyedb/dotnet/database/hfss.py +46 -48
  45. pyedb/dotnet/database/layout_validation.py +14 -11
  46. pyedb/dotnet/database/materials.py +10 -11
  47. pyedb/dotnet/database/modeler.py +97 -91
  48. pyedb/dotnet/database/nets.py +19 -22
  49. pyedb/dotnet/database/padstack.py +84 -83
  50. pyedb/dotnet/database/siwave.py +42 -42
  51. pyedb/dotnet/database/stackup.py +140 -72
  52. pyedb/dotnet/database/utilities/heatsink.py +4 -4
  53. pyedb/dotnet/database/utilities/obj_base.py +2 -2
  54. pyedb/dotnet/database/utilities/simulation_setup.py +2 -2
  55. pyedb/dotnet/database/utilities/value.py +16 -16
  56. pyedb/dotnet/edb.py +228 -150
  57. pyedb/edb_logger.py +12 -27
  58. pyedb/extensions/via_design_backend.py +6 -3
  59. pyedb/generic/design_types.py +67 -29
  60. pyedb/generic/general_methods.py +0 -120
  61. pyedb/generic/process.py +44 -108
  62. pyedb/generic/settings.py +75 -19
  63. pyedb/grpc/database/components.py +2 -0
  64. pyedb/grpc/database/control_file.py +5 -5
  65. pyedb/grpc/database/definition/materials.py +1 -1
  66. pyedb/grpc/database/definition/package_def.py +3 -3
  67. pyedb/grpc/database/definition/padstack_def.py +53 -0
  68. pyedb/grpc/database/geometry/polygon_data.py +1 -1
  69. pyedb/grpc/database/layout/layout.py +8 -5
  70. pyedb/grpc/database/layout_validation.py +3 -3
  71. pyedb/grpc/database/modeler.py +9 -4
  72. pyedb/grpc/database/net/net.py +15 -14
  73. pyedb/grpc/database/nets.py +70 -0
  74. pyedb/grpc/database/padstacks.py +35 -17
  75. pyedb/grpc/database/primitive/padstack_instance.py +175 -7
  76. pyedb/grpc/database/siwave.py +1 -1
  77. pyedb/grpc/database/source_excitations.py +2 -4
  78. pyedb/grpc/database/stackup.py +1 -1
  79. pyedb/grpc/database/terminal/bundle_terminal.py +1 -1
  80. pyedb/grpc/database/terminal/padstack_instance_terminal.py +1 -1
  81. pyedb/grpc/database/terminal/pingroup_terminal.py +1 -1
  82. pyedb/grpc/database/utility/xml_control_file.py +5 -5
  83. pyedb/grpc/edb.py +73 -27
  84. pyedb/grpc/edb_init.py +3 -3
  85. pyedb/grpc/rpc_session.py +10 -10
  86. pyedb/libraries/common.py +366 -0
  87. pyedb/libraries/rf_libraries/base_functions.py +1358 -0
  88. pyedb/libraries/rf_libraries/planar_antennas.py +628 -0
  89. pyedb/misc/decorators.py +61 -0
  90. pyedb/misc/misc.py +0 -13
  91. pyedb/siwave.py +2 -2
  92. {pyedb-0.54.0.dist-info → pyedb-0.55.0.dist-info}/METADATA +1 -2
  93. {pyedb-0.54.0.dist-info → pyedb-0.55.0.dist-info}/RECORD +95 -91
  94. {pyedb-0.54.0.dist-info → pyedb-0.55.0.dist-info}/WHEEL +0 -0
  95. {pyedb-0.54.0.dist-info → pyedb-0.55.0.dist-info}/licenses/LICENSE +0 -0
@@ -21,21 +21,9 @@
21
21
  # SOFTWARE.
22
22
 
23
23
  """Database."""
24
- import os
25
24
  import re
26
- import sys
27
- import warnings
28
25
 
29
- from pyedb import __version__
30
26
  from pyedb.dotnet.database.general import convert_py_list_to_net_list
31
- from pyedb.generic.general_methods import (
32
- env_path,
33
- env_path_student,
34
- env_value,
35
- is_linux,
36
- settings,
37
- )
38
- from pyedb.generic.grpc_warnings import GRPC_GENERAL_WARNING
39
27
 
40
28
 
41
29
  class HierarchyDotNet:
@@ -90,7 +78,7 @@ class PolygonDataDotNet: # pragma: no cover
90
78
 
91
79
  def __init__(self, pedb, api_object=None):
92
80
  self._pedb = pedb
93
- self.dotnetobj = pedb.core.geometry.api_class.PolygonData
81
+ self.dotnetobj = pedb.core.Geometry.PolygonData
94
82
  self.core = api_object
95
83
  self._edb_object = api_object
96
84
 
@@ -653,11 +641,6 @@ class CellDotNet:
653
641
  self._app = app
654
642
  self.core = app._edb
655
643
 
656
- @property
657
- def api_class(self):
658
- """Return Ansys.Ansoft.Edb class object."""
659
- return self.core
660
-
661
644
  @property
662
645
  def definition(self):
663
646
  """Edb Dotnet Api Definition."""
@@ -698,115 +681,8 @@ class CellDotNet:
698
681
  return GeometryDotNet(self._app)
699
682
 
700
683
 
701
- class EdbDotNet(object):
702
- """Edb Dot Net Class."""
703
-
704
- def __init__(self, edbversion, student_version=False):
705
- self._logger.info(f"Edb version {edbversion}")
706
- self.edbversion = edbversion
707
- if float(self.edbversion) >= 2025.2:
708
- warnings.warn(GRPC_GENERAL_WARNING, UserWarning)
709
- self.student_version = student_version
710
- """Initialize DLLs."""
711
- from pyedb.dotnet.clr_module import _clr, edb_initialized
712
-
713
- if not settings.use_pyaedt_log:
714
- if settings.enable_screen_logs:
715
- self._logger.enable_stdout_log()
716
- else: # pragma: no cover
717
- self._logger.disable_stdout_log()
718
- if not edb_initialized: # pragma: no cover
719
- self._logger.error("Failed to initialize Dlls.")
720
- return
721
- self._logger.info("Logger is initialized in EDB.")
722
- self._logger.info("legacy v%s", __version__)
723
- self._logger.info("Python version %s", sys.version)
724
- if is_linux: # pragma: no cover
725
- if env_value(self.edbversion) in os.environ or settings.edb_dll_path:
726
- if settings.edb_dll_path:
727
- self.base_path = settings.edb_dll_path
728
- else:
729
- self.base_path = env_path(self.edbversion)
730
- sys.path.append(self.base_path)
731
- else:
732
- main = sys.modules["__main__"]
733
- if "oDesktop" in dir(main):
734
- self.base_path = main.oDesktop.GetExeDir()
735
- sys.path.append(main.oDesktop.GetExeDir())
736
- os.environ[env_value(self.edbversion)] = self.base_path
737
- else:
738
- edb_path = os.getenv("PYAEDT_SERVER_AEDT_PATH")
739
- if edb_path:
740
- self.base_path = edb_path
741
- sys.path.append(edb_path)
742
- os.environ[env_value(self.edbversion)] = self.base_path
743
-
744
- _clr.AddReference("Ansys.Ansoft.Edb")
745
- _clr.AddReference("Ansys.Ansoft.EdbBuilderUtils")
746
- _clr.AddReference("Ansys.Ansoft.SimSetupData")
747
- else:
748
- if settings.edb_dll_path:
749
- self.base_path = settings.edb_dll_path
750
- elif self.student_version:
751
- self.base_path = env_path_student(self.edbversion)
752
- else:
753
- self.base_path = env_path(self.edbversion)
754
- sys.path.append(self.base_path)
755
- _clr.AddReference("Ansys.Ansoft.Edb")
756
- _clr.AddReference("Ansys.Ansoft.EdbBuilderUtils")
757
- _clr.AddReference("Ansys.Ansoft.SimSetupData")
758
- os.environ["ECAD_TRANSLATORS_INSTALL_DIR"] = self.base_path
759
- oaDirectory = os.path.join(self.base_path, "common", "oa")
760
- os.environ["ANSYS_OADIR"] = oaDirectory
761
- os.environ["PATH"] = "{};{}".format(os.environ["PATH"], self.base_path)
762
- edb = __import__("Ansys.Ansoft.Edb")
763
- self._edb = edb.Ansoft.Edb
764
- edbbuilder = __import__("Ansys.Ansoft.EdbBuilderUtils")
765
- self.edbutils = edbbuilder.Ansoft.EdbBuilderUtils
766
- self.simSetup = __import__("Ansys.Ansoft.SimSetupData")
767
- self.simsetupdata = self.simSetup.Ansoft.SimSetupData.Data
768
-
769
- @property
770
- def student_version(self):
771
- """Set the student version flag."""
772
- return self._student_version
773
-
774
- @student_version.setter
775
- def student_version(self, value):
776
- self._student_version = value
777
-
778
- @property
779
- def logger(self):
780
- """Logger for EDB.
781
-
782
- Returns
783
- -------
784
- :class:`pyedb.edb_logger.EDBLogger`
785
- """
786
- return self._logger
787
-
788
- @property
789
- def edb_api(self):
790
- """Edb Dotnet Api class.
791
-
792
- .. deprecated:: 0.54.0
793
- Use :func:core` instead.
794
- Returns
795
- -------
796
- :class:`pyedb.dotnet.database.dotnet.database.CellDotNet`
797
- """
798
- warnings.warn("`edb_api` is deprecated, use `core` instead.", DeprecationWarning)
799
- return CellDotNet(self)
800
-
801
- @property
802
- def core(self):
803
- """Edb Dotnet Api class.
804
-
805
- Returns
806
- -------
807
- :class:`pyedb.dotnet.database.dotnet.database.CellDotNet`
808
- """
809
- return CellDotNet(self)
684
+ class Database:
685
+ """Class representing a database object."""
810
686
 
811
687
  @property
812
688
  def database(self):
@@ -818,78 +694,6 @@ class EdbDotNet(object):
818
694
  """Edb Dotnet Api Database `Edb.Definition`."""
819
695
  return self.core.Definition
820
696
 
821
-
822
- class Database(EdbDotNet):
823
- """Class representing a database object."""
824
-
825
- def __init__(self, edbversion, student_version=False):
826
- """Initialize a new Database."""
827
- EdbDotNet.__init__(self, edbversion=edbversion, student_version=student_version)
828
- self._db = None
829
-
830
- @property
831
- def api_class(self):
832
- """Return Ansys.Ansoft.Edb class object."""
833
- return self._edb
834
-
835
- @property
836
- def api_object(self):
837
- """Return Ansys.Ansoft.Edb object."""
838
- return self._db
839
-
840
- @property
841
- def db(self):
842
- """Active database object."""
843
- return self._db
844
-
845
- def run_as_standalone(self, flag):
846
- """Set if Edb is run as standalone or embedded in AEDT.
847
-
848
- Parameters
849
- ----------
850
- flag : bool
851
- Whether if Edb is run as standalone or embedded in AEDT.
852
- """
853
- self.core.database.SetRunAsStandAlone(flag)
854
-
855
- def create(self, db_path):
856
- """Create a Database at the specified file location.
857
-
858
- Parameters
859
- ----------
860
- db_path : str
861
- Path to top-level database folder
862
-
863
- Returns
864
- -------
865
- Database
866
- """
867
- self._db = self.core.database.Create(db_path)
868
- return self._db
869
-
870
- def open(self, db_path, read_only):
871
- """Open an existing Database at the specified file location.
872
-
873
- Parameters
874
- ----------
875
- db_path : str
876
- Path to top-level Database folder.
877
- read_only : bool
878
- Obtain read-only access.
879
-
880
- Returns
881
- -------
882
- Database or None
883
- The opened Database object, or None if not found.
884
- """
885
- self._db = self.core.database.Open(
886
- db_path,
887
- read_only,
888
- )
889
- if self._db.IsNull():
890
- raise AttributeError(f"Failed to open edb file {db_path}")
891
- return self._db
892
-
893
697
  def delete(self, db_path):
894
698
  """Delete a database at the specified file location.
895
699
 
@@ -133,7 +133,7 @@ class PrimitiveDotNet:
133
133
  if _poly is None or _poly.IsNull() or _poly is False:
134
134
  self._logger.error("Failed to create void polygon data")
135
135
  return False
136
- point_list = self._app.core.cell.primitive.polygon.create(
136
+ point_list = self._app.core.Cell.primitive.polygon.create(
137
137
  self._app.active_layout, self.layer_name, self.prim_obj.GetNet(), _poly
138
138
  ).prim_obj
139
139
  elif "prim_obj" in dir(point_list):
@@ -422,9 +422,9 @@ class RectangleDotNet(PrimitiveDotNet):
422
422
  net = net.api_object
423
423
  if isinstance(rep_type, int):
424
424
  if rep_type == 1:
425
- rep_type = self.core.cell.primitive.RectangleRepresentationType.CenterWidthHeight
425
+ rep_type = self.core.Cell.primitive.RectangleRepresentationType.CenterWidthHeight
426
426
  else:
427
- rep_type = self.core.cell.primitive.RectangleRepresentationType.LowerLeftUpperRight
427
+ rep_type = self.core.Cell.primitive.RectangleRepresentationType.LowerLeftUpperRight
428
428
  param1 = self._app.core.utility.value(param1)
429
429
  param2 = self._app.core.utility.value(param2)
430
430
  param3 = self._app.core.utility.value(param3)
@@ -27,8 +27,8 @@ import subprocess
27
27
  import sys
28
28
  import xml
29
29
 
30
- from pyedb.edb_logger import pyedb_logger
31
30
  from pyedb.generic.general_methods import ET, env_path, env_value, is_linux
31
+ from pyedb.generic.settings import settings
32
32
  from pyedb.misc.aedtlib_personalib_install import write_pretty_xml
33
33
  from pyedb.misc.misc import list_installed_ansysem
34
34
 
@@ -57,7 +57,7 @@ def convert_technology_file(tech_file, edbversion=None, control_file=None):
57
57
  base_path = env_path(edbversion)
58
58
  sys.path.append(base_path)
59
59
  else:
60
- pyedb_logger.error("No Edb installation found. Check environment variables")
60
+ settings.logger.error("No Edb installation found. Check environment variables")
61
61
  return False
62
62
  os.environ["HELIC_ROOT"] = os.path.join(base_path, "helic")
63
63
  if os.getenv("ANSYSLMD_LICENCE_FILE", None) is None:
@@ -70,7 +70,7 @@ def convert_technology_file(tech_file, edbversion=None, control_file=None):
70
70
  os.environ["ANSYSLMD_LICENSE_FILE"] = line.split("=")[1]
71
71
  break
72
72
  else:
73
- pyedb_logger.error("ANSYSLMD_LICENSE_FILE is not defined.")
73
+ settings.logger.error("ANSYSLMD_LICENSE_FILE is not defined.")
74
74
  vlc_file_name = os.path.splitext(tech_file)[0]
75
75
  if not control_file:
76
76
  control_file = vlc_file_name + ".xml"
@@ -104,9 +104,9 @@ def convert_technology_file(tech_file, edbversion=None, control_file=None):
104
104
  p = subprocess.Popen(command, env=my_env)
105
105
  p.wait()
106
106
  if os.path.exists(control_file):
107
- pyedb_logger.info("Xml file created.")
107
+ settings.logger.info("Xml file created.")
108
108
  return control_file
109
- pyedb_logger.error("Technology files are supported only in Linux. Use control file instead.")
109
+ settings.logger.error("Technology files are supported only in Linux. Use control file instead.")
110
110
  return False
111
111
 
112
112
 
@@ -38,14 +38,14 @@ class HfssExtentInfo:
38
38
  self._pedb = pedb
39
39
 
40
40
  self._hfss_extent_info_type = {
41
- "bounding_box": self._pedb.core.utility.utility.HFSSExtentInfoType.BoundingBox,
42
- "conforming": self._pedb.core.utility.utility.HFSSExtentInfoType.Conforming,
43
- "convexHull": self._pedb.core.utility.utility.HFSSExtentInfoType.ConvexHull,
44
- "polygon": self._pedb.core.utility.utility.HFSSExtentInfoType.Polygon,
41
+ "bounding_box": self._pedb.core.Utility.HFSSExtentInfoType.BoundingBox,
42
+ "conforming": self._pedb.core.Utility.HFSSExtentInfoType.Conforming,
43
+ "convexHull": self._pedb.core.Utility.HFSSExtentInfoType.ConvexHull,
44
+ "polygon": self._pedb.core.Utility.HFSSExtentInfoType.Polygon,
45
45
  }
46
46
  self._open_region_type = {
47
- "radiation": self._pedb.core.utility.utility.OpenRegionType.Radiation,
48
- "pml": self._pedb.core.utility.utility.OpenRegionType.PML,
47
+ "radiation": self._pedb.core.Utility.OpenRegionType.Radiation,
48
+ "pml": self._pedb.core.Utility.OpenRegionType.PML,
49
49
  }
50
50
 
51
51
  def _get_edb_value(self, value):
@@ -49,7 +49,7 @@ class LayerEdbClass(object):
49
49
  layer_type = self._layer_name_mapping[layer_type]
50
50
  layer_type = self._doc_layer_mapping[layer_type]
51
51
 
52
- self._edb_object = self._pedb.core.cell._cell.Layer(
52
+ self._edb_object = self._pedb.core.Cell.Layer(
53
53
  self._name,
54
54
  layer_type,
55
55
  )
@@ -83,30 +83,30 @@ class LayerEdbClass(object):
83
83
  @property
84
84
  def _stackup_layer_mapping(self):
85
85
  return {
86
- "SignalLayer": self._edb.cell.layer_type.SignalLayer,
87
- "DielectricLayer": self._edb.cell.layer_type.DielectricLayer,
86
+ "SignalLayer": self._edb.Cell.LayerType.SignalLayer,
87
+ "DielectricLayer": self._edb.Cell.LayerType.DielectricLayer,
88
88
  }
89
89
 
90
90
  @property
91
91
  def _doc_layer_mapping(self):
92
92
  return {
93
- "ConductingLayer": self._edb.cell.layer_type.ConductingLayer,
94
- "AirlinesLayer": self._edb.cell.layer_type.AirlinesLayer,
95
- "ErrorsLayer": self._edb.cell.layer_type.ErrorsLayer,
96
- "SymbolLayer": self._edb.cell.layer_type.SymbolLayer,
97
- "MeasureLayer": self._edb.cell.layer_type.MeasureLayer,
98
- "AssemblyLayer": self._edb.cell.layer_type.AssemblyLayer,
99
- "SilkscreenLayer": self._edb.cell.layer_type.SilkscreenLayer,
100
- "SolderMaskLayer": self._edb.cell.layer_type.SolderMaskLayer,
101
- "SolderPasteLayer": self._edb.cell.layer_type.SolderPasteLayer,
102
- "GlueLayer": self._edb.cell.layer_type.GlueLayer,
103
- "WirebondLayer": self._edb.cell.layer_type.WirebondLayer,
104
- "UserLayer": self._edb.cell.layer_type.UserLayer,
105
- "SIwaveHFSSSolverRegions": self._edb.cell.layer_type.SIwaveHFSSSolverRegions,
106
- "PostprocessingLayer": self._edb.cell.layer_type.PostprocessingLayer,
107
- "OutlineLayer": self._edb.cell.layer_type.OutlineLayer,
108
- "LayerTypesCount": self._edb.cell.layer_type.LayerTypesCount,
109
- "UndefinedLayerType": self._edb.cell.layer_type.UndefinedLayerType,
93
+ "ConductingLayer": self._edb.Cell.LayerType.ConductingLayer,
94
+ "AirlinesLayer": self._edb.Cell.LayerType.AirlinesLayer,
95
+ "ErrorsLayer": self._edb.Cell.LayerType.ErrorsLayer,
96
+ "SymbolLayer": self._edb.Cell.LayerType.SymbolLayer,
97
+ "MeasureLayer": self._edb.Cell.LayerType.MeasureLayer,
98
+ "AssemblyLayer": self._edb.Cell.LayerType.AssemblyLayer,
99
+ "SilkscreenLayer": self._edb.Cell.LayerType.SilkscreenLayer,
100
+ "SolderMaskLayer": self._edb.Cell.LayerType.SolderMaskLayer,
101
+ "SolderPasteLayer": self._edb.Cell.LayerType.SolderPasteLayer,
102
+ "GlueLayer": self._edb.Cell.LayerType.GlueLayer,
103
+ "WirebondLayer": self._edb.Cell.LayerType.WirebondLayer,
104
+ "UserLayer": self._edb.Cell.LayerType.UserLayer,
105
+ "SIwaveHFSSSolverRegions": self._edb.Cell.LayerType.SIwaveHFSSSolverRegions,
106
+ "PostprocessingLayer": self._edb.Cell.LayerType.PostprocessingLayer,
107
+ "OutlineLayer": self._edb.Cell.LayerType.OutlineLayer,
108
+ "LayerTypesCount": self._edb.Cell.LayerType.LayerTypesCount,
109
+ "UndefinedLayerType": self._edb.Cell.LayerType.UndefinedLayerType,
110
110
  }
111
111
 
112
112
  @property
@@ -289,7 +289,7 @@ class StackupLayerEdbClass(LayerEdbClass):
289
289
  def _create(self, layer_type):
290
290
  layer_type_edb_name = self._layer_name_mapping[layer_type]
291
291
  layer_type = self._layer_type_mapping[layer_type_edb_name]
292
- self._edb_object = self._pedb.core.cell._cell.StackupLayer(
292
+ self._edb_object = self._pedb.core.Cell.StackupLayer(
293
293
  self._name,
294
294
  layer_type,
295
295
  self._pedb.edb_value(0),
@@ -800,7 +800,7 @@ class StackupLayerEdbClass(LayerEdbClass):
800
800
  "factor": self._edb_layer.GetEtchFactor().ToString(),
801
801
  "enabled": self._edb_layer.IsEtchFactorEnabled(),
802
802
  }
803
- if self._pedb.edbversion >= "2024.2":
803
+ if self._pedb.version >= "2024.2":
804
804
  etch_power_ground_nets = int(self._edb_layer.GetEtchNetClass())
805
805
  etch_power_ground_nets = False if etch_power_ground_nets else True
806
806
  data["etching"]["etch_power_ground_nets"] = etch_power_ground_nets
@@ -869,7 +869,7 @@ class StackupLayerEdbClass(LayerEdbClass):
869
869
  layer_clone = self._edb_layer
870
870
  layer_clone.SetEtchFactorEnabled(etching["enabled"])
871
871
  layer_clone.SetEtchFactor(self._pedb.stackup._edb_value(float(etching["factor"])))
872
- if self._pedb.edbversion >= "2024.2":
872
+ if self._pedb.version >= "2024.2":
873
873
  if etching["etch_power_ground_nets"]:
874
874
  layer_clone.SetEtchNetClass(self._pedb._edb.Cell.EtchNetClass.NoEtchPowerGroundNets)
875
875
  else: