pyedb 0.54.0__py3-none-any.whl → 0.56.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 (105) 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/Variables.py +26 -19
  17. pyedb/dotnet/database/cell/connectable.py +38 -9
  18. pyedb/dotnet/database/cell/hierarchy/component.py +28 -28
  19. pyedb/dotnet/database/cell/hierarchy/model.py +1 -1
  20. pyedb/dotnet/database/cell/layout.py +63 -2
  21. pyedb/dotnet/database/cell/layout_obj.py +2 -2
  22. pyedb/dotnet/database/cell/primitive/path.py +6 -8
  23. pyedb/dotnet/database/cell/primitive/primitive.py +3 -24
  24. pyedb/dotnet/database/cell/terminal/edge_terminal.py +2 -2
  25. pyedb/dotnet/database/cell/terminal/padstack_instance_terminal.py +1 -1
  26. pyedb/dotnet/database/cell/terminal/pingroup_terminal.py +1 -1
  27. pyedb/dotnet/database/cell/terminal/point_terminal.py +1 -1
  28. pyedb/dotnet/database/cell/terminal/terminal.py +24 -24
  29. pyedb/dotnet/database/cell/voltage_regulator.py +0 -21
  30. pyedb/dotnet/database/components.py +137 -124
  31. pyedb/dotnet/database/definition/component_def.py +4 -4
  32. pyedb/dotnet/database/definition/component_model.py +1 -1
  33. pyedb/dotnet/database/definition/package_def.py +2 -3
  34. pyedb/dotnet/database/dotnet/database.py +3 -199
  35. pyedb/dotnet/database/dotnet/primitive.py +3 -3
  36. pyedb/dotnet/database/edb_data/control_file.py +5 -5
  37. pyedb/dotnet/database/edb_data/hfss_extent_info.py +6 -6
  38. pyedb/dotnet/database/edb_data/layer_data.py +23 -23
  39. pyedb/dotnet/database/edb_data/padstacks_data.py +63 -88
  40. pyedb/dotnet/database/edb_data/primitives_data.py +5 -5
  41. pyedb/dotnet/database/edb_data/sources.py +6 -6
  42. pyedb/dotnet/database/edb_data/variables.py +1 -1
  43. pyedb/dotnet/database/geometry/point_data.py +14 -10
  44. pyedb/dotnet/database/geometry/polygon_data.py +3 -3
  45. pyedb/dotnet/database/hfss.py +46 -48
  46. pyedb/dotnet/database/layout_validation.py +14 -11
  47. pyedb/dotnet/database/materials.py +10 -11
  48. pyedb/dotnet/database/modeler.py +97 -91
  49. pyedb/dotnet/database/nets.py +19 -22
  50. pyedb/dotnet/database/padstack.py +171 -83
  51. pyedb/dotnet/database/siwave.py +42 -42
  52. pyedb/dotnet/database/stackup.py +140 -72
  53. pyedb/dotnet/database/utilities/heatsink.py +4 -4
  54. pyedb/dotnet/database/utilities/obj_base.py +2 -2
  55. pyedb/dotnet/database/utilities/simulation_setup.py +2 -2
  56. pyedb/dotnet/database/utilities/value.py +16 -16
  57. pyedb/dotnet/edb.py +230 -152
  58. pyedb/edb_logger.py +12 -27
  59. pyedb/extensions/create_cell_array.py +394 -0
  60. pyedb/extensions/via_design_backend.py +6 -3
  61. pyedb/generic/data_handlers.py +6 -7
  62. pyedb/generic/design_types.py +81 -30
  63. pyedb/generic/filesystem.py +5 -2
  64. pyedb/generic/general_methods.py +2 -122
  65. pyedb/generic/process.py +44 -108
  66. pyedb/generic/settings.py +79 -19
  67. pyedb/grpc/database/components.py +26 -4
  68. pyedb/grpc/database/control_file.py +5 -5
  69. pyedb/grpc/database/definition/materials.py +1 -1
  70. pyedb/grpc/database/definition/package_def.py +3 -3
  71. pyedb/grpc/database/definition/padstack_def.py +53 -0
  72. pyedb/grpc/database/geometry/polygon_data.py +1 -1
  73. pyedb/grpc/database/layout/layout.py +81 -5
  74. pyedb/grpc/database/layout_validation.py +5 -5
  75. pyedb/grpc/database/modeler.py +24 -16
  76. pyedb/grpc/database/net/net.py +15 -14
  77. pyedb/grpc/database/nets.py +70 -0
  78. pyedb/grpc/database/padstacks.py +122 -17
  79. pyedb/grpc/database/primitive/padstack_instance.py +175 -7
  80. pyedb/grpc/database/primitive/polygon.py +2 -2
  81. pyedb/grpc/database/simulation_setup/siwave_cpa_simulation_setup.py +3 -2
  82. pyedb/grpc/database/siwave.py +1 -1
  83. pyedb/grpc/database/source_excitations.py +12 -5
  84. pyedb/grpc/database/stackup.py +1 -1
  85. pyedb/grpc/database/terminal/bundle_terminal.py +1 -1
  86. pyedb/grpc/database/terminal/padstack_instance_terminal.py +1 -1
  87. pyedb/grpc/database/terminal/pingroup_terminal.py +1 -1
  88. pyedb/grpc/database/utility/value.py +1 -0
  89. pyedb/grpc/database/utility/xml_control_file.py +5 -5
  90. pyedb/grpc/edb.py +80 -30
  91. pyedb/grpc/edb_init.py +3 -3
  92. pyedb/grpc/rpc_session.py +14 -13
  93. pyedb/libraries/common.py +366 -0
  94. pyedb/libraries/rf_libraries/base_functions.py +1358 -0
  95. pyedb/libraries/rf_libraries/planar_antennas.py +628 -0
  96. pyedb/misc/decorators.py +61 -0
  97. pyedb/misc/misc.py +0 -13
  98. pyedb/modeler/geometry_operators.py +6 -6
  99. pyedb/siwave.py +6 -8
  100. pyedb/siwave_core/__init__.py +0 -0
  101. pyedb/siwave_core/cpa/__init__.py +0 -0
  102. {pyedb-0.54.0.dist-info → pyedb-0.56.0.dist-info}/METADATA +1 -2
  103. {pyedb-0.54.0.dist-info → pyedb-0.56.0.dist-info}/RECORD +105 -98
  104. {pyedb-0.54.0.dist-info → pyedb-0.56.0.dist-info}/WHEEL +0 -0
  105. {pyedb-0.54.0.dist-info → pyedb-0.56.0.dist-info}/licenses/LICENSE +0 -0
