pyedb 0.41.0__py3-none-any.whl → 0.43.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 (31) hide show
  1. pyedb/__init__.py +1 -1
  2. pyedb/configuration/cfg_boundaries.py +149 -63
  3. pyedb/configuration/cfg_components.py +333 -97
  4. pyedb/configuration/cfg_general.py +30 -12
  5. pyedb/configuration/cfg_modeler.py +161 -67
  6. pyedb/configuration/cfg_nets.py +33 -17
  7. pyedb/configuration/cfg_operations.py +63 -31
  8. pyedb/configuration/cfg_package_definition.py +72 -51
  9. pyedb/configuration/cfg_pin_groups.py +78 -26
  10. pyedb/configuration/cfg_s_parameter_models.py +95 -70
  11. pyedb/configuration/cfg_setup.py +230 -185
  12. pyedb/configuration/cfg_stackup.py +122 -90
  13. pyedb/configuration/configuration.py +342 -194
  14. pyedb/dotnet/database/cell/terminal/padstack_instance_terminal.py +5 -0
  15. pyedb/dotnet/database/cell/terminal/point_terminal.py +12 -0
  16. pyedb/dotnet/database/cell/terminal/terminal.py +0 -14
  17. pyedb/dotnet/database/dotnet/database.py +2 -0
  18. pyedb/dotnet/database/edb_data/padstacks_data.py +7 -2
  19. pyedb/dotnet/database/sim_setup_data/data/sweep_data.py +63 -10
  20. pyedb/dotnet/database/siwave.py +4 -1
  21. pyedb/dotnet/database/utilities/simulation_setup.py +15 -16
  22. pyedb/dotnet/edb.py +77 -110
  23. pyedb/grpc/database/components.py +1 -2
  24. pyedb/grpc/database/hierarchy/component.py +9 -1
  25. pyedb/grpc/database/hierarchy/s_parameter_model.py +2 -2
  26. pyedb/grpc/database/hierarchy/spice_model.py +4 -0
  27. pyedb/grpc/database/utility/hfss_extent_info.py +31 -20
  28. {pyedb-0.41.0.dist-info → pyedb-0.43.0.dist-info}/METADATA +1 -1
  29. {pyedb-0.41.0.dist-info → pyedb-0.43.0.dist-info}/RECORD +31 -31
  30. {pyedb-0.41.0.dist-info → pyedb-0.43.0.dist-info}/LICENSE +0 -0
  31. {pyedb-0.41.0.dist-info → pyedb-0.43.0.dist-info}/WHEEL +0 -0
pyedb/__init__.py CHANGED
@@ -44,7 +44,7 @@ deprecation_warning()
44
44
  #
45
45
 
46
46
  pyedb_path = os.path.dirname(__file__)
47
- __version__ = "0.41.0"
47
+ __version__ = "0.43.0"
48
48
  version = __version__
49
49
 
50
50
  #
@@ -24,72 +24,158 @@ from pyedb.configuration.cfg_common import CfgBase
24
24
 
25
25
 
26
26
  class CfgBoundaries(CfgBase):
