pyedb 0.10.dev0__py3-none-any.whl → 0.11.2__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 (39) hide show
  1. pyedb/__init__.py +1 -1
  2. pyedb/configuration/cfg_boundaries.py +115 -0
  3. pyedb/configuration/cfg_components.py +205 -0
  4. pyedb/configuration/cfg_data.py +38 -15
  5. pyedb/configuration/cfg_general.py +34 -0
  6. pyedb/{dotnet/sim_setup_data/data/siw_dc_ir_settings.py → configuration/cfg_nets.py} +18 -21
  7. pyedb/configuration/cfg_padstacks.py +125 -0
  8. pyedb/configuration/cfg_pin_groups.py +58 -0
  9. pyedb/configuration/cfg_ports_sources.py +164 -0
  10. pyedb/configuration/cfg_s_parameter_models.py +60 -0
  11. pyedb/configuration/cfg_setup.py +201 -0
  12. pyedb/configuration/cfg_spice_models.py +49 -0
  13. pyedb/configuration/configuration.py +37 -532
  14. pyedb/dotnet/edb.py +37 -8
  15. pyedb/dotnet/edb_core/components.py +43 -0
  16. pyedb/dotnet/edb_core/edb_data/hfss_pi_simulation_setup_data.py +465 -0
  17. pyedb/dotnet/edb_core/edb_data/nets_data.py +6 -2
  18. pyedb/dotnet/edb_core/edb_data/padstacks_data.py +17 -1
  19. pyedb/dotnet/edb_core/edb_data/raptor_x_simulation_setup_data.py +0 -4
  20. pyedb/dotnet/edb_core/edb_data/siwave_simulation_setup_data.py +4 -2
  21. pyedb/dotnet/edb_core/edb_data/sources.py +21 -5
  22. pyedb/dotnet/edb_core/edb_data/terminals.py +2 -1
  23. pyedb/dotnet/edb_core/layout.py +13 -8
  24. pyedb/dotnet/edb_core/nets.py +7 -3
  25. pyedb/dotnet/edb_core/padstack.py +23 -3
  26. pyedb/dotnet/edb_core/sim_setup_data/__init__.py +3 -0
  27. pyedb/dotnet/edb_core/sim_setup_data/data/__init__.py +3 -0
  28. pyedb/dotnet/edb_core/sim_setup_data/data/siw_dc_ir_settings.py +235 -0
  29. pyedb/dotnet/edb_core/siwave.py +2 -1
  30. pyedb/dotnet/edb_core/stackup.py +45 -33
  31. pyedb/dotnet/edb_core/utilities/simulation_setup.py +21 -5
  32. pyedb/generic/plot.py +6 -5
  33. pyedb/siwave.py +32 -6
  34. pyedb/siwave_core/icepak.py +153 -0
  35. {pyedb-0.10.dev0.dist-info → pyedb-0.11.2.dist-info}/METADATA +6 -6
  36. {pyedb-0.10.dev0.dist-info → pyedb-0.11.2.dist-info}/RECORD +38 -25
  37. pyedb/configuration/cfg_ports.py +0 -149
  38. {pyedb-0.10.dev0.dist-info → pyedb-0.11.2.dist-info}/LICENSE +0 -0
  39. {pyedb-0.10.dev0.dist-info → pyedb-0.11.2.dist-info}/WHEEL +0 -0
@@ -73,11 +73,12 @@ class LayerCollection(object):
73
73
 
74
74
  def __init__(self, pedb, edb_object=None):
75
75
  self._pedb = pedb
