pyedb 0.52.0__py3-none-any.whl → 0.54.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_common.py +12 -15
- pyedb/configuration/cfg_data.py +2 -2
- pyedb/configuration/cfg_modeler.py +163 -234
- pyedb/configuration/cfg_ports_sources.py +6 -8
- pyedb/configuration/cfg_stackup.py +62 -249
- pyedb/configuration/configuration.py +272 -170
- pyedb/dotnet/database/cell/hierarchy/model.py +1 -1
- pyedb/dotnet/database/cell/layout.py +1 -1
- pyedb/dotnet/database/cell/layout_obj.py +3 -3
- pyedb/dotnet/database/cell/primitive/path.py +1 -1
- pyedb/dotnet/database/cell/primitive/primitive.py +8 -8
- pyedb/dotnet/database/cell/terminal/pingroup_terminal.py +1 -1
- pyedb/dotnet/database/cell/terminal/point_terminal.py +1 -1
- pyedb/dotnet/database/cell/terminal/terminal.py +24 -26
- pyedb/dotnet/database/components.py +33 -27
- pyedb/dotnet/database/definition/component_def.py +3 -3
- pyedb/dotnet/database/definition/component_model.py +1 -1
- pyedb/dotnet/database/definition/package_def.py +1 -1
- pyedb/dotnet/database/dotnet/database.py +47 -38
- pyedb/dotnet/database/dotnet/primitive.py +16 -16
- pyedb/dotnet/database/edb_data/hfss_extent_info.py +6 -6
- pyedb/dotnet/database/edb_data/layer_data.py +17 -15
- pyedb/dotnet/database/edb_data/padstacks_data.py +12 -12
- pyedb/dotnet/database/edb_data/primitives_data.py +3 -3
- pyedb/dotnet/database/edb_data/sources.py +6 -6
- pyedb/dotnet/database/edb_data/variables.py +7 -3
- pyedb/dotnet/database/geometry/point_data.py +1 -1
- pyedb/dotnet/database/geometry/polygon_data.py +2 -4
- pyedb/dotnet/database/hfss.py +7 -7
- pyedb/dotnet/database/materials.py +2 -2
- pyedb/dotnet/database/modeler.py +8 -11
- pyedb/dotnet/database/nets.py +1 -1
- pyedb/dotnet/database/padstack.py +72 -1
- pyedb/dotnet/database/sim_setup_data/data/settings.py +24 -0
- pyedb/dotnet/database/sim_setup_data/io/siwave.py +26 -1
- pyedb/dotnet/database/siwave.py +19 -5
- pyedb/dotnet/database/stackup.py +80 -137
- pyedb/dotnet/database/utilities/heatsink.py +4 -4
- pyedb/dotnet/database/utilities/obj_base.py +1 -1
- pyedb/dotnet/database/utilities/simulation_setup.py +1 -1
- pyedb/dotnet/database/utilities/siwave_cpa_simulation_setup.py +894 -0
- pyedb/dotnet/database/utilities/siwave_simulation_setup.py +15 -0
- pyedb/dotnet/database/utilities/value.py +116 -0
- pyedb/dotnet/edb.py +58 -45
- pyedb/generic/design_types.py +39 -1
- pyedb/generic/grpc_warnings.py +5 -0
- pyedb/grpc/__init__.py +0 -0
- pyedb/grpc/database/components.py +155 -98
- pyedb/grpc/database/control_file.py +240 -193
- pyedb/grpc/database/definition/materials.py +23 -30
- pyedb/grpc/database/definition/package_def.py +15 -15
- pyedb/grpc/database/definition/padstack_def.py +51 -51
- pyedb/grpc/database/definitions.py +7 -5
- pyedb/grpc/database/geometry/arc_data.py +7 -5
- pyedb/grpc/database/geometry/point_3d_data.py +8 -7
- pyedb/grpc/database/geometry/polygon_data.py +3 -2
- pyedb/grpc/database/hierarchy/component.py +43 -38
- pyedb/grpc/database/hierarchy/pin_pair_model.py +15 -14
- pyedb/grpc/database/hierarchy/pingroup.py +9 -9
- pyedb/grpc/database/layers/stackup_layer.py +45 -44
- pyedb/grpc/database/layout/layout.py +9 -8
- pyedb/grpc/database/layout/voltage_regulator.py +7 -7
- pyedb/grpc/database/layout_validation.py +13 -12
- pyedb/grpc/database/modeler.py +156 -131
- pyedb/grpc/database/nets.py +42 -31
- pyedb/grpc/database/padstacks.py +270 -175
- pyedb/grpc/database/ports/ports.py +5 -6
- pyedb/grpc/database/primitive/bondwire.py +8 -7
- pyedb/grpc/database/primitive/circle.py +4 -4
- pyedb/grpc/database/primitive/padstack_instance.py +18 -18
- pyedb/grpc/database/primitive/path.py +7 -7
- pyedb/grpc/database/primitive/polygon.py +3 -3
- pyedb/grpc/database/primitive/primitive.py +13 -17
- pyedb/grpc/database/primitive/rectangle.py +13 -13
- pyedb/grpc/database/simulation_setup/hfss_general_settings.py +1 -1
- pyedb/grpc/database/simulation_setup/hfss_simulation_setup.py +10 -0
- pyedb/grpc/database/simulation_setup/siwave_cpa_simulation_setup.py +961 -0
- pyedb/grpc/database/simulation_setup/siwave_simulation_setup.py +17 -1
- pyedb/grpc/database/siwave.py +44 -24
- pyedb/grpc/database/source_excitations.py +333 -229
- pyedb/grpc/database/stackup.py +164 -147
- pyedb/grpc/database/terminal/bundle_terminal.py +17 -7
- pyedb/grpc/database/terminal/edge_terminal.py +10 -0
- pyedb/grpc/database/terminal/padstack_instance_terminal.py +15 -4
- pyedb/grpc/database/terminal/pingroup_terminal.py +11 -10
- pyedb/grpc/database/terminal/point_terminal.py +4 -3
- pyedb/grpc/database/terminal/terminal.py +9 -9
- pyedb/grpc/database/utility/value.py +109 -0
- pyedb/grpc/edb.py +129 -45
- pyedb/grpc/edb_init.py +0 -7
- pyedb/siwave_core/cpa/simulation_setup_data_model.py +132 -0
- pyedb/siwave_core/product_properties.py +198 -0
- {pyedb-0.52.0.dist-info → pyedb-0.54.0.dist-info}/METADATA +15 -13
- {pyedb-0.52.0.dist-info → pyedb-0.54.0.dist-info}/RECORD +97 -89
- {pyedb-0.52.0.dist-info → pyedb-0.54.0.dist-info}/WHEEL +1 -1
- {pyedb-0.52.0.dist-info → pyedb-0.54.0.dist-info/licenses}/LICENSE +0 -0
pyedb/grpc/database/nets.py
CHANGED
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
|
|
23
23
|
from __future__ import absolute_import # noreorder
|
|
24
24
|
|
|
25
|
+
from typing import Any, Dict, List, Optional, Set, Tuple, Union
|
|
25
26
|
import warnings
|
|
26
27
|
|
|
27
28
|
from pyedb.common.nets import CommonNets
|
|
@@ -152,7 +153,7 @@ class Nets(CommonNets):
|
|
|
152
153
|
>>> edbapp.close()
|
|
153
154
|
"""
|
|
154
155
|
|
|
155
|
-
def __getitem__(self, name):
|
|
156
|
+
def __getitem__(self, name: str) -> Net:
|
|
156
157
|
"""Get a net by name.
|
|
157
158
|
|
|
158
159
|
Parameters
|
|
@@ -172,7 +173,7 @@ class Nets(CommonNets):
|
|
|
172
173
|
"""
|
|
173
174
|
return Net(self._pedb, Net.find_by_name(self._active_layout, name))
|
|
174
175
|
|
|
175
|
-
def __contains__(self, name):
|
|
176
|
+
def __contains__(self, name: str) -> bool:
|
|
176
177
|
"""Check if a net exists in the layout.
|
|
177
178
|
|
|
178
179
|
Parameters
|
|
@@ -192,11 +193,11 @@ class Nets(CommonNets):
|
|
|
192
193
|
"""
|
|
193
194
|
return name in self.nets
|
|
194
195
|
|
|
195
|
-
def __init__(self, p_edb):
|
|
196
|
+
def __init__(self, p_edb: Any) -> None:
|
|
196
197
|
"""Initialize the Nets class."""
|
|
197
198
|
CommonNets.__init__(self, p_edb)
|
|
198
|
-
self._nets_by_comp_dict = {}
|
|
199
|
-
self._comps_by_nets_dict = {}
|
|
199
|
+
self._nets_by_comp_dict: Dict[str, List[str]] = {}
|
|
200
|
+
self._comps_by_nets_dict: Dict[str, List[str]] = {}
|
|
200
201
|
|
|
201
202
|
@property
|
|
202
203
|
def _edb(self):
|
|
@@ -229,7 +230,7 @@ class Nets(CommonNets):
|
|
|
229
230
|
return self._pedb.logger
|
|
230
231
|
|
|
231
232
|
@property
|
|
232
|
-
def nets(self):
|
|
233
|
+
def nets(self) -> Dict[str, Net]:
|
|
233
234
|
"""All nets in the layout.
|
|
234
235
|
|
|
235
236
|
Returns
|
|
@@ -246,7 +247,7 @@ class Nets(CommonNets):
|
|
|
246
247
|
return {i.name: i for i in self._pedb.layout.nets}
|
|
247
248
|
|
|
248
249
|
@property
|
|
249
|
-
def netlist(self):
|
|
250
|
+
def netlist(self) -> List[str]:
|
|
250
251
|
"""List of all net names.
|
|
251
252
|
|
|
252
253
|
Returns
|
|
@@ -262,7 +263,7 @@ class Nets(CommonNets):
|
|
|
262
263
|
return list(self.nets.keys())
|
|
263
264
|
|
|
264
265
|
@property
|
|
265
|
-
def signal(self):
|
|
266
|
+
def signal(self) -> Dict[str, Net]:
|
|
266
267
|
"""Signal nets in the layout.
|
|
267
268
|
|
|
268
269
|
Returns
|
|
@@ -282,7 +283,7 @@ class Nets(CommonNets):
|
|
|
282
283
|
return nets
|
|
283
284
|
|
|
284
285
|
@property
|
|
285
|
-
def power(self):
|
|
286
|
+
def power(self) -> Dict[str, Net]:
|
|
286
287
|
"""Power and ground nets in the layout.
|
|
287
288
|
|
|
288
289
|
Returns
|
|
@@ -301,7 +302,7 @@ class Nets(CommonNets):
|
|
|
301
302
|
nets[net] = value
|
|
302
303
|
return nets
|
|
303
304
|
|
|
304
|
-
def eligible_power_nets(self, threshold=0.3):
|
|
305
|
+
def eligible_power_nets(self, threshold: float = 0.3) -> List[Net]:
|
|
305
306
|
"""Identify nets eligible for power/ground classification based on area ratio.
|
|
306
307
|
|
|
307
308
|
Uses the same algorithm implemented in SIwave.
|
|
@@ -343,7 +344,7 @@ class Nets(CommonNets):
|
|
|
343
344
|
return pwr_gnd_nets
|
|
344
345
|
|
|
345
346
|
@property
|
|
346
|
-
def nets_by_components(self):
|
|
347
|
+
def nets_by_components(self) -> Dict[str, List[str]]:
|
|
347
348
|
"""Mapping of components to their associated nets.
|
|
348
349
|
|
|
349
350
|
Returns
|
|
@@ -361,7 +362,7 @@ class Nets(CommonNets):
|
|
|
361
362
|
return self._nets_by_comp_dict
|
|
362
363
|
|
|
363
364
|
@property
|
|
364
|
-
def components_by_nets(self):
|
|
365
|
+
def components_by_nets(self) -> Dict[str, List[str]]:
|
|
365
366
|
"""Mapping of nets to their associated components.
|
|
366
367
|
|
|
367
368
|
Returns
|
|
@@ -384,13 +385,13 @@ class Nets(CommonNets):
|
|
|
384
385
|
|
|
385
386
|
def generate_extended_nets(
|
|
386
387
|
self,
|
|
387
|
-
resistor_below=10,
|
|
388
|
-
inductor_below=1,
|
|
389
|
-
capacitor_above=1,
|
|
390
|
-
exception_list=None,
|
|
391
|
-
include_signal=True,
|
|
392
|
-
include_power=True,
|
|
393
|
-
):
|
|
388
|
+
resistor_below: Union[int, float] = 10,
|
|
389
|
+
inductor_below: Union[int, float] = 1,
|
|
390
|
+
capacitor_above: Union[int, float] = 1,
|
|
391
|
+
exception_list: Optional[List[str]] = None,
|
|
392
|
+
include_signal: bool = True,
|
|
393
|
+
include_power: bool = True,
|
|
394
|
+
) -> List[Any]:
|
|
394
395
|
"""Generate extended nets based on component thresholds.
|
|
395
396
|
|
|
396
397
|
.. deprecated:: pyedb 0.30.0
|
|
@@ -430,7 +431,7 @@ class Nets(CommonNets):
|
|
|
430
431
|
)
|
|
431
432
|
|
|
432
433
|
@staticmethod
|
|
433
|
-
def _get_points_for_plot(my_net_points):
|
|
434
|
+
def _get_points_for_plot(my_net_points: List[Any]) -> Tuple[List[float], List[float]]:
|
|
434
435
|
"""Get points for plotting.
|
|
435
436
|
|
|
436
437
|
Parameters
|
|
@@ -464,7 +465,9 @@ class Nets(CommonNets):
|
|
|
464
465
|
# fmt: on
|
|
465
466
|
return x, y
|
|
466
467
|
|
|
467
|
-
def classify_nets(
|
|
468
|
+
def classify_nets(
|
|
469
|
+
self, power_nets: Optional[Union[str, List[str]]] = None, signal_nets: Optional[Union[str, List[str]]] = None
|
|
470
|
+
) -> bool:
|
|
468
471
|
"""Reassign net classifications as power/ground or signal.
|
|
469
472
|
|
|
470
473
|
Parameters
|
|
@@ -502,7 +505,7 @@ class Nets(CommonNets):
|
|
|
502
505
|
self.nets[net].is_power_ground = False
|
|
503
506
|
return True
|
|
504
507
|
|
|
505
|
-
def is_power_gound_net(self, netname_list):
|
|
508
|
+
def is_power_gound_net(self, netname_list: Union[str, List[str]]) -> bool:
|
|
506
509
|
"""Check if any net in a list is a power/ground net.
|
|
507
510
|
|
|
508
511
|
Parameters
|
|
@@ -528,7 +531,7 @@ class Nets(CommonNets):
|
|
|
528
531
|
return True
|
|
529
532
|
return False
|
|
530
533
|
|
|
531
|
-
def get_dcconnected_net_list(self, ground_nets=["GND"], res_value=0.001):
|
|
534
|
+
def get_dcconnected_net_list(self, ground_nets: List[str] = ["GND"], res_value: float = 0.001) -> List[Set[str]]:
|
|
532
535
|
"""Get nets connected to DC through inductors and low-value resistors.
|
|
533
536
|
|
|
534
537
|
Parameters
|
|
@@ -586,7 +589,9 @@ class Nets(CommonNets):
|
|
|
586
589
|
|
|
587
590
|
return dcconnected_net_list
|
|
588
591
|
|
|
589
|
-
def get_powertree(
|
|
592
|
+
def get_powertree(
|
|
593
|
+
self, power_net_name: str, ground_nets: List[str]
|
|
594
|
+
) -> Tuple[List[List[str]], List[str], List[str]]:
|
|
590
595
|
"""Retrieve power tree for a given power net.
|
|
591
596
|
|
|
592
597
|
Parameters
|
|
@@ -654,7 +659,7 @@ class Nets(CommonNets):
|
|
|
654
659
|
]
|
|
655
660
|
return component_list, component_list_columns, net_group
|
|
656
661
|
|
|
657
|
-
def get_net_by_name(self, net_name):
|
|
662
|
+
def get_net_by_name(self, net_name: str) -> Optional[Net]:
|
|
658
663
|
"""Find a net by name.
|
|
659
664
|
|
|
660
665
|
Parameters
|
|
@@ -677,7 +682,7 @@ class Nets(CommonNets):
|
|
|
677
682
|
if edb_net is not None:
|
|
678
683
|
return edb_net
|
|
679
684
|
|
|
680
|
-
def delete(self, netlist):
|
|
685
|
+
def delete(self, netlist: Union[str, List[str]]) -> List[str]:
|
|
681
686
|
"""Delete one or more nets from the layout.
|
|
682
687
|
|
|
683
688
|
Parameters
|
|
@@ -708,7 +713,9 @@ class Nets(CommonNets):
|
|
|
708
713
|
nets_deleted.append(i.name)
|
|
709
714
|
return nets_deleted
|
|
710
715
|
|
|
711
|
-
def find_or_create_net(
|
|
716
|
+
def find_or_create_net(
|
|
717
|
+
self, net_name: str = "", start_with: str = "", contain: str = "", end_with: str = ""
|
|
718
|
+
) -> Union[Net, List[Net]]:
|
|
712
719
|
"""Find or create a net based on given criteria.
|
|
713
720
|
|
|
714
721
|
Parameters
|
|
@@ -789,7 +796,7 @@ class Nets(CommonNets):
|
|
|
789
796
|
nets_found = [self.nets[net] for net in list(self.nets.keys()) if contain in net.lower()]
|
|
790
797
|
return nets_found
|
|
791
798
|
|
|
792
|
-
def is_net_in_component(self, component_name, net_name):
|
|
799
|
+
def is_net_in_component(self, component_name: str, net_name: str) -> bool:
|
|
793
800
|
"""Check if a net belongs to a component.
|
|
794
801
|
|
|
795
802
|
Parameters
|
|
@@ -817,8 +824,12 @@ class Nets(CommonNets):
|
|
|
817
824
|
return False
|
|
818
825
|
|
|
819
826
|
def find_and_fix_disjoint_nets(
|
|
820
|
-
self,
|
|
821
|
-
|
|
827
|
+
self,
|
|
828
|
+
net_list: Optional[List[str]] = None,
|
|
829
|
+
keep_only_main_net: bool = False,
|
|
830
|
+
clean_disjoints_less_than: float = 0.0,
|
|
831
|
+
order_by_area: bool = False,
|
|
832
|
+
) -> List[str]:
|
|
822
833
|
"""Find and fix disjoint nets.
|
|
823
834
|
|
|
824
835
|
.. deprecated:: pyedb 0.30.0
|
|
@@ -856,7 +867,7 @@ class Nets(CommonNets):
|
|
|
856
867
|
net_list, keep_only_main_net, clean_disjoints_less_than, order_by_area
|
|
857
868
|
)
|
|
858
869
|
|
|
859
|
-
def merge_nets_polygons(self, net_names_list):
|
|
870
|
+
def merge_nets_polygons(self, net_names_list: Union[str, List[str]]) -> bool:
|
|
860
871
|
"""Merge polygons for specified nets on each layer.
|
|
861
872
|
|
|
862
873
|
Parameters
|