pyedb 0.38.0__py3-none-any.whl → 0.39.1__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 (205) hide show
  1. pyedb/__init__.py +1 -1
  2. pyedb/common/nets.py +53 -139
  3. pyedb/configuration/cfg_components.py +1 -1
  4. pyedb/configuration/cfg_general.py +4 -2
  5. pyedb/configuration/cfg_modeler.py +1 -1
  6. pyedb/configuration/cfg_package_definition.py +1 -1
  7. pyedb/configuration/cfg_padstacks.py +1 -1
  8. pyedb/configuration/cfg_ports_sources.py +56 -23
  9. pyedb/configuration/configuration.py +18 -1
  10. pyedb/dotnet/{application → database}/Variables.py +21 -21
  11. pyedb/dotnet/{edb_core → database}/cell/connectable.py +5 -5
  12. pyedb/dotnet/{edb_core → database}/cell/hierarchy/component.py +11 -11
  13. pyedb/dotnet/{edb_core → database}/cell/hierarchy/hierarchy_obj.py +1 -1
  14. pyedb/dotnet/{edb_core → database}/cell/hierarchy/model.py +1 -1
  15. pyedb/dotnet/{edb_core → database}/cell/layout.py +17 -17
  16. pyedb/dotnet/{edb_core → database}/cell/layout_obj.py +3 -3
  17. pyedb/dotnet/{edb_core → database}/cell/primitive/bondwire.py +1 -1
  18. pyedb/dotnet/{edb_core → database}/cell/primitive/path.py +4 -4
  19. pyedb/dotnet/{edb_core → database}/cell/primitive/primitive.py +14 -14
  20. pyedb/dotnet/{edb_core → database}/cell/terminal/bundle_terminal.py +2 -2
  21. pyedb/dotnet/{edb_core → database}/cell/terminal/edge_terminal.py +4 -4
  22. pyedb/dotnet/{edb_core → database}/cell/terminal/padstack_instance_terminal.py +2 -2
  23. pyedb/dotnet/{edb_core → database}/cell/terminal/pingroup_terminal.py +2 -2
  24. pyedb/dotnet/{edb_core → database}/cell/terminal/point_terminal.py +2 -2
  25. pyedb/dotnet/{edb_core → database}/cell/terminal/terminal.py +11 -11
  26. pyedb/dotnet/{edb_core → database}/cell/voltage_regulator.py +2 -2
  27. pyedb/dotnet/{edb_core → database}/components.py +101 -124
  28. pyedb/dotnet/{edb_core → database}/definition/component_def.py +5 -5
  29. pyedb/dotnet/{edb_core → database}/definition/component_model.py +1 -1
  30. pyedb/dotnet/{edb_core → database}/definition/definition_obj.py +1 -1
  31. pyedb/dotnet/{edb_core → database}/definition/definitions.py +2 -2
  32. pyedb/dotnet/{edb_core → database}/definition/package_def.py +4 -4
  33. pyedb/dotnet/{edb_core → database}/dotnet/database.py +8 -8
  34. pyedb/dotnet/{edb_core → database}/dotnet/primitive.py +9 -9
  35. pyedb/dotnet/{edb_core → database}/edb_data/control_file.py +12 -12
  36. pyedb/dotnet/{edb_core → database}/edb_data/hfss_extent_info.py +7 -7
  37. pyedb/dotnet/{edb_core → database}/edb_data/nets_data.py +10 -13
  38. pyedb/dotnet/{edb_core → database}/edb_data/padstacks_data.py +16 -16
  39. pyedb/dotnet/{edb_core → database}/edb_data/ports.py +4 -4
  40. pyedb/dotnet/{edb_core → database}/edb_data/primitives_data.py +5 -5
  41. pyedb/dotnet/{edb_core → database}/edb_data/raptor_x_simulation_setup_data.py +4 -4
  42. pyedb/dotnet/{edb_core → database}/edb_data/simulation_configuration.py +10 -10
  43. pyedb/dotnet/{edb_core → database}/edb_data/sources.py +4 -4
  44. pyedb/dotnet/{edb_core → database}/edb_data/variables.py +1 -1
  45. pyedb/dotnet/{edb_core → database}/geometry/polygon_data.py +4 -4
  46. pyedb/dotnet/{edb_core → database}/hfss.py +8 -8
  47. pyedb/dotnet/{edb_core → database}/layout_obj_instance.py +1 -1
  48. pyedb/dotnet/{edb_core → database}/layout_validation.py +2 -2
  49. pyedb/dotnet/{edb_core → database}/materials.py +23 -8
  50. pyedb/dotnet/{edb_core → database}/modeler.py +27 -27
  51. pyedb/dotnet/{edb_core → database}/net_class.py +8 -8
  52. pyedb/dotnet/{edb_core → database}/nets.py +12 -12
  53. pyedb/dotnet/{edb_core → database}/padstack.py +15 -15
  54. pyedb/dotnet/{edb_core → database}/sim_setup_data/data/mesh_operation.py +1 -1
  55. pyedb/dotnet/{edb_core → database}/sim_setup_data/data/settings.py +3 -3
  56. pyedb/dotnet/{edb_core → database}/sim_setup_data/data/sim_setup_info.py +2 -2
  57. pyedb/dotnet/{edb_core → database}/sim_setup_data/data/simulation_settings.py +1 -1
  58. pyedb/dotnet/{edb_core → database}/sim_setup_data/data/siw_dc_ir_settings.py +1 -1
  59. pyedb/dotnet/{edb_core → database}/sim_setup_data/data/sweep_data.py +1 -1
  60. pyedb/dotnet/{edb_core → database}/siwave.py +10 -10
  61. pyedb/dotnet/{edb_core → database}/stackup.py +12 -12
  62. pyedb/dotnet/{edb_core → database}/utilities/hfss_simulation_setup.py +15 -15
  63. pyedb/dotnet/{edb_core → database}/utilities/obj_base.py +1 -1
  64. pyedb/dotnet/{edb_core → database}/utilities/simulation_setup.py +3 -3
  65. pyedb/dotnet/{edb_core → database}/utilities/siwave_simulation_setup.py +6 -6
  66. pyedb/dotnet/edb.py +117 -112
  67. pyedb/generic/design_types.py +26 -19
  68. pyedb/generic/general_methods.py +1 -1
  69. pyedb/generic/plot.py +0 -2
  70. pyedb/grpc/database/__init__.py +1 -0
  71. pyedb/grpc/database/components.py +2354 -0
  72. pyedb/grpc/database/control_file.py +1277 -0
  73. pyedb/grpc/database/definition/component_def.py +218 -0
  74. pyedb/grpc/database/definition/component_model.py +39 -0
  75. pyedb/grpc/database/definition/component_pin.py +32 -0
  76. pyedb/grpc/database/definition/materials.py +1207 -0
  77. pyedb/grpc/database/definition/n_port_component_model.py +34 -0
  78. pyedb/grpc/database/definition/package_def.py +227 -0
  79. pyedb/grpc/database/definition/padstack_def.py +842 -0
  80. pyedb/grpc/database/definitions.py +70 -0
  81. pyedb/grpc/database/general.py +43 -0
  82. pyedb/grpc/database/geometry/__init__.py +0 -0
  83. pyedb/grpc/database/geometry/arc_data.py +93 -0
  84. pyedb/grpc/database/geometry/point_3d_data.py +79 -0
  85. pyedb/grpc/database/geometry/point_data.py +30 -0
  86. pyedb/grpc/database/geometry/polygon_data.py +133 -0
  87. pyedb/grpc/database/hfss.py +1279 -0
  88. pyedb/grpc/database/hierarchy/__init__.py +0 -0
  89. pyedb/grpc/database/hierarchy/component.py +1301 -0
  90. pyedb/grpc/database/hierarchy/model.py +31 -0
  91. pyedb/grpc/database/hierarchy/netlist_model.py +30 -0
  92. pyedb/grpc/database/hierarchy/pin_pair_model.py +128 -0
  93. pyedb/grpc/database/hierarchy/pingroup.py +245 -0
  94. pyedb/grpc/database/hierarchy/s_parameter_model.py +33 -0
  95. pyedb/grpc/database/hierarchy/spice_model.py +48 -0
  96. pyedb/grpc/database/layers/__init__.py +0 -0
  97. pyedb/grpc/database/layers/layer.py +57 -0
  98. pyedb/grpc/database/layers/stackup_layer.py +410 -0
  99. pyedb/grpc/database/layout/__init__.py +0 -0
  100. pyedb/grpc/database/layout/cell.py +30 -0
  101. pyedb/grpc/database/layout/layout.py +196 -0
  102. pyedb/grpc/database/layout/voltage_regulator.py +149 -0
  103. pyedb/grpc/database/layout_validation.py +319 -0
  104. pyedb/grpc/database/modeler.py +1468 -0
  105. pyedb/grpc/database/net/__init__.py +0 -0
  106. pyedb/grpc/database/net/differential_pair.py +138 -0
  107. pyedb/grpc/database/net/extended_net.py +340 -0
  108. pyedb/grpc/database/net/net.py +198 -0
  109. pyedb/grpc/database/net/net_class.py +93 -0
  110. pyedb/grpc/database/nets.py +633 -0
  111. pyedb/grpc/database/padstacks.py +1500 -0
  112. pyedb/grpc/database/ports/__init__.py +0 -0
  113. pyedb/grpc/database/ports/ports.py +396 -0
  114. pyedb/grpc/database/primitive/__init__.py +3 -0
  115. pyedb/grpc/database/primitive/bondwire.py +181 -0
  116. pyedb/grpc/database/primitive/circle.py +75 -0
  117. pyedb/grpc/database/primitive/padstack_instance.py +1116 -0
  118. pyedb/grpc/database/primitive/path.py +346 -0
  119. pyedb/grpc/database/primitive/polygon.py +276 -0
  120. pyedb/grpc/database/primitive/primitive.py +739 -0
  121. pyedb/grpc/database/primitive/rectangle.py +146 -0
  122. pyedb/grpc/database/simulation_setup/__init__.py +0 -0
  123. pyedb/grpc/database/simulation_setup/adaptive_frequency.py +33 -0
  124. pyedb/grpc/database/simulation_setup/hfss_advanced_meshing_settings.py +32 -0
  125. pyedb/grpc/database/simulation_setup/hfss_advanced_settings.py +59 -0
  126. pyedb/grpc/database/simulation_setup/hfss_dcr_settings.py +35 -0
  127. pyedb/grpc/database/simulation_setup/hfss_general_settings.py +61 -0
  128. pyedb/grpc/database/simulation_setup/hfss_settings_options.py +78 -0
  129. pyedb/grpc/database/simulation_setup/hfss_simulation_settings.py +118 -0
  130. pyedb/grpc/database/simulation_setup/hfss_simulation_setup.py +355 -0
  131. pyedb/grpc/database/simulation_setup/hfss_solver_settings.py +34 -0
  132. pyedb/grpc/database/simulation_setup/mesh_operation.py +34 -0
  133. pyedb/grpc/database/simulation_setup/raptor_x_advanced_settings.py +34 -0
  134. pyedb/grpc/database/simulation_setup/raptor_x_general_settings.py +33 -0
  135. pyedb/grpc/database/simulation_setup/raptor_x_simulation_settings.py +64 -0
  136. pyedb/grpc/database/simulation_setup/raptor_x_simulation_setup.py +125 -0
  137. pyedb/grpc/database/simulation_setup/siwave_dcir_simulation_setup.py +34 -0
  138. pyedb/grpc/database/simulation_setup/siwave_simulation_setup.py +119 -0
  139. pyedb/grpc/database/simulation_setup/sweep_data.py +32 -0
  140. pyedb/grpc/database/siwave.py +1023 -0
  141. pyedb/grpc/database/source_excitations.py +2572 -0
  142. pyedb/grpc/database/stackup.py +2574 -0
  143. pyedb/grpc/database/terminal/__init__.py +0 -0
  144. pyedb/grpc/database/terminal/bundle_terminal.py +218 -0
  145. pyedb/grpc/database/terminal/edge_terminal.py +51 -0
  146. pyedb/grpc/database/terminal/padstack_instance_terminal.py +171 -0
  147. pyedb/grpc/database/terminal/pingroup_terminal.py +162 -0
  148. pyedb/grpc/database/terminal/point_terminal.py +99 -0
  149. pyedb/grpc/database/terminal/terminal.py +470 -0
  150. pyedb/grpc/database/utility/__init__.py +3 -0
  151. pyedb/grpc/database/utility/constants.py +25 -0
  152. pyedb/grpc/database/utility/heat_sink.py +124 -0
  153. pyedb/grpc/database/utility/hfss_extent_info.py +448 -0
  154. pyedb/grpc/database/utility/layout_statistics.py +277 -0
  155. pyedb/grpc/database/utility/rlc.py +80 -0
  156. pyedb/grpc/database/utility/simulation_configuration.py +3305 -0
  157. pyedb/grpc/database/utility/sources.py +388 -0
  158. pyedb/grpc/database/utility/sweep_data_distribution.py +83 -0
  159. pyedb/grpc/database/utility/xml_control_file.py +1277 -0
  160. pyedb/grpc/edb.py +4152 -0
  161. pyedb/grpc/edb_init.py +481 -0
  162. pyedb/grpc/rpc_session.py +177 -0
  163. pyedb/ipc2581/ecad/cad_data/assembly_drawing.py +3 -2
  164. pyedb/ipc2581/ecad/cad_data/feature.py +4 -3
  165. pyedb/ipc2581/ecad/cad_data/layer_feature.py +32 -20
  166. pyedb/ipc2581/ecad/cad_data/outline.py +3 -2
  167. pyedb/ipc2581/ecad/cad_data/package.py +4 -3
  168. pyedb/ipc2581/ecad/cad_data/path.py +82 -31
  169. pyedb/ipc2581/ecad/cad_data/polygon.py +122 -60
  170. pyedb/ipc2581/ecad/cad_data/profile.py +13 -12
  171. pyedb/ipc2581/ecad/cad_data/step.py +53 -21
  172. pyedb/ipc2581/ipc2581.py +47 -49
  173. pyedb/modeler/geometry_operators.py +1 -1
  174. {pyedb-0.38.0.dist-info → pyedb-0.39.1.dist-info}/METADATA +5 -2
  175. pyedb-0.39.1.dist-info/RECORD +288 -0
  176. pyedb-0.38.0.dist-info/RECORD +0 -195
  177. /pyedb/dotnet/{edb_core → database}/__init__.py +0 -0
  178. /pyedb/dotnet/{application → database/cell}/__init__.py +0 -0
  179. /pyedb/dotnet/{edb_core/cell → database/cell/hierarchy}/__init__.py +0 -0
  180. /pyedb/dotnet/{edb_core → database}/cell/hierarchy/netlist_model.py +0 -0
  181. /pyedb/dotnet/{edb_core → database}/cell/hierarchy/pin_pair_model.py +0 -0
  182. /pyedb/dotnet/{edb_core → database}/cell/hierarchy/s_parameter_model.py +0 -0
  183. /pyedb/dotnet/{edb_core → database}/cell/hierarchy/spice_model.py +0 -0
  184. /pyedb/dotnet/{edb_core → database}/cell/primitive/__init__.py +0 -0
  185. /pyedb/dotnet/{edb_core/cell/hierarchy → database/cell/terminal}/__init__.py +0 -0
  186. /pyedb/dotnet/{edb_core/cell/terminal → database/definition}/__init__.py +0 -0
  187. /pyedb/dotnet/{edb_core/definition → database/dotnet}/__init__.py +0 -0
  188. /pyedb/dotnet/{edb_core/dotnet → database/edb_data}/__init__.py +0 -0
  189. /pyedb/dotnet/{edb_core → database}/edb_data/design_options.py +0 -0
  190. /pyedb/dotnet/{edb_core → database}/edb_data/edbvalue.py +0 -0
  191. /pyedb/dotnet/{edb_core → database}/edb_data/layer_data.py +0 -0
  192. /pyedb/dotnet/{edb_core → database}/edb_data/utilities.py +0 -0
  193. /pyedb/dotnet/{edb_core → database}/general.py +0 -0
  194. /pyedb/dotnet/{edb_core/edb_data → database/geometry}/__init__.py +0 -0
  195. /pyedb/dotnet/{edb_core → database}/geometry/point_data.py +0 -0
  196. /pyedb/dotnet/{edb_core → database}/sim_setup_data/__init__.py +0 -0
  197. /pyedb/dotnet/{edb_core → database}/sim_setup_data/data/__init__.py +0 -0
  198. /pyedb/dotnet/{edb_core → database}/sim_setup_data/data/adaptive_frequency_data.py +0 -0
  199. /pyedb/dotnet/{edb_core/geometry → database/sim_setup_data/io}/__init__.py +0 -0
  200. /pyedb/dotnet/{edb_core → database}/sim_setup_data/io/siwave.py +0 -0
  201. /pyedb/dotnet/{edb_core → database}/utilities/__init__.py +0 -0
  202. /pyedb/dotnet/{edb_core → database}/utilities/heatsink.py +0 -0
  203. /pyedb/{dotnet/edb_core/sim_setup_data/io → grpc/database/definition}/__init__.py +0 -0
  204. {pyedb-0.38.0.dist-info → pyedb-0.39.1.dist-info}/LICENSE +0 -0
  205. {pyedb-0.38.0.dist-info → pyedb-0.39.1.dist-info}/WHEEL +0 -0