pyedb/__init__.py CHANGED
@@ -3,13 +3,6 @@ import os
3
3
  import sys
4
4
  import warnings
5
5
 
6
- # if os.name == "nt":
7
- # os.environ["PYTHONMALLOC"] = "malloc"
8
-
9
- # By default we use pyedb legacy implementation
10
- if "PYEDB_USE_DOTNET" not in os.environ:
11
- os.environ["PYEDB_USE_DOTNET"] = "0"
12
-
13
6
  LATEST_DEPRECATED_PYTHON_VERSION = (3, 7)
14
7
 
15
8
 
@@ -44,7 +37,7 @@ deprecation_warning()
44
37
  #
45
38
 
46
39
  pyedb_path = os.path.dirname(__file__)
47
- __version__ = "0.54.0"
40
+ __version__ = "0.56.0"
48
41
  version = __version__
49
42
 
50
43
  #
@@ -24,164 +24,82 @@ 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
27
+ def __init__(self, pedb, boundary_data):
28
+ self._pedb = pedb
29
+ self.boundary_data = boundary_data
31
30
 
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
- )
31
+ self.open_region = self.boundary_data.get("open_region", None)
32
+ self.open_region_type = self.boundary_data.get("map_open_region_type", None)
33
+ self.pml_visible = self.boundary_data.get("pml_visible", None)
34
+ self.pml_operation_frequency = self.boundary_data.get("pml_operation_frequency", None)
35
+ self.pml_radiation_factor = self.boundary_data.get("pml_radiation_factor", None)
36
+ self.dielectric_extent_type = self.boundary_data.get("dielectric_extent_type", None)
37
+ self.horizontal_padding = self.boundary_data.get("horizontal_padding", None)
38
+ self.honor_primitives_on_dielectric_layers = self.boundary_data.get(
39
+ "honor_primitives_on_dielectric_layers", False
40
+ )
41
+ self.air_box_extent_type = self.boundary_data.get("air_box_extent_type", None)
42
+ self.air_box_base_polygon = self.boundary_data.get("air_box_base_polygon", None)
43
+ self.air_box_truncate_model_ground_layers = self.boundary_data.get("air_box_truncate_model_ground_layers", None)
44
+ self.air_box_horizontal_padding = self.boundary_data.get("air_box_horizontal_padding", None)
45
+ self.air_box_positive_vertical_padding = self.boundary_data.get("air_box_positive_vertical_padding", None)
46
+ self.air_box_negative_vertical_padding = self.boundary_data.get("air_box_negative_vertical_padding", None)
57
47
 
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.air_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
- )
48
+ def get_parameters_from_edb(self):
49
+ self.open_region = self._pedb.hfss.hfss_extent_info.use_open_region
50
+ self.open_region_type = self._pedb.hfss.hfss_extent_info.open_region_type
51
+ self.pml_visible = self._pedb.hfss.hfss_extent_info.is_pml_visible
52
+ self.pml_operation_frequency = self._pedb.hfss.hfss_extent_info.operating_freq.tostring
53
+ self.pml_radiation_factor = self._pedb.hfss.hfss_extent_info.radiation_level.tostring
54
+ self.dielectric_extent_type = self._pedb.hfss.hfss_extent_info.extent_type
55
+ self.horizontal_padding = self._pedb.hfss.hfss_extent_info.dielectric_extent_size
56
+ self.honor_primitives_on_dielectric_layers = self._pedb.hfss.hfss_extent_info.honor_user_dielectric
57
+ self.air_box_extent_type = self._pedb.hfss.hfss_extent_info.extent_type
58
+ self.air_box_truncate_model_ground_layers = self._pedb.hfss.hfss_extent_info.truncate_air_box_at_ground
59
+ self.air_box_horizontal_padding = self._pedb.hfss.hfss_extent_info.air_box_horizontal_extent
60
+ self.air_box_positive_vertical_padding = self._pedb.hfss.hfss_extent_info.air_box_positive_vertical_extent
61
+ self.air_box_negative_vertical_padding = self._pedb.hfss.hfss_extent_info.air_box_negative_vertical_extent
62
+ return self.get_attributes(exclude="boundary_data")
89
63
 