27
+ class Grpc:
28
+ @property
29
+ def pyedb_obj(self):
30
+ return self.parent.pyedb_obj
31
+
32
+ def __init__(self, parent):
33
+ self.parent = parent
34
+ self._pedb = parent.pedb
35
+ self.open_region = self.parent.boundary_data.get("open_region", None)
36
+ self.open_region_type = self.parent.boundary_data.get("map_open_region_type", None)
37
+ self.pml_visible = self.parent.boundary_data.get("pml_visible", None)
38
+ self.pml_operation_frequency = self.parent.boundary_data.get("pml_operation_frequency", None)
39
+ self.pml_radiation_factor = self.parent.boundary_data.get("pml_radiation_factor", None)
40
+ self.dielectric_extent_type = self.parent.boundary_data.get("dielectric_extent_type", None)
41
+ self.horizontal_padding = self.parent.boundary_data.get("horizontal_padding", None)
42
+ self.honor_primitives_on_dielectric_layers = self.parent.boundary_data.get(
43
+ "honor_primitives_on_dielectric_layers", False
44
+ )
45
+ self.air_box_extent_type = self.parent.boundary_data.get("air_box_extent_type", None)
46
+ self.air_box_base_polygon = self.parent.boundary_data.get("air_box_base_polygon", None)
47
+ self.air_box_truncate_model_ground_layers = self.parent.boundary_data.get(
48
+ "air_box_truncate_model_ground_layers", None
49
+ )
50
+ self.air_box_horizontal_padding = self.parent.boundary_data.get("air_box_horizontal_padding", None)
51
+ self.air_box_positive_vertical_padding = self.parent.boundary_data.get(
52
+ "air_box_positive_vertical_padding", None
53
+ )
54
+ self.air_box_negative_vertical_padding = self.parent.boundary_data.get(
55
+ "air_box_negative_vertical_padding", None
56
+ )
57
+
58
+ def set_parameters_to_edb(self):
59
+ if self.open_region is not None:
60
+ self._pedb.hfss.hfss_extent_info.use_open_region = self.open_region
61
+ if self.open_region_type:
62
+ self._pedb.hfss.hfss_extent_info.open_region_type = self.open_region_type.lower()
63
+ if self.pml_visible is not None:
64
+ self._pedb.hfss.hfss_extent_info.is_pml_visible = self.pml_visible
65
+ if self.pml_operation_frequency:
66
+ self._pedb.hfss.hfss_extent_info.operating_freq = self.pml_operation_frequency
67
+ if self.pml_radiation_factor:
68
+ self._pedb.hfss.hfss_extent_info.pml_radiation_factor = self.pml_radiation_factor
69
+ if self.dielectric_extent_type:
70
+ self._pedb.hfss.hfss_extent_info.extent_type = self.dielectric_extent_type.lower()
71
+ if self.horizontal_padding:
72
+ self._pedb.hfss.hfss_extent_info.dielectric_extent_size = float(self.horizontal_padding)
73
+ if self.honor_primitives_on_dielectric_layers is not None:
74
+ self._pedb.hfss.hfss_extent_info.honor_user_dielectric = self.honor_primitives_on_dielectric_layers
75
+ if self.air_box_extent_type:
76
+ self._pedb.hfss.hfss_extent_info.extent_type = self.air_box_extent_type.lower()
77
+ if self.air_box_truncate_model_ground_layers is not None:
78
+ self._pedb.hfss.hfss_extent_info.truncate_air_box_at_ground = self.air_box_truncate_model_ground_layers
79
+ if self.air_box_horizontal_padding:
80
+ self._pedb.hfss.hfss_extent_info.air_box_horizontal_extent = float(self.air_box_horizontal_padding)
81
+ if self.air_box_positive_vertical_padding:
82
+ self._pedb.hfss.hfss_extent_info.parentair_box_positive_vertical_extent = float(
83
+ self.air_box_positive_vertical_padding
84
+ )
85
+ if self.air_box_negative_vertical_padding:
86
+ self._pedb.hfss.hfss_extent_info.air_box_negative_vertical_extent = float(
87
+ self.air_box_negative_vertical_padding
88
+ )
89
+
90
+ def get_parameters_from_edb(self):
91
+ self.open_region = self._pedb.hfss.hfss_extent_info.use_open_region
92
+ self.open_region_type = self._pedb.hfss.hfss_extent_info.open_region_type
93
+ self.pml_visible = self._pedb.hfss.hfss_extent_info.is_pml_visible
94
+ self.pml_operation_frequency = self._pedb.hfss.hfss_extent_info.operating_freq
95
+ self.pml_radiation_factor = self._pedb.hfss.hfss_extent_info.pml_radiation_factor
96
+ self.dielectric_extent_type = self._pedb.hfss.hfss_extent_info.extent_type
97
+ self.horizontal_padding = self._pedb.hfss.hfss_extent_info.dielectric_extent_size
98
+ self.honor_primitives_on_dielectric_layers = self._pedb.hfss.hfss_extent_info.honor_user_dielectric
99
+ self.air_box_extent_type = self._pedb.hfss.hfss_extent_info.extent_type
100
+ self.air_box_truncate_model_ground_layers = self._pedb.hfss.hfss_extent_info.truncate_air_box_at_ground
101
+ self.air_box_horizontal_padding = self._pedb.hfss.hfss_extent_info.air_box_horizontal_extent
102
+ self.air_box_positive_vertical_padding = self._pedb.hfss.hfss_extent_info.air_box_positive_vertical_extent
103
+ self.air_box_negative_vertical_padding = self._pedb.hfss.hfss_extent_info.air_box_negative_vertical_extent
104
+ return self.parent.get_attributes()
105
+
106
+ class DotNet(Grpc):
107
+ def __init__(self, parent):
108
+ super().__init__(parent)
109
+
110
+ def get_parameters_from_edb(self):
111
+ self.parent.open_region = self._pedb.hfss.hfss_extent_info.use_open_region
112
+ self.parent.open_region_type = self._pedb.hfss.hfss_extent_info.open_region_type
113
+ self.parent.pml_visible = self._pedb.hfss.hfss_extent_info.is_pml_visible
114
+ self.parent.pml_operation_frequency = self._pedb.hfss.hfss_extent_info.operating_freq.tostring
115
+ self.parent.pml_radiation_factor = self._pedb.hfss.hfss_extent_info.radiation_level.tostring
116
+ self.parent.dielectric_extent_type = self._pedb.hfss.hfss_extent_info.extent_type
117
+ self.parent.horizontal_padding = self._pedb.hfss.hfss_extent_info.dielectric_extent_size
118
+ self.parent.honor_primitives_on_dielectric_layers = self._pedb.hfss.hfss_extent_info.honor_user_dielectric
119
+ self.parent.air_box_extent_type = self._pedb.hfss.hfss_extent_info.extent_type
120
+ self.parent.air_box_truncate_model_ground_layers = (
121
+ self._pedb.hfss.hfss_extent_info.truncate_air_box_at_ground
122
+ )
123
+ self.parent.air_box_horizontal_padding = self._pedb.hfss.hfss_extent_info.air_box_horizontal_extent
124
+ self.parent.air_box_positive_vertical_padding = (
125
+ self._pedb.hfss.hfss_extent_info.air_box_positive_vertical_extent
126
+ )
127
+ self.parent.air_box_negative_vertical_padding = (
128
+ self._pedb.hfss.hfss_extent_info.air_box_negative_vertical_extent
129
+ )
130
+ return self.parent.get_attributes(exclude="boundary_data")
131
+
132
+ def set_parameters_to_edb(self):
133
+ """Imports boundary information from JSON."""
134
+ if self.open_region is not None:
135
+ self._pedb.hfss.hfss_extent_info.use_open_region = self.open_region
136
+ if self.open_region_type:
137
+ self._pedb.hfss.hfss_extent_info.open_region_type = self.open_region_type.lower()
138
+ if self.pml_visible is not None:
139
+ self._pedb.hfss.hfss_extent_info.is_pml_visible = self.pml_visible
140
+ if self.pml_operation_frequency:
141
+ self._pedb.hfss.hfss_extent_info.operating_freq = self.pml_operation_frequency
142
+ if self.pml_radiation_factor:
143
+ if self._pedb.grpc:
144
+ self._pedb.hfss.hfss_extent_info.pml_radiation_factor = self.pml_radiation_factor
145
+ else:
146
+ self._pedb.hfss.hfss_extent_info.radiation_level = self.pml_radiation_factor
147
+ if self.dielectric_extent_type:
148
+ self._pedb.hfss.hfss_extent_info.extent_type = self.dielectric_extent_type.lower()
149
+ if self.horizontal_padding:
150
+ self._pedb.hfss.hfss_extent_info.dielectric_extent_size = float(self.horizontal_padding)
151
+ if self.honor_primitives_on_dielectric_layers is not None:
152
+ self._pedb.hfss.hfss_extent_info.honor_user_dielectric = self.honor_primitives_on_dielectric_layers
153
+ if self.air_box_extent_type:
154
+ self._pedb.hfss.hfss_extent_info.extent_type = self.air_box_extent_type.lower()
155
+ if self.air_box_truncate_model_ground_layers is not None:
156
+ self._pedb.hfss.hfss_extent_info.truncate_air_box_at_ground = self.air_box_truncate_model_ground_layers
157
+ if self.air_box_horizontal_padding:
158
+ self._pedb.hfss.hfss_extent_info.air_box_horizontal_extent = float(self.air_box_horizontal_padding)
159
+ if self.air_box_positive_vertical_padding:
160
+ self._pedb.hfss.hfss_extent_info.air_box_positive_vertical_extent = float(
161
+ self.air_box_positive_vertical_padding
162
+ )
163
+ if self.air_box_negative_vertical_padding:
164
+ self._pedb.hfss.hfss_extent_info.air_box_negative_vertical_extent = float(
165
+ self.air_box_negative_vertical_padding
166
+ )
167
+
27
168
  def __init__(self, pedb, boundary_data):
