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.

Files changed (97) hide show
  1. pyedb/__init__.py +1 -1
  2. pyedb/configuration/cfg_common.py +12 -15
  3. pyedb/configuration/cfg_data.py +2 -2
  4. pyedb/configuration/cfg_modeler.py +163 -234
  5. pyedb/configuration/cfg_ports_sources.py +6 -8
  6. pyedb/configuration/cfg_stackup.py +62 -249
  7. pyedb/configuration/configuration.py +272 -170
  8. pyedb/dotnet/database/cell/hierarchy/model.py +1 -1
  9. pyedb/dotnet/database/cell/layout.py +1 -1
  10. pyedb/dotnet/database/cell/layout_obj.py +3 -3
  11. pyedb/dotnet/database/cell/primitive/path.py +1 -1
  12. pyedb/dotnet/database/cell/primitive/primitive.py +8 -8
  13. pyedb/dotnet/database/cell/terminal/pingroup_terminal.py +1 -1
  14. pyedb/dotnet/database/cell/terminal/point_terminal.py +1 -1
  15. pyedb/dotnet/database/cell/terminal/terminal.py +24 -26
  16. pyedb/dotnet/database/components.py +33 -27
  17. pyedb/dotnet/database/definition/component_def.py +3 -3
  18. pyedb/dotnet/database/definition/component_model.py +1 -1
  19. pyedb/dotnet/database/definition/package_def.py +1 -1
  20. pyedb/dotnet/database/dotnet/database.py +47 -38
  21. pyedb/dotnet/database/dotnet/primitive.py +16 -16
  22. pyedb/dotnet/database/edb_data/hfss_extent_info.py +6 -6
  23. pyedb/dotnet/database/edb_data/layer_data.py +17 -15
  24. pyedb/dotnet/database/edb_data/padstacks_data.py +12 -12
  25. pyedb/dotnet/database/edb_data/primitives_data.py +3 -3
  26. pyedb/dotnet/database/edb_data/sources.py +6 -6
  27. pyedb/dotnet/database/edb_data/variables.py +7 -3
  28. pyedb/dotnet/database/geometry/point_data.py +1 -1
  29. pyedb/dotnet/database/geometry/polygon_data.py +2 -4
  30. pyedb/dotnet/database/hfss.py +7 -7
  31. pyedb/dotnet/database/materials.py +2 -2
  32. pyedb/dotnet/database/modeler.py +8 -11
  33. pyedb/dotnet/database/nets.py +1 -1
  34. pyedb/dotnet/database/padstack.py +72 -1
  35. pyedb/dotnet/database/sim_setup_data/data/settings.py +24 -0
  36. pyedb/dotnet/database/sim_setup_data/io/siwave.py +26 -1
  37. pyedb/dotnet/database/siwave.py +19 -5
  38. pyedb/dotnet/database/stackup.py +80 -137
  39. pyedb/dotnet/database/utilities/heatsink.py +4 -4
  40. pyedb/dotnet/database/utilities/obj_base.py +1 -1
  41. pyedb/dotnet/database/utilities/simulation_setup.py +1 -1
  42. pyedb/dotnet/database/utilities/siwave_cpa_simulation_setup.py +894 -0
  43. pyedb/dotnet/database/utilities/siwave_simulation_setup.py +15 -0
  44. pyedb/dotnet/database/utilities/value.py +116 -0
  45. pyedb/dotnet/edb.py +58 -45
  46. pyedb/generic/design_types.py +39 -1
  47. pyedb/generic/grpc_warnings.py +5 -0
  48. pyedb/grpc/__init__.py +0 -0
  49. pyedb/grpc/database/components.py +155 -98
  50. pyedb/grpc/database/control_file.py +240 -193
  51. pyedb/grpc/database/definition/materials.py +23 -30
  52. pyedb/grpc/database/definition/package_def.py +15 -15
  53. pyedb/grpc/database/definition/padstack_def.py +51 -51
  54. pyedb/grpc/database/definitions.py +7 -5
  55. pyedb/grpc/database/geometry/arc_data.py +7 -5
  56. pyedb/grpc/database/geometry/point_3d_data.py +8 -7
  57. pyedb/grpc/database/geometry/polygon_data.py +3 -2
  58. pyedb/grpc/database/hierarchy/component.py +43 -38
  59. pyedb/grpc/database/hierarchy/pin_pair_model.py +15 -14
  60. pyedb/grpc/database/hierarchy/pingroup.py +9 -9
  61. pyedb/grpc/database/layers/stackup_layer.py +45 -44
  62. pyedb/grpc/database/layout/layout.py +9 -8
  63. pyedb/grpc/database/layout/voltage_regulator.py +7 -7
  64. pyedb/grpc/database/layout_validation.py +13 -12
  65. pyedb/grpc/database/modeler.py +156 -131
  66. pyedb/grpc/database/nets.py +42 -31
  67. pyedb/grpc/database/padstacks.py +270 -175
  68. pyedb/grpc/database/ports/ports.py +5 -6
  69. pyedb/grpc/database/primitive/bondwire.py +8 -7
  70. pyedb/grpc/database/primitive/circle.py +4 -4
  71. pyedb/grpc/database/primitive/padstack_instance.py +18 -18
  72. pyedb/grpc/database/primitive/path.py +7 -7
  73. pyedb/grpc/database/primitive/polygon.py +3 -3
  74. pyedb/grpc/database/primitive/primitive.py +13 -17
  75. pyedb/grpc/database/primitive/rectangle.py +13 -13
  76. pyedb/grpc/database/simulation_setup/hfss_general_settings.py +1 -1
  77. pyedb/grpc/database/simulation_setup/hfss_simulation_setup.py +10 -0
  78. pyedb/grpc/database/simulation_setup/siwave_cpa_simulation_setup.py +961 -0
  79. pyedb/grpc/database/simulation_setup/siwave_simulation_setup.py +17 -1
  80. pyedb/grpc/database/siwave.py +44 -24
  81. pyedb/grpc/database/source_excitations.py +333 -229
  82. pyedb/grpc/database/stackup.py +164 -147
  83. pyedb/grpc/database/terminal/bundle_terminal.py +17 -7
  84. pyedb/grpc/database/terminal/edge_terminal.py +10 -0
  85. pyedb/grpc/database/terminal/padstack_instance_terminal.py +15 -4
  86. pyedb/grpc/database/terminal/pingroup_terminal.py +11 -10
  87. pyedb/grpc/database/terminal/point_terminal.py +4 -3
  88. pyedb/grpc/database/terminal/terminal.py +9 -9
  89. pyedb/grpc/database/utility/value.py +109 -0
  90. pyedb/grpc/edb.py +129 -45
  91. pyedb/grpc/edb_init.py +0 -7
  92. pyedb/siwave_core/cpa/simulation_setup_data_model.py +132 -0
  93. pyedb/siwave_core/product_properties.py +198 -0
  94. {pyedb-0.52.0.dist-info → pyedb-0.54.0.dist-info}/METADATA +15 -13
  95. {pyedb-0.52.0.dist-info → pyedb-0.54.0.dist-info}/RECORD +97 -89
  96. {pyedb-0.52.0.dist-info → pyedb-0.54.0.dist-info}/WHEEL +1 -1
  97. {pyedb-0.52.0.dist-info → pyedb-0.54.0.dist-info/licenses}/LICENSE +0 -0
@@ -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(self, power_nets=None, signal_nets=None):
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(self, power_net_name, ground_nets):
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(self, net_name="", start_with="", contain="", end_with=""):
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, net_list=None, keep_only_main_net=False, clean_disjoints_less_than=0.0, order_by_area=False
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