76
- self._edb_object = (
77
- self._pedb.edb_api.cell._cell.LayerCollection(edb_object)
78
- if edb_object
79
- else self._pedb.edb_api.cell._cell.LayerCollection()
80
- )
76
+
77
+ if edb_object:
78
+ self._edb_object = self._pedb.edb_api.cell._cell.LayerCollection(edb_object)
79
+ else:
80
+ self._edb_object = self._pedb.edb_api.cell._cell.LayerCollection()
81
+
81
82
  self._layer_type_set_mapping = {
82
83
  "stackup_layer_set": self._pedb.edb_api.cell.layer_type_set.StackupLayerSet,
83
84
  "signal_ayer_et": self._pedb.edb_api.cell.layer_type_set.SignalLayerSet,
@@ -304,6 +305,24 @@ class LayerCollection(object):
304
305
  temp.append([obj.id, obj.name])
305
306
  return temp
306
307
 
308
+ @property
309
+ def layers(self):
310
+ """Retrieve the dictionary of layers.
311
+
312
+ Returns
313
+ -------
314
+ Dict[str, :class:`pyedb.dotnet.edb_core.edb_data.layer_data.LayerEdbClass`]
315
+ """
316
+ _lays = OrderedDict()
317
+ layer_list = list(self._edb_object.Layers(self._pedb.edb_api.cell.layer_type_set.AllLayerSet))
318
+ for l in layer_list:
319
+ name = l.GetName()
320
+ if not l.IsStackupLayer():
321
+ _lays[name] = LayerEdbClass(self._pedb, l, name=name)
322
+ else:
323
+ _lays[name] = StackupLayerEdbClass(self._pedb, l, name=name)
324
+ return _lays
325
+
307
326
 
308
327
  class Stackup(LayerCollection):
309
328
  """Manages EDB methods for stackup accessible from `Edb.stackup` property."""
@@ -632,23 +651,6 @@ class Stackup(LayerCollection):
632
651
  layer_list = list(self._layer_collection.Layers(self._pedb.edb_api.cell.layer_type_set.AllLayerSet))
633
652
  return [i.Clone() for i in layer_list]
634
653
 
635
- @property
636
- def layers(self):
637
- """Retrieve the dictionary of layers.
638
-
639
- Returns
640
- -------
641
- Dict[str, :class:`pyedb.dotnet.edb_core.edb_data.layer_data.LayerEdbClass`]
642
- """
643
- _lays = OrderedDict()
644
- for l in self._edb_layer_list:
645
- name = l.GetName()
646
- if not l.IsStackupLayer():
647
- _lays[name] = LayerEdbClass(self._pedb, l, name=name)
648
- else:
649
- _lays[name] = StackupLayerEdbClass(self._pedb, l, name=name)
650
- return _lays
651
-
652
654
  @property
653
655
  def signal_layers(self):
654
656
  """Retrieve the dictionary of signal layers.
@@ -742,8 +744,9 @@ class Stackup(LayerCollection):
742
744
  _lc.AddStackupLayerAtElevation(layer_clone)
743
745
  elif operation == "non_stackup":
744
746
  _lc.AddLayerBottom(layer_clone)
745
- self._pedb.layout.layer_collection = _lc
746
- self.refresh_layer_collection()
747
+ if self.auto_refresh:
748
+ self._pedb.layout.layer_collection = _lc
749
+ self.refresh_layer_collection()
747
750
  return True
748
751
 
749
752
  @pyedb_function_handler()
@@ -1042,11 +1045,15 @@ class Stackup(LayerCollection):
1042
1045
  def _export_layer_stackup_to_json(self, output_file=None, include_material_with_layer=False):
1043
1046
  if not include_material_with_layer:
1044
1047
  material_out = {}
1045
- for k, v in self._pedb.materials.materials.items():
1046
- material_out[k] = v._json_format()
1048
+ for material_name, material in self._pedb.materials.materials.items():
1049
+ material_out[material_name] = material.to_dict()
1047
1050
  layers_out = {}
1048
1051
  for k, v in self.stackup_layers.items():
1049
- layers_out[k] = v._json_format()
1052
+ data = v._json_format()
1053
+ # FIXME: Update the API to avoid providing following information to our users
1054
+ del data["pedb"]
1055
+ del data["edb_object"]
1056
+ layers_out[k] = data
1050
1057
  if v.material in self._pedb.materials.materials:
1051
1058
  layer_material = self._pedb.materials.materials[v.material]
1052
1059
  if not v.dielectric_fill:
@@ -1054,9 +1061,9 @@ class Stackup(LayerCollection):
1054
1061
  else:
1055
1062
  dielectric_fill = self._pedb.materials.materials[v.dielectric_fill]
1056
1063
  if include_material_with_layer:
1057
- layers_out[k]["material"] = layer_material._json_format()
1064
+ layers_out[k]["material"] = layer_material.to_dict()
1058
1065
  if dielectric_fill:
1059
- layers_out[k]["dielectric_fill"] = dielectric_fill._json_format()
1066
+ layers_out[k]["dielectric_fill"] = dielectric_fill.to_dict()
1060
1067
  if not include_material_with_layer:
1061
1068
  stackup_out = {"materials": material_out, "layers": layers_out}
1062
1069
  else:
@@ -2345,6 +2352,8 @@ class Stackup(LayerCollection):
2345
2352
  for i in temp_dict.keys():
2346
2353
  value = temp.get(i, None)
2347
2354
  if value:
2355
+ if i == "Thickness":
2356
+ value = str(round(float(value), 6)) + length_unit
2348
2357
  value = "signal" if value == "conductor" else value
2349
2358
  if i == "Color":
2350
2359
  value = [int(x * 255) for x in list(colors.to_rgb(value))]
@@ -2481,6 +2490,7 @@ class Stackup(LayerCollection):
2481
2490
  first_layer=None,
2482
2491
  last_layer=None,
2483
2492
  scale_elevation=True,
2493
+ show=True,
2484
2494
  ):
2485
2495
  """Plot current stackup and, optionally, overlap padstack definitions.
2486
2496
  Plot supports only 'Laminate' and 'Overlapping' stackup types.
@@ -2488,8 +2498,8 @@ class Stackup(LayerCollection):
2488
2498
  Parameters
2489
2499
  ----------
2490
2500
  save_plot : str, optional
2491
- If ``None`` the plot will be shown.
2492
- If a file path is specified the plot will be saved to such file.
2501
+ If a path is specified the plot will be saved in this location.
2502
+ If ``save_plot`` is provided, the ``show`` parameter is ignored.
2493
2503
  size : tuple, optional
2494
2504
  Image size in pixel (width, height). Default value is ``(2000, 1500)``
2495
2505
  plot_definitions : str, list, optional
@@ -2502,6 +2512,8 @@ class Stackup(LayerCollection):
2502
2512
  scale_elevation : bool, optional
2503
2513
  The real layer thickness is scaled so that max_thickness = 3 * min_thickness.
2504
2514
  Default is `True`.
2515
+ show : bool, optional
2516
+ Whether to show the plot or not. Default is `True`.
2505
2517
 
2506
2518
  Returns
2507
2519
  -------
@@ -2916,7 +2928,7 @@ class Stackup(LayerCollection):
2916
2928
  xlabel="",
2917
2929
  ylabel="",
2918
2930
  title="",
2919
- snapshot_path=None,
2931
+ save_plot=None,
2920
2932
  x_limits=[x_min, x_max],
2921
2933
  y_limits=[y_min, y_max],
2922
2934
  axis_equal=False,
@@ -2941,6 +2953,6 @@ class Stackup(LayerCollection):
2941
2953
  plt.tight_layout()
2942
2954
  if save_plot:
2943
2955
  plt.savefig(save_plot)
2944
- else:
2956
+ elif show:
2945
2957
  plt.show()
2946
2958
  return plt
@@ -56,8 +56,16 @@ class BaseSimulationSetup(object):
56
56
  "kDDRwizard": None,
57
57
  "kQ3D": None,
58
58
  "kNumSetupTypes": None,
59
- "kRaptorX": self._pedb.simsetupdata.RaptorX.RaptorXSimulationSettings,
60
59
  }
