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.
- pyedb/__init__.py +1 -1
- pyedb/configuration/cfg_boundaries.py +115 -0
- pyedb/configuration/cfg_components.py +205 -0
- pyedb/configuration/cfg_data.py +38 -15
- pyedb/configuration/cfg_general.py +34 -0
- pyedb/{dotnet/sim_setup_data/data/siw_dc_ir_settings.py → configuration/cfg_nets.py} +18 -21
- pyedb/configuration/cfg_padstacks.py +125 -0
- pyedb/configuration/cfg_pin_groups.py +58 -0
- pyedb/configuration/cfg_ports_sources.py +164 -0
- pyedb/configuration/cfg_s_parameter_models.py +60 -0
- pyedb/configuration/cfg_setup.py +201 -0
- pyedb/configuration/cfg_spice_models.py +49 -0
- pyedb/configuration/configuration.py +37 -532
- pyedb/dotnet/edb.py +37 -8
- pyedb/dotnet/edb_core/components.py +43 -0
- pyedb/dotnet/edb_core/edb_data/hfss_pi_simulation_setup_data.py +465 -0
- pyedb/dotnet/edb_core/edb_data/nets_data.py +6 -2
- pyedb/dotnet/edb_core/edb_data/padstacks_data.py +17 -1
- pyedb/dotnet/edb_core/edb_data/raptor_x_simulation_setup_data.py +0 -4
- pyedb/dotnet/edb_core/edb_data/siwave_simulation_setup_data.py +4 -2
- pyedb/dotnet/edb_core/edb_data/sources.py +21 -5
- pyedb/dotnet/edb_core/edb_data/terminals.py +2 -1
- pyedb/dotnet/edb_core/layout.py +13 -8
- pyedb/dotnet/edb_core/nets.py +7 -3
- pyedb/dotnet/edb_core/padstack.py +23 -3
- pyedb/dotnet/edb_core/sim_setup_data/__init__.py +3 -0
- pyedb/dotnet/edb_core/sim_setup_data/data/__init__.py +3 -0
- pyedb/dotnet/edb_core/sim_setup_data/data/siw_dc_ir_settings.py +235 -0
- pyedb/dotnet/edb_core/siwave.py +2 -1
- pyedb/dotnet/edb_core/stackup.py +45 -33
- pyedb/dotnet/edb_core/utilities/simulation_setup.py +21 -5
- pyedb/generic/plot.py +6 -5
- pyedb/siwave.py +32 -6
- pyedb/siwave_core/icepak.py +153 -0
- {pyedb-0.10.dev0.dist-info → pyedb-0.11.2.dist-info}/METADATA +6 -6
- {pyedb-0.10.dev0.dist-info → pyedb-0.11.2.dist-info}/RECORD +38 -25
- pyedb/configuration/cfg_ports.py +0 -149
- {pyedb-0.10.dev0.dist-info → pyedb-0.11.2.dist-info}/LICENSE +0 -0
- {pyedb-0.10.dev0.dist-info → pyedb-0.11.2.dist-info}/WHEEL +0 -0
pyedb/dotnet/edb_core/stackup.py
CHANGED
|
@@ -73,11 +73,12 @@ class LayerCollection(object):
|
|
|
73
73
|
|
|
74
74
|
def __init__(self, pedb, edb_object=None):
|
|
75
75
|
self._pedb = pedb
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
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.
|
|
746
|
-
|
|
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
|
|
1046
|
-
material_out[
|
|
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
|
-
|
|
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.
|
|
1064
|
+
layers_out[k]["material"] = layer_material.to_dict()
|
|
1058
1065
|
if dielectric_fill:
|
|
1059
|
-
layers_out[k]["dielectric_fill"] = dielectric_fill.
|
|
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
|
|
2492
|
-
If
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
71
|
-
|
|
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
|
|
145
|
-
plt.savefig(
|
|
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
|
|
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,
|
|
340
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
40
|
-
Requires-Dist: matplotlib>=3.5.0,<3.
|
|
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.
|
|
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=
|
|
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=
|
|
4
|
+
pyedb/siwave.py,sha256=c2stPkGPdM9c0wJ19SJq_uiYTdW3sp-uO8MVA_iDw30,12548
|
|
5
5
|
pyedb/configuration/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
6
|
-
pyedb/configuration/
|
|
7
|
-
pyedb/configuration/
|
|
8
|
-
pyedb/configuration/
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
25
|
-
pyedb/dotnet/edb_core/siwave.py,sha256=
|
|
26
|
-
pyedb/dotnet/edb_core/stackup.py,sha256=
|
|
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=
|
|
50
|
-
pyedb/dotnet/edb_core/edb_data/padstacks_data.py,sha256=
|
|
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=
|
|
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=
|
|
56
|
-
pyedb/dotnet/edb_core/edb_data/sources.py,sha256=
|
|
57
|
-
pyedb/dotnet/edb_core/edb_data/terminals.py,sha256=
|
|
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=
|
|
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=
|
|
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
|
|
139
|
-
pyedb-0.
|
|
140
|
-
pyedb-0.
|
|
141
|
-
pyedb-0.
|
|
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,,
|