90
- def get_parameters_from_edb(self):
91
- self.parent.open_region = self._pedb.hfss.hfss_extent_info.use_open_region
92
- self.parent.open_region_type = self._pedb.hfss.hfss_extent_info.open_region_type
93
- self.parent.pml_visible = self._pedb.hfss.hfss_extent_info.is_pml_visible
94
- self.parent.pml_operation_frequency = self._pedb.hfss.hfss_extent_info.operating_freq
95
- self.parent.pml_radiation_factor = self._pedb.hfss.hfss_extent_info.pml_radiation_factor
96
- self.parent.dielectric_extent_type = self._pedb.hfss.hfss_extent_info.extent_type
97
- self.parent.horizontal_padding = self._pedb.hfss.hfss_extent_info.dielectric_extent_size
98
- self.parent.honor_primitives_on_dielectric_layers = self._pedb.hfss.hfss_extent_info.honor_user_dielectric
99
- self.parent.air_box_extent_type = self._pedb.hfss.hfss_extent_info.extent_type
100
- self.parent.air_box_truncate_model_ground_layers = (
101
- self._pedb.hfss.hfss_extent_info.truncate_air_box_at_ground
102
- )
103
- self.parent.air_box_horizontal_padding = self._pedb.hfss.hfss_extent_info.air_box_horizontal_extent
104
- self.parent.air_box_positive_vertical_padding = (
105
- self._pedb.hfss.hfss_extent_info.air_box_positive_vertical_extent
106
- )
107
- self.parent.air_box_negative_vertical_padding = (
108
- self._pedb.hfss.hfss_extent_info.air_box_negative_vertical_extent
109
- )
110
- return self.parent.get_attributes(exclude="boundary_data")
111
-
112
- class DotNet(Grpc):
113
- def __init__(self, parent):
114
- super().__init__(parent)
115
-
116
- def get_parameters_from_edb(self):
117
- self.parent.open_region = self._pedb.hfss.hfss_extent_info.use_open_region
118
- self.parent.open_region_type = self._pedb.hfss.hfss_extent_info.open_region_type
119
- self.parent.pml_visible = self._pedb.hfss.hfss_extent_info.is_pml_visible
120
- self.parent.pml_operation_frequency = self._pedb.hfss.hfss_extent_info.operating_freq.tostring
121
- self.parent.pml_radiation_factor = self._pedb.hfss.hfss_extent_info.radiation_level.tostring
122
- self.parent.dielectric_extent_type = self._pedb.hfss.hfss_extent_info.extent_type
123
- self.parent.horizontal_padding = self._pedb.hfss.hfss_extent_info.dielectric_extent_size
124
- self.parent.honor_primitives_on_dielectric_layers = self._pedb.hfss.hfss_extent_info.honor_user_dielectric
125
- self.parent.air_box_extent_type = self._pedb.hfss.hfss_extent_info.extent_type
126
- self.parent.air_box_truncate_model_ground_layers = (
127
- self._pedb.hfss.hfss_extent_info.truncate_air_box_at_ground
128
- )
129
- self.parent.air_box_horizontal_padding = self._pedb.hfss.hfss_extent_info.air_box_horizontal_extent
130
- self.parent.air_box_positive_vertical_padding = (
131
- self._pedb.hfss.hfss_extent_info.air_box_positive_vertical_extent
64
+ def set_parameters_to_edb(self):
65
+ """Imports boundary information from JSON."""
66
+ if self.open_region is not None:
67
+ self._pedb.hfss.hfss_extent_info.use_open_region = self.open_region
68
+ if self.open_region_type:
69
+ self._pedb.hfss.hfss_extent_info.open_region_type = self.open_region_type.lower()
70
+ if self.pml_visible is not None:
71
+ self._pedb.hfss.hfss_extent_info.is_pml_visible = self.pml_visible
72
+ if self.pml_operation_frequency:
73
+ self._pedb.hfss.hfss_extent_info.operating_freq = self.pml_operation_frequency
74
+ if self.pml_radiation_factor:
75
+ if self._pedb.grpc:
76
+ self._pedb.hfss.hfss_extent_info.pml_radiation_factor = self.pml_radiation_factor
77
+ else:
78
+ self._pedb.hfss.hfss_extent_info.radiation_level = self.pml_radiation_factor
79
+ if self.dielectric_extent_type:
80
+ self._pedb.hfss.hfss_extent_info.extent_type = self.dielectric_extent_type.lower()
81
+ if self.horizontal_padding:
82
+ self._pedb.hfss.hfss_extent_info.dielectric_extent_size = float(self.horizontal_padding)
83
+ if self.honor_primitives_on_dielectric_layers is not None:
84
+ self._pedb.hfss.hfss_extent_info.honor_user_dielectric = self.honor_primitives_on_dielectric_layers
85
+ if self.air_box_extent_type:
86
+ self._pedb.hfss.hfss_extent_info.extent_type = self.air_box_extent_type.lower()
87
+ if self.air_box_truncate_model_ground_layers is not None:
88
+ self._pedb.hfss.hfss_extent_info.truncate_air_box_at_ground = self.air_box_truncate_model_ground_layers
89
+ if self.air_box_horizontal_padding:
90
+ self._pedb.hfss.hfss_extent_info.air_box_horizontal_extent = float(self.air_box_horizontal_padding)
91
+ if self.air_box_positive_vertical_padding:
92
+ self._pedb.hfss.hfss_extent_info.air_box_positive_vertical_extent = float(
93
+ self.air_box_positive_vertical_padding
132
94
  )
133
- self.parent.air_box_negative_vertical_padding = (
134
- self._pedb.hfss.hfss_extent_info.air_box_negative_vertical_extent
95
+ if self.air_box_negative_vertical_padding:
96
+ self._pedb.hfss.hfss_extent_info.air_box_negative_vertical_extent = float(
97
+ self.air_box_negative_vertical_padding
135
98
  )
136
- return self.parent.get_attributes(exclude="boundary_data")
137
-
138
- def set_parameters_to_edb(self):
139
- """Imports boundary information from JSON."""
140
- if self.open_region is not None:
141
- self._pedb.hfss.hfss_extent_info.use_open_region = self.open_region
142
- if self.open_region_type:
143
- self._pedb.hfss.hfss_extent_info.open_region_type = self.open_region_type.lower()
144
- if self.pml_visible is not None:
145
- self._pedb.hfss.hfss_extent_info.is_pml_visible = self.pml_visible
146
- if self.pml_operation_frequency:
147
- self._pedb.hfss.hfss_extent_info.operating_freq = self.pml_operation_frequency
148
- if self.pml_radiation_factor:
149
- if self._pedb.grpc:
150
- self._pedb.hfss.hfss_extent_info.pml_radiation_factor = self.pml_radiation_factor
151
- else:
152
- self._pedb.hfss.hfss_extent_info.radiation_level = self.pml_radiation_factor
153
- if self.dielectric_extent_type:
154
- self._pedb.hfss.hfss_extent_info.extent_type = self.dielectric_extent_type.lower()
155
- if self.horizontal_padding:
156
- self._pedb.hfss.hfss_extent_info.dielectric_extent_size = float(self.horizontal_padding)
157
- if self.honor_primitives_on_dielectric_layers is not None:
158
- self._pedb.hfss.hfss_extent_info.honor_user_dielectric = self.honor_primitives_on_dielectric_layers
159
- if self.air_box_extent_type:
160
- self._pedb.hfss.hfss_extent_info.extent_type = self.air_box_extent_type.lower()
161
- if self.air_box_truncate_model_ground_layers is not None:
162
- self._pedb.hfss.hfss_extent_info.truncate_air_box_at_ground = self.air_box_truncate_model_ground_layers
163
- if self.air_box_horizontal_padding:
164
- self._pedb.hfss.hfss_extent_info.air_box_horizontal_extent = float(self.air_box_horizontal_padding)
165
- if self.air_box_positive_vertical_padding:
166
- self._pedb.hfss.hfss_extent_info.air_box_positive_vertical_extent = float(
167
- self.air_box_positive_vertical_padding
168
- )
169
- if self.air_box_negative_vertical_padding:
170
- self._pedb.hfss.hfss_extent_info.air_box_negative_vertical_extent = float(
171
- self.air_box_negative_vertical_padding
172
- )
173
-
174
- def __init__(self, pedb, boundary_data):
175
- self.pedb = pedb
176
- self.boundary_data = boundary_data
177
- if self.pedb.grpc:
178
- self.api = self.Grpc(self)
179
- else:
180
- self.api = self.DotNet(self)
181
99
 
182
100
  def apply(self):
183
101
  """Imports boundary information from JSON."""
184
- self.api.set_parameters_to_edb()
102
+ self.set_parameters_to_edb()
185
103
 
186
104
  def get_data_from_db(self):
187
- return self.api.get_parameters_from_edb()
105
+ return self.get_parameters_from_edb()