60
+
61
+ version = self._pedb.edbversion.split(".")
62
+ if int(version[0]) == 2024 and int(version[1]) == 2 or int(version[0]) > 2024:
63
+ self._setup_type_mapping.update(
64
+ {
65
+ "kRaptorX": self._pedb.simsetupdata.RaptorX.RaptorXSimulationSettings,
66
+ "kHFSSPI": self._pedb.simsetupdata.HFSSPISimulationSettings,
67
+ }
68
+ )
61
69
  if self._edb_object:
62
70
  self._name = self._edb_object.GetName()
63
71
 
@@ -73,7 +81,10 @@ class BaseSimulationSetup(object):
73
81
  setup_type = self._setup_type_mapping[self._setup_type]
74
82
  edb_setup_info = self._pedb.simsetupdata.SimSetupInfo[setup_type]()
75
83
  edb_setup_info.Name = name
76
- if edb_setup_info.get_SimSetupType().ToString() == "kRaptorX":
84
+ if (
85
+ edb_setup_info.get_SimSetupType().ToString() == "kRaptorX"
86
+ or edb_setup_info.get_SimSetupType().ToString() == "kHFSSPI"
87
+ ):
77
88
  self._edb_setup_info = edb_setup_info
78
89
  self._edb_object = self._set_edb_setup_info(edb_setup_info)
79
90
  self._update_setup()
@@ -99,6 +110,7 @@ class BaseSimulationSetup(object):
99
110
  "kQ3D": None,
100
111
  "kNumSetupTypes": None,
101
112
  }
113
+
102
114
  version = self._pedb.edbversion.split(".")
103
115
  if int(version[0]) == 2024 and int(version[1]) == 2 or int(version[0]) > 2024:
104
116
  setup_type_mapping["kRaptorX"] = utility.RaptorXSimulationSetup
@@ -167,7 +179,11 @@ class BaseSimulationSetup(object):
167
179
  def frequency_sweeps(self):
168
180
  """List of frequency sweeps."""
169
181
  temp = {}
170
- for i in list(self.get_sim_setup_info.SweepDataList):
182
+ if self.setup_type in ("kRaptorX", "kHFSSPI"):
183
+ sweep_data_list = self._edb_setup_info.SweepDataList
184
+ else:
185
+ sweep_data_list = self.get_sim_setup_info.SweepDataList
186
+ for i in list(sweep_data_list):
171
187
  temp[i.Name] = EdbFrequencySweep(self, None, i.Name, i)
172
188
  return temp
173
189
 
@@ -180,12 +196,12 @@ class BaseSimulationSetup(object):
180
196
  sweep_data: EdbFrequencySweep
181
197
  """
182
198
  self._sweep_list[sweep_data.name] = sweep_data
183
- if self.setup_type == "kRaptorX":
199
+ if self.setup_type in ["kRaptorX", "kHFSSPI"]:
184
200
  edb_setup_info = self._edb_setup_info
185
201
  else:
186
202
  edb_setup_info = self.get_sim_setup_info
187
203
 
188
- if self._setup_type in ["kSIwave", "kHFSS", "kRaptorX"]:
204
+ if self._setup_type in ["kSIwave", "kHFSS", "kRaptorX", "kHFSSPI"]:
189
205
  for _, v in self._sweep_list.items():
190
206
  edb_setup_info.SweepDataList.Add(v._edb_object)
191
207
 
pyedb/generic/plot.py CHANGED
@@ -41,7 +41,7 @@ def plot_matplotlib(
41
41
  xlabel="",
42
42
  ylabel="",
43
43
  title="",
44
- snapshot_path=None,
44
+ save_plot=None,
45
45
  x_limits=None,
46
46
  y_limits=None,
47
47
  axis_equal=False,
@@ -67,8 +67,9 @@ def plot_matplotlib(
67
67
  Plot Y label. Default is `""`.
68
68
  title : str, optional
69
69
  Plot Title label. Default is `""`.
70
- snapshot_path : str, optional
71
- Full path to image file if a snapshot is needed. Default is `None`.
70
+ save_plot : str, optional
71
+ If a path is specified the plot will be saved in this location.
72
+ If ``save_plot`` is provided, the ``show`` parameter is ignored.
72
73
  x_limits : list, optional
73
74
  List of x limits (left and right). Default is `None`.
74
75
  y_limits : list, optional
@@ -141,8 +142,8 @@ def plot_matplotlib(
141
142
  for annotation in annotations:
142
143
  plt.text(annotation[0], annotation[1], annotation[2], **annotation[3])
143
144
 
144
- if snapshot_path:
145
- plt.savefig(snapshot_path)
145
+ if save_plot:
146
+ plt.savefig(save_plot)
146
147
  elif show:
147
148
  plt.show()
148
149
  return plt
pyedb/siwave.py CHANGED
@@ -11,7 +11,7 @@ from __future__ import absolute_import # noreorder
11
11
  import os
12
12
  import pkgutil
13
13
  import sys
14
- import time
14
+ import warnings
15
15
 
16
16
  from pyedb.dotnet.clr_module import _clr
17
17
  from pyedb.edb_logger import pyedb_logger
@@ -22,6 +22,7 @@ from pyedb.generic.general_methods import (
22
22
  pyedb_function_handler,
23
23
  )
24
24
  from pyedb.misc.misc import list_installed_ansysem
25
+ from pyedb.siwave_core.icepak import Icepak
25
26
 
26
27
 
27
28
  class Siwave(object): # pragma no cover
@@ -215,6 +216,10 @@ class Siwave(object): # pragma no cover
215
216
  """Project."""
216
217
  return self._oproject
217
218
 
219
+ @property
220
+ def icepak(self):
221
+ return Icepak(self)
222
+
218
223
  @pyedb_function_handler()
219
224
  def open_project(self, proj_path=None):
220
225
  """Open a project.