@@ -0,0 +1,1023 @@
1
+ # Copyright (C) 2023 - 2024 ANSYS, Inc. and/or its affiliates.
2
+ # SPDX-License-Identifier: MIT
3
+ #
4
+ #
5
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ # of this software and associated documentation files (the "Software"), to deal
7
+ # in the Software without restriction, including without limitation the rights
8
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ # copies of the Software, and to permit persons to whom the Software is
10
+ # furnished to do so, subject to the following conditions:
11
+ #
12
+ # The above copyright notice and this permission notice shall be included in all
13
+ # copies or substantial portions of the Software.
14
+ #
15
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ # SOFTWARE.
22
+
23
+ """
24
+ This module contains these classes: ``CircuitPort``, ``CurrentSource``, ``EdbSiwave``,
25
+ ``PinGroup``, ``ResistorSource``, ``Source``, ``SourceType``, and ``VoltageSource``.
26
+ """
27
+ import os
28
+ import warnings
29
+
30
+ from ansys.edb.core.database import ProductIdType as GrpcProductIdType
31
+ from ansys.edb.core.simulation_setup.simulation_setup import SweepData as GrpcSweepData
32
+
33
+ from pyedb.misc.siw_feature_config.xtalk_scan.scan_config import SiwaveScanConfig
34
+
35
+
36
+ class Siwave(object):
37
+ """Manages EDB methods related to Siwave Setup accessible from `Edb.siwave` property.
38
+
39
+ Parameters
40
+ ----------
41
+ edb_class : :class:`pyedb.edb.Edb`
42
+ Inherited parent object.
43
+
44
+ Examples
45
+ --------
46
+ >>> from pyedb import Edb
47
+ >>> edbapp = Edb("myaedbfolder", edbversion="2021.2")
48
+ >>> edb_siwave = edbapp.siwave
49
+ """
50
+
51
+ def __init__(self, p_edb):
52
+ self._pedb = p_edb
53
+
54
+ @property
55
+ def _edb(self):
56
+ """EDB."""
57
+ return self._pedb
58
+
59
+ @property
60
+ def _logger(self):
61
+ """EDB."""
62
+ return self._pedb.logger
63
+
64
+ @property
65
+ def _active_layout(self):
66
+ """Active layout."""
67
+ return self._pedb.active_layout
68
+
69
+ @property
70
+ def _layout(self):
71
+ """Active layout."""
72
+ return self._pedb.layout
73
+
74
+ @property
75
+ def _cell(self):
76
+ """Cell."""
77
+ return self._pedb.active_cell
78
+
79
+ @property
80
+ def _db(self):
81
+ """ """
82
+ return self._pedb.active_db
83
+
84
+ @property
85
+ def excitations(self):
86
+ """Get all excitations."""
87
+ return self._pedb.excitations
88
+
89
+ @property
90
+ def sources(self):
91
+ """Get all sources."""
92
+ return self._pedb.sources
93
+
94
+ @property
95
+ def probes(self):
96
+ """Get all probes."""
97
+ return self._pedb.probes
98
+
99
+ @property
100
+ def pin_groups(self):
101
+ """All Layout Pin groups.
102
+
103
+ Returns
104
+ -------
105
+ list
106
+ List of all layout pin groups.
107
+ """
108
+ _pingroups = {}
109
+ for el in self._pedb.layout.pin_groups:
110
+ _pingroups[el.name] = el
111
+ return _pingroups
112
+
113
+ def _create_terminal_on_pins(self, source):
114
+ """Create a terminal on pins.
115
+ . deprecated:: pyedb 0.28.0
116
+ Use :func:`pyedb.grpc.core.excitations._create_terminal_on_pins` instead.
117
+
118
+ Parameters
119
+ ----------
120
+ source : VoltageSource, CircuitPort, CurrentSource or ResistorSource
121
+ Name of the source.
122
+
123
+ """
124
+ warnings.warn(
125
+ "`_create_terminal_on_pins` is deprecated and is now located here "
126
+ "`pyedb.grpc.core.excitations._create_terminal_on_pins` instead.",
127
+ DeprecationWarning,
128
+ )
129
+ return self._pedb.source_excitation._create_terminal_on_pins(source)
130
+
131
+ def create_circuit_port_on_pin(self, pos_pin, neg_pin, impedance=50, port_name=None):
132
+ """Create a circuit port on a pin.
133
+
134
+ . deprecated:: pyedb 0.28.0
135
+ Use :func:`pyedb.grpc.core.excitations.create_circuit_port_on_pin` instead.
136
+
137
+ Parameters
138
+ ----------
139
+ pos_pin : Object
140
+ Edb Pin
141
+ neg_pin : Object
142
+ Edb Pin
143
+ impedance : float
144
+ Port Impedance
145
+ port_name : str, optional
146
+ Port Name
147
+
148
+ Returns
149
+ -------
150
+ str
151
+ Port Name.
152
+ """
153
+ warnings.warn(
154
+ "`create_circuit_port_on_pin` is deprecated and is now located here "
155
+ "`pyedb.grpc.core.excitations.create_circuit_port_on_pin` instead.",
156
+ DeprecationWarning,
157
+ )
158
+ return self._pedb.source_excitation.create_circuit_port_on_pin(pos_pin, neg_pin, impedance, port_name)
159
+
160
+ def create_port_between_pin_and_layer(
161
+ self, component_name=None, pins_name=None, layer_name=None, reference_net=None, impedance=50.0
162
+ ):
163
+ """Create circuit port between pin and a reference layer.
164
+
165
+ . deprecated:: pyedb 0.28.0
166
+ Use :func:`pyedb.grpc.core.excitations.create_port_between_pin_and_layer` instead.
167
+
168
+ Parameters
169
+ ----------
170
+ component_name : str
171
+ Component name. The default is ``None``.
172
+ pins_name : str
173
+ Pin name or list of pin names. The default is ``None``.
174
+ layer_name : str
175
+ Layer name. The default is ``None``.
176
+ reference_net : str
177
+ Reference net name. The default is ``None``.
178
+ impedance : float, optional
179
+ Port impedance. The default is ``50.0`` in ohms.
180
+
181
+ Returns
182
+ -------
183
+ PadstackInstanceTerminal
184
+ Created terminal.
185
+ """
186
+ warnings.warn(
187
+ "`create_port_between_pin_and_layer` is deprecated and is now located here "
188
+ "`pyedb.grpc.core.excitations.create_port_between_pin_and_layer` instead.",
189
+ DeprecationWarning,
190
+ )
191
+ return self._pedb.source_excitation.create_port_between_pin_and_layer(
192
+ component_name, pins_name, layer_name, reference_net, impedance
193
+ )
194
+
195
+ def create_voltage_source_on_pin(self, pos_pin, neg_pin, voltage_value=3.3, phase_value=0, source_name=""):
196
+ """Create a voltage source.
197
+ . deprecated:: pyedb 0.28.0
198
+ Use :func:`pyedb.grpc.core.excitations.create_voltage_source_on_pin` instead.
199
+
200
+ Parameters
201
+ ----------
202
+ pos_pin : Object
203
+ Positive Pin.
204
+ neg_pin : Object
205
+ Negative Pin.
206
+ voltage_value : float, optional
207
+ Value for the voltage. The default is ``3.3``.
208
+ phase_value : optional
209
+ Value for the phase. The default is ``0``.
210
+ source_name : str, optional
211
+ Name of the source. The default is ``""``.
212
+
213
+ Returns
214
+ -------
215
+ str
216
+ Source Name.
217
+ """
218
+
219
+ warnings.warn(
220
+ "`create_voltage_source_on_pin` is deprecated and is now located here "
221
+ "`pyedb.grpc.core.excitations.create_voltage_source_on_pin` instead.",
222
+ DeprecationWarning,
223
+ )
224
+ return self._pedb.source_excitation.create_voltage_source_on_pin(
225
+ pos_pin, neg_pin, voltage_value, phase_value, source_name
226
+ )
227
+
228
+ def create_current_source_on_pin(self, pos_pin, neg_pin, current_value=0.1, phase_value=0, source_name=""):
229
+ """Create a current source.
230
+
231
+ . deprecated:: pyedb 0.28.0
232
+ Use :func:`pyedb.grpc.core.excitations.create_current_source_on_pin` instead.
233
+
234
+ Parameters
235
+ ----------
236
+ pos_pin : Object
237
+ Positive pin.
238
+ neg_pin : Object
239
+ Negative pin.
240
+ current_value : float, optional
241
+ Value for the current. The default is ``0.1``.
242
+ phase_value : optional
243
+ Value for the phase. The default is ``0``.
244
+ source_name : str, optional
245
+ Name of the source. The default is ``""``.
246
+
247
+ Returns
248
+ -------
249
+ str
250
+ Source Name.
251
+ """
252
+ warnings.warn(
253
+ "`create_current_source_on_pin` is deprecated and is now located here "
254
+ "`pyedb.grpc.core.excitations.create_current_source_on_pin` instead.",
255
+ DeprecationWarning,
256
+ )
257
+ return self._pedb.source_excitation.create_current_source_on_pin(
258
+ pos_pin, neg_pin, current_value, phase_value, source_name
259
+ )
260
+
261
+ def create_resistor_on_pin(self, pos_pin, neg_pin, rvalue=1, resistor_name=""):
262
+ """Create a Resistor boundary between two given pins.
263
+
264
+ . deprecated:: pyedb 0.28.0
265
+ Use :func:`pyedb.grpc.core.excitations.create_resistor_on_pin` instead.
266
+
267
+ Parameters
268
+ ----------
269
+ pos_pin : Object
270
+ Positive Pin.
271
+ neg_pin : Object
272
+ Negative Pin.
273
+ rvalue : float, optional
274
+ Resistance value. The default is ``1``.
275
+ resistor_name : str, optional
276
+ Name of the resistor. The default is ``""``.
277
+
278
+ Returns
279
+ -------
280
+ str
281
+ Name of the resistor.
282
+ """
283
+ warnings.warn(
284
+ "`create_resistor_on_pin` is deprecated and is now located here "
285
+ "`pyedb.grpc.core.excitations.create_resistor_on_pin` instead.",
286
+ DeprecationWarning,
287
+ )
288
+ return self._pedb.source_excitation.create_resistor_on_pin(pos_pin, neg_pin, rvalue, resistor_name)
289
+
290
+ def _check_gnd(self, component_name):
291
+ """
292
+ . deprecated:: pyedb 0.28.0
293
+ Use :func:`pyedb.grpc.core.excitations._check_gnd` instead.
294
+
295
+ """
296
+ warnings.warn(
297
+ "`_check_gnd` is deprecated and is now located here " "`pyedb.grpc.core.excitations._check_gnd` instead.",
298
+ DeprecationWarning,
299
+ )
300
+ return self._pedb.source_excitation._check_gnd(component_name)
301
+
302
+ def create_circuit_port_on_net(
303
+ self,
304
+ positive_component_name,
305
+ positive_net_name,
306
+ negative_component_name=None,
307
+ negative_net_name=None,
308
+ impedance_value=50,
309
+ port_name="",
310
+ ):
311
+ """Create a circuit port on a NET.
312
+
313
+ . deprecated:: pyedb 0.28.0
314
+ Use :func:`pyedb.grpc.core.excitations.create_circuit_port_on_net` instead.
315
+
316
+ It groups all pins belonging to the specified net and then applies the port on PinGroups.
317
+
318
+ Parameters
319
+ ----------
320
+ positive_component_name : str
321
+ Name of the positive component.
322
+ positive_net_name : str
323
+ Name of the positive net.
324
+ negative_component_name : str, optional
325
+ Name of the negative component. The default is ``None``, in which case the name of
326
+ the positive net is assigned.
327
+ negative_net_name : str, optional
328
+ Name of the negative net name. The default is ``None`` which will look for GND Nets.
329
+ impedance_value : float, optional
330
+ Port impedance value. The default is ``50``.
331
+ port_name : str, optional
332
+ Name of the port. The default is ``""``.
333
+
334
+ Returns
335
+ -------
336
+ str
337
+ The name of the port.
338
+
339
+ """
340
+ warnings.warn(
341
+ "`create_circuit_port_on_net` is deprecated and is now located here "
342
+ "`pyedb.grpc.core.source_excitation.create_circuit_port_on_net` instead.",
343
+ DeprecationWarning,
344
+ )
345
+ return self._pedb.source_excitation.create_circuit_port_on_net(
346
+ positive_component_name,
347
+ positive_net_name,
348
+ negative_component_name,
349
+ negative_net_name,
350
+ impedance_value,
351
+ port_name,
352
+ )
353
+
354
+ def create_voltage_source_on_net(
355
+ self,
356
+ positive_component_name,
357
+ positive_net_name,
358
+ negative_component_name=None,
359
+ negative_net_name=None,
360
+ voltage_value=3.3,
361
+ phase_value=0,
362
+ source_name="",
363
+ ):
364
+ """Create a voltage source.
365
+
366
+ . deprecated:: pyedb 0.28.0
367
+ Use :func:`pyedb.grpc.core.excitations.create_voltage_source_on_net` instead.
368
+
369
+ Parameters
370
+ ----------
371
+ positive_component_name : str
372
+ Name of the positive component.
373
+ positive_net_name : str
374
+ Name of the positive net.
375
+ negative_component_name : str, optional
376
+ Name of the negative component. The default is ``None``, in which case the name of
377
+ the positive net is assigned.
378
+ negative_net_name : str, optional
379
+ Name of the negative net name. The default is ``None`` which will look for GND Nets.
380
+ voltage_value : float, optional
381
+ Value for the voltage. The default is ``3.3``.
382
+ phase_value : optional
383
+ Value for the phase. The default is ``0``.
384
+ source_name : str, optional
385
+ Name of the source. The default is ``""``.
386
+
387
+ Returns
388
+ -------
389
+ str
390
+ The name of the source.
391
+
392
+ """
393
+ warnings.warn(
394
+ "`create_voltage_source_on_net` is deprecated and is now located here "
395
+ "`pyedb.grpc.core.excitations.create_voltage_source_on_net` instead.",
396
+ DeprecationWarning,
397
+ )
398
+ return self._pedb.source_excitation.create_voltage_source_on_net(
399
+ positive_component_name,
400
+ positive_net_name,
401
+ negative_component_name,
402
+ negative_net_name,
403
+ voltage_value,
404
+ phase_value,
405
+ source_name,
406
+ )
407
+
408
+ def create_current_source_on_net(
409
+ self,
410
+ positive_component_name,
411
+ positive_net_name,
412
+ negative_component_name=None,
413
+ negative_net_name=None,
414
+ current_value=0.1,
415
+ phase_value=0,
416
+ source_name="",
417
+ ):
418
+ """Create a current source.
419
+
420
+ . deprecated:: pyedb 0.28.0
421
+ Use :func:`pyedb.grpc.core.excitations.create_current_source_on_net` instead.
422
+
423
+ Parameters
424
+ ----------
425
+ positive_component_name : str
426
+ Name of the positive component.
427
+ positive_net_name : str
428
+ Name of the positive net.
429
+ negative_component_name : str, optional
430
+ Name of the negative component. The default is ``None``, in which case the name of
431
+ the positive net is assigned.
432
+ negative_net_name : str, optional
433
+ Name of the negative net name. The default is ``None`` which will look for GND Nets.
434
+ current_value : float, optional
435
+ Value for the current. The default is ``0.1``.
436
+ phase_value : optional
437
+ Value for the phase. The default is ``0``.
438
+ source_name : str, optional
439
+ Name of the source. The default is ``""``.
440
+
441
+ Returns
442
+ -------
443
+ str
444
+ The name of the source.
445
+ """
446
+ warnings.warn(
447
+ "`create_current_source_on_net` is deprecated and is now located here "
448
+ "`pyedb.grpc.core.excitations.create_current_source_on_net` instead.",
449
+ DeprecationWarning,
450
+ )
451
+ return self._pedb.source_excitation.create_current_source_on_net(
452
+ positive_component_name,
453
+ positive_net_name,
454
+ negative_component_name,
455
+ negative_net_name,
456
+ current_value,
457
+ phase_value,
458
+ source_name,
459
+ )
460
+
461
+ def create_dc_terminal(
462
+ self,
463
+ component_name,
464
+ net_name,
465
+ source_name="",
466
+ ):
467
+ """Create a dc terminal.
468
+
469
+ . deprecated:: pyedb 0.28.0
470
+ Use :func:`pyedb.grpc.core.excitations.create_dc_terminal` instead.
471
+
472
+ Parameters
473
+ ----------
474
+ component_name : str
475
+ Name of the positive component.
476
+ net_name : str
477
+ Name of the positive net.
478
+
479
+ source_name : str, optional
480
+ Name of the source. The default is ``""``.
481
+
482
+ Returns
483
+ -------
484
+ str
485
+ The name of the source.
486
+ """
487
+ warnings.warn(
488
+ "`create_dc_terminal` is deprecated and is now located here "
489
+ "`pyedb.grpc.core.excitations.create_dc_terminal` instead.",
490
+ DeprecationWarning,
491
+ )
492
+ return self._pedb.source_excitation.create_dc_terminal(component_name, net_name, source_name)
493
+
494
+ def create_exec_file(
495
+ self, add_dc=False, add_ac=False, add_syz=False, export_touchstone=False, touchstone_file_path=""
496
+ ):
497
+ """Create an executable file.
498
+
499
+ Parameters
500
+ ----------
501
+ add_dc : bool, optional
502
+ Whether to add the DC option in the EXE file. The default is ``False``.
503
+ add_ac : bool, optional
504
+ Whether to add the AC option in the EXE file. The default is
505
+ ``False``.
506
+ add_syz : bool, optional
507
+ Whether to add the SYZ option in the EXE file
508
+ export_touchstone : bool, optional
509
+ Add the Touchstone file export option in the EXE file.
510
+ The default is ``False``.
511
+ touchstone_file_path : str, optional
512
+ File path for the Touchstone file. The default is ``""``. When no path is
513
+ specified and ``export_touchstone=True``, the path for the project is
514
+ used.
515
+ """
516
+ workdir = os.path.dirname(self._pedb.edbpath)
517
+ file_name = os.path.join(workdir, os.path.splitext(os.path.basename(self._pedb.edbpath))[0] + ".exec")
518
+ if os.path.isfile(file_name):
519
+ os.remove(file_name)
520
+ with open(file_name, "w") as f:
521
+ if add_ac:
522
+ f.write("ExecAcSim\n")
523
+ if add_dc:
524
+ f.write("ExecDcSim\n")
525
+ if add_syz:
526
+ f.write("ExecSyzSim\n")
527
+ if export_touchstone:
528
+ if touchstone_file_path: # pragma no cover
529
+ f.write('ExportTouchstone "{}"\n'.format(touchstone_file_path))
530
+ else: # pragma no cover
531
+ touchstone_file_path = os.path.join(
532
+ workdir, os.path.splitext(os.path.basename(self._pedb.edbpath))[0] + "_touchstone"
533
+ )
534
+ f.write('ExportTouchstone "{}"\n'.format(touchstone_file_path))
535
+ f.write("SaveSiw\n")
536
+
537
+ return True if os.path.exists(file_name) else False
538
+
539
+ def add_siwave_syz_analysis(
540
+ self,
541
+ accuracy_level=1,
542
+ distribution="linear",
543
+ start_freq=1,
544
+ stop_freq=1e9,
545
+ step_freq=1e6,
546
+ discrete_sweep=False,
547
+ ):
548
+ """Add a SIwave AC analysis to EDB.
549
+
550
+ Parameters
551
+ ----------
552
+ accuracy_level : int, optional
553
+ Level of accuracy of SI slider. The default is ``1``.
554
+ distribution : str, optional
555
+ Type of the sweep. The default is `"linear"`. Options are:
556
+ - `"linear"`
557
+ - `"linear_count"`
558
+ - `"decade_count"`
559
+ - `"octave_count"`
560
+ - `"exponential"`
561
+ start_freq : str, float, optional
562
+ Starting frequency. The default is ``1``.
563
+ stop_freq : str, float, optional
564
+ Stopping frequency. The default is ``1e9``.
565
+ step_freq : str, float, int, optional
566
+ Frequency step. The default is ``1e6``. or used for `"decade_count"`, "linear_count"`, "octave_count"`
567
+ distribution. Must be integer in that case.
568
+ discrete_sweep : bool, optional
569
+ Whether the sweep is discrete. The default is ``False``.
570
+
571
+ Returns
572
+ -------
573
+ :class:`pyedb.dotnet.database.edb_data.siwave_simulation_setup_data.SiwaveSYZSimulationSetup`
574
+ Setup object class.
575
+ """
576
+ setup = self._pedb.create_siwave_syz_setup()
577
+ start_freq = self._pedb.number_with_units(start_freq, "Hz")
578
+ stop_freq = self._pedb.number_with_units(stop_freq, "Hz")
579
+ setup.settings.general.si_slider_pos = accuracy_level
580
+ if distribution.lower() == "linear":
581
+ distribution = "LIN"
582
+ elif distribution.lower() == "linear_count":
583
+ distribution = "LINC"
584
+ elif distribution.lower() == "exponential":
585
+ distribution = "ESTP"
586
+ elif distribution.lower() == "decade_count":
587
+ distribution = "DEC"
588
+ elif distribution.lower() == "octave_count":
589
+ distribution = "OCT"
590
+ else:
591
+ distribution = "LIN"
592
+ sweep_name = f"sweep_{len(setup.sweep_data) + 1}"
593
+ sweep_data = [
594
+ GrpcSweepData(
595
+ name=sweep_name, distribution=distribution, start_f=start_freq, end_f=stop_freq, step=step_freq
596
+ )
597
+ ]
598
+ if discrete_sweep:
599
+ sweep_data[0].type = sweep_data[0].type.DISCRETE_SWEEP
600
+ for sweep in setup.sweep_data:
601
+ sweep_data.append(sweep)
602
+ setup.sweep_data = sweep_data
603
+ self.create_exec_file(add_ac=True)
604
+ return setup
605
+
606
+ def add_siwave_dc_analysis(self, name=None):
607
+ """Add a Siwave DC analysis in EDB.
608
+
609
+ If a setup is present, it is deleted and replaced with
610
+ actual settings.
611
+
612
+ .. note::
613
+ Source Reference to Ground settings works only from 2021.2
614
+
615
+ Parameters
616
+ ----------
617
+ name : str, optional
618
+ Setup name.
619
+
620
+ Returns
621
+ -------
622
+ :class:`pyedb.dotnet.database.edb_data.siwave_simulation_setup_data.SiwaveDCSimulationSetup`
623
+ Setup object class.
624
+
625
+ Examples
626
+ --------
627
+ >>> from pyedb import Edb
628
+ >>> edb = Edb("pathtoaedb", edbversion="2021.2")
629
+ >>> edb.siwave.add_siwave_ac_analysis()
630
+ >>> edb.siwave.add_siwave_dc_analysis2("my_setup")
631
+
632
+ """
633
+ setup = self._pedb.create_siwave_dc_setup(name)
634
+ self.create_exec_file(add_dc=True)
635
+ return setup
636
+
637
+ def create_pin_group_terminal(self, source):
638
+ """Create a pin group terminal.
639
+
640
+ . deprecated:: pyedb 0.28.0
641
+ Use :func:`pyedb.grpc.core.excitations.create_pin_group_terminal` instead.
642
+
643
+ Parameters
644
+ ----------
645
+ source : VoltageSource, CircuitPort, CurrentSource, DCTerminal or ResistorSource
646
+ Name of the source.
647
+
648
+ """
649
+ warnings.warn(
650
+ "`create_pin_group_terminal` is deprecated and is now located here "
651
+ "`pyedb.grpc.core.excitations.create_pin_group_terminal` instead.",
652
+ DeprecationWarning,
653
+ )
654
+ return self._pedb.source_excitation.create_pin_group_terminal(source)
655
+
656
+ def create_rlc_component(
657
+ self,
658
+ pins,
659
+ component_name="",
660
+ r_value=1.0,
661
+ c_value=1e-9,
662
+ l_value=1e-9,
663
+ is_parallel=False,
664
+ ):
665
+ """Create physical Rlc component.
666
+
667
+ . deprecated:: pyedb 0.28.0
668
+ Use :func:`pyedb.grpc.core.components.create_pin_group_terminal` instead.
669
+
670
+ Parameters
671
+ ----------
672
+ pins : list[Edb.Cell.Primitive.PadstackInstance]
673
+ List of EDB pins.
674
+
675
+ component_name : str
676
+ Component name.
677
+
678
+ r_value : float
679
+ Resistor value.
680
+
681
+ c_value : float
682
+ Capacitance value.
683
+
684
+ l_value : float
685
+ Inductor value.
686
+
687
+ is_parallel : bool
688
+ Using parallel model when ``True``, series when ``False``.
689
+
690
+ Returns
691
+ -------
692
+ class:`pyedb.dotnet.database.components.Components`
693
+ Created EDB component.
694
+
695
+ """
696
+ warnings.warn(
697
+ "`create_rlc_component` is deprecated and is now located here "
698
+ "`pyedb.grpc.core.components.create_rlc_component` instead.",
699
+ DeprecationWarning,
700
+ )
701
+ return self._pedb.components.create(
702
+ pins,
703
+ component_name=component_name,
704
+ is_rlc=True,
705
+ r_value=r_value,
706
+ c_value=c_value,
707
+ l_value=l_value,
708
+ is_parallel=is_parallel,
709
+ ) # pragma no cover
710
+
711
+ def create_pin_group(self, reference_designator, pin_numbers, group_name=None):
712
+ """Create pin group on the component.
713
+
714
+ . deprecated:: pyedb 0.28.0
715
+ Use :func:`pyedb.grpc.core.components.create_pin_group_terminal` instead.
716
+
717
+ Parameters
718
+ ----------
719
+ reference_designator : str
720
+ References designator of the component.
721
+ pin_numbers : int, str, list
722
+ List of pin names.
723
+ group_name : str, optional
724
+ Name of the pin group.
725
+
726
+ Returns
727
+ -------
728
+ PinGroup
729
+ """
730
+ warnings.warn(
731
+ "`create_pin_group` is deprecated and is now located here "
732
+ "`pyedb.grpc.core.components.create_pin_group` instead.",
733
+ DeprecationWarning,
734
+ )
735
+ return self._pedb.components.create_pin_group(reference_designator, pin_numbers, group_name)
736
+
737
+ def create_pin_group_on_net(self, reference_designator, net_name, group_name=None):
738
+ """Create pin group on component by net name.
739
+
740
+ . deprecated:: pyedb 0.28.0
741
+ Use :func:`pyedb.grpc.core.components.create_pin_group_terminal` instead.
742
+
743
+ Parameters
744
+ ----------
745
+ reference_designator : str
746
+ References designator of the component.
747
+ net_name : str
748
+ Name of the net.
749
+ group_name : str, optional
750
+ Name of the pin group. The default value is ``None``.
751
+
752
+ Returns
753
+ -------
754
+ PinGroup
755
+ """
756
+ warnings.warn(
757
+ "`create_pin_group_on_net` is deprecated and is now located here "
758
+ "`pyedb.grpc.core.components.create_pin_group_on_net` instead.",
759
+ DeprecationWarning,
760
+ )
761
+ return self._pedb.components.create_pin_group_on_net(reference_designator, net_name, group_name)
762
+
763
+ def create_current_source_on_pin_group(
764
+ self, pos_pin_group_name, neg_pin_group_name, magnitude=1, phase=0, name=None
765
+ ):
766
+ """Create current source between two pin groups.
767
+
768
+ .deprecated:: pyedb 0.28.0
769
+ Use: func:`pyedb.grpc.core.excitations.create_current_source_on_pin_group`
770
+ instead.
771
+
772
+ Parameters
773
+ ----------
774
+ pos_pin_group_name : str
775
+ Name of the positive pin group.
776
+ neg_pin_group_name : str
777
+ Name of the negative pin group.
778
+ magnitude : int, float, optional
779
+ Magnitude of the source.
780
+ phase : int, float, optional
781
+ Phase of the source
782
+ name : str, optional
783
+ source name.
784
+
785
+ Returns
786
+ -------
787
+ bool
788
+
789
+ """
790
+ warnings.warn(
791
+ "`create_current_source_on_pin_group` is deprecated and is now located here "
792
+ "`pyedb.grpc.core.excitations.create_current_source_on_pin_group` instead.",
793
+ DeprecationWarning,
794
+ )
795
+ return self._pedb.source_excitation.create_current_source_on_pin_group(
796
+ pos_pin_group_name, neg_pin_group_name, magnitude, phase, name
797
+ )
798
+
799
+ def create_voltage_source_on_pin_group(
800
+ self, pos_pin_group_name, neg_pin_group_name, magnitude=1, phase=0, name=None, impedance=0.001
801
+ ):
802
+ """Create voltage source between two pin groups.
803
+
804
+ .deprecated:: pyedb 0.28.0
805
+ Use: func:`pyedb.grpc.core.excitations.create_voltage_source_on_pin_group`
806
+ instead.
807
+
808
+ Parameters
809
+ ----------
810
+ pos_pin_group_name : str
811
+ Name of the positive pin group.
812
+ neg_pin_group_name : str
813
+ Name of the negative pin group.
814
+ magnitude : int, float, optional
815
+ Magnitude of the source.
816
+ phase : int, float, optional
817
+ Phase of the source
818
+
819
+ Returns
820
+ -------
821
+ bool
822
+
823
+ """
824
+ warnings.warn(
825
+ "`create_voltage_source_on_pin_group` is deprecated and is now located here "
826
+ "`pyedb.grpc.core.excitations.create_voltage_source_on_pin_group` instead.",
827
+ DeprecationWarning,
828
+ )
829
+ return self._pedb.source_excitation.create_voltage_source_on_pin_group(
830
+ pos_pin_group_name, neg_pin_group_name, magnitude, phase, name, impedance
831
+ )
832
+
833
+ def create_voltage_probe_on_pin_group(self, probe_name, pos_pin_group_name, neg_pin_group_name, impedance=1e6):
834
+ """Create voltage probe between two pin groups.
835
+
836
+ .deprecated:: pyedb 0.28.0
837
+ Use: func:`pyedb.grpc.core.excitations.create_voltage_probe_on_pin_group`
838
+ instead.
839
+
840
+ Parameters
841
+ ----------
842
+ probe_name : str
843
+ Name of the probe.
844
+ pos_pin_group_name : str
845
+ Name of the positive pin group.
846
+ neg_pin_group_name : str
847
+ Name of the negative pin group.
848
+ impedance : int, float, optional
849
+ Phase of the source.
850
+
851
+ Returns
852
+ -------
853
+ bool
854
+
855
+ """
856
+
857
+ warnings.warn(
858
+ "`create_voltage_probe_on_pin_group` is deprecated and is now located here "
859
+ "`pyedb.grpc.core.excitations.create_voltage_probe_on_pin_group` instead.",
860
+ DeprecationWarning,
861
+ )
862
+ return self._pedb.source_excitation.create_voltage_probe_on_pin_group(
863
+ probe_name, pos_pin_group_name, neg_pin_group_name, impedance=impedance
864
+ )
865
+
866
+ def create_circuit_port_on_pin_group(self, pos_pin_group_name, neg_pin_group_name, impedance=50, name=None):
867
+ """Create a port between two pin groups.
868
+
869
+ .deprecated:: pyedb 0.28.0
870
+ Use: func:`pyedb.grpc.core.excitations.create_circuit_port_on_pin_group`
871
+ instead.
872
+
873
+ Parameters
874
+ ----------
875
+ pos_pin_group_name : str
876
+ Name of the positive pin group.
877
+ neg_pin_group_name : str
878
+ Name of the negative pin group.
879
+ impedance : int, float, optional
880
+ Impedance of the port. Default is ``50``.
881
+ name : str, optional
882
+ Port name.
883
+
884
+ Returns
885
+ -------
886
+ bool
887
+
888
+ """
889
+ warnings.warn(
890
+ "`create_circuit_port_on_pin_group` is deprecated and is now located here "
891
+ "`pyedb.grpc.core.excitations.create_circuit_port_on_pin_group` instead.",
892
+ DeprecationWarning,
893
+ )
894
+ return self._pedb.source_excitation.create_circuit_port_on_pin_group(
895
+ pos_pin_group_name, neg_pin_group_name, impedance, name
896
+ )
897
+
898
+ def place_voltage_probe(
899
+ self,
900
+ name,
901
+ positive_net_name,
902
+ positive_location,
903
+ positive_layer,
904
+ negative_net_name,
905
+ negative_location,
906
+ negative_layer,
907
+ ):
908
+ """Place a voltage probe between two points.
909
+
910
+ .deprecated:: pyedb 0.28.0
911
+ Use: func:`pyedb.grpc.core.excitations.place_voltage_probe`
912
+ instead.
913
+
914
+ Parameters
915
+ ----------
916
+ name : str,
917
+ Name of the probe.
918
+ positive_net_name : str
919
+ Name of the positive net.
920
+ positive_location : list
921
+ Location of the positive terminal.
922
+ positive_layer : str,
923
+ Layer of the positive terminal.
924
+ negative_net_name : str,
925
+ Name of the negative net.
926
+ negative_location : list
927
+ Location of the negative terminal.
928
+ negative_layer : str
929
+ Layer of the negative terminal.
930
+ """
931
+ warnings.warn(
932
+ "`place_voltage_probe` is deprecated and is now located here "
933
+ "`pyedb.grpc.core.excitations.place_voltage_probe` instead.",
934
+ DeprecationWarning,
935
+ )
936
+ return self._pedb.source_excitation.place_voltage_probe(
937
+ name,
938
+ positive_net_name,
939
+ positive_location,
940
+ positive_layer,
941
+ negative_net_name,
942
+ negative_location,
943
+ negative_layer,
944
+ )
945
+
946
+ # def create_vrm_module(
947
+ # self,
948
+ # name=None,
949
+ # is_active=True,
950
+ # voltage="3V",
951
+ # positive_sensor_pin=None,
952
+ # negative_sensor_pin=None,
953
+ # load_regulation_current="1A",
954
+ # load_regulation_percent=0.1,
955
+ # ):
956
+ # """Create a voltage regulator module.
957
+ #
958
+ # Parameters
959
+ # ----------
960
+ # name : str
961
+ # Name of the voltage regulator.
962
+ # is_active : bool optional
963
+ # Set the voltage regulator active or not. Default value is ``True``.
964
+ # voltage ; str, float
965
+ # Set the voltage value.
966
+ # positive_sensor_pin : int, .class pyedb.dotnet.database.edb_data.padstacks_data.EDBPadstackInstance
967
+ # defining the positive sensor pin.
968
+ # negative_sensor_pin : int, .class pyedb.dotnet.database.edb_data.padstacks_data.EDBPadstackInstance
969
+ # defining the negative sensor pin.
970
+ # load_regulation_current : str or float
971
+ # definition the load regulation current value.
972
+ # load_regulation_percent : float
973
+ # definition the load regulation percent value.
974
+ # """
975
+ # from pyedb.grpc.database.voltage_regulator import VoltageRegulator
976
+ #
977
+ # voltage = self._pedb.edb_value(voltage)
978
+ # load_regulation_current = self._pedb.edb_value(load_regulation_current)
979
+ # load_regulation_percent = self._pedb.edb_value(load_regulation_percent)
980
+ # edb_vrm = self._edb_object = self._pedb._edb.Cell.VoltageRegulator.Create(
981
+ # self._pedb.active_layout, name, is_active, voltage, load_regulation_current, load_regulation_percent
982
+ # )
983
+ # vrm = VoltageRegulator(self._pedb, edb_vrm)
984
+ # if positive_sensor_pin:
985
+ # vrm.positive_remote_sense_pin = positive_sensor_pin
986
+ # if negative_sensor_pin:
987
+ # vrm.negative_remote_sense_pin = negative_sensor_pin
988
+ # return vrm
989
+
990
+ @property
991
+ def icepak_use_minimal_comp_defaults(self):
992
+ """Icepak default setting. If "True", only resistor are active in Icepak simulation.
993
+ The power dissipation of the resistors are calculated from DC results.
994
+ """
995
+ return self._pedb.active_cell.get_product_property(GrpcProductIdType.SIWAVE, 422).value
996
+
997
+ def create_impedance_crosstalk_scan(self, scan_type="impedance"):
998
+ """Create Siwave crosstalk scan object
999
+
1000
+ Parameters
1001
+ ----------
1002
+ scan_type : str
1003
+ Scan type to be analyzed. 3 options are available, ``impedance`` for frequency impedance scan,
1004
+ ``frequency_xtalk`` for frequency domain crosstalk and ``time_xtalk`` for time domain crosstalk.
1005
+ Default value is ``frequency``.
1006
+
1007
+ """
1008
+ return SiwaveScanConfig(self._pedb, scan_type)
1009
+
1010
+ @icepak_use_minimal_comp_defaults.setter
1011
+ def icepak_use_minimal_comp_defaults(self, value):
1012
+ value = "True" if bool(value) else ""
1013
+ self._pedb.active_cell.set_product_property(GrpcProductIdType.SIWAVE, 422, value)
1014
+
1015
+ @property
1016
+ def icepak_component_file(self):
1017
+ """Icepak component file path."""
1018
+ return self._pedb.active_cell.get_product_property(GrpcProductIdType.SIWAVE, 420).value
1019
+ return value
1020
+
1021
+ @icepak_component_file.setter
1022
+ def icepak_component_file(self, value):
1023
+ self._pedb.active_cell.set_product_property(GrpcProductIdType.SIWAVE, 420, value)