28
- self._pedb = pedb
29
- self.open_region = boundary_data.get("open_region", None)
30
- self.open_region_type = boundary_data.get("map_open_region_type", None)
31
- self.pml_visible = boundary_data.get("pml_visible", None)
32
- self.pml_operation_frequency = boundary_data.get("pml_operation_frequency", None)
33
- self.pml_radiation_factor = boundary_data.get("pml_radiation_factor", None)
34
- self.dielectric_extent_type = boundary_data.get("dielectric_extent_type", None)
35
- # self.dielectric_base_polygon = self.**kwargs.get("dielectric_base_polygon", None)
36
- self.horizontal_padding = boundary_data.get("horizontal_padding", None)
37
- self.honor_primitives_on_dielectric_layers = boundary_data.get("honor_primitives_on_dielectric_layers", False)
38
- self.air_box_extent_type = boundary_data.get("air_box_extent_type", None)
39
- self.air_box_base_polygon = boundary_data.get("air_box_base_polygon", None)
40
- self.air_box_truncate_model_ground_layers = boundary_data.get("air_box_truncate_model_ground_layers", None)
41
- self.air_box_horizontal_padding = boundary_data.get("air_box_horizontal_padding", None)
42
- self.air_box_positive_vertical_padding = boundary_data.get("air_box_positive_vertical_padding", None)
43
- self.air_box_negative_vertical_padding = boundary_data.get("air_box_negative_vertical_padding", None)
169
+ self.pedb = pedb
170
+ self.boundary_data = boundary_data
171
+ if self.pedb.grpc:
172
+ self.api = self.Grpc(self)
173
+ else:
174
+ self.api = self.DotNet(self)
44
175
 
