pyedb 0.12.0__py3-none-any.whl → 0.12.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.
- pyedb/__init__.py +1 -1
- pyedb/configuration/cfg_data.py +14 -2
- pyedb/configuration/cfg_pin_groups.py +1 -1
- pyedb/configuration/configuration.py +23 -36
- pyedb/dotnet/edb.py +1 -3
- pyedb/dotnet/edb_core/edb_data/layer_data.py +2 -2
- pyedb/dotnet/edb_core/stackup.py +40 -61
- {pyedb-0.12.0.dist-info → pyedb-0.12.1.dist-info}/METADATA +1 -1
- {pyedb-0.12.0.dist-info → pyedb-0.12.1.dist-info}/RECORD +11 -11
- {pyedb-0.12.0.dist-info → pyedb-0.12.1.dist-info}/LICENSE +0 -0
- {pyedb-0.12.0.dist-info → pyedb-0.12.1.dist-info}/WHEEL +0 -0
pyedb/__init__.py
CHANGED
pyedb/configuration/cfg_data.py
CHANGED
|
@@ -39,30 +39,42 @@ class CfgData(object):
|
|
|
39
39
|
self.pedb = pedb
|
|
40
40
|
self.edb_comps = self.pedb.components.components
|
|
41
41
|
self.general = CfgGeneral(self, kwargs.get("general", None))
|
|
42
|
+
|
|
42
43
|
self.boundaries = {}
|
|
43
44
|
if kwargs.get("boundaries", None):
|
|
44
45
|
self.boundaries = CfgBoundaries(self, kwargs.get("boundaries", None))
|
|
45
|
-
|
|
46
|
+
|
|
47
|
+
self.nets = None
|
|
46
48
|
if kwargs.get("nets"):
|
|
47
49
|
self.nets = CfgNets(
|
|
48
50
|
self, kwargs.get("nets", {}).get("signal_nets", []), kwargs.get("nets", {}).get("power_ground_nets", [])
|
|
49
51
|
)
|
|
52
|
+
|
|
50
53
|
self.components = [CfgComponent(self, **component) for component in kwargs.get("components", [])]
|
|
54
|
+
|
|
51
55
|
self.padstacks = CfgPadstacks(self, kwargs.get("padstacks", None))
|
|
56
|
+
|
|
52
57
|
self.pin_groups = [CfgPinGroup(self, pin_group) for pin_group in kwargs.get("pin_groups", [])]
|
|
58
|
+
|
|
53
59
|
self.ports = [CfgPort(self, **port) for port in kwargs.get("ports", [])]
|
|
60
|
+
|
|
54
61
|
self.sources = [CfgSources(self, **source) for source in kwargs.get("sources", [])]
|
|
55
|
-
|
|
62
|
+
|
|
63
|
+
self.setups = []
|
|
56
64
|
if kwargs.get("setups", None):
|
|
57
65
|
self.setups = [CfgSetup(self, setup) for setup in kwargs.get("setups", [])]
|
|
66
|
+
|
|
58
67
|
self.stackup = None
|
|
68
|
+
|
|
59
69
|
self.s_parameters = [
|
|
60
70
|
CfgSParameterModel(self, self.general.s_parameter_library, sparam_model)
|
|
61
71
|
for sparam_model in kwargs.get("s_parameters", [])
|
|
62
72
|
]
|
|
73
|
+
|
|
63
74
|
self.spice_models = [
|
|
64
75
|
CfgSpiceModel(self, self.general.spice_model_library, spice_model)
|
|
65
76
|
for spice_model in kwargs.get("spice_models", [])
|
|
66
77
|
]
|
|
78
|
+
|
|
67
79
|
self.package_definition = None
|
|
68
80
|
self.operations = None
|
|
@@ -36,7 +36,7 @@ class CfgPinGroup:
|
|
|
36
36
|
"""Apply pin group on layout."""
|
|
37
37
|
if self.pins:
|
|
38
38
|
if not self._pedb.siwave.create_pin_group(self.reference_designator, list(self.pins), self.name):
|
|
39
|
-
self._pedb.
|
|
39
|
+
self._pedb.logger.error(f"Failed to create pin group on pins {self.pins}")
|
|
40
40
|
return False
|
|
41
41
|
self._pedb.logger.info(f"Pin group {self.name} created.")
|
|
42
42
|
return True
|
|
@@ -27,7 +27,6 @@ import toml
|
|
|
27
27
|
|
|
28
28
|
from pyedb.configuration.cfg_data import CfgData
|
|
29
29
|
from pyedb.dotnet.edb_core.definition.package_def import PackageDef
|
|
30
|
-
from pyedb.dotnet.edb_core.stackup import LayerCollection
|
|
31
30
|
from pyedb.generic.general_methods import pyedb_function_handler
|
|
32
31
|
|
|
33
32
|
|
|
@@ -182,56 +181,44 @@ class Configuration:
|
|
|
182
181
|
layers = data.get("layers")
|
|
183
182
|
|
|
184
183
|
if layers:
|
|
185
|
-
lc = self._pedb.stackup
|
|
186
184
|
input_signal_layers = [i for i in layers if i["type"].lower() == "signal"]
|
|
187
|
-
if not len(input_signal_layers) == len(
|
|
185
|
+
if not len(input_signal_layers) == len(self._pedb.stackup.signal_layers):
|
|
188
186
|
self._pedb.logger.error("Input signal layer count do not match.")
|
|
189
187
|
return False
|
|
190
188
|
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
for name, obj in
|
|
194
|
-
if obj.
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
# add all signal layers
|
|
189
|
+
removal_list = []
|
|
190
|
+
lc_signal_layers = []
|
|
191
|
+
for name, obj in self._pedb.stackup.all_layers.items():
|
|
192
|
+
if obj.type == "dielectric":
|
|
193
|
+
removal_list.append(name)
|
|
194
|
+
elif obj.type == "signal":
|
|
195
|
+
lc_signal_layers.append(obj.id)
|
|
196
|
+
for l in removal_list:
|
|
197
|
+
self._pedb.stackup.remove_layer(l)
|
|
198
|
+
|
|
199
|
+
# update all signal layers
|
|
200
|
+
id_name = {i[0]: i[1] for i in self._pedb.stackup.layers_by_id}
|
|
201
|
+
signal_idx = 0
|
|
206
202
|
for l in layers:
|
|
207
203
|
if l["type"] == "signal":
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
# add all document layers at bottom
|
|
214
|
-
for l in doc_layer_clones:
|
|
215
|
-
doc_layer = lc_new.add_document_layer(name=l.name, layer_clone=l)
|
|
216
|
-
first_doc_layer_name = doc_layer.name
|
|
204
|
+
layer_id = lc_signal_layers[signal_idx]
|
|
205
|
+
layer_name = id_name[layer_id]
|
|
206
|
+
self._pedb.stackup.layers[layer_name].update(**l)
|
|
207
|
+
signal_idx = signal_idx + 1
|
|
217
208
|
|
|
218
209
|
# add all dielectric layers. Dielectric layers must be added last. Otherwise,
|
|
219
210
|
# dielectric layer will occupy signal and document layer id.
|
|
220
211
|
prev_layer_clone = None
|
|
221
212
|
l = layers.pop(0)
|
|
222
213
|
if l["type"] == "signal":
|
|
223
|
-
prev_layer_clone =
|
|
214
|
+
prev_layer_clone = self._pedb.stackup.layers[l["name"]]
|
|
224
215
|
else:
|
|
225
|
-
prev_layer_clone =
|
|
216
|
+
prev_layer_clone = self._pedb.stackup.add_layer_top(**l)
|
|
226
217
|
for idx, l in enumerate(layers):
|
|
227
218
|
if l["type"] == "dielectric":
|
|
228
|
-
prev_layer_clone =
|
|
229
|
-
|
|
230
|
-
prev_layer_clone =
|
|
231
|
-
|
|
232
|
-
lc._edb_object = lc_new._edb_object
|
|
233
|
-
lc_new.auto_refresh = True
|
|
234
|
-
lc.update_layout()
|
|
219
|
+
prev_layer_clone = self._pedb.stackup.add_layer_below(base_layer_name=prev_layer_clone.name, **l)
|
|
220
|
+
elif l["type"] == "signal":
|
|
221
|
+
prev_layer_clone = self._pedb.stackup.layers[l["name"]]
|
|
235
222
|
|
|
236
223
|
@pyedb_function_handler
|
|
237
224
|
def _load_operations(self):
|
pyedb/dotnet/edb.py
CHANGED
|
@@ -846,9 +846,7 @@ class Edb(Database):
|
|
|
846
846
|
>>> edbapp.stackup.layers["TOP"].thickness == 4e-05
|
|
847
847
|
>>> edbapp.stackup.add_layer("Diel", "GND", layer_type="dielectric", thickness="0.1mm", material="FR4_epoxy")
|
|
848
848
|
"""
|
|
849
|
-
|
|
850
|
-
self._stackup2 = Stackup(self, self.layout.layer_collection)
|
|
851
|
-
return self._stackup2
|
|
849
|
+
return Stackup(self, self.layout.layer_collection)
|
|
852
850
|
|
|
853
851
|
@property
|
|
854
852
|
def materials(self):
|
|
@@ -257,8 +257,8 @@ class StackupLayerEdbClass(LayerEdbClass):
|
|
|
257
257
|
self._lower_elevation = 0.0
|
|
258
258
|
|
|
259
259
|
def _create(self, layer_type):
|
|
260
|
-
|
|
261
|
-
layer_type = self._layer_type_mapping[
|
|
260
|
+
layer_type_edb_name = self._layer_name_mapping[layer_type]
|
|
261
|
+
layer_type = self._layer_type_mapping[layer_type_edb_name]
|
|
262
262
|
self._edb_object = self._pedb.edb_api.cell._cell.StackupLayer(
|
|
263
263
|
self._name,
|
|
264
264
|
layer_type,
|
pyedb/dotnet/edb_core/stackup.py
CHANGED
|
@@ -69,8 +69,6 @@ logger = logging.getLogger(__name__)
|
|
|
69
69
|
|
|
70
70
|
|
|
71
71
|
class LayerCollection(object):
|
|
72
|
-
auto_refresh = True
|
|
73
|
-
|
|
74
72
|
def __init__(self, pedb, edb_object=None):
|
|
75
73
|
self._pedb = pedb
|
|
76
74
|
|
|
@@ -91,17 +89,21 @@ class LayerCollection(object):
|
|
|
91
89
|
"multizone": self._pedb.edb_api.cell._cell.LayerCollectionMode.MultiZone,
|
|
92
90
|
}
|
|
93
91
|
|
|
94
|
-
def update_layout(self
|
|
92
|
+
def update_layout(self):
|
|
95
93
|
"""Set layer collection into edb.
|
|
96
94
|
|
|
97
95
|
Parameters
|
|
98
96
|
----------
|
|
99
97
|
stackup
|
|
100
98
|
"""
|
|
101
|
-
if stackup:
|
|
102
|
-
self._edb_object = stackup._edb_object
|
|
103
99
|
self._pedb.layout.layer_collection = self._edb_object
|
|
104
100
|
|
|
101
|
+
@pyedb_function_handler()
|
|
102
|
+
def refresh_layer_collection(self):
|
|
103
|
+
"""Refresh layer collection from Edb. This method is run on demand after all edit operations on stackup."""
|
|
104
|
+
self._edb_object = self._pedb.edb_api.cell._cell.LayerCollection(self._pedb.layout.layer_collection)
|
|
105
|
+
self._lc = self._edb_object
|
|
106
|
+
|
|
105
107
|
@pyedb_function_handler
|
|
106
108
|
def _add_layer(self, add_method, base_layer_name="", **kwargs):
|
|
107
109
|
"""Add a layer to edb.
|
|
@@ -115,7 +117,13 @@ class LayerCollection(object):
|
|
|
115
117
|
if layer_clone:
|
|
116
118
|
obj = layer_clone
|
|
117
119
|
else:
|
|
118
|
-
|
|
120
|
+
layer_type = kwargs.get("layer_type", None)
|
|
121
|
+
if not layer_type:
|
|
122
|
+
layer_type = kwargs["type"]
|
|
123
|
+
if layer_type in ["signal", "dielectric"]:
|
|
124
|
+
obj = StackupLayerEdbClass(self._pedb, edb_object=None, **kwargs)
|
|
125
|
+
else:
|
|
126
|
+
obj = LayerEdbClass(self._pedb, edb_object=None, **kwargs)
|
|
119
127
|
method_top_bottom = None
|
|
120
128
|
method_above_below = None
|
|
121
129
|
if add_method == "add_layer_top":
|
|
@@ -134,8 +142,7 @@ class LayerCollection(object):
|
|
|
134
142
|
obj = obj if method_top_bottom(obj._edb_object) else False
|
|
135
143
|
elif method_above_below:
|
|
136
144
|
obj = obj if method_above_below(obj._edb_object, base_layer_name) else False
|
|
137
|
-
|
|
138
|
-
self.update_layout()
|
|
145
|
+
self.update_layout()
|
|
139
146
|
return obj
|
|
140
147
|
|
|
141
148
|
@pyedb_function_handler
|
|
@@ -268,8 +275,7 @@ class LayerCollection(object):
|
|
|
268
275
|
lc.AddLayerBottom(i._edb_object)
|
|
269
276
|
|
|
270
277
|
self._edb_object = lc
|
|
271
|
-
|
|
272
|
-
self.update_layout()
|
|
278
|
+
self.update_layout()
|
|
273
279
|
|
|
274
280
|
if not obj:
|
|
275
281
|
logger.info("Layer clone was not found in stackup or non stackup layers.")
|
|
@@ -278,33 +284,32 @@ class LayerCollection(object):
|
|
|
278
284
|
@property
|
|
279
285
|
def stackup_layers(self):
|
|
280
286
|
"""Retrieve the dictionary of signal and dielectric layers."""
|
|
281
|
-
|
|
282
|
-
layers
|
|
283
|
-
for i in temp:
|
|
284
|
-
name = i.GetName()
|
|
285
|
-
layers[name] = StackupLayerEdbClass(self._pedb, i.Clone(), name=name)
|
|
286
|
-
return layers
|
|
287
|
+
warnings.warn("Use new property :func:`layers` instead.", DeprecationWarning)
|
|
288
|
+
return self.layers
|
|
287
289
|
|
|
288
290
|
@property
|
|
289
291
|
def non_stackup_layers(self):
|
|
290
292
|
"""Retrieve the dictionary of signal layers."""
|
|
291
|
-
|
|
292
|
-
layers = OrderedDict()
|
|
293
|
-
for i in temp:
|
|
294
|
-
name = i.GetName()
|
|
295
|
-
layers[name] = LayerEdbClass(self._pedb, i, name=name)
|
|
296
|
-
return layers
|
|
293
|
+
return {name: obj for name, obj in self.all_layers.items() if not obj.is_stackup_layer}
|
|
297
294
|
|
|
298
295
|
@property
|
|
299
|
-
def
|
|
300
|
-
|
|
301
|
-
layer_list = list(self.
|
|
302
|
-
temp =
|
|
296
|
+
def all_layers(self):
|
|
297
|
+
self.refresh_layer_collection()
|
|
298
|
+
layer_list = list(self._edb_object.Layers(self._pedb.edb_api.cell.layer_type_set.AllLayerSet))
|
|
299
|
+
temp = dict()
|
|
303
300
|
for i in layer_list:
|
|
304
|
-
|
|
305
|
-
|
|
301
|
+
if i.IsStackupLayer():
|
|
302
|
+
obj = StackupLayerEdbClass(self._pedb, i.Clone(), name=i.GetName())
|
|
303
|
+
else:
|
|
304
|
+
obj = LayerEdbClass(self._pedb, i.Clone(), name=i.GetName())
|
|
305
|
+
temp[obj.name] = obj
|
|
306
306
|
return temp
|
|
307
307
|
|
|
308
|
+
@property
|
|
309
|
+
def layers_by_id(self):
|
|
310
|
+
"""Retrieve the list of layers with their ids."""
|
|
311
|
+
return [[obj.id, name] for name, obj in self.all_layers.items()]
|
|
312
|
+
|
|
308
313
|
@property
|
|
309
314
|
def layers(self):
|
|
310
315
|
"""Retrieve the dictionary of layers.
|
|
@@ -313,22 +318,14 @@ class LayerCollection(object):
|
|
|
313
318
|
-------
|
|
314
319
|
Dict[str, :class:`pyedb.dotnet.edb_core.edb_data.layer_data.LayerEdbClass`]
|
|
315
320
|
"""
|
|
316
|
-
|
|
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
|
|
321
|
+
return {name: obj for name, obj in self.all_layers.items() if obj.is_stackup_layer}
|
|
325
322
|
|
|
326
323
|
|
|
327
324
|
class Stackup(LayerCollection):
|
|
328
325
|
"""Manages EDB methods for stackup accessible from `Edb.stackup` property."""
|
|
329
326
|
|
|
330
327
|
def __getitem__(self, item):
|
|
331
|
-
return self.
|
|
328
|
+
return self.all_layers[item]
|
|
332
329
|
|
|
333
330
|
def __init__(self, pedb, edb_object=None):
|
|
334
331
|
super().__init__(pedb, edb_object)
|
|
@@ -576,12 +573,6 @@ class Stackup(LayerCollection):
|
|
|
576
573
|
)
|
|
577
574
|
return True
|
|
578
575
|
|
|
579
|
-
@pyedb_function_handler()
|
|
580
|
-
def refresh_layer_collection(self):
|
|
581
|
-
"""Refresh layer collection from Edb. This method is run on demand after all edit operations on stackup."""
|
|
582
|
-
self._lc = self._pedb.edb_api.cell._cell.LayerCollection(self._pedb.layout.layer_collection)
|
|
583
|
-
self._edb_object = self._lc
|
|
584
|
-
|
|
585
576
|
@property
|
|
586
577
|
def _layer_collection(self):
|
|
587
578
|
"""Copy of EDB layer collection.
|
|
@@ -591,8 +582,7 @@ class Stackup(LayerCollection):
|
|
|
591
582
|
:class:`Ansys.Ansoft.Edb.Cell.LayerCollection`
|
|
592
583
|
Collection of layers.
|
|
593
584
|
"""
|
|
594
|
-
|
|
595
|
-
self.refresh_layer_collection()
|
|
585
|
+
self.refresh_layer_collection()
|
|
596
586
|
return self._lc
|
|
597
587
|
|
|
598
588
|
@property
|
|
@@ -620,7 +610,7 @@ class Stackup(LayerCollection):
|
|
|
620
610
|
self._layer_collection.SetMode(mode.Overlapping)
|
|
621
611
|
elif value == 2 or value == mode.MultiZone or value == "MultiZone":
|
|
622
612
|
self._layer_collection.SetMode(mode.MultiZone)
|
|
623
|
-
self.
|
|
613
|
+
self.update_layout()
|
|
624
614
|
|
|
625
615
|
@property
|
|
626
616
|
def stackup_mode(self):
|
|
@@ -744,9 +734,8 @@ class Stackup(LayerCollection):
|
|
|
744
734
|
_lc.AddStackupLayerAtElevation(layer_clone)
|
|
745
735
|
elif operation == "non_stackup":
|
|
746
736
|
_lc.AddLayerBottom(layer_clone)
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
self.refresh_layer_collection()
|
|
737
|
+
self._pedb.layout.layer_collection = _lc
|
|
738
|
+
self.refresh_layer_collection()
|
|
750
739
|
return True
|
|
751
740
|
|
|
752
741
|
@pyedb_function_handler()
|
|
@@ -814,17 +803,7 @@ class Stackup(LayerCollection):
|
|
|
814
803
|
bool
|
|
815
804
|
"True" if successful, ``False`` if failed.
|
|
816
805
|
"""
|
|
817
|
-
|
|
818
|
-
if outlineLayer.IsNull():
|
|
819
|
-
return self.add_layer(
|
|
820
|
-
outline_name,
|
|
821
|
-
layer_type="outline",
|
|
822
|
-
material="",
|
|
823
|
-
fillMaterial="",
|
|
824
|
-
thickness="",
|
|
825
|
-
)
|
|
826
|
-
else:
|
|
827
|
-
return False
|
|
806
|
+
return self.add_document_layer(name="Outline", layer_type="outline")
|
|
828
807
|
|
|
829
808
|
# TODO: Update optional argument material into material_name and fillMaterial into fill_material_name
|
|
830
809
|
@pyedb_function_handler()
|
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
pyedb/__init__.py,sha256=
|
|
1
|
+
pyedb/__init__.py,sha256=6XNbzc6ACi5_YyN4AHoYcryfduYa2LhbWMGddPbk0aQ,1521
|
|
2
2
|
pyedb/edb_logger.py,sha256=yNkXnoL2me7ubLT6O6r6ElVnkZ1g8fmfFYC_2XJZ1Sw,14950
|
|
3
3
|
pyedb/exceptions.py,sha256=n94xluzUks6BA24vd_L6HkrvoP_H_l6__hQmqzdCyPo,111
|
|
4
4
|
pyedb/siwave.py,sha256=c2stPkGPdM9c0wJ19SJq_uiYTdW3sp-uO8MVA_iDw30,12548
|
|
5
5
|
pyedb/configuration/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
6
6
|
pyedb/configuration/cfg_boundaries.py,sha256=iThJw52omnGikp20uNVgW4w0VcrzF68dXUaMb2MfOt4,6646
|
|
7
7
|
pyedb/configuration/cfg_components.py,sha256=cvQfMjh6HBTVzVuDI7A8zkEhtgraG25dJqHRH-FbkTA,8789
|
|
8
|
-
pyedb/configuration/cfg_data.py,sha256=
|
|
8
|
+
pyedb/configuration/cfg_data.py,sha256=uSgyJaKMzw8f_-uWc5bp0MnXnoWRZHxSipIkA_4pSQY,3472
|
|
9
9
|
pyedb/configuration/cfg_general.py,sha256=dB5Tpird4uiyrseOe8-QlWKsat15TjMLar5I8VZME3c,1625
|
|
10
10
|
pyedb/configuration/cfg_nets.py,sha256=mJvN_ON4Qw5psNV3agXCQAhVJbRnBpRZu1Ti3b7QnMw,1879
|
|
11
11
|
pyedb/configuration/cfg_padstacks.py,sha256=5ta0xkdSaf4qk5lXjM-U4GB2vNS31nhEGsZwwRlhPUI,5568
|
|
12
|
-
pyedb/configuration/cfg_pin_groups.py,sha256=
|
|
12
|
+
pyedb/configuration/cfg_pin_groups.py,sha256=bW_RqTYNFE7i-C74pWY2pUIWoSKMQY-TWW17FIftfQk,2876
|
|
13
13
|
pyedb/configuration/cfg_ports_sources.py,sha256=kicbrgw1YLB2m7xJhrjo9LcfcbwTncGguuzEjZ2pUcQ,7787
|
|
14
14
|
pyedb/configuration/cfg_s_parameter_models.py,sha256=HPo4sgF5tVefUwgzlP8pDBVSZ1x_pY2EiOtA0-QXjc8,2854
|
|
15
15
|
pyedb/configuration/cfg_setup.py,sha256=zhq285s5P4s90Dm5s550ldwyIVO8aXiPjAwy87ipRXU,8791
|
|
16
16
|
pyedb/configuration/cfg_spice_models.py,sha256=5gr28-4u4uj4qY8vgYFAI_PgzOQp-wPgTMMc_WcAN_w,2434
|
|
17
|
-
pyedb/configuration/configuration.py,sha256=
|
|
17
|
+
pyedb/configuration/configuration.py,sha256=hPyUzdOJlMGPaI-Ie3Q1jJpmzpzrAy6XgWjSv8LQ8Q0,10628
|
|
18
18
|
pyedb/dotnet/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
19
19
|
pyedb/dotnet/clr_module.py,sha256=Mo13Of3DVSA5HR-5xZEXOiHApIKy52CUxtJ2gPkEu1A,3406
|
|
20
|
-
pyedb/dotnet/edb.py,sha256=
|
|
20
|
+
pyedb/dotnet/edb.py,sha256=jSt794srQBzaxt3-iZqcv4ziOgNThWn46k3-V3svJqc,172798
|
|
21
21
|
pyedb/dotnet/application/Variables.py,sha256=nov1kIyJO25iz8pvbU3MK1meMpRLwtISmzYqJhc7Ouo,79042
|
|
22
22
|
pyedb/dotnet/application/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
23
23
|
pyedb/dotnet/edb_core/__init__.py,sha256=nIRLJ8VZLcMAp12zmGsnZ5x2BEEl7q_Kj_KAOXxVjpQ,52
|
|
@@ -32,7 +32,7 @@ pyedb/dotnet/edb_core/nets.py,sha256=ZQ5sk7cgTQJTbHd7JQa7MmBBV_crsWGtcLhKpSbfYMw
|
|
|
32
32
|
pyedb/dotnet/edb_core/obj_base.py,sha256=lufR0sZj0QfZ2wlNvLL6aM1KVqCNY2A7taPPdWcK20w,3312
|
|
33
33
|
pyedb/dotnet/edb_core/padstack.py,sha256=PqXkSfyLRtdehm72sYiVMBUkNlDkivJ-eRoQWCzwNgw,57439
|
|
34
34
|
pyedb/dotnet/edb_core/siwave.py,sha256=4v68zlCO-Czv8A3qtckfQ94jRFbMxM4kuoEDVRo_cmM,62495
|
|
35
|
-
pyedb/dotnet/edb_core/stackup.py,sha256=
|
|
35
|
+
pyedb/dotnet/edb_core/stackup.py,sha256=Zko2gaotcJnILv_4SlZYzFc-NGblmTFBmEua7BSLcHU,122186
|
|
36
36
|
pyedb/dotnet/edb_core/cell/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
37
37
|
pyedb/dotnet/edb_core/cell/hierarchy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
38
38
|
pyedb/dotnet/edb_core/cell/hierarchy/model.py,sha256=cJzNJLiuuoesfCL8-jWo8LbgGbfXrTYNQqmeeE38ieM,3309
|
|
@@ -55,7 +55,7 @@ pyedb/dotnet/edb_core/edb_data/edbvalue.py,sha256=Vj_11HXsQUNavizKp5FicORm6cjhXR
|
|
|
55
55
|
pyedb/dotnet/edb_core/edb_data/hfss_extent_info.py,sha256=5koQSKdYC6Deh4haLUDAxnHlRa-j5S6g4eyAfiGgZP8,13190
|
|
56
56
|
pyedb/dotnet/edb_core/edb_data/hfss_pi_simulation_setup_data.py,sha256=v3z3h_27v3jRmDXqUjBS8P6UZMi-zuZQrZiYbE-RDw4,15657
|
|
57
57
|
pyedb/dotnet/edb_core/edb_data/hfss_simulation_setup_data.py,sha256=naka5Bm9Ditb6Cj_F1KMrxwGk8Cn2fPtnXlyGb9IY9E,49039
|
|
58
|
-
pyedb/dotnet/edb_core/edb_data/layer_data.py,sha256=
|
|
58
|
+
pyedb/dotnet/edb_core/edb_data/layer_data.py,sha256=N3OIxdx1oeX3Lg1nmM-UcJ_8NQdaQD-_XgUEVlGLzOI,25918
|
|
59
59
|
pyedb/dotnet/edb_core/edb_data/nets_data.py,sha256=iBegT3fa5DwvjD0Wfd-wlJztFrb33I5v6nzSUhNS6-I,10099
|
|
60
60
|
pyedb/dotnet/edb_core/edb_data/padstacks_data.py,sha256=IiF_wS9ZnyW-8W3wbcvinPAaL0LVuPGU74tHFZgZ1ZQ,79729
|
|
61
61
|
pyedb/dotnet/edb_core/edb_data/ports.py,sha256=FYxB2rDUtN_OsYAbodXbc5mA_d0BUebmin_B5kkUw3U,9223
|
|
@@ -148,7 +148,7 @@ pyedb/misc/siw_feature_config/emc/tag_library.py,sha256=yUK4w3hequU017E2DbkA4KE2
|
|
|
148
148
|
pyedb/misc/siw_feature_config/emc/xml_generic.py,sha256=55X-V0OxWq-v7FTiDVjaZif8V_2xxsvJlJ8bs9Bf61I,2521
|
|
149
149
|
pyedb/modeler/geometry_operators.py,sha256=LDqEaeerw9H8Yva-SJhX3Afdni08OciO9t5G0c_tdqs,66820
|
|
150
150
|
pyedb/siwave_core/icepak.py,sha256=WnZ-t8mik7LDY06V8hZFV-TxRZJQWK7bu_8Ichx-oBs,5206
|
|
151
|
-
pyedb-0.12.
|
|
152
|
-
pyedb-0.12.
|
|
153
|
-
pyedb-0.12.
|
|
154
|
-
pyedb-0.12.
|
|
151
|
+
pyedb-0.12.1.dist-info/LICENSE,sha256=qQWivZ12ETN5l3QxvTARY-QI5eoRRlyHdwLlAj0Bg5I,1089
|
|
152
|
+
pyedb-0.12.1.dist-info/WHEEL,sha256=EZbGkh7Ie4PoZfRQ8I0ZuP9VklN_TvcZ6DSE5Uar4z4,81
|
|
153
|
+
pyedb-0.12.1.dist-info/METADATA,sha256=sofDicuqDqxk_dG81zNz64hW00SYd41gY6FRyviOzpY,8354
|
|
154
|
+
pyedb-0.12.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|