pyedb 0.50.1__py3-none-any.whl → 0.52.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of pyedb might be problematic. Click here for more details.
- pyedb/__init__.py +1 -1
- pyedb/configuration/cfg_ports_sources.py +79 -239
- pyedb/configuration/configuration.py +213 -340
- pyedb/dotnet/clr_module.py +9 -3
- pyedb/dotnet/database/cell/layout.py +10 -1
- pyedb/dotnet/database/dotnet/database.py +0 -2
- pyedb/dotnet/database/edb_data/padstacks_data.py +8 -2
- pyedb/dotnet/database/layout_validation.py +20 -26
- pyedb/dotnet/database/modeler.py +0 -1
- pyedb/dotnet/database/stackup.py +4 -3
- pyedb/dotnet/edb.py +42 -2
- pyedb/generic/design_types.py +183 -62
- pyedb/grpc/database/__init__.py +0 -1
- pyedb/grpc/database/components.py +110 -0
- pyedb/grpc/database/control_file.py +150 -17
- pyedb/grpc/database/definition/materials.py +7 -7
- pyedb/grpc/database/definitions.py +36 -2
- pyedb/grpc/database/hfss.py +15 -0
- pyedb/grpc/database/hierarchy/component.py +10 -2
- pyedb/grpc/database/hierarchy/pin_pair_model.py +1 -1
- pyedb/grpc/database/layout_validation.py +58 -7
- pyedb/grpc/database/net/differential_pair.py +2 -1
- pyedb/grpc/database/nets.py +233 -4
- pyedb/grpc/database/padstacks.py +97 -0
- pyedb/grpc/database/primitive/padstack_instance.py +1 -1
- pyedb/grpc/database/primitive/polygon.py +1 -1
- pyedb/grpc/database/siwave.py +63 -3
- pyedb/grpc/database/source_excitations.py +317 -50
- pyedb/grpc/database/stackup.py +107 -2
- pyedb/grpc/database/terminal/point_terminal.py +2 -2
- pyedb/grpc/database/terminal/terminal.py +1 -1
- pyedb/grpc/edb.py +190 -224
- pyedb/grpc/edb_init.py +54 -5
- {pyedb-0.50.1.dist-info → pyedb-0.52.0.dist-info}/METADATA +4 -4
- {pyedb-0.50.1.dist-info → pyedb-0.52.0.dist-info}/RECORD +37 -37
- {pyedb-0.50.1.dist-info → pyedb-0.52.0.dist-info}/LICENSE +0 -0
- {pyedb-0.50.1.dist-info → pyedb-0.52.0.dist-info}/WHEEL +0 -0
pyedb/grpc/database/stackup.py
CHANGED
|
@@ -94,7 +94,14 @@ class LayerCollection(GrpcLayerCollection):
|
|
|
94
94
|
self._pedb = pedb
|
|
95
95
|
|
|
96
96
|
def update_layout(self):
|
|
97
|
-
"""Update the layout with the current layer collection.
|
|
97
|
+
"""Update the layout with the current layer collection.
|
|
98
|
+
|
|
99
|
+
Examples
|
|
100
|
+
--------
|
|
101
|
+
>>> from pyedb import Edb
|
|
102
|
+
>>> edb = Edb()
|
|
103
|
+
>>> edb.stackup.update_layout()
|
|
104
|
+
"""
|
|
98
105
|
self._pedb.layout.layer_collection = self
|
|
99
106
|
|
|
100
107
|
def add_layer_top(self, name, layer_type="signal", **kwargs):
|
|
@@ -115,6 +122,13 @@ class LayerCollection(GrpcLayerCollection):
|
|
|
115
122
|
-------
|
|
116
123
|
:class:`pyedb.grpc.database.layers.stackup_layer.StackupLayer`
|
|
117
124
|
Layer object created.
|
|
125
|
+
|
|
126
|
+
Examples
|
|
127
|
+
--------
|
|
128
|
+
>>> from pyedb import Edb
|
|
129
|
+
>>> edb = Edb()
|
|
130
|
+
>>> top_layer = edb.stackup.add_layer_top("NewTopLayer", layer_type="signal", thickness="0.1mm",
|
|
131
|
+
... material="copper")
|
|
118
132
|
"""
|
|
119
133
|
thickness = GrpcValue(0.0)
|
|
120
134
|
if "thickness" in kwargs:
|
|
@@ -147,6 +161,13 @@ class LayerCollection(GrpcLayerCollection):
|
|
|
147
161
|
-------
|
|
148
162
|
:class:`pyedb.grpc.database.layers.stackup_layer.StackupLayer`
|
|
149
163
|
Layer object created.
|
|
164
|
+
|
|
165
|
+
Examples
|
|
166
|
+
--------
|
|
167
|
+
>>> from pyedb import Edb
|
|
168
|
+
>>> edb = Edb()
|
|
169
|
+
>>> bot_layer = edb.stackup.add_layer_bottom("NewBottomLayer", layer_type="signal", thickness="0.1mm",
|
|
170
|
+
... material="copper")
|
|
150
171
|
"""
|
|
151
172
|
thickness = GrpcValue(0.0)
|
|
152
173
|
layer_type_map = {"dielectric": GrpcLayerType.DIELECTRIC_LAYER, "signal": GrpcLayerType.SIGNAL_LAYER}
|
|
@@ -188,6 +209,12 @@ class LayerCollection(GrpcLayerCollection):
|
|
|
188
209
|
-------
|
|
189
210
|
:class:`pyedb.grpc.database.layers.stackup_layer.StackupLayer`
|
|
190
211
|
Layer object created.
|
|
212
|
+
|
|
213
|
+
Examples
|
|
214
|
+
--------
|
|
215
|
+
>>> from pyedb import Edb
|
|
216
|
+
>>> edb = Edb()
|
|
217
|
+
>>> new_layer = edb.stackup.add_layer_below("NewLayer", "TopLayer", layer_type="dielectric", thickness="0.05mm")
|
|
191
218
|
"""
|
|
192
219
|
thickness = GrpcValue(0.0)
|
|
193
220
|
if "thickness" in kwargs:
|
|
@@ -229,6 +256,12 @@ class LayerCollection(GrpcLayerCollection):
|
|
|
229
256
|
-------
|
|
230
257
|
:class:`pyedb.grpc.database.layers.stackup_layer.StackupLayer`
|
|
231
258
|
Layer object created.
|
|
259
|
+
|
|
260
|
+
Examples
|
|
261
|
+
--------
|
|
262
|
+
>>> from pyedb import Edb
|
|
263
|
+
>>> edb = Edb()
|
|
264
|
+
>>> new_layer = edb.stackup.add_layer_above("NewLayer", "BottomLayer", layer_type="signal", thickness="0.05mm")
|
|
232
265
|
"""
|
|
233
266
|
thickness = GrpcValue(0.0)
|
|
234
267
|
if "thickness" in kwargs:
|
|
@@ -258,6 +291,12 @@ class LayerCollection(GrpcLayerCollection):
|
|
|
258
291
|
-------
|
|
259
292
|
:class:`pyedb.grpc.database.layers.layer.Layer`
|
|
260
293
|
Layer object created.
|
|
294
|
+
|
|
295
|
+
Examples
|
|
296
|
+
--------
|
|
297
|
+
>>> from pyedb import Edb
|
|
298
|
+
>>> edb = Edb()
|
|
299
|
+
>>> outline_layer = edb.stackup.add_document_layer("Outline", layer_type="outline")
|
|
261
300
|
"""
|
|
262
301
|
added_layer = self.add_layer_top(name)
|
|
263
302
|
added_layer.type = GrpcLayerType.USER_LAYER
|
|
@@ -286,6 +325,12 @@ class LayerCollection(GrpcLayerCollection):
|
|
|
286
325
|
-------
|
|
287
326
|
dict[str, :class:`pyedb.grpc.database.layers.layer.Layer`]
|
|
288
327
|
Dictionary of non-stackup layers.
|
|
328
|
+
|
|
329
|
+
Examples
|
|
330
|
+
--------
|
|
331
|
+
>>> from pyedb import Edb
|
|
332
|
+
>>> edb = Edb()
|
|
333
|
+
>>> non_stackup = edb.stackup.non_stackup_layers
|
|
289
334
|
"""
|
|
290
335
|
return {
|
|
291
336
|
layer.name: Layer(self._pedb, layer) for layer in self.get_layers(GrpcLayerTypeSet.NON_STACKUP_LAYER_SET)
|
|
@@ -299,6 +344,12 @@ class LayerCollection(GrpcLayerCollection):
|
|
|
299
344
|
-------
|
|
300
345
|
dict[str, :class:`pyedb.grpc.database.layers.layer.Layer`]
|
|
301
346
|
Dictionary of all layers.
|
|
347
|
+
|
|
348
|
+
Examples
|
|
349
|
+
--------
|
|
350
|
+
>>> from pyedb import Edb
|
|
351
|
+
>>> edb = Edb()
|
|
352
|
+
>>> all_layers = edb.stackup.all_layers
|
|
302
353
|
"""
|
|
303
354
|
return {layer.name: Layer(self._pedb, layer) for layer in self.get_layers(GrpcLayerTypeSet.ALL_LAYER_SET)}
|
|
304
355
|
|
|
@@ -310,6 +361,12 @@ class LayerCollection(GrpcLayerCollection):
|
|
|
310
361
|
-------
|
|
311
362
|
dict[str, :class:`pyedb.grpc.database.layers.stackup_layer.StackupLayer`]
|
|
312
363
|
Dictionary of signal layers.
|
|
364
|
+
|
|
365
|
+
Examples
|
|
366
|
+
--------
|
|
367
|
+
>>> from pyedb import Edb
|
|
368
|
+
>>> edb = Edb()
|
|
369
|
+
>>> signal_layers = edb.stackup.signal_layers
|
|
313
370
|
"""
|
|
314
371
|
return {
|
|
315
372
|
layer.name: StackupLayer(self._pedb, layer) for layer in self.get_layers(GrpcLayerTypeSet.SIGNAL_LAYER_SET)
|
|
@@ -323,6 +380,12 @@ class LayerCollection(GrpcLayerCollection):
|
|
|
323
380
|
-------
|
|
324
381
|
dict[str, :class:`pyedb.grpc.database.layers.stackup_layer.StackupLayer`]
|
|
325
382
|
Dictionary of dielectric layers.
|
|
383
|
+
|
|
384
|
+
Examples
|
|
385
|
+
--------
|
|
386
|
+
>>> from pyedb import Edb
|
|
387
|
+
>>> edb = Edb()
|
|
388
|
+
>>> dielectric_layers = edb.stackup.dielectric_layers
|
|
326
389
|
"""
|
|
327
390
|
return {
|
|
328
391
|
layer.name: StackupLayer(self._pedb, layer)
|
|
@@ -337,6 +400,12 @@ class LayerCollection(GrpcLayerCollection):
|
|
|
337
400
|
-------
|
|
338
401
|
list[list[int, str]]
|
|
339
402
|
List of layers with their IDs and names.
|
|
403
|
+
|
|
404
|
+
Examples
|
|
405
|
+
--------
|
|
406
|
+
>>> from pyedb import Edb
|
|
407
|
+
>>> edb = Edb()
|
|
408
|
+
>>> layers_by_id = edb.stackup.layers_by_id
|
|
340
409
|
"""
|
|
341
410
|
return [[obj.id, name] for name, obj in self.all_layers.items()]
|
|
342
411
|
|
|
@@ -348,6 +417,12 @@ class LayerCollection(GrpcLayerCollection):
|
|
|
348
417
|
-------
|
|
349
418
|
dict[str, :class:`pyedb.grpc.database.layers.stackup_layer.StackupLayer`]
|
|
350
419
|
Dictionary of stackup layers.
|
|
420
|
+
|
|
421
|
+
Examples
|
|
422
|
+
--------
|
|
423
|
+
>>> from pyedb import Edb
|
|
424
|
+
>>> edb = Edb()
|
|
425
|
+
>>> layers = edb.stackup.layers
|
|
351
426
|
"""
|
|
352
427
|
return {obj.name: StackupLayer(self._pedb, obj) for obj in self.get_layers(GrpcLayerTypeSet.STACKUP_LAYER_SET)}
|
|
353
428
|
|
|
@@ -418,6 +493,12 @@ class Stackup(LayerCollection):
|
|
|
418
493
|
-------
|
|
419
494
|
float
|
|
420
495
|
Stackup thickness.
|
|
496
|
+
|
|
497
|
+
Examples
|
|
498
|
+
--------
|
|
499
|
+
>>> from pyedb import Edb
|
|
500
|
+
>>> edb = Edb()
|
|
501
|
+
>>> thickness = edb.stackup.thickness
|
|
421
502
|
"""
|
|
422
503
|
return self.get_layout_thickness()
|
|
423
504
|
|
|
@@ -429,6 +510,12 @@ class Stackup(LayerCollection):
|
|
|
429
510
|
-------
|
|
430
511
|
int
|
|
431
512
|
Number of layers.
|
|
513
|
+
|
|
514
|
+
Examples
|
|
515
|
+
--------
|
|
516
|
+
>>> from pyedb import Edb
|
|
517
|
+
>>> edb = Edb()
|
|
518
|
+
>>> num_layers = edb.stackup.num_layers
|
|
432
519
|
"""
|
|
433
520
|
return len(list(self.layers.keys()))
|
|
434
521
|
|
|
@@ -441,7 +528,7 @@ class Stackup(LayerCollection):
|
|
|
441
528
|
dielectric_material="FR4_epoxy",
|
|
442
529
|
soldermask=True,
|
|
443
530
|
soldermask_thickness="20um",
|
|
444
|
-
): # pragma: no cover
|
|
531
|
+
) -> bool: # pragma: no cover
|
|
445
532
|
"""Create a symmetric stackup.
|
|
446
533
|
|
|
447
534
|
Parameters
|
|
@@ -465,6 +552,12 @@ class Stackup(LayerCollection):
|
|
|
465
552
|
-------
|
|
466
553
|
bool
|
|
467
554
|
``True`` when successful, ``False`` when failed.
|
|
555
|
+
|
|
556
|
+
Examples
|
|
557
|
+
--------
|
|
558
|
+
>>> from pyedb import Edb
|
|
559
|
+
>>> edb = Edb()
|
|
560
|
+
>>> edb.stackup.create_symmetric_stackup(layer_count=4)
|
|
468
561
|
"""
|
|
469
562
|
if not np:
|
|
470
563
|
self._pedb.logger.error("Numpy is needed. Please, install it first.")
|
|
@@ -566,6 +659,12 @@ class Stackup(LayerCollection):
|
|
|
566
659
|
- ``"laminate"``
|
|
567
660
|
- ``"overlapping"``
|
|
568
661
|
- ``"multizone"``
|
|
662
|
+
|
|
663
|
+
Examples
|
|
664
|
+
--------
|
|
665
|
+
>>> from pyedb import Edb
|
|
666
|
+
>>> edb = Edb()
|
|
667
|
+
>>> mode = edb.stackup.mode
|
|
569
668
|
"""
|
|
570
669
|
return super().mode.name.lower()
|
|
571
670
|
|
|
@@ -699,6 +798,12 @@ class Stackup(LayerCollection):
|
|
|
699
798
|
-------
|
|
700
799
|
bool
|
|
701
800
|
``True`` when successful.
|
|
801
|
+
|
|
802
|
+
Examples
|
|
803
|
+
--------
|
|
804
|
+
>>> from pyedb import Edb
|
|
805
|
+
>>> edb = Edb()
|
|
806
|
+
>>> edb.stackup.add_outline_layer()
|
|
702
807
|
"""
|
|
703
808
|
return self.add_document_layer(name="Outline", layer_type="outline")
|
|
704
809
|
|
|
@@ -69,7 +69,7 @@ class PointTerminal(GrpcPointTerminal):
|
|
|
69
69
|
super(PointTerminal, self.__class__).layer.__set__(self, value)
|
|
70
70
|
|
|
71
71
|
@property
|
|
72
|
-
def ref_terminal(self) ->
|
|
72
|
+
def ref_terminal(self) -> any:
|
|
73
73
|
"""Reference terminal.
|
|
74
74
|
|
|
75
75
|
Returns
|
|
@@ -84,7 +84,7 @@ class PointTerminal(GrpcPointTerminal):
|
|
|
84
84
|
super().reference_terminal = value
|
|
85
85
|
|
|
86
86
|
@property
|
|
87
|
-
def reference_terminal(self) ->
|
|
87
|
+
def reference_terminal(self) -> any:
|
|
88
88
|
"""Reference terminal.
|
|
89
89
|
|
|
90
90
|
Returns
|