45
176
  def apply(self):
46
177
  """Imports boundary information from JSON."""
47
- if self.open_region is not None:
48
- self._pedb.hfss.hfss_extent_info.use_open_region = self.open_region
49
- if self.open_region_type:
50
- self._pedb.hfss.hfss_extent_info.open_region_type = self.open_region_type.lower()
51
- if self.pml_visible is not None:
52
- self._pedb.hfss.hfss_extent_info.is_pml_visible = self.pml_visible
53
- if self.pml_operation_frequency:
54
- self._pedb.hfss.hfss_extent_info.operating_freq = self.pml_operation_frequency
55
- if self.pml_radiation_factor:
56
- self._pedb.hfss.hfss_extent_info.radiation_level = self.pml_radiation_factor
57
- if self.dielectric_extent_type:
58
- self._pedb.hfss.hfss_extent_info.extent_type = self.dielectric_extent_type.lower()
59
- # if self.dielectric_base_polygon:
60
- # self._pedb.hfss.hfss_extent_info.dielectric_base_polygon = self.dielectric_base_polygon
61
- if self.horizontal_padding:
62
- self._pedb.hfss.hfss_extent_info.dielectric_extent_size = float(self.horizontal_padding)
63
- if self.honor_primitives_on_dielectric_layers is not None:
64
- self._pedb.hfss.hfss_extent_info.honor_user_dielectric = self.honor_primitives_on_dielectric_layers
65
- if self.air_box_extent_type:
66
- self._pedb.hfss.hfss_extent_info.extent_type = self.air_box_extent_type.lower()
67
- if self.air_box_truncate_model_ground_layers is not None:
68
- self._pedb.hfss.hfss_extent_info.truncate_air_box_at_ground = self.air_box_truncate_model_ground_layers
69
- if self.air_box_horizontal_padding:
70
- self._pedb.hfss.hfss_extent_info.air_box_horizontal_extent = float(self.air_box_horizontal_padding)
71
- if self.air_box_positive_vertical_padding:
72
- self._pedb.hfss.hfss_extent_info.air_box_positive_vertical_extent = float(
73
- self.air_box_positive_vertical_padding
74
- )
75
- if self.air_box_negative_vertical_padding:
76
- self._pedb.hfss.hfss_extent_info.air_box_negative_vertical_extent = float(
77
- self.air_box_negative_vertical_padding
78
- )
178
+ self.api.set_parameters_to_edb()
79
179
 
80
180
  def get_data_from_db(self):
81
- self.open_region = self._pedb.hfss.hfss_extent_info.use_open_region
82
- self.open_region_type = self._pedb.hfss.hfss_extent_info.open_region_type
83
- self.pml_visible = self._pedb.hfss.hfss_extent_info.is_pml_visible
84
- self.pml_operation_frequency = self._pedb.hfss.hfss_extent_info.operating_freq.tostring
85
- self.pml_radiation_factor = self._pedb.hfss.hfss_extent_info.radiation_level.tostring
86
- self.dielectric_extent_type = self._pedb.hfss.hfss_extent_info.extent_type
87
- # self.dielectric_base_polygon = self._pedb.hfss.hfss_extent_info.dielectric_base_polygon
88
- self.horizontal_padding = self._pedb.hfss.hfss_extent_info.dielectric_extent_size
89
- self.honor_primitives_on_dielectric_layers = self._pedb.hfss.hfss_extent_info.honor_user_dielectric
90
- self.air_box_extent_type = self._pedb.hfss.hfss_extent_info.extent_type
91
- self.air_box_truncate_model_ground_layers = self._pedb.hfss.hfss_extent_info.truncate_air_box_at_ground
92
- self.air_box_horizontal_padding = self._pedb.hfss.hfss_extent_info.air_box_horizontal_extent
93
- self.air_box_positive_vertical_padding = self._pedb.hfss.hfss_extent_info.air_box_positive_vertical_extent
94
- self.air_box_negative_vertical_padding = self._pedb.hfss.hfss_extent_info.air_box_negative_vertical_extent
95
- return self.get_attributes()
181
+ return self.api.get_parameters_from_edb()