@@ -334,17 +339,38 @@ class Siwave(object): # pragma no cover
334
339
  bool
335
340
  ``True`` when successful, ``False`` when failed.
336
341
 
342
+ """
343
+ warnings.warn("Use new property :func:`export_dc_simulation_report` instead.", DeprecationWarning)
344
+ return self.export_dc_simulation_report(simulation_name, file_path, bkground_color)
345
+
346
+ @pyedb_function_handler()
347
+ def export_dc_simulation_report(self, simulation_name, file_path, background_color="White"):
348
+ """Export the Siwave DC simulation report.
349
+
350
+ Parameters
351
+ ----------
352
+ simulation_name : str
353
+ Name of the setup.
354
+ file_path : str
355
+ Path to the exported report.
356
+ background_color : str, optional
357
+ Color of the report's background. The default is ``"White"``.
358
+
359
+ Returns
360
+ -------
361
+ bool
362
+ ``True`` when successful, ``False`` when failed.
363
+
337
364
  """
338
365
  self.oproject.ScrExportDcSimReportScaling("All", "All", -1, -1, False)
339
- self.oproject.ScrExportDcSimReport(simulation_name, bkground_color, file_path)
340
- while not os.path.exists(file_path):
341
- time.sleep(0.1)
342
- return True
366
+ flag = self.oproject.ScrExportDcSimReport(simulation_name, background_color, file_path)
367
+ return True if flag == 0 else False
343
368
 
344
369
  @pyedb_function_handler
345
- def run_dc_simulation(self):
370
+ def run_dc_simulation(self, export_dc_power_data_to_icepak=False):
346
371
  """Run DC simulation."""
347
372
  self._logger.info("Running DC simulation.")
373
+ self.oproject.ScrExportDcPowerDataToIcepak(export_dc_power_data_to_icepak)
348
374
  return self.oproject.ScrRunDcSimulation(1)
349
375
 
350
376
  @pyedb_function_handler
@@ -0,0 +1,153 @@
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
+ class Icepak:
25
+ """SIwave Icepak."""
26
+
27
+ def __init__(self, psiw):
28
+ self._psiw = psiw
29
+
30
+ def run(self, name, dc_simulation_name):
31
+ """Run Icepak analysis.
32
+
33
+ Parameters
34
+ ----------
35
+ name : str,
36
+ Name of the Icepak simulation.
37
+ dc_simulation_name: str
38
+ Name of the dc simulation.
39
+
40
+ Returns
41
+ -------
42
+
43
+ """
44
+ self._psiw._logger.info("Running Icepak simulation.")
45
+ flag = self._psiw.oproject.ScrRunIcepakSimulation(name, dc_simulation_name)
46
+ return True if flag == 0 else False
47
+
48
+ def set_meshing_detail(self, mesh_level=0):
49
+ """Sets the meshing detail level for Icepak simulations.
50
+
51
+ Parameters
52
+ ----------
53
+ mesh_level : int, optional
54
+ Meshing level.
55
+
56
+ Returns
57
+ -------
58
+
59
+ """
60
+ flag = self._psiw.oproject.ScrSetIcepakMeshingDetail({0: "basic", 1: "detailed", 2: "exhaustive"}[mesh_level])
61
+ return True if flag == 0 else False
62
+
63
+ def set_board_outline_fidelity(self, fidelity=2):
64
+ """Specifies the minimum edge length when modifying the board outline for export to Icepak. This
65
+ minimum edge length is used when indiscretion arcs into a series of straight lines and when
66
+ simplifying the outline to remove very small edges.
67
+
68
+ Parameters
69
+ ----------
70
+ fidelity : int, float, optional
71
+ Fidelity level in mm.
72
+
73
+ Returns
74
+ -------
75
+
76
+ """
77
+ flag = self._psiw.oproject.ScrSetIcepakBoardOutlineFidelity(fidelity)
78
+ return True if flag == 0 else False
79
+
80
+ def set_thermal_environment(
81
+ self,
82
+ convection=True,
83
+ force_air=True,
84
+ top_or_ambient_temperature=22,
85
+ top_or_overall_flow_direction="+X",
86
+ top_or_overall_flow_speed=2,
87
+ bottom_temperature=22,
88
+ bottom_flow_direction="+X",
89
+ bottom_flow_speed=2,
90
+ gravity_vector_x=0,
91
+ gravity_vector_y=0,
92
+ gravity_vector_z=9.8,
93
+ ):
94
+ """Sets the thermal environment settings to use for Icepak simulations.
95
+
96
+ Parameters
97
+ ----------
98
+ convection : bool, optional
99
+ force_air : bool, optional
100
+ top_or_ambient_temperature: int, float, optional
101
+ Temperature above PCB in degrees Celsius.
102
+ top_or_overall_flow_direction : str, optional
103
+ Flow direction above PCB.
104
+ top_or_overall_flow_speed : int, float, optional
105
+ Flow speed above PCB.
106
+ bottom_temperature : int, float, optional
107
+ Temperature below PCB in degrees Celsius.
108
+ bottom_flow_direction : str, optional
109
+ Flow direction below PCB.
110
+ bottom_flow_speed : int, float, optional
111
+ Flow speed below PCB.
112
+ gravity_vector_x : int, float, optional
113
+ Gravity vector x for natural convection.
114
+ gravity_vector_y : int, float, optional
115
+ Gravity vector y for natural convection.
116
+ gravity_vector_z : int, float, optional
117
+ Gravity vector z for natural convection.
118
+
119
+ Returns
120
+ -------
121
+
122
+ """
123
+ flag = self._psiw.oproject.ScrSetIcepakThermalEnv(
124
+ convection,
125
+ force_air,
126
+ top_or_ambient_temperature,
127
+ top_or_overall_flow_direction,
128
+ top_or_overall_flow_speed,
129
+ bottom_temperature,
130
+ bottom_flow_direction,
131
+ bottom_flow_speed,
132
+ gravity_vector_x,
133
+ gravity_vector_y,
134
+ gravity_vector_z,
135
+ )
136
+ return True if flag == 0 else False
137
+
138
+ def export_report(self, simulation_name, file_path):
139
+ """Export Icepak simulation report to a file.
140
+
141
+ Parameters
142
+ ----------
143
+ simulation_name : str
144
+ Name of the Icepak simulation.
145
+ file_path : str
146
+ Path to the report file.
147
+
148
+ Returns
149
+ -------
150
+
151
+ """
152
+ flag = self._psiw.oproject.ScrExportIcepakSimReport(simulation_name, file_path)
153
+ return True if flag == 0 else False
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyedb
3
- Version: 0.10.dev0
3
+ Version: 0.11.2
4
4
  Summary: Higher-Level Pythonic Ansys Electronics Data Base
5
5
  Author-email: "ANSYS, Inc." <pyansys.core@ansys.com>
6
6
  Maintainer-email: PyEDB developers <simon.vandenbrouck@ansys.com>
@@ -22,11 +22,11 @@ Requires-Dist: dotnetcore2 ==3.1.23;platform_system=='Linux'
22
22
  Requires-Dist: pydantic>=2.6.4,<2.8
23
23
  Requires-Dist: toml == 0.10.2
24
24
  Requires-Dist: Rtree >= 1.2.0
25
- Requires-Dist: ansys-sphinx-theme>=0.10.0,<0.16 ; extra == "doc"
25
+ Requires-Dist: ansys-sphinx-theme>=0.10.0,<0.17 ; extra == "doc"
26
26
  Requires-Dist: imageio>=2.30.0,<2.35 ; extra == "doc"
27
27
  Requires-Dist: ipython>=8.13.0,<8.25 ; extra == "doc"
28
28
  Requires-Dist: jupyterlab>=4.0.0,<4.3 ; extra == "doc"
29
- Requires-Dist: matplotlib>=3.5.0,<3.9 ; extra == "doc"
29
+ Requires-Dist: matplotlib>=3.5.0,<3.10 ; extra == "doc"
30
30
  Requires-Dist: nbsphinx>=0.9.0,<0.10 ; extra == "doc"
31
31
  Requires-Dist: numpydoc>=1.5.0,<1.8 ; extra == "doc"
32
32
  Requires-Dist: pypandoc>=1.10.0,<1.14 ; extra == "doc"
@@ -36,11 +36,11 @@ Requires-Dist: sphinx-autobuild==2024.2.4 ; extra == "doc" and ( python_version
36
36
  Requires-Dist: sphinx-autobuild==2024.2.4 ; extra == "doc" and ( python_version > '3.8')
37
37
  Requires-Dist: sphinx-copybutton>=0.5.0,<0.6 ; extra == "doc"
38
38
  Requires-Dist: sphinx-gallery>=0.14.0,<0.17 ; extra == "doc"
39
- Requires-Dist: sphinx_design>=0.4.0,<0.6 ; extra == "doc"
40
- Requires-Dist: matplotlib>=3.5.0,<3.9 ; extra == "full"
39
+ Requires-Dist: sphinx_design>=0.4.0,<0.7 ; extra == "doc"
40
+ Requires-Dist: matplotlib>=3.5.0,<3.10 ; extra == "full"
41
41
  Requires-Dist: numpy>=1.20.0,<2 ; extra == "full"
42
42
  Requires-Dist: pandas>=1.1.0,<2.3 ; extra == "full"
43
- Requires-Dist: matplotlib>=3.5.0,<3.9 ; extra == "tests"
43
+ Requires-Dist: matplotlib>=3.5.0,<3.10 ; extra == "tests"
44
44
  Requires-Dist: numpy>=1.20.0,<2 ; extra == "tests"
45
45
  Requires-Dist: mock>=5.1.0,<5.2 ; extra == "tests"
46
46
  Requires-Dist: pandas>=1.1.0,<2.3 ; extra == "tests"
@@ -1,29 +1,38 @@
1
- pyedb/__init__.py,sha256=PykRKseZ3Vjcieln23EB5nk51C24X0m0vkRvdK3BQm8,1524
1
+ pyedb/__init__.py,sha256=C795I8bcWORZf5IJiI-M1ZRxjImvymTFp4TDMevi0j0,1521
2
2
  pyedb/edb_logger.py,sha256=yNkXnoL2me7ubLT6O6r6ElVnkZ1g8fmfFYC_2XJZ1Sw,14950
3
3
  pyedb/exceptions.py,sha256=n94xluzUks6BA24vd_L6HkrvoP_H_l6__hQmqzdCyPo,111
4
- pyedb/siwave.py,sha256=ilUsA74QKy7VpRfmfvRrcVZhPAsyfgXHZm0SDDHiGBE,11576
4
+ pyedb/siwave.py,sha256=c2stPkGPdM9c0wJ19SJq_uiYTdW3sp-uO8MVA_iDw30,12548
5
5
  pyedb/configuration/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
- pyedb/configuration/cfg_data.py,sha256=5zkqMMfEWWYnAwXFVYZA4f-SRogpvXWvN3UOMGXDFUo,1887
7
- pyedb/configuration/cfg_ports.py,sha256=Pj30RbsbgY7_kpSdANXDGUbhaPBqQXGO7pSLBZ3bK7Y,5569
8
- pyedb/configuration/configuration.py,sha256=UqeR6Io8SJAZWVeVA4S6rxVq9DIHc4heoeUubmx5xt4,35124
6
+ pyedb/configuration/cfg_boundaries.py,sha256=ABjSlQCRMJNw1YX2B4aADNlLrrFbdyv7UWewiXVdxTk,6105
7
+ pyedb/configuration/cfg_components.py,sha256=cvQfMjh6HBTVzVuDI7A8zkEhtgraG25dJqHRH-FbkTA,8789
8
+ pyedb/configuration/cfg_data.py,sha256=ZThr2rpCj4axwrBr-aQWtiTztEhRAZb1pX-S3_92aJQ,3483
9
+ pyedb/configuration/cfg_general.py,sha256=dB5Tpird4uiyrseOe8-QlWKsat15TjMLar5I8VZME3c,1625
10
+ pyedb/configuration/cfg_nets.py,sha256=mJvN_ON4Qw5psNV3agXCQAhVJbRnBpRZu1Ti3b7QnMw,1879
11
+ pyedb/configuration/cfg_padstacks.py,sha256=dcZku_OuZ2XaL5Vs8BEJvdcdi1N8F0EMAYNwBSdkbt0,5412
12
+ pyedb/configuration/cfg_pin_groups.py,sha256=BAv-u1e8aPXSTBwUBzDkzRiXB2mfCqb60I5tTrwgI7Y,2877
13
+ pyedb/configuration/cfg_ports_sources.py,sha256=iY5GH_ff50bt3muz2w_k9_3VTj_Yigk8Iqfh37a7vRU,6816
14
+ pyedb/configuration/cfg_s_parameter_models.py,sha256=HPo4sgF5tVefUwgzlP8pDBVSZ1x_pY2EiOtA0-QXjc8,2854
15
+ pyedb/configuration/cfg_setup.py,sha256=zhq285s5P4s90Dm5s550ldwyIVO8aXiPjAwy87ipRXU,8791
16
+ pyedb/configuration/cfg_spice_models.py,sha256=5gr28-4u4uj4qY8vgYFAI_PgzOQp-wPgTMMc_WcAN_w,2434
17
+ pyedb/configuration/configuration.py,sha256=ykDlI3v8w8x-qWuV8PrwIAHVe9jmBwCb8OeJLfBF4lk,10965
9
18
  pyedb/dotnet/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
19
  pyedb/dotnet/clr_module.py,sha256=Mo13Of3DVSA5HR-5xZEXOiHApIKy52CUxtJ2gPkEu1A,3406
11
- pyedb/dotnet/edb.py,sha256=ezzRRR9pcpKtTSZA7DqyAHXXXB3uNPO7SHoNlFeOJ2E,171743
20
+ pyedb/dotnet/edb.py,sha256=I9mgl1CZbJ-_hQNWPct3f3P7m4Sm1KTsMN6Ko6njXmw,172980
12
21
  pyedb/dotnet/application/Variables.py,sha256=nov1kIyJO25iz8pvbU3MK1meMpRLwtISmzYqJhc7Ouo,79042
13
22
  pyedb/dotnet/application/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
23
  pyedb/dotnet/edb_core/__init__.py,sha256=nIRLJ8VZLcMAp12zmGsnZ5x2BEEl7q_Kj_KAOXxVjpQ,52
15
- pyedb/dotnet/edb_core/components.py,sha256=guxNCJalAnVEVjxSdxTvoaqgLtn9YGuu9Velh4aJu-0,103685
24
+ pyedb/dotnet/edb_core/components.py,sha256=hJCb-DJtv-9Zhmb-q9ZEgD4Ziu0_6lPQtHoCrswgTCg,105075
16
25
  pyedb/dotnet/edb_core/general.py,sha256=QP6lqNEcqCdj_hSKhfKbmJ2hGBOYkhjPtsVEmyrO8KU,4726
17
26
  pyedb/dotnet/edb_core/hfss.py,sha256=pKq46cZ08nKHc1s__hkco-tA3AiBi4vV0T7w6RyQrEI,69696
18
- pyedb/dotnet/edb_core/layout.py,sha256=Sde2-8E-sGiO0JvjY31ydlq0QZrVkutbT_afp1FkK0w,50907
27
+ pyedb/dotnet/edb_core/layout.py,sha256=rtfjWsa3YNBW9mxzKuRmvO5Ccy5d5byBt3OPa6bHlPI,51156
19
28
  pyedb/dotnet/edb_core/layout_validation.py,sha256=7Wj_VSAJOSA-RKOPgJXO-y9i6vfgJ4V9vxx0M1g1NUI,11798
20
29
  pyedb/dotnet/edb_core/materials.py,sha256=xgXImJ0gcOqCL3p0uQ1hdey_hBK4rkTIhj4MERDbS7E,43987
21
30
  pyedb/dotnet/edb_core/net_class.py,sha256=lr-7Z0Q1A2fshxwjrIOmQSZnEBYe0NoxuUuJT6vYdyA,11857
22
- pyedb/dotnet/edb_core/nets.py,sha256=EK-jjRFvRX_NtqMQ46ebJbv9HOvP1uYK_EZ3jPnmxB0,43882
31
+ pyedb/dotnet/edb_core/nets.py,sha256=ZQ5sk7cgTQJTbHd7JQa7MmBBV_crsWGtcLhKpSbfYMw,44042
23
32
  pyedb/dotnet/edb_core/obj_base.py,sha256=lufR0sZj0QfZ2wlNvLL6aM1KVqCNY2A7taPPdWcK20w,3312
24
- pyedb/dotnet/edb_core/padstack.py,sha256=h9NYecM5_Z00KeMkli-Sm97btbvnJsz2COSmyWfoVHA,56581
25
- pyedb/dotnet/edb_core/siwave.py,sha256=wdLAKiz0Qhiktz3OPekBQtw_y2Kb8Vyk19QdF-FcUVU,62356
26
- pyedb/dotnet/edb_core/stackup.py,sha256=7LpRWcE8V_zT5tZiZfvwV2e-C-wj3Lo4TA2rvbiCxoU,122296
33
+ pyedb/dotnet/edb_core/padstack.py,sha256=PqXkSfyLRtdehm72sYiVMBUkNlDkivJ-eRoQWCzwNgw,57439
34
+ pyedb/dotnet/edb_core/siwave.py,sha256=481ePzP0il60Bu_FqL2NcdcFTWNIBXd8OKnSigPefw8,62419
35
+ pyedb/dotnet/edb_core/stackup.py,sha256=rg2LnxUyfd9Nnrj9uAd-0dkr65TQk7iMe0lS6cglaFc,122900
27
36
  pyedb/dotnet/edb_core/cell/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
28
37
  pyedb/dotnet/edb_core/cell/hierarchy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
29
38
  pyedb/dotnet/edb_core/cell/hierarchy/model.py,sha256=cJzNJLiuuoesfCL8-jWo8LbgGbfXrTYNQqmeeE38ieM,3309
@@ -44,33 +53,36 @@ pyedb/dotnet/edb_core/edb_data/control_file.py,sha256=2Gfrs8qW3N7y0A8ynAlKQpA6q9
44
53
  pyedb/dotnet/edb_core/edb_data/design_options.py,sha256=RO9ip-T5Bfxpsl97_QEk0qDZsza3tLzIX2t25XLutys,2057
45
54
  pyedb/dotnet/edb_core/edb_data/edbvalue.py,sha256=Vj_11HXsQUNavizKp5FicORm6cjhXRh9uvxhv_D_RJc,1977
46
55
  pyedb/dotnet/edb_core/edb_data/hfss_extent_info.py,sha256=5koQSKdYC6Deh4haLUDAxnHlRa-j5S6g4eyAfiGgZP8,13190
56
+ pyedb/dotnet/edb_core/edb_data/hfss_pi_simulation_setup_data.py,sha256=v3z3h_27v3jRmDXqUjBS8P6UZMi-zuZQrZiYbE-RDw4,15657
47
57
  pyedb/dotnet/edb_core/edb_data/hfss_simulation_setup_data.py,sha256=rXzh95N_jLf6a3OEEJRm50qFX0rM6lS5B5osnKlVzf4,49037
48
58
  pyedb/dotnet/edb_core/edb_data/layer_data.py,sha256=HVPmE_Rny29J1c8qlJ3TSNZaMOTSxTgE9_vIiQJG0cE,25900
49
- pyedb/dotnet/edb_core/edb_data/nets_data.py,sha256=iULEOUsn3sfLT5FVY_4lMWTm0KzC-01AZ-aYIkM0U-k,9933
50
- pyedb/dotnet/edb_core/edb_data/padstacks_data.py,sha256=T7m7s5KAZB-gZ9wrPw6k2Yoon6uwCfJSOeg2hvyX1LI,78754
59
+ pyedb/dotnet/edb_core/edb_data/nets_data.py,sha256=iBegT3fa5DwvjD0Wfd-wlJztFrb33I5v6nzSUhNS6-I,10099
60
+ pyedb/dotnet/edb_core/edb_data/padstacks_data.py,sha256=5qq4QohTLkwo-xfk2lXFM8Pria8ZYfZRc5B3XgdboGE,79342
51
61
  pyedb/dotnet/edb_core/edb_data/ports.py,sha256=FYxB2rDUtN_OsYAbodXbc5mA_d0BUebmin_B5kkUw3U,9223
52
62
  pyedb/dotnet/edb_core/edb_data/primitives_data.py,sha256=veMDPCb6T84KZ_xgo52g7vHxObsx-Y2ysWXBS2CqZpQ,48155
53
- pyedb/dotnet/edb_core/edb_data/raptor_x_simulation_setup_data.py,sha256=FPQ1myUhmBAyyAsqPQZnr0Y-_k-tvq-JhQtESp3ea0g,21065
63
+ pyedb/dotnet/edb_core/edb_data/raptor_x_simulation_setup_data.py,sha256=Km1sjDVA0vSBOn8u2mMASPEGULQb3h-ZeSK-0Kymzqk,20962
54
64
  pyedb/dotnet/edb_core/edb_data/simulation_configuration.py,sha256=FVytbP5wx1lWS6708_JfB2aVXjAeTzTH0-3CeMLMdv8,101304
55
- pyedb/dotnet/edb_core/edb_data/siwave_simulation_setup_data.py,sha256=fPmdhh6t6HM2pE_mQCT0ZQYO-PkqhwumwiuRUNEn00Q,42354
56
- pyedb/dotnet/edb_core/edb_data/sources.py,sha256=XmdpOdlpBa3QiYFY0cRtVIolt4nvUR9Ptk5YnRVvU4c,15342
57
- pyedb/dotnet/edb_core/edb_data/terminals.py,sha256=m2kch7Md-MSGUEbKFW8m8RpBzq6lNMFdgPgOtDUbsMA,25287
65
+ pyedb/dotnet/edb_core/edb_data/siwave_simulation_setup_data.py,sha256=T6LP6-D0sCFYw6d9I1eu01jAKXQvEz7Kn0mlUf65Hdc,42394
66
+ pyedb/dotnet/edb_core/edb_data/sources.py,sha256=9_j3r7tUpDQbDnIRpSsRZJ_Z3gk7Cw_wGkeQWtPnhZQ,15902
67
+ pyedb/dotnet/edb_core/edb_data/terminals.py,sha256=AV6Mj-roevf4-HlmQhgJjxMsUlRabJncCFXI9mZwhY0,25364
58
68
  pyedb/dotnet/edb_core/edb_data/utilities.py,sha256=3wZqOJ35eisOwOPKOs-bvJ8kmd62e46EiFuiFtsroB4,4928
59
69
  pyedb/dotnet/edb_core/edb_data/variables.py,sha256=LS1jZPOYgRvf4cyKf_x8hI9Brs-qbh4wrHu_QGLElrg,3501
60
70
  pyedb/dotnet/edb_core/geometry/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
61
71
  pyedb/dotnet/edb_core/geometry/point_data.py,sha256=hC9cRuSnX4cwg09Jr0ZK7ZTjFf_4NwXJMGbZ3s-ULpQ,1590
62
72
  pyedb/dotnet/edb_core/geometry/polygon_data.py,sha256=K1jwj6gXm4KFqrPGJmtc49bSDZl1ytmrLdJ81VEJtco,2990
73
+ pyedb/dotnet/edb_core/sim_setup_data/__init__.py,sha256=8jByHkoaowAYQTCww-zRrTQmN061fLz_OHjTLSrzQQY,58
74
+ pyedb/dotnet/edb_core/sim_setup_data/data/__init__.py,sha256=8jByHkoaowAYQTCww-zRrTQmN061fLz_OHjTLSrzQQY,58
75
+ pyedb/dotnet/edb_core/sim_setup_data/data/siw_dc_ir_settings.py,sha256=b7Zpg6nNQArYxvdxlVhXDzvvCSC5sKFvdt10b0MHkvc,8605
63
76
  pyedb/dotnet/edb_core/utilities/__init__.py,sha256=8jByHkoaowAYQTCww-zRrTQmN061fLz_OHjTLSrzQQY,58
64
77
  pyedb/dotnet/edb_core/utilities/heatsink.py,sha256=7G7Yx9TxbL5EAiR51MnhdRiAQBVf-d0hKsXDw5OYX2Q,2220
65
- pyedb/dotnet/edb_core/utilities/simulation_setup.py,sha256=WuAY_eC3gISpp6aVcF_rgezQQqifvPdEQZGyyRUFpTY,24639
66
- pyedb/dotnet/sim_setup_data/data/siw_dc_ir_settings.py,sha256=urJvgBJOgF3Td527z98vdqAtBBKC3yomcAL3fOTt7xs,1931
78
+ pyedb/dotnet/edb_core/utilities/simulation_setup.py,sha256=CsJxL8Q-tdgsybubB_HqIs9q8qJ675xp-ie9qh8kikE,25264
67
79
  pyedb/generic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
68
80
  pyedb/generic/constants.py,sha256=prWLZH0-SeBIVK6LHZ4SGZFQCofuym2TuQYfdqwhuSQ,28956
69
81
  pyedb/generic/data_handlers.py,sha256=oyYFwdjt0CxdOxgFDmnBlOFICt2twFLsMyELuQ1kFjE,7137
70
82
  pyedb/generic/design_types.py,sha256=qHyIaz-Vd3ra4CP9xER76-nGRonYmSAiI3Dr8YPUeH8,4354
71
83
  pyedb/generic/filesystem.py,sha256=SwvXv1T05SrC9TPtK88joQoU5Ab7hYjrp5NncFeH7kM,3941
72
84
  pyedb/generic/general_methods.py,sha256=ifabLBxrYmah2XOMyKrx-G53DJlfPY9hgAW8NT4e73U,43608
73
- pyedb/generic/plot.py,sha256=1P9jxzpZDKy7FobBkqezcU8c-Xq5trxS6iBNNLXpFJ0,4901
85
+ pyedb/generic/plot.py,sha256=eiCX82gyQhFAwbZgs3biR7BvGKgLA0yGHrk7kt0_7r0,4954
74
86
  pyedb/generic/process.py,sha256=9goCXrW3Su-8WuV5f6YqzY-Pl9EMFEd50KFN5AJXZGc,11206
75
87
  pyedb/generic/settings.py,sha256=QTX5OVZ8sVPIy_QaSxRODUWvoXkYkVpzh3l6pQPseKQ,9220
76
88
  pyedb/ipc2581/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -135,7 +147,8 @@ pyedb/misc/siw_feature_config/emc/net_tags.py,sha256=HVYOQacmaLr6Mvf7FqZhqbhtqJL
135
147
  pyedb/misc/siw_feature_config/emc/tag_library.py,sha256=yUK4w3hequU017E2DbkA4KE2MWIh1R6bfJBrevlDx6g,1557
136
148
  pyedb/misc/siw_feature_config/emc/xml_generic.py,sha256=55X-V0OxWq-v7FTiDVjaZif8V_2xxsvJlJ8bs9Bf61I,2521
137
149
  pyedb/modeler/geometry_operators.py,sha256=LDqEaeerw9H8Yva-SJhX3Afdni08OciO9t5G0c_tdqs,66820
138
- pyedb-0.10.dev0.dist-info/LICENSE,sha256=qQWivZ12ETN5l3QxvTARY-QI5eoRRlyHdwLlAj0Bg5I,1089
139
- pyedb-0.10.dev0.dist-info/WHEEL,sha256=EZbGkh7Ie4PoZfRQ8I0ZuP9VklN_TvcZ6DSE5Uar4z4,81
140
- pyedb-0.10.dev0.dist-info/METADATA,sha256=KN-2OTvEn6-z8cWu1XV6Hc_qbW--qmLNif9rKsX9ysY,8354
141
- pyedb-0.10.dev0.dist-info/RECORD,,
150
+ pyedb/siwave_core/icepak.py,sha256=WnZ-t8mik7LDY06V8hZFV-TxRZJQWK7bu_8Ichx-oBs,5206
151
+ pyedb-0.11.2.dist-info/LICENSE,sha256=qQWivZ12ETN5l3QxvTARY-QI5eoRRlyHdwLlAj0Bg5I,1089
152
+ pyedb-0.11.2.dist-info/WHEEL,sha256=EZbGkh7Ie4PoZfRQ8I0ZuP9VklN_TvcZ6DSE5Uar4z4,81
153
+ pyedb-0.11.2.dist-info/METADATA,sha256=0SFV34c7Ruuce3RSxmS8ChPUdCVNsKZyhjja6m_2FXM,8354
154
+ pyedb-0.11.2.dist-info/RECORD,,