pyedb 0.23.0__py3-none-any.whl → 0.24.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 (33) hide show
  1. pyedb/__init__.py +1 -1
  2. pyedb/dotnet/edb.py +35 -33
  3. pyedb/dotnet/edb_core/cell/hierarchy/hierarchy_obj.py +11 -0
  4. pyedb/dotnet/edb_core/cell/layout.py +30 -23
  5. pyedb/dotnet/edb_core/cell/layout_obj.py +0 -9
  6. pyedb/dotnet/edb_core/cell/primitive/__init__.py +3 -0
  7. pyedb/dotnet/edb_core/cell/{primitive.py → primitive/bondwire.py} +1 -146
  8. pyedb/dotnet/edb_core/cell/primitive/path.py +351 -0
  9. pyedb/dotnet/edb_core/cell/primitive/primitive.py +895 -0
  10. pyedb/dotnet/edb_core/cell/terminal/bundle_terminal.py +0 -4
  11. pyedb/dotnet/edb_core/cell/terminal/edge_terminal.py +1 -1
  12. pyedb/dotnet/edb_core/components.py +12 -5
  13. pyedb/dotnet/edb_core/dotnet/database.py +1 -23
  14. pyedb/dotnet/edb_core/dotnet/primitive.py +3 -139
  15. pyedb/dotnet/edb_core/edb_data/nets_data.py +1 -11
  16. pyedb/dotnet/edb_core/edb_data/padstacks_data.py +10 -24
  17. pyedb/dotnet/edb_core/edb_data/primitives_data.py +56 -868
  18. pyedb/dotnet/edb_core/geometry/polygon_data.py +43 -0
  19. pyedb/dotnet/edb_core/hfss.py +26 -22
  20. pyedb/dotnet/edb_core/layout_validation.py +3 -3
  21. pyedb/dotnet/edb_core/modeler.py +64 -81
  22. pyedb/dotnet/edb_core/nets.py +5 -4
  23. pyedb/dotnet/edb_core/padstack.py +12 -13
  24. pyedb/dotnet/edb_core/siwave.py +1 -1
  25. pyedb/dotnet/edb_core/stackup.py +3 -3
  26. pyedb/ipc2581/ecad/cad_data/layer_feature.py +1 -1
  27. pyedb/ipc2581/ecad/cad_data/polygon.py +2 -2
  28. pyedb/ipc2581/ecad/cad_data/step.py +2 -2
  29. pyedb/siwave.py +99 -0
  30. {pyedb-0.23.0.dist-info → pyedb-0.24.0.dist-info}/METADATA +2 -2
  31. {pyedb-0.23.0.dist-info → pyedb-0.24.0.dist-info}/RECORD +33 -30
  32. {pyedb-0.23.0.dist-info → pyedb-0.24.0.dist-info}/LICENSE +0 -0
  33. {pyedb-0.23.0.dist-info → pyedb-0.24.0.dist-info}/WHEEL +0 -0
@@ -29,12 +29,12 @@ import warnings
29
29
  import rtree
30
30
 
31
31
  from pyedb.dotnet.clr_module import Array
32
- from pyedb.dotnet.edb_core.dotnet.database import PolygonDataDotNet
33
32
  from pyedb.dotnet.edb_core.edb_data.padstacks_data import (
34
33
  EDBPadstack,
35
34
  EDBPadstackInstance,
36
35
  )
37
36
  from pyedb.dotnet.edb_core.general import convert_py_list_to_net_list
37
+ from pyedb.dotnet.edb_core.geometry.polygon_data import PolygonData
38
38
  from pyedb.generic.general_methods import generate_unique_name
39
39
  from pyedb.modeler.geometry_operators import GeometryOperators
40
40
 
@@ -240,9 +240,7 @@ class EdbPadstacks(object):
240
240
  padstack_instances = {}
241
241
  for _, edb_padstack_instance in self.instances.items():
242
242
  if edb_padstack_instance.aedt_name:
243
- padstack_instances[edb_padstack_instance.aedt_name] = EDBPadstackInstance(
244
- edb_padstack_instance, self._pedb
245
- )
243
+ padstack_instances[edb_padstack_instance.aedt_name] = edb_padstack_instance
246
244
  return padstack_instances
247
245
 
248
246
  def find_instance_by_id(self, value: int):
@@ -491,7 +489,7 @@ class EdbPadstacks(object):
491
489
  padstackInst = self.instances[padstackInst]._edb_padstackinstance
492
490
 
493
491
  else:
494
- psdef = padstackInst.GetPadstackDef()
492
+ psdef = padstackInst._edb_object.GetPadstackDef()
495
493
  newdefdata = self._edb.definition.PadstackDefData(psdef.GetData())
496
494
  newdefdata.SetSolderBallShape(self._edb.definition.SolderballShape.Cylinder)
497
495
  newdefdata.SetSolderBallParameter(self._get_edb_value(ballDiam), self._get_edb_value(ballDiam))
@@ -504,7 +502,7 @@ class EdbPadstacks(object):
504
502
  psdef.SetData(newdefdata)
505
503
  sball_layer = [lay._edb_layer for lay in list(self._layers.values()) if lay.name == sballLayer_name][0]
506
504
  if sball_layer is not None:
507
- padstackInst.SetSolderBallLayer(sball_layer)
505
+ padstackInst._edb_object.SetSolderBallLayer(sball_layer)
508
506
  return True
509
507
 
510
508
  return False
