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.
- pyedb/__init__.py +1 -8
- pyedb/configuration/cfg_boundaries.py +69 -151
- pyedb/configuration/cfg_components.py +201 -460
- pyedb/configuration/cfg_data.py +4 -2
- pyedb/configuration/cfg_general.py +13 -36
- pyedb/configuration/cfg_modeler.py +2 -1
- pyedb/configuration/cfg_nets.py +21 -35
- pyedb/configuration/cfg_operations.py +22 -151
- pyedb/configuration/cfg_package_definition.py +56 -112
- pyedb/configuration/cfg_padstacks.py +292 -688
- pyedb/configuration/cfg_pin_groups.py +32 -79
- pyedb/configuration/cfg_ports_sources.py +19 -6
- pyedb/configuration/cfg_s_parameter_models.py +67 -172
- pyedb/configuration/cfg_setup.py +102 -295
- pyedb/configuration/configuration.py +64 -5
- pyedb/dotnet/database/cell/connectable.py +38 -9
- pyedb/dotnet/database/cell/hierarchy/component.py +28 -28
- pyedb/dotnet/database/cell/hierarchy/model.py +1 -1
- pyedb/dotnet/database/cell/layout.py +63 -2
- pyedb/dotnet/database/cell/layout_obj.py +2 -2
- pyedb/dotnet/database/cell/primitive/path.py +6 -8
- pyedb/dotnet/database/cell/primitive/primitive.py +3 -24
- pyedb/dotnet/database/cell/terminal/edge_terminal.py +2 -2
- pyedb/dotnet/database/cell/terminal/padstack_instance_terminal.py +1 -1
- pyedb/dotnet/database/cell/terminal/pingroup_terminal.py +1 -1
- pyedb/dotnet/database/cell/terminal/point_terminal.py +1 -1
- pyedb/dotnet/database/cell/terminal/terminal.py +24 -24
- pyedb/dotnet/database/cell/voltage_regulator.py +0 -21
- pyedb/dotnet/database/components.py +96 -88
- pyedb/dotnet/database/definition/component_def.py +4 -4
- pyedb/dotnet/database/definition/component_model.py +1 -1
- pyedb/dotnet/database/definition/package_def.py +2 -3
- pyedb/dotnet/database/dotnet/database.py +3 -199
- pyedb/dotnet/database/dotnet/primitive.py +3 -3
- pyedb/dotnet/database/edb_data/control_file.py +5 -5
- pyedb/dotnet/database/edb_data/hfss_extent_info.py +6 -6
- pyedb/dotnet/database/edb_data/layer_data.py +23 -23
- pyedb/dotnet/database/edb_data/padstacks_data.py +63 -88
- pyedb/dotnet/database/edb_data/primitives_data.py +5 -5
- pyedb/dotnet/database/edb_data/sources.py +6 -6
- pyedb/dotnet/database/edb_data/variables.py +1 -1
- pyedb/dotnet/database/geometry/point_data.py +14 -10
- pyedb/dotnet/database/geometry/polygon_data.py +3 -3
- pyedb/dotnet/database/hfss.py +46 -48
- pyedb/dotnet/database/layout_validation.py +14 -11
- pyedb/dotnet/database/materials.py +10 -11
- pyedb/dotnet/database/modeler.py +97 -91
- pyedb/dotnet/database/nets.py +19 -22
- pyedb/dotnet/database/padstack.py +84 -83
- pyedb/dotnet/database/siwave.py +42 -42
- pyedb/dotnet/database/stackup.py +140 -72
- pyedb/dotnet/database/utilities/heatsink.py +4 -4
- pyedb/dotnet/database/utilities/obj_base.py +2 -2
- pyedb/dotnet/database/utilities/simulation_setup.py +2 -2
- pyedb/dotnet/database/utilities/value.py +16 -16
- pyedb/dotnet/edb.py +228 -150
- pyedb/edb_logger.py +12 -27
- pyedb/extensions/via_design_backend.py +6 -3
- pyedb/generic/design_types.py +67 -29
- pyedb/generic/general_methods.py +0 -120
- pyedb/generic/process.py +44 -108
- pyedb/generic/settings.py +75 -19
- pyedb/grpc/database/components.py +2 -0
- pyedb/grpc/database/control_file.py +5 -5
- pyedb/grpc/database/definition/materials.py +1 -1
- pyedb/grpc/database/definition/package_def.py +3 -3
- pyedb/grpc/database/definition/padstack_def.py +53 -0
- pyedb/grpc/database/geometry/polygon_data.py +1 -1
- pyedb/grpc/database/layout/layout.py +8 -5
- pyedb/grpc/database/layout_validation.py +3 -3
- pyedb/grpc/database/modeler.py +9 -4
- pyedb/grpc/database/net/net.py +15 -14
- pyedb/grpc/database/nets.py +70 -0
- pyedb/grpc/database/padstacks.py +35 -17
- pyedb/grpc/database/primitive/padstack_instance.py +175 -7
- pyedb/grpc/database/siwave.py +1 -1
- pyedb/grpc/database/source_excitations.py +2 -4
- pyedb/grpc/database/stackup.py +1 -1
- pyedb/grpc/database/terminal/bundle_terminal.py +1 -1
- pyedb/grpc/database/terminal/padstack_instance_terminal.py +1 -1
- pyedb/grpc/database/terminal/pingroup_terminal.py +1 -1
- pyedb/grpc/database/utility/xml_control_file.py +5 -5
- pyedb/grpc/edb.py +73 -27
- pyedb/grpc/edb_init.py +3 -3
- pyedb/grpc/rpc_session.py +10 -10
- pyedb/libraries/common.py +366 -0
- pyedb/libraries/rf_libraries/base_functions.py +1358 -0
- pyedb/libraries/rf_libraries/planar_antennas.py +628 -0
- pyedb/misc/decorators.py +61 -0
- pyedb/misc/misc.py +0 -13
- pyedb/siwave.py +2 -2
- {pyedb-0.54.0.dist-info → pyedb-0.55.0.dist-info}/METADATA +1 -2
- {pyedb-0.54.0.dist-info → pyedb-0.55.0.dist-info}/RECORD +95 -91
- {pyedb-0.54.0.dist-info → pyedb-0.55.0.dist-info}/WHEEL +0 -0
- {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.
|
|
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
|
|
702
|
-
"""
|
|
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.
|
|
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.
|
|
425
|
+
rep_type = self.core.Cell.primitive.RectangleRepresentationType.CenterWidthHeight
|
|
426
426
|
else:
|
|
427
|
-
rep_type = self.core.
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
107
|
+
settings.logger.info("Xml file created.")
|
|
108
108
|
return control_file
|
|
109
|
-
|
|
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.
|
|
42
|
-
"conforming": self._pedb.core.
|
|
43
|
-
"convexHull": self._pedb.core.
|
|
44
|
-
"polygon": self._pedb.core.
|
|
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.
|
|
48
|
-
"pml": self._pedb.core.
|
|
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.
|
|
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.
|
|
87
|
-
"DielectricLayer": self._edb.
|
|
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.
|
|
94
|
-
"AirlinesLayer": self._edb.
|
|
95
|
-
"ErrorsLayer": self._edb.
|
|
96
|
-
"SymbolLayer": self._edb.
|
|
97
|
-
"MeasureLayer": self._edb.
|
|
98
|
-
"AssemblyLayer": self._edb.
|
|
99
|
-
"SilkscreenLayer": self._edb.
|
|
100
|
-
"SolderMaskLayer": self._edb.
|
|
101
|
-
"SolderPasteLayer": self._edb.
|
|
102
|
-
"GlueLayer": self._edb.
|
|
103
|
-
"WirebondLayer": self._edb.
|
|
104
|
-
"UserLayer": self._edb.
|
|
105
|
-
"SIwaveHFSSSolverRegions": self._edb.
|
|
106
|
-
"PostprocessingLayer": self._edb.
|
|
107
|
-
"OutlineLayer": self._edb.
|
|
108
|
-
"LayerTypesCount": self._edb.
|
|
109
|
-
"UndefinedLayerType": self._edb.
|
|
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.
|
|
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.
|
|
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.
|
|
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:
|