@@ -757,6 +755,7 @@ class EdbPadstacks(object):
757
755
  if not isinstance(net_list, list):
758
756
  net_list = [net_list]
759
757
  layout_lobj_collection = self._layout.padstack_instances
758
+ layout_lobj_collection = [i._edb_object for i in layout_lobj_collection]
760
759
  via_list = []
761
760
  for lobj in layout_lobj_collection:
762
761
  pad_layers_name = lobj.GetPadstackDef().GetData().GetLayerNames()
@@ -955,8 +954,8 @@ class EdbPadstacks(object):
955
954
  _poly.delete()
956
955
  else:
957
956
  return False
958
- elif isinstance(polygon_hole, PolygonDataDotNet):
959
- hole_param = polygon_hole.edb_api
957
+ elif isinstance(polygon_hole, PolygonData):
958
+ hole_param = polygon_hole._edb_object
960
959
  else:
961
960
  return False
962
961
  padstackData.SetPolygonalHoleParameters(hole_param, value0, value0, value0)
@@ -1007,7 +1006,7 @@ class EdbPadstacks(object):
1007
1006
  _poly.delete()
1008
1007
  else:
1009
1008
  return False
1010
- elif isinstance(pad_polygon, PolygonDataDotNet):
1009
+ elif isinstance(pad_polygon, PolygonData):
1011
1010
  pad_array = pad_polygon
1012
1011
  if antipad_shape == "Bullet": # pragma no cover
1013
1012
  antipad_array = Array[type(x_size)]([x_size, y_size, corner_radius])
@@ -1023,7 +1022,7 @@ class EdbPadstacks(object):
1023
1022
  _poly.delete()
1024
1023
  else:
1025
1024
  return False
1026
- elif isinstance(antipad_polygon, PolygonDataDotNet):
1025
+ elif isinstance(antipad_polygon, PolygonData):
1027
1026
  antipad_array = antipad_polygon
1028
1027
  else: # pragma no cover
1029
1028
  antipad_array = Array[type(antipaddiam)]([antipaddiam])
@@ -1035,7 +1034,7 @@ class EdbPadstacks(object):
1035
1034
  padstackData.SetPolygonalPadParameters(
1036
1035
  layer,
1037
1036
  self._edb.definition.PadType.RegularPad,
1038
- pad_array.edb_api,
1037
+ pad_array._edb_object,
1039
1038
  pad_offset_x,
1040
1039
  pad_offset_y,
1041
1040
  pad_rotation,
@@ -1043,7 +1042,7 @@ class EdbPadstacks(object):
1043
1042
  padstackData.SetPolygonalPadParameters(
1044
1043
  layer,
1045
1044
  self._edb.definition.PadType.AntiPad,
1046
- antipad_array.edb_api,
1045
+ antipad_array._edb_object,
1047
1046
  pad_offset_x,
1048
1047
  pad_offset_y,
1049
1048
  pad_rotation,
@@ -1208,7 +1207,7 @@ class EdbPadstacks(object):
1208
1207
  solderlayer,
1209
1208
  None,
1210
1209
  )
1211
- padstack_instance.SetIsLayoutPin(is_pin)
1210
+ padstack_instance.is_layout_pin = is_pin
1212
1211
  py_padstack_instance = EDBPadstackInstance(padstack_instance.api_object, self._pedb)
1213
1212
 
1214
1213
  return py_padstack_instance
@@ -912,7 +912,7 @@ class EdbSiwave(object):
912
912
  Name of the source.
913
913
 
914
914
  """
915
- if source.name in [i.GetName() for i in self._layout.terminals]:
915
+ if source.name in [i.name for i in self._layout.terminals]:
916
916
  source.name = generate_unique_name(source.name, n=3)
917
917
  self._logger.warning("Port already exists with same name. Renaming to {}".format(source.name))
918
918
  pos_pin_group = self._pedb.components.create_pingroup_from_pins(source.positive_node.node_pins)
@@ -217,7 +217,7 @@ class LayerCollection(object):
217
217
  kwargs["layer_type"] = layer_type
218
218
  return self._add_layer(add_method="add_layer_above", base_layer_name=base_layer_name, **kwargs)
219
219
 
220
- def add_document_layer(self, name, layer_type="UndefinedLayerType", **kwargs):
220
+ def add_document_layer(self, name, layer_type="user", **kwargs):
221
221
  """Add a document layer.
222
222
 
223
223
  Parameters
@@ -225,7 +225,7 @@ class LayerCollection(object):
225
225
  name : str
226
226
  Name of the layer.
227
227
  layer_type: str, optional
228
- Type of the layer. The default to ``"signal"``. Options are ``"signal"``, ``"dielectric"``
228
+ Type of the layer. The default is ``"user"``. Options are ``"user"``, ``"outline"``
229
229
  kwargs
230
230
 
231
231
  Returns
@@ -1800,7 +1800,7 @@ class Stackup(LayerCollection):
1800
1800
  temp_data = {name: 0 for name, _ in self.signal_layers.items()}
1801
1801
  outline_area = 0
1802
1802
  for i in self._pedb.modeler.primitives:
1803
- layer_name = i.GetLayer().GetName()
1803
+ layer_name = i.layer.name
1804
1804
  if layer_name.lower() == "outline":
1805
1805
  if i.area() > outline_area:
1806
1806
  outline_area = i.area()
@@ -113,7 +113,7 @@ class LayerFeature(object):
113
113
  is_via = False
114
114
  if not pin.start_layer == pin.stop_layer:
115
115
  is_via = True
116
- pin_net = pin.GetNet().GetName()
116
+ pin_net = pin._edb_object.GetNet().GetName()
117
117
  pos_rot = pin._edb_padstackinstance.GetPositionAndRotationValue()
118
118
  pin_rotation = pos_rot[2].ToDouble()
119
119
  if pin._edb_padstackinstance.IsLayoutPin():
@@ -35,7 +35,7 @@ class Polygon(object):
35
35
 
36
36
  def add_poly_step(self, polygon=None): # pragma no cover
37
37
  if polygon:
38
- polygon_data = polygon.GetPolygonData()
38
+ polygon_data = polygon._edb_object.GetPolygonData()
39
39
  if polygon_data.IsClosed():
40
40
  arcs = polygon_data.GetArcData()
41
41
  if not arcs:
@@ -64,7 +64,7 @@ class Polygon(object):
64
64
  new_poly_step.clock_wise = not arc.IsCCW()
65
65
  self.poly_steps.append(new_poly_step)
66
66
  for void in polygon.voids:
67
- void_polygon_data = void.GetPolygonData()
67
+ void_polygon_data = void._edb_object.GetPolygonData()
68
68
  if void_polygon_data.IsClosed():
69
69
  void_arcs = void_polygon_data.GetArcData()
70
70
  if not void_arcs:
@@ -89,7 +89,7 @@ class Step(object):
89
89
  net_name = net.name
90
90
  logical_net = LogicalNet()
91
91
  logical_net.name = net_name
92
- net_pins = list(net.PadstackInstances)
92
+ net_pins = list(net._edb_object.PadstackInstances)
93
93
  for pin in net_pins:
94
94
  new_pin_ref = logical_net.get_pin_ref_def()
95
95
  new_pin_ref.pin = pin.GetName()
@@ -250,7 +250,7 @@ class Step(object):
250
250
  )
251
251
  if pdef_name in padstack_defs:
252
252
  padstack_def = padstack_defs[pdef_name]
253
- comp_name = padstack_instance.GetComponent().GetName()
253
+ comp_name = padstack_instance._edb_object.GetComponent().GetName()
254
254
  if padstack_instance.is_pin and comp_name:
255
255
  component_inst = self._pedb.components.instances[comp_name]
256
256
  layers[layer_name].add_component_padstack_instance_feature(
pyedb/siwave.py CHANGED
@@ -9,11 +9,14 @@ automatically initialized by an app to the latest installed AEDT version.
9
9
  from __future__ import absolute_import # noreorder
10
10
 
11
11
  import os
12
+ from pathlib import Path
12
13
  import pkgutil
13
14
  import sys
15
+ import tempfile
14
16
  import time
15
17
  import warnings
16
18
 
19
+ from pyedb import Edb
17
20
  from pyedb.dotnet.clr_module import _clr
18
21
  from pyedb.edb_logger import pyedb_logger
19
22
  from pyedb.generic.general_methods import _pythonver, is_windows
@@ -28,6 +31,7 @@ def wait_export_file(flag, file_path, time_sleep=0.5):
28
31
  else:
29
32
  time.sleep(1)
30
33
  os.path.getsize(file_path)
34
+
31
35
  while True:
32
36
  file_size = os.path.getsize(file_path)
33
37
  if file_size > 0:
@@ -37,6 +41,17 @@ def wait_export_file(flag, file_path, time_sleep=0.5):
37
41
  return True
38
42
 
39
43
 
44
+ def wait_export_folder(flag, folder_path, time_sleep=0.5):
45
+ while True:
46
+ if os.path.exists(folder_path):
47
+ for root, _, files in os.walk(folder_path):
48
+ if any(os.path.getsize(os.path.join(root, file)) > 0 for file in files):
49
+ return True
50
+
51
+ # Wait before checking again.
52
+ time.sleep(time_sleep)
53
+
54
+
40
55
  class Siwave(object): # pragma no cover
41
56
  """Initializes SIwave based on the inputs provided and manages SIwave release and closing.
42
57
 
@@ -425,3 +440,87 @@ class Siwave(object): # pragma no cover
425
440
 
426
441
  """
427
442
  return self.oproject.ScrRunIcepakSimulation(icepak_simulation_name, dc_simulation_name)
443
+
444
+ def export_edb(self, file_path: str):
445
+ """Export the layout as EDB.
446
+
447
+ Parameters
448
+ ----------
449
+ file_path : str
450
+ Path to the EDB.
451
+
452
+ Returns
453
+ -------
454
+ bool
455
+ """
456
+ if isinstance(file_path, Path):
457
+ file_path = str(file_path)
458
+ flag = self.oproject.ScrExportEDB(file_path)
459
+ if flag == 0:
460
+ self._logger.info(f"Exporting EDB to {file_path}.")
461
+ return wait_export_folder(flag, file_path, time_sleep=1)
462
+ else: # pragma no cover
463
+ raise RuntimeError(f"Failed to export EDB to {file_path}.")
464
+
465
+ def import_edb(self, file_path: str):
466
+ """Import layout from EDB.
467
+
468
+ Parameters
469
+ ----------
470
+ file_path : Str
471
+ Path to the EDB file.
472
+ Returns
473
+ -------
474
+ bool
475
+ """
476
+ if isinstance(file_path, Path):
477
+ file_path = str(file_path)
478
+ flag = self.oproject.ScrImportEDB(file_path)
479
+ if flag == 0:
480
+ self._logger.info(f"Importing EDB to {file_path}.")
481
+ return True
482
+ else: # pragma no cover
483
+ raise RuntimeError(f"Failed to import EDB to {file_path}.")
484
+
485
+ def load_configuration(self, file_path: str):
486
+ """Load configuration settings from a configure file.Import
487
+
488
+ Parameters
489
+ ----------
490
+ file_path : str
491
+ Path to the configuration file.
492
+ """
493
+ if isinstance(file_path, Path):
494
+ file_path = str(file_path)
495
+
496
+ temp_folder = tempfile.TemporaryDirectory(suffix=".ansys")
497
+ temp_edb = os.path.join(temp_folder.name, "temp.aedb")
498
+
499
+ self.export_edb(temp_edb)
500
+ self.save_project()
501
+ self.oproject.ScrCloseProject()
502
+ edbapp = Edb(temp_edb, edbversion=self.current_version)
503
+ edbapp.configuration.load(file_path)
504
+ edbapp.configuration.run()
505
+ edbapp.save()
506
+ edbapp.close()
507
+ self.import_edb(temp_edb)
508
+
509
+ def export_configuration(self, file_path: str):
510
+ """Export layout information into a configuration file.
511
+
512
+ Parameters
513
+ ----------
514
+ file_path : str
515
+ Path to the configuration file.
516
+ """
517
+ if isinstance(file_path, Path):
518
+ file_path = str(file_path)
519
+
520
+ temp_folder = tempfile.TemporaryDirectory(suffix=".ansys")
521
+ temp_edb = os.path.join(temp_folder.name, "temp.aedb")
522
+
523
+ self.export_edb(temp_edb)
524
+ edbapp = Edb(temp_edb, edbversion=self.current_version)
525
+ edbapp.configuration.export(file_path)
526
+ edbapp.close()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyedb
3
- Version: 0.23.0
3
+ Version: 0.24.0
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>
@@ -40,7 +40,7 @@ Requires-Dist: Sphinx>=7.1.0,<7.4 ; extra == "doc"
40
40
  Requires-Dist: sphinx-autobuild==2024.2.4 ; extra == "doc" and ( python_version == '3.8')
41
41
  Requires-Dist: sphinx-autobuild==2024.2.4 ; extra == "doc" and ( python_version > '3.8')
42
42
  Requires-Dist: sphinx-copybutton>=0.5.0,<0.6 ; extra == "doc"
43
- Requires-Dist: sphinx-gallery>=0.14.0,<0.17 ; extra == "doc"
43
+ Requires-Dist: sphinx-gallery>=0.14.0,<0.18 ; extra == "doc"
44
44
  Requires-Dist: sphinx_design>=0.4.0,<0.7 ; extra == "doc"
45
45
  Requires-Dist: matplotlib>=3.5.0,<3.10 ; extra == "full"
46
46
  Requires-Dist: matplotlib>=3.5.0,<3.10 ; extra == "tests"
@@ -1,7 +1,7 @@
1
- pyedb/__init__.py,sha256=xnLyyBWT5_md6mH2D48VDx18q8okp5BTIQQt79z6dfY,1521
1
+ pyedb/__init__.py,sha256=Chvf1Pw0bR7i5T4tBFP8S_KsnyyrNNlKEd5zobtcK48,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=_AxkSZ-7P9aVmizWUWmwcqI07rpGsIZ_fYsd1WNjR6w,12986
4
+ pyedb/siwave.py,sha256=Mo-8ETIwTbPNbqfaDJkbl_G3Dp8mdtYFl54Ms9sGAZo,16004
5
5
  pyedb/workflow.py,sha256=Y0ya4FUHwlSmoLP45zjdYLsSpyKduHUSpT9GGK9MGd8,814
6
6
  pyedb/component_libraries/ansys_components.py,sha256=afelGEPmQzbFOIkHnvnWosSs3CqDT5j_kr_1bhrdfnI,3336
7
7
  pyedb/configuration/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -23,39 +23,42 @@ pyedb/configuration/cfg_stackup.py,sha256=CX7uNN5QRoYW_MOObknP8003YchTS7PH9Oee7F
23
23
  pyedb/configuration/configuration.py,sha256=ss0Jqj0pp4Up-4Hm-jBQGSAmF4uQjaELfyhxqPE2z4o,12627
24
24
  pyedb/dotnet/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
25
25
  pyedb/dotnet/clr_module.py,sha256=Mo13Of3DVSA5HR-5xZEXOiHApIKy52CUxtJ2gPkEu1A,3406
26
- pyedb/dotnet/edb.py,sha256=S1MYHdz6cmwgGX5VPSgqTsilQb6t8hI86lvFlVpzmVw,181088
26
+ pyedb/dotnet/edb.py,sha256=7sNO4RxRPb3q_g5FYEiYfFS6jcNeqj8EW19JFk7dMxI,181348
27
27
  pyedb/dotnet/application/Variables.py,sha256=v_fxFJ6xjyyhk4uaMzWAbP-1FhXGuKsVNuyV1huaPME,77867
28
28
  pyedb/dotnet/application/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
29
29
  pyedb/dotnet/edb_core/__init__.py,sha256=nIRLJ8VZLcMAp12zmGsnZ5x2BEEl7q_Kj_KAOXxVjpQ,52
30
- pyedb/dotnet/edb_core/components.py,sha256=DCBpgMecGDJ0hcb3lZsaKSCihbLLkDdF85L3_NIm2XQ,110233
30
+ pyedb/dotnet/edb_core/components.py,sha256=Hi07An_cDV8CPlMV11BNQMFm823oz8-nfWXpbqYPKoQ,110543
31
31
  pyedb/dotnet/edb_core/general.py,sha256=1g2bUekyUbu8p8zCinT4eI7uqRGIK8tY8mfuFePGRGg,4415
32
- pyedb/dotnet/edb_core/hfss.py,sha256=alhOpt4GBdhjavmhe0TW275bKnFeW2VQl8TJrWVyhMg,68534
32
+ pyedb/dotnet/edb_core/hfss.py,sha256=C6-to6YKoruQjRWedLY7agkTVQv4Hb2U2qX-iPzHOI0,68655
33
33
  pyedb/dotnet/edb_core/layout_obj_instance.py,sha256=Pd8rfdO3b6HLFGwXBMw-tfE4LPIcW_9_X5KEdFaiito,1407
34
- pyedb/dotnet/edb_core/layout_validation.py,sha256=aOYgttlJ007uGG94NnhZR_iNHTuCI5CHkHWWTcm9n-E,12617
34
+ pyedb/dotnet/edb_core/layout_validation.py,sha256=B2FIHsize6JZ5VhwN_3zBniK7iRC6dd01ujXYiliK0A,12604
35
35
  pyedb/dotnet/edb_core/materials.py,sha256=zzYWIJ5dvOIO2H2vREpRnwGDx0hEa5QhCsg_EJkydww,43222
36
- pyedb/dotnet/edb_core/modeler.py,sha256=128NhF0ijpoX3n95qrAgWrc-C9OlO8kK-GlmXMJyKNE,55912
36
+ pyedb/dotnet/edb_core/modeler.py,sha256=iu16E6GXLlJZvsI_WTphyDDbFKX-i6_crFclTnNa--8,55316
37
37
  pyedb/dotnet/edb_core/net_class.py,sha256=4U6Cc1Gn7ZJ_ub9uKmtrsoz5wD1XS42afci3Y3ewRp0,11354
38
- pyedb/dotnet/edb_core/nets.py,sha256=ws-wq33iMwxN9II0KwOnawwl7WPtZRoDne-hLWgnIVE,43144
39
- pyedb/dotnet/edb_core/padstack.py,sha256=fWQz5VDa1SUi7c4MLjp4xpWobzkDZHRVmA-Yj3If4Fg,63560
40
- pyedb/dotnet/edb_core/siwave.py,sha256=d9iNHaEkz5Pa4UMMZnlVO_2TVEvrm3UijbydWwNeQII,64316
41
- pyedb/dotnet/edb_core/stackup.py,sha256=SFO8kYvHK3VQYneM_X-phMlwvSJDZzW_xWDud1rniNY,119835
38
+ pyedb/dotnet/edb_core/nets.py,sha256=JZvrlPOKiRjbHAX6GkrYKvaXujHS3lz-rucS0Ib8ezk,43213
39
+ pyedb/dotnet/edb_core/padstack.py,sha256=al5cXfnJXyaM6-KCAd8D8-TZzcIXHwco8grD44U7gNY,63588
40
+ pyedb/dotnet/edb_core/siwave.py,sha256=4duoAsFCuPMNLxtMTEEVJCUaHKNkdbLDmtTXiD93VrM,64311
41
+ pyedb/dotnet/edb_core/stackup.py,sha256=_jvmLHpo5_4CM8V_xnB81WQrqJGsEHs3eECS8Y-buaQ,119804
42
42
  pyedb/dotnet/edb_core/cell/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
43
43
  pyedb/dotnet/edb_core/cell/connectable.py,sha256=rKWPATg0GCHi4d1ftu2V7WWhkDONjloCSPujssie5a8,2310
44
- pyedb/dotnet/edb_core/cell/layout.py,sha256=g9vMzja9VT9iLFJDz75zYWuE5FfdjquYWysoaIgu1kY,11877
45
- pyedb/dotnet/edb_core/cell/layout_obj.py,sha256=fVLjHMsokK2eEILTBo_9lEpjJCP0bkdk5RFZclnTi4o,3088
46
- pyedb/dotnet/edb_core/cell/primitive.py,sha256=WHiX5ROLMYf71ZuX-4TrOUhRcI6RLiUPap7AzajO2YA,11704
44
+ pyedb/dotnet/edb_core/cell/layout.py,sha256=wDJI5Urhif5QCKqkrqhN2eDviLCsiRf-hu1L59dbLAg,12114
45
+ pyedb/dotnet/edb_core/cell/layout_obj.py,sha256=S42rdiI6gVqO77DV3ikc4YxTNufTuqW_X1G-2zkWArA,2765
47
46
  pyedb/dotnet/edb_core/cell/voltage_regulator.py,sha256=-uAzuyERV6ca0bFRzdH4SllcpGY2D9JEdpS7RYaQt6c,5387
48
47
  pyedb/dotnet/edb_core/cell/hierarchy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
49
48
  pyedb/dotnet/edb_core/cell/hierarchy/component.py,sha256=3dkbGO8Wsmbq3n9JaFixJXfvQ5aNqC8OMo43-KPukUc,33851
50
- pyedb/dotnet/edb_core/cell/hierarchy/hierarchy_obj.py,sha256=QZhkoSxRnewxvX8HJKHx-jcw-eIR3eudmDqFQbvltfM,1896
49
+ pyedb/dotnet/edb_core/cell/hierarchy/hierarchy_obj.py,sha256=OUNK6INKlbJkCbzy6jKZzrQs7fvCR1qiTjt7te0S7nQ,2160
51
50
  pyedb/dotnet/edb_core/cell/hierarchy/model.py,sha256=LwXE4VUfptG5rJ9gmAmye0hECBv7bUGtby1ZzNFkeT0,3198
52
51
  pyedb/dotnet/edb_core/cell/hierarchy/netlist_model.py,sha256=fF6tY-6s-lW9EuvJ5sw3RlIkjuoSjeZbrNk5wG-_hzM,1356
53
52
  pyedb/dotnet/edb_core/cell/hierarchy/pin_pair_model.py,sha256=4zo2ut6UAeJqxw70n1luWg2QGEeuMRoVcEcdC9bYG50,3846
54
53
  pyedb/dotnet/edb_core/cell/hierarchy/s_parameter_model.py,sha256=o7Omw4R9uQGCBDj4dIU-R73Uf6v3p_zKLMAzJlaH9VA,1456
55
54
  pyedb/dotnet/edb_core/cell/hierarchy/spice_model.py,sha256=SGiUcan2l0n8DGk3GtwCskkqZ3rdVHMSS_fGlAfwJSk,1443
55
+ pyedb/dotnet/edb_core/cell/primitive/__init__.py,sha256=8jByHkoaowAYQTCww-zRrTQmN061fLz_OHjTLSrzQQY,58
56
+ pyedb/dotnet/edb_core/cell/primitive/bondwire.py,sha256=fqIMdv0bNvk591DG6De5c--w9Rpkl5AOeo_qgzoPE6M,7322
57
+ pyedb/dotnet/edb_core/cell/primitive/path.py,sha256=XVN7dOVpccoBP28M8l5iMzK5QSQdHqpKqC4jK76UTis,12543
58
+ pyedb/dotnet/edb_core/cell/primitive/primitive.py,sha256=IMGIaPCY8wpq3uInizwc1ObmdsTn5kg9YEqk9uztRuU,29764
56
59
  pyedb/dotnet/edb_core/cell/terminal/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
57
- pyedb/dotnet/edb_core/cell/terminal/bundle_terminal.py,sha256=TRPlsLH3_QOlDa5s8-tx399fkpJ3eJ8ictuCvlgkai0,2050
58
- pyedb/dotnet/edb_core/cell/terminal/edge_terminal.py,sha256=MvmKA0JGVeqGx7smuMOVPaQ_PESJmi34oUL9OH5oKiY,2137
60
+ pyedb/dotnet/edb_core/cell/terminal/bundle_terminal.py,sha256=qM0wEXkZ-DpoJ6vlVa560Ce8IgOdp4vyIJPedvoa3O0,1977
61
+ pyedb/dotnet/edb_core/cell/terminal/edge_terminal.py,sha256=lafPRrvsDPYKcysvrkO-5tEZXF3h4IcTXdeJgTjleuI,2158
59
62
  pyedb/dotnet/edb_core/cell/terminal/padstack_instance_terminal.py,sha256=HOMNvSj8thN3RgSg2eDb_CE8PpqkcVLrIYPZGOW-IQk,3803
60
63
  pyedb/dotnet/edb_core/cell/terminal/pingroup_terminal.py,sha256=M5qZNH-MLDkgSJABNVKmnBLyLgezm2fqJGl70EyPVUo,2586
61
64
  pyedb/dotnet/edb_core/cell/terminal/point_terminal.py,sha256=DafZBGjUx_OE8gZWcUKPh4cH3BRkJSj9XolhzIPOE3I,2400
@@ -67,18 +70,18 @@ pyedb/dotnet/edb_core/definition/definition_obj.py,sha256=QKlR8DNpNaOd00sY1ybEZA
67
70
  pyedb/dotnet/edb_core/definition/definitions.py,sha256=9Zjl5LNidDBk07m-QGpducWfFsyE52pScI8PC5f0doU,2383
68
71
  pyedb/dotnet/edb_core/definition/package_def.py,sha256=UoYNdfrB5j0rG4OK94yE25dCTzHcpDjSEn4L2yF10YY,6145
69
72
  pyedb/dotnet/edb_core/dotnet/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
70
- pyedb/dotnet/edb_core/dotnet/database.py,sha256=xyISmY691ItgM_Fqos3Bra4BRnxCJVU4M1Ueg4V9ixg,37324
71
- pyedb/dotnet/edb_core/dotnet/primitive.py,sha256=k9ltBCWtekt-iiZj8r0yEDp2dWSxKm19SaMqDGkL-ac,54135
73
+ pyedb/dotnet/edb_core/dotnet/database.py,sha256=9mfEg451IX3Y8PKnyhbVPApqtgmB9R4VTeWyfux8Q0A,36691
74
+ pyedb/dotnet/edb_core/dotnet/primitive.py,sha256=GVXsOtTowFiuxFw-Sdv80lv0XZFpoLr4KIj80bEDd7U,49942
72
75
  pyedb/dotnet/edb_core/edb_data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
73
76
  pyedb/dotnet/edb_core/edb_data/control_file.py,sha256=_W5DDBFvm4gTq8yCvhzfiWUsfpQK4PnLkjmntIYvW8E,48217
74
77
  pyedb/dotnet/edb_core/edb_data/design_options.py,sha256=RO9ip-T5Bfxpsl97_QEk0qDZsza3tLzIX2t25XLutys,2057
75
78
  pyedb/dotnet/edb_core/edb_data/edbvalue.py,sha256=Vj_11HXsQUNavizKp5FicORm6cjhXRh9uvxhv_D_RJc,1977
76
79
  pyedb/dotnet/edb_core/edb_data/hfss_extent_info.py,sha256=hKFHWUl0_OCMEZJbQn5c8Y1a-BYKr8nAycIlrCoeufk,13005
77
80
  pyedb/dotnet/edb_core/edb_data/layer_data.py,sha256=B6cClg5KTcKUn33jYccTN0uNZZ5dQ037WHCsI-vg3Us,25748
78
- pyedb/dotnet/edb_core/edb_data/nets_data.py,sha256=ICF61kgST9Rm4hUqU3KUh8FMNlrZEVQO1LqZR1VADkA,9979
79
- pyedb/dotnet/edb_core/edb_data/padstacks_data.py,sha256=x0OK4FcoDbUC14mkUM9_S8Re6oTQq5Uw6RzuhepOle0,77972
81
+ pyedb/dotnet/edb_core/edb_data/nets_data.py,sha256=Ifi5uSfnOuTLwesO9TS3_F-qa_8rpPXrJy6W5lvIWik,9684
82
+ pyedb/dotnet/edb_core/edb_data/padstacks_data.py,sha256=wOBO86cFGnx8OIsALzlQv59XeSGBhUYhJa7rksySGRE,77523
80
83
  pyedb/dotnet/edb_core/edb_data/ports.py,sha256=wr2RQi8VExuNIVmnp7c4VpTIhODgthmJmHr01zO4ueo,8873
81
- pyedb/dotnet/edb_core/edb_data/primitives_data.py,sha256=i6mC-y19iiO9Tr4w3A4Usrd_flyeUSPnxLCz980qFyA,43442
84
+ pyedb/dotnet/edb_core/edb_data/primitives_data.py,sha256=AkZOS-Uam_SLXy1WpPPlSWCyD1IyQ8afxFcl8gi0A_E,15426
82
85
  pyedb/dotnet/edb_core/edb_data/raptor_x_simulation_setup_data.py,sha256=P37-OIsc8TuTC_s3CXRmvZcJqxAftHA7SATfEyoAnMM,20953
83
86
  pyedb/dotnet/edb_core/edb_data/simulation_configuration.py,sha256=Z_Iuh7qgj9s0PwmlOOdBOC47imBTgWPAWt8KxGNZmZQ,100432
84
87
  pyedb/dotnet/edb_core/edb_data/sources.py,sha256=jzC6p-fiuPEvZn3b9z1-X5UexW5jd48jZRamXillnXI,15700
@@ -86,7 +89,7 @@ pyedb/dotnet/edb_core/edb_data/utilities.py,sha256=3wZqOJ35eisOwOPKOs-bvJ8kmd62e
86
89
  pyedb/dotnet/edb_core/edb_data/variables.py,sha256=LS1jZPOYgRvf4cyKf_x8hI9Brs-qbh4wrHu_QGLElrg,3501
87
90
  pyedb/dotnet/edb_core/geometry/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
88
91
  pyedb/dotnet/edb_core/geometry/point_data.py,sha256=hC9cRuSnX4cwg09Jr0ZK7ZTjFf_4NwXJMGbZ3s-ULpQ,1590
89
- pyedb/dotnet/edb_core/geometry/polygon_data.py,sha256=NQxTlbGPLHf2rW8wgHQzpbPf0zWHTFolsRTUNl1wOMI,2879
92
+ pyedb/dotnet/edb_core/geometry/polygon_data.py,sha256=xVOru_HeSnJf3bczTgmV-Izrv-ae2b4270Xbck8LwFM,4593
90
93
  pyedb/dotnet/edb_core/sim_setup_data/__init__.py,sha256=8jByHkoaowAYQTCww-zRrTQmN061fLz_OHjTLSrzQQY,58
91
94
  pyedb/dotnet/edb_core/sim_setup_data/data/__init__.py,sha256=8jByHkoaowAYQTCww-zRrTQmN061fLz_OHjTLSrzQQY,58
92
95
  pyedb/dotnet/edb_core/sim_setup_data/data/adaptive_frequency_data.py,sha256=tlHI7PUUoseNnJAtihpjb1PwXYNr-4ztAAnunlLLWVQ,2463
@@ -144,7 +147,7 @@ pyedb/ipc2581/ecad/cad_data/component.py,sha256=uE2_IyITp5TQ8y2K4ojk212471RPYrDw
144
147
  pyedb/ipc2581/ecad/cad_data/drill.py,sha256=COfVTiOueJQhSd19eV1usuHp7BT8KrhDc9VXM-e7TkM,2083
145
148
  pyedb/ipc2581/ecad/cad_data/feature.py,sha256=W2BSD8lBB3oBEhdqFe6V7chT5g_t7GA-uKE01cFUQpw,3023
146
149
  pyedb/ipc2581/ecad/cad_data/layer.py,sha256=IA4De_4WgcTZi3d2o5FPptYjNobai3W3FexUT_4-t9o,2270
147
- pyedb/ipc2581/ecad/cad_data/layer_feature.py,sha256=d2w509r5njZVzVKwl_tUdWrjFLgSyvYAQOqXFoSEAGA,8382
150
+ pyedb/ipc2581/ecad/cad_data/layer_feature.py,sha256=7Gcp9jAgROCWsnkDXAxwhHiV529krxejAQy3JHbLzm4,8394
148
151
  pyedb/ipc2581/ecad/cad_data/logical_net.py,sha256=6ChBFNDLqPLF-DzPWCfVwereiGNt0OGD5IbLF9ZHFTY,2042
149
152
  pyedb/ipc2581/ecad/cad_data/outline.py,sha256=Nnb4FJQ9PsKAu8L0PBYRMLhAaBt39sXi0SQnjV8xamM,2197
150
153
  pyedb/ipc2581/ecad/cad_data/package.py,sha256=38XBlIZVysF8F7nNuNWkkK7qWQ-7a6ZLLitOKONqgF4,5484
@@ -155,12 +158,12 @@ pyedb/ipc2581/ecad/cad_data/padstack_pad_def.py,sha256=ihojy_KwERcIOOYVUIUMJD7fH
155
158
  pyedb/ipc2581/ecad/cad_data/path.py,sha256=np8yAFhpua6kWzv5ObuaovLymwpFDatA0fZ1POiZoV8,4960
156
159
  pyedb/ipc2581/ecad/cad_data/phy_net.py,sha256=d2keM6cOqATRbdrmTBcJREZjW_bVBXt5CEI44ksYTIo,3640
157
160
  pyedb/ipc2581/ecad/cad_data/pin.py,sha256=15jx5iS29QRTuvJxt0k5AQD5HNP5Frv6qqH0sTHSBmM,2124
158
- pyedb/ipc2581/ecad/cad_data/polygon.py,sha256=tkoPfLKEdOVGny823SELSd1AiByMLx4rdgdNtRYkLBc,8771
161
+ pyedb/ipc2581/ecad/cad_data/polygon.py,sha256=sDN_ewBKIlDD394Zu_b2Xp203r-ZzDEn1k7EFhTA03k,8795
159
162
  pyedb/ipc2581/ecad/cad_data/profile.py,sha256=H7f0KdCQJhR8bc7jn7rjUlLPLo0wr0x5sabxA47LEyw,2781
160
163
  pyedb/ipc2581/ecad/cad_data/stackup.py,sha256=_CyyYwFjrVyQEpsL_4bFSz9U1sMTWhfLUov6RdhdITE,2274
161
164
  pyedb/ipc2581/ecad/cad_data/stackup_group.py,sha256=zRtg9Va6SQn6eJOiB_8cvSptAbUa-SQbwB4e4Kr2N0Q,2717
162
165
  pyedb/ipc2581/ecad/cad_data/stackup_layer.py,sha256=SMkX9wrHdxbVn6hcPqlAbWz14IKiVy3dg9Dj6V-dcGA,1970
163
- pyedb/ipc2581/ecad/cad_data/step.py,sha256=eDLPj8q0qJCnrHyz0vOIguef7WpfLh3rf3n1hWSSSUg,12295
166
+ pyedb/ipc2581/ecad/cad_data/step.py,sha256=DT6KfkoGoov7o3HY3omYKVe1gWIbKLChEN11jlIhKE8,12319
164
167
  pyedb/misc/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
165
168
  pyedb/misc/aedtlib_personalib_install.py,sha256=eCVAdEoriMU92bZwPzY9Aig85cBbUO0J8J4RMtMkY_o,1759
166
169
  pyedb/misc/downloads.py,sha256=j9jJhwGTTJwm4WWaCSEhGZzOGyOyHhBAFexx0NtD4Uw,10824
@@ -182,7 +185,7 @@ pyedb/misc/siw_feature_config/xtalk_scan/scan_config.py,sha256=YmYI6WTQulL5Uf8Wx
182
185
  pyedb/misc/siw_feature_config/xtalk_scan/td_xtalk_config.py,sha256=KHa-UqcXuabiVfT2CV-UvWl5Q2qGYHF2Ye9azcAlnXc,3966
183
186
  pyedb/modeler/geometry_operators.py,sha256=g_Sy7a6R23sP6RtboJn1rl8uTuo8oeLmMF21rNkzwjk,74198
184
187
  pyedb/siwave_core/icepak.py,sha256=WnZ-t8mik7LDY06V8hZFV-TxRZJQWK7bu_8Ichx-oBs,5206
185
- pyedb-0.23.0.dist-info/LICENSE,sha256=qQWivZ12ETN5l3QxvTARY-QI5eoRRlyHdwLlAj0Bg5I,1089
186
- pyedb-0.23.0.dist-info/WHEEL,sha256=EZbGkh7Ie4PoZfRQ8I0ZuP9VklN_TvcZ6DSE5Uar4z4,81
187
- pyedb-0.23.0.dist-info/METADATA,sha256=gLEu3TBgTAstql9Q2ev_e6qRr93kbJ3ND-7n6C0dD9Q,8387
188
- pyedb-0.23.0.dist-info/RECORD,,
188
+ pyedb-0.24.0.dist-info/LICENSE,sha256=qQWivZ12ETN5l3QxvTARY-QI5eoRRlyHdwLlAj0Bg5I,1089
189
+ pyedb-0.24.0.dist-info/WHEEL,sha256=EZbGkh7Ie4PoZfRQ8I0ZuP9VklN_TvcZ6DSE5Uar4z4,81
190
+ pyedb-0.24.0.dist-info/METADATA,sha256=G3Lci5o6XNKqCo9-qFMpgqZ3Sd2ihk0vnFdJTWnk4b0,8387
191
+ pyedb-0.24.0.dist-info/RECORD,,
File without changes