pyedb 0.26.2__py3-none-any.whl → 0.27.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 CHANGED
@@ -44,7 +44,7 @@ deprecation_warning()
44
44
  #
45
45
 
46
46
  pyedb_path = os.path.dirname(__file__)
47
- __version__ = "0.26.2"
47
+ __version__ = "0.27.0"
48
48
  version = __version__
49
49
 
50
50
  #
@@ -34,16 +34,20 @@ class CfgSpiceModel:
34
34
  self.sub_circuit_name = self._spice_dict.get("sub_circuit_name", "")
35
35
  self.apply_to_all = self._spice_dict.get("apply_to_all", True)
36
36
  self.components = list(self._spice_dict.get("components", []))
37
+ self.terminal_pairs = self._spice_dict.get("terminal_pairs", None)
37
38
 
38
39
  def apply(self):
39
40
  """Apply Spice model on layout."""
40
41
  if not Path(self.file_path).anchor:
41
42
  fpath = str(Path(self.path_libraries) / self.file_path)
42
- comps = self._pedb.components.definitions[self.component_definition].components
43
- if self.apply_to_all:
44
- for ref_des, comp in comps.items():
45
- comp.assign_spice_model(fpath, self.name, self.sub_circuit_name)
46
- else:
47
- for ref_des, comp in comps.items():
48
- if ref_des in self.components:
49
- comp.assign_spice_model(fpath, self.name, self.sub_circuit_name)
43
+ else:
44
+ fpath = self.file_path
45
+
46
+ comps = self._pedb.components.definitions[self.component_definition].components
47
+ if self.apply_to_all:
48
+ for ref_des, comp in comps.items():
49
+ comp.assign_spice_model(fpath, self.name, self.sub_circuit_name, self.terminal_pairs)
50
+ else:
51
+ for ref_des, comp in comps.items():
52
+ if ref_des in self.components:
53
+ comp.assign_spice_model(fpath, self.name, self.sub_circuit_name, self.terminal_pairs)
@@ -47,6 +47,27 @@ class Connectable(LayoutObj):
47
47
  net = self._pedb.nets[value]
48
48
  self._edb_object.SetNet(net.net_object)
49
49
 
50
+ @property
51
+ def net_name(self):
52
+ """Get the primitive layer name.
53
+
54
+ Returns
55
+ -------
56
+ str
57
+ """
58
+ try:
59
+ return self._edb_object.GetNet().GetName()
60
+ except (KeyError, AttributeError): # pragma: no cover
61
+ return None
62
+
63
+ @net_name.setter
64
+ def net_name(self, name):
65
+ if name in self._pedb.nets.netlist:
66
+ obj = self._pedb.nets.nets[name].net_object
67
+ self._edb_object.SetNet(obj)
68
+ else:
69
+ raise ValueError(f"Net {name} not found.")
70
+
50
71
  @property
51
72
  def component(self):
52
73
  """Component connected to this object.
@@ -22,6 +22,7 @@
22
22
 
23
23
  import logging
24
24
  import re
25
+ from typing import Optional
25
26
  import warnings
26
27
 
27
28
  from pyedb.dotnet.edb_core.cell.hierarchy.hierarchy_obj import Group
@@ -61,6 +62,15 @@ class EDBComponent(Group):
61
62
  self._layout_instance = None
62
63
  self._comp_instance = None
63
64
 
65
+ @property
66
+ def name(self):
67
+ """Name of the definition."""
68
+ return self._edb_object.GetName()
69
+
70
+ @name.setter
71
+ def name(self, value):
72
+ self._edb_object.SetName(value)
73
+
64
74
  @property
65
75
  def group_type(self):
66
76
  return self._edb_object.ToString().split(".")[-1].lower()
@@ -808,7 +818,13 @@ class EDBComponent(Group):
808
818
  return False
809
819
  return True
810
820
 
811
- def assign_spice_model(self, file_path, name=None, sub_circuit_name=None):
821
+ def assign_spice_model(
822
+ self,
823
+ file_path: str,
824
+ name: Optional[str] = None,
825
+ sub_circuit_name: Optional[str] = None,
826
+ terminal_pairs: Optional[list] = None,
827
+ ):
812
828
  """Assign Spice model to this component.
813
829
 
814
830
  Parameters
@@ -817,6 +833,10 @@ class EDBComponent(Group):
817
833
  File path of the Spice model.
818
834
  name : str, optional
819
835
  Name of the Spice model.
836
+ sub_circuit_name : str, optional
837
+ Name of the sub circuit.
838
+ terminal_pairs : list, optional
839
+ list of terminal pairs.
820
840
 
821
841
  Returns
822
842
  -------
@@ -828,23 +848,30 @@ class EDBComponent(Group):
828
848
  with open(file_path, "r") as f:
829
849
  for line in f:
830
850
  if "subckt" in line.lower():
831
- pinNames = [i.strip() for i in re.split(" |\t", line) if i]
832
- pinNames.remove(pinNames[0])
833
- pinNames.remove(pinNames[0])
851
+ pin_names_sp = [i.strip() for i in re.split(" |\t", line) if i]
852
+ pin_names_sp.remove(pin_names_sp[0])
853
+ pin_names_sp.remove(pin_names_sp[0])
834
854
  break
835
- if len(pinNames) == self.numpins:
836
- model = self._edb.cell.hierarchy._hierarchy.SPICEModel()
837
- model.SetModelPath(file_path)
838
- model.SetModelName(name)
839
- if sub_circuit_name:
840
- model.SetSubCkt(sub_circuit_name)
841
- terminal = 1
842
- for pn in pinNames:
843
- model.AddTerminalPinPair(pn, str(terminal))
844
- terminal += 1
845
- else: # pragma: no cover
846
- logging.error("Wrong number of Pins")
847
- return False
855
+ if not len(pin_names_sp) == self.numpins: # pragma: no cover
856
+ raise ValueError(f"Pin counts doesn't match component {self.name}.")
857
+
858
+ model = self._edb.cell.hierarchy._hierarchy.SPICEModel()
859
+ model.SetModelPath(file_path)
860
+ model.SetModelName(name)
861
+ if sub_circuit_name:
862
+ model.SetSubCkt(sub_circuit_name)
863
+
864
+ if terminal_pairs:
865
+ terminal_pairs = terminal_pairs if isinstance(terminal_pairs[0], list) else [terminal_pairs]
866
+ for pair in terminal_pairs:
867
+ pname, pnumber = pair
868
+ if pname not in pin_names_sp: # pragma: no cover
869
+ raise ValueError(f"Pin name {pname} doesn't exist in {file_path}.")
870
+ model.AddTerminalPinPair(pname, str(pnumber))
871
+ else:
872
+ for idx, pname in enumerate(pin_names_sp):
873
+ model.AddTerminalPinPair(pname, str(idx + 1))
874
+
848
875
  return self._set_model(model)
849
876
 
850
877
  def assign_s_param_model(self, file_path, name=None, reference_net=None):
@@ -856,7 +883,8 @@ class EDBComponent(Group):
856
883
  File path of the S-parameter model.
857
884
  name : str, optional
858
885
  Name of the S-parameter model.
859
-
886
+ reference_net : str, optional
887
+ Name of the reference net.
860
888
  Returns
861
889
  -------
862
890
 
@@ -54,6 +54,29 @@ from pyedb.dotnet.edb_core.general import convert_py_list_to_net_list
54
54
  from pyedb.dotnet.edb_core.utilities.obj_base import ObjBase
55
55
 
56
56
 
57
+ def primitive_cast(pedb, edb_object):
58
+ if edb_object.GetPrimitiveType().ToString() == "Rectangle":
59
+ return EdbRectangle(edb_object, pedb)
60
+ elif edb_object.GetPrimitiveType().ToString() == "Circle":
61
+ return EdbCircle(edb_object, pedb)
62
+ elif edb_object.GetPrimitiveType().ToString() == "Polygon":
63
+ return EdbPolygon(edb_object, pedb)
64
+ elif edb_object.GetPrimitiveType().ToString() == "Path":
65
+ return Path(pedb, edb_object)
66
+ elif edb_object.GetPrimitiveType().ToString() == "Bondwire":
67
+ return Bondwire(pedb, edb_object)
68
+ elif edb_object.GetPrimitiveType().ToString() == "Text":
69
+ return EdbText(edb_object, pedb)
70
+ elif edb_object.GetPrimitiveType().ToString() == "PrimitivePlugin":
71
+ return
72
+ elif edb_object.GetPrimitiveType().ToString() == "Path3D":
73
+ return
74
+ elif edb_object.GetPrimitiveType().ToString() == "BoardBendDef":
75
+ return
76
+ else:
77
+ return
78
+
79
+
57
80
  class Layout(ObjBase):
58
81
  def __init__(self, pedb, edb_object):
59
82
  super().__init__(pedb, edb_object)
@@ -209,7 +232,7 @@ class Layout(ObjBase):
209
232
  """
210
233
  prims = []
211
234
  for p in self._edb_object.Primitives:
212
- obj = self.find_object_by_id(p.GetId())
235
+ obj = primitive_cast(self._pedb, p)
213
236
  prims.append(obj)
214
237
  return prims
215
238
 
@@ -285,26 +308,7 @@ class Layout(ObjBase):
285
308
  return EDBPadstackInstance(obj, self._pedb)
286
309
 
287
310
  if obj.GetObjType().ToString() == "Primitive":
288
- if obj.GetPrimitiveType().ToString() == "Rectangle":
289
- return EdbRectangle(obj, self._pedb)
290
- elif obj.GetPrimitiveType().ToString() == "Circle":
291
- return EdbCircle(obj, self._pedb)
292
- elif obj.GetPrimitiveType().ToString() == "Polygon":
293
- return EdbPolygon(obj, self._pedb)
294
- elif obj.GetPrimitiveType().ToString() == "Path":
295
- return Path(self._pedb, obj)
296
- elif obj.GetPrimitiveType().ToString() == "Bondwire":
297
- return Bondwire(self._pedb, obj)
298
- elif obj.GetPrimitiveType().ToString() == "Text":
299
- return EdbText(obj, self._pedb)
300
- elif obj.GetPrimitiveType().ToString() == "PrimitivePlugin":
301
- pass
302
- elif obj.GetPrimitiveType().ToString() == "Path3D":
303
- pass
304
- elif obj.GetPrimitiveType().ToString() == "BoardBendDef":
305
- pass
306
- else:
307
- pass
311
+ return primitive_cast(self._pedb, obj)
308
312
 
309
313
  def find_net_by_name(self, value: str):
310
314
  """Find a net object by name
@@ -89,27 +89,6 @@ class Primitive(Connectable):
89
89
  """
90
90
  return self._edb_object.GetPrimitiveType().ToString().lower()
91
91
 
92
- @property
93
- def net_name(self):
94
- """Get the primitive net name.
95
-
96
- Returns
97
- -------
98
- str
99
- """
100
- return self.net.name
101
-
102
- @net_name.setter
103
- def net_name(self, name):
104
- if isinstance(name, str):
105
- net = self._app.nets.nets[name].net_object
106
- self.primitive_object.SetNet(net)
107
- else:
108
- try:
109
- self.net = name.name
110
- except: # pragma: no cover
111
- self._app.logger.error("Failed to set net name.")
112
-
113
92
  @property
114
93
  def layer(self):
115
94
  """Get the primitive edb layer object."""
@@ -128,7 +107,7 @@ class Primitive(Connectable):
128
107
  str
129
108
  """
130
109
  try:
131
- return self.layer.name
110
+ return self._edb_object.GetLayer().GetName()
132
111
  except (KeyError, AttributeError): # pragma: no cover
133
112
  return None
134
113
 
@@ -159,16 +159,6 @@ class Terminal(Connectable):
159
159
  ppp.DoRenormalize = value
160
160
  self._port_post_processing_prop = ppp
161
161
 
162
- @property
163
- def net_name(self):
164
- """Net name.
165
-
166
- Returns
167
- -------
168
- str
169
- """
170
- return self.net.name
171
-
172
162
  @property
173
163
  def terminal_type(self):
174
164
  """Terminal Type.
@@ -1807,8 +1807,8 @@ class Components(object):
1807
1807
 
1808
1808
  sParameterMod = self._edb.cell.hierarchy._hierarchy.SParameterModel()
1809
1809
  sParameterMod.SetComponentModelName(nPortModelName)
1810
- gndnets = filter(lambda x: "gnd" in x.lower(), componentNets)
1811
- if len(list(gndnets)) > 0: # pragma: no cover
1810
+ gndnets = list(filter(lambda x: "gnd" in x.lower(), componentNets))
1811
+ if len(gndnets) > 0: # pragma: no cover
1812
1812
  net = gndnets[0]
1813
1813
  else: # pragma: no cover
1814
1814
  net = componentNets[len(componentNets) - 1]
@@ -130,22 +130,32 @@ class EDBComponentDef(ObjBase):
130
130
  comp.assign_s_param_model(file_path, model_name, reference_net)
131
131
  return True
132
132
 
133
- def assign_spice_model(self, file_path, model_name=None):
133
+ def assign_spice_model(
134
+ self,
135
+ file_path,
136
+ model_name=None,
137
+ sub_circuit_name=None,
138
+ terminal_pairs=None,
139
+ ):
134
140
  """Assign Spice model to all components under this part name.
135
141
 
136
142
  Parameters
137
143
  ----------
138
144
  file_path : str
139
145
  File path of the Spice model.
140
- name : str, optional
146
+ model_name : str, optional
141
147
  Name of the Spice model.
148
+ sub_circuit_name : str, optional
149
+ Name of the sub circuit.
150
+ terminal_pairs : list, optional
151
+ list of terminal pairs.
142
152
 
143
153
  Returns
144
154
  -------
145
155
 
146
156
  """
147
157
  for comp in list(self.components.values()):
148
- comp.assign_spice_model(file_path, model_name)
158
+ comp.assign_spice_model(file_path, model_name, sub_circuit_name, terminal_pairs)
149
159
  return True
150
160
 
151
161
  @property
@@ -1562,30 +1562,6 @@ class EDBPadstackInstance(Primitive):
1562
1562
  break
1563
1563
  return layer_list
1564
1564
 
1565
- @property
1566
- def net_name(self):
1567
- """Net name.
1568
-
1569
- Returns
1570
- -------
1571
- str
1572
- Name of the net.
1573
- """
1574
- return self._edb_padstackinstance.GetNet().GetName()
1575
-
1576
- @net_name.setter
1577
- def net_name(self, val):
1578
- if not isinstance(val, str):
1579
- try:
1580
- self._edb_padstackinstance.SetNet(val.net_obj)
1581
- except:
1582
- raise AttributeError("Value inserted not found. Input has to be net name or net object.")
1583
- elif val in self._pedb.nets.netlist:
1584
- net = self._pedb.nets.nets[val].net_object
1585
- self._edb_padstackinstance.SetNet(net)
1586
- else:
1587
- raise AttributeError("Value inserted not found. Input has to be net name or net object.")
1588
-
1589
1565
  @property
1590
1566
  def is_pin(self):
1591
1567
  """Determines whether this padstack instance is a layout pin.
@@ -51,6 +51,19 @@ class PolygonData:
51
51
  else: # pragma: no cover
52
52
  self._edb_object = edb_object
53
53
 
54
+ @property
55
+ def bounding_box(self):
56
+ """Bounding box.
57
+
58
+ Returns
59
+ -------
60
+ List[float]
61
+ List of coordinates for the component's bounding box, with the list of
62
+ coordinates in this order: [X lower left corner, Y lower left corner,
63
+ X upper right corner, Y upper right corner].
64
+ """
65
+ return BBox(self._pedb, self._edb_object.GetBBox()).corner_points
66
+
54
67
  @property
55
68
  def arcs(self):
56
69
  """Get the Primitive Arc Data."""
@@ -249,7 +249,7 @@ class LayoutValidation:
249
249
  new_nets.append(net_obj.name)
250
250
  for geo in disjoints:
251
251
  try:
252
- obj_dict[geo].net_name = net_obj
252
+ obj_dict[geo].net_name = net_obj.name
253
253
  except KeyError:
254
254
  pass
255
255
  disjoints_objects.extend(disjoints)
@@ -62,7 +62,7 @@ class EdbPadstacks(object):
62
62
 
63
63
  """
64
64
  if isinstance(name, int) and name in self.instances:
65
- return self._pedb.layout.find_object_by_id(name)
65
+ return self.instances(name)
66
66
  elif name in self.definitions:
67
67
  return self.definitions[name]
68
68
  else:
@@ -79,16 +79,3 @@ class ObjBase(object):
79
79
  @name.setter
80
80
  def name(self, value):
81
81
  self._edb_object.SetName(value)
82
-
83
- @property
84
- def bounding_box(self):
85
- """Bounding box.
86
-
87
- Returns
88
- -------
89
- List[float]
90
- List of coordinates for the component's bounding box, with the list of
91
- coordinates in this order: [X lower left corner, Y lower left corner,
92
- X upper right corner, Y upper right corner].
93
- """
94
- return BBox(self._pedb, self._edb_object.GetBBox()).corner_points
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyedb
3
- Version: 0.26.2
3
+ Version: 0.27.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>
@@ -1,4 +1,4 @@
1
- pyedb/__init__.py,sha256=RglbscTRC8mmU618z55DRmbE_rhlS0DCjMa8U6X7ukM,1521
1
+ pyedb/__init__.py,sha256=KNfAzMP4AvkDL6n__iqyHGnx9lnekoi3WY3aEfthXKo,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=OT1O7RSC78nmkhzDrwBo8mlWnsIyPCTy8nD1ZZm8BTk,16720
@@ -18,7 +18,7 @@ pyedb/configuration/cfg_pin_groups.py,sha256=Aq5rlUU2z9iNMv5cBBwHHTlSglw5Upm8EA4
18
18
  pyedb/configuration/cfg_ports_sources.py,sha256=G2mX057QB3H3JUxAL0wDMDaHgabKFnht3iIyhTJvJU4,16356
19
19
  pyedb/configuration/cfg_s_parameter_models.py,sha256=NzS3eBjBSnd7ZDk_TsX04dqRcRXompjx1DxCe1UzWMw,2855
20
20
  pyedb/configuration/cfg_setup.py,sha256=SPpNRLJusB-Cz2fDQkc6gkdilUqIlbNngoxF3zySt6g,10115
21
- pyedb/configuration/cfg_spice_models.py,sha256=tBY3okFiEffMGvBkpmZQrCrovpt-d62k51_WkkV4jqo,2435
21
+ pyedb/configuration/cfg_spice_models.py,sha256=Q_5j2-V6cepSFcnijot8iypTqzanLp7HOz-agmnwKns,2570
22
22
  pyedb/configuration/cfg_stackup.py,sha256=CX7uNN5QRoYW_MOObknP8003YchTS7PH9Oee7FG0VKU,6589
23
23
  pyedb/configuration/configuration.py,sha256=fWYRDI0G4O8cyR1pk0_2RNqBOjKVL0oYRevIVjlV8fo,12944
24
24
  pyedb/dotnet/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -27,25 +27,25 @@ pyedb/dotnet/edb.py,sha256=B7HYfgZkc-ezrdMIm3wInWAd5zw6ZMM5KdBG3H6y7L0,181695
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=Cw_z1xfUkuwtGEqWuQrHY7N0YZA0kUYUqJJooTBtj6o,111194
30
+ pyedb/dotnet/edb_core/components.py,sha256=g2hPrTotCtHWA7y79ej1fw3UoY5KrgDwur3H3m-Vmfg,111194
31
31
  pyedb/dotnet/edb_core/general.py,sha256=1g2bUekyUbu8p8zCinT4eI7uqRGIK8tY8mfuFePGRGg,4415
32
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=B2FIHsize6JZ5VhwN_3zBniK7iRC6dd01ujXYiliK0A,12604
34
+ pyedb/dotnet/edb_core/layout_validation.py,sha256=HxRPHEs9yMyz0XgIegWsb4nSV7hNYbO-xBJ-eFyNnQw,12609
35
35
  pyedb/dotnet/edb_core/materials.py,sha256=zzYWIJ5dvOIO2H2vREpRnwGDx0hEa5QhCsg_EJkydww,43222
36
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
38
  pyedb/dotnet/edb_core/nets.py,sha256=WMKC9aKkmGP_NFqAkQpM8b4AjgDgjhrRXOz8VrN4yj8,41429
39
- pyedb/dotnet/edb_core/padstack.py,sha256=al5cXfnJXyaM6-KCAd8D8-TZzcIXHwco8grD44U7gNY,63588
39
+ pyedb/dotnet/edb_core/padstack.py,sha256=P4WqnMy_mRHHPNvLCG96eGGB8_8bSZPBVziStxGNd5I,63567
40
40
  pyedb/dotnet/edb_core/siwave.py,sha256=4duoAsFCuPMNLxtMTEEVJCUaHKNkdbLDmtTXiD93VrM,64311
41
41
  pyedb/dotnet/edb_core/stackup.py,sha256=b56leXg7X7dEVPP2DUD9n8LZIakWcjIsjiqqkIWsyZU,120035
42
42
  pyedb/dotnet/edb_core/cell/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
43
- pyedb/dotnet/edb_core/cell/connectable.py,sha256=rKWPATg0GCHi4d1ftu2V7WWhkDONjloCSPujssie5a8,2310
44
- pyedb/dotnet/edb_core/cell/layout.py,sha256=u3HEdKc7rls3gkm7m31-XGi6l3pfoHEAswTVCz4FSmY,12619
43
+ pyedb/dotnet/edb_core/cell/connectable.py,sha256=gc5jhWx4DX718T7koL6oZZzfS4EdQNTiFX76ZJ2c83E,2864
44
+ pyedb/dotnet/edb_core/cell/layout.py,sha256=DFZamAuiPI2pHtBWn2lPcwvhdpkVuWO-aYDuNTDmRQs,12623
45
45
  pyedb/dotnet/edb_core/cell/layout_obj.py,sha256=S42rdiI6gVqO77DV3ikc4YxTNufTuqW_X1G-2zkWArA,2765
46
46
  pyedb/dotnet/edb_core/cell/voltage_regulator.py,sha256=-uAzuyERV6ca0bFRzdH4SllcpGY2D9JEdpS7RYaQt6c,5387
47
47
  pyedb/dotnet/edb_core/cell/hierarchy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
48
- pyedb/dotnet/edb_core/cell/hierarchy/component.py,sha256=3dkbGO8Wsmbq3n9JaFixJXfvQ5aNqC8OMo43-KPukUc,33851
48
+ pyedb/dotnet/edb_core/cell/hierarchy/component.py,sha256=Iri2YVNntt02ojqtBAg-NosarqN7aHyr37kl5TKQzuM,34847
49
49
  pyedb/dotnet/edb_core/cell/hierarchy/hierarchy_obj.py,sha256=OUNK6INKlbJkCbzy6jKZzrQs7fvCR1qiTjt7te0S7nQ,2160
50
50
  pyedb/dotnet/edb_core/cell/hierarchy/model.py,sha256=LwXE4VUfptG5rJ9gmAmye0hECBv7bUGtby1ZzNFkeT0,3198
51
51
  pyedb/dotnet/edb_core/cell/hierarchy/netlist_model.py,sha256=fF6tY-6s-lW9EuvJ5sw3RlIkjuoSjeZbrNk5wG-_hzM,1356
@@ -55,16 +55,16 @@ pyedb/dotnet/edb_core/cell/hierarchy/spice_model.py,sha256=SGiUcan2l0n8DGk3GtwCs
55
55
  pyedb/dotnet/edb_core/cell/primitive/__init__.py,sha256=8jByHkoaowAYQTCww-zRrTQmN061fLz_OHjTLSrzQQY,58
56
56
  pyedb/dotnet/edb_core/cell/primitive/bondwire.py,sha256=fqIMdv0bNvk591DG6De5c--w9Rpkl5AOeo_qgzoPE6M,7322
57
57
  pyedb/dotnet/edb_core/cell/primitive/path.py,sha256=XVN7dOVpccoBP28M8l5iMzK5QSQdHqpKqC4jK76UTis,12543
58
- pyedb/dotnet/edb_core/cell/primitive/primitive.py,sha256=4gshnuVsfZOoHFpxCQJIf1qTYw8XX_j7nzLHvJC4vGs,28029
58
+ pyedb/dotnet/edb_core/cell/primitive/primitive.py,sha256=4ngcedgn3rpMzx8irWCyLA4I-ONKc-Ji8-fpcIpw7x4,27526
59
59
  pyedb/dotnet/edb_core/cell/terminal/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
60
60
  pyedb/dotnet/edb_core/cell/terminal/bundle_terminal.py,sha256=qM0wEXkZ-DpoJ6vlVa560Ce8IgOdp4vyIJPedvoa3O0,1977
61
61
  pyedb/dotnet/edb_core/cell/terminal/edge_terminal.py,sha256=lafPRrvsDPYKcysvrkO-5tEZXF3h4IcTXdeJgTjleuI,2158
62
62
  pyedb/dotnet/edb_core/cell/terminal/padstack_instance_terminal.py,sha256=XI7NiP1qT2aft7hjPK4gX42RzreiZ66aHXIHFPwUghs,3999
63
63
  pyedb/dotnet/edb_core/cell/terminal/pingroup_terminal.py,sha256=3y2UXqg8a7W74pjzZDljB1joCPTtmOkrIKGophDdgw4,2783
64
64
  pyedb/dotnet/edb_core/cell/terminal/point_terminal.py,sha256=S3aCAuFc_QA36PVn2Cdb9L4dO3T4IikwyEVcP1FOW3I,2597
65
- pyedb/dotnet/edb_core/cell/terminal/terminal.py,sha256=x-xUwqg1ZJQTgubuNSd3qistl982kAvSXNvAoNohcfg,19276
65
+ pyedb/dotnet/edb_core/cell/terminal/terminal.py,sha256=WoNS05-wSktF93MvDUjNQw9MMC3e18UGcsBKsy2fo68,19130
66
66
  pyedb/dotnet/edb_core/definition/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
67
- pyedb/dotnet/edb_core/definition/component_def.py,sha256=tYZ4L6DigwSjdQJ5AlqEbordPVZyJ6hYFNc6b3QnJ18,6514
67
+ pyedb/dotnet/edb_core/definition/component_def.py,sha256=paLZ7E4gxSFO8UYdQP1mHYDRJH8M5YtD9UbPPypMkcg,6799
68
68
  pyedb/dotnet/edb_core/definition/component_model.py,sha256=PhT5voy3qk8fsp94dK6TN_Zxz5aXwO_mmeIwWm7C_Hs,1944
69
69
  pyedb/dotnet/edb_core/definition/definition_obj.py,sha256=QKlR8DNpNaOd00sY1ybEZANioAg_tgfZAOmh7-997og,1560
70
70
  pyedb/dotnet/edb_core/definition/definitions.py,sha256=9Zjl5LNidDBk07m-QGpducWfFsyE52pScI8PC5f0doU,2383
@@ -79,7 +79,7 @@ pyedb/dotnet/edb_core/edb_data/edbvalue.py,sha256=Vj_11HXsQUNavizKp5FicORm6cjhXR
79
79
  pyedb/dotnet/edb_core/edb_data/hfss_extent_info.py,sha256=hKFHWUl0_OCMEZJbQn5c8Y1a-BYKr8nAycIlrCoeufk,13005
80
80
  pyedb/dotnet/edb_core/edb_data/layer_data.py,sha256=2K1rvBXAWg3s8paNU6TPNb5tC1B3bRHmiUZjVsoX_Z8,26001
81
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
82
+ pyedb/dotnet/edb_core/edb_data/padstacks_data.py,sha256=VL3mmTHTbSNjODoGC0kklakJBdTDlukGQng931ZIJdE,76755
83
83
  pyedb/dotnet/edb_core/edb_data/ports.py,sha256=wr2RQi8VExuNIVmnp7c4VpTIhODgthmJmHr01zO4ueo,8873
84
84
  pyedb/dotnet/edb_core/edb_data/primitives_data.py,sha256=CC-uSLponRiJKGh1rqc6FsITpBB5on0jP3M7YAGArfM,15449
85
85
  pyedb/dotnet/edb_core/edb_data/raptor_x_simulation_setup_data.py,sha256=P37-OIsc8TuTC_s3CXRmvZcJqxAftHA7SATfEyoAnMM,20953
@@ -89,7 +89,7 @@ pyedb/dotnet/edb_core/edb_data/utilities.py,sha256=3wZqOJ35eisOwOPKOs-bvJ8kmd62e
89
89
  pyedb/dotnet/edb_core/edb_data/variables.py,sha256=LS1jZPOYgRvf4cyKf_x8hI9Brs-qbh4wrHu_QGLElrg,3501
90
90
  pyedb/dotnet/edb_core/geometry/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
91
91
  pyedb/dotnet/edb_core/geometry/point_data.py,sha256=hC9cRuSnX4cwg09Jr0ZK7ZTjFf_4NwXJMGbZ3s-ULpQ,1590
92
- pyedb/dotnet/edb_core/geometry/polygon_data.py,sha256=xVOru_HeSnJf3bczTgmV-Izrv-ae2b4270Xbck8LwFM,4593
92
+ pyedb/dotnet/edb_core/geometry/polygon_data.py,sha256=u4qWf7guWpJFRmHhh_31vmVyaEceHhjuPxIttmX0lZQ,5022
93
93
  pyedb/dotnet/edb_core/sim_setup_data/__init__.py,sha256=8jByHkoaowAYQTCww-zRrTQmN061fLz_OHjTLSrzQQY,58
94
94
  pyedb/dotnet/edb_core/sim_setup_data/data/__init__.py,sha256=8jByHkoaowAYQTCww-zRrTQmN061fLz_OHjTLSrzQQY,58
95
95
  pyedb/dotnet/edb_core/sim_setup_data/data/adaptive_frequency_data.py,sha256=tlHI7PUUoseNnJAtihpjb1PwXYNr-4ztAAnunlLLWVQ,2463
@@ -104,7 +104,7 @@ pyedb/dotnet/edb_core/sim_setup_data/io/siwave.py,sha256=92iEZrhA2CUTZ7wynL5nxVV
104
104
  pyedb/dotnet/edb_core/utilities/__init__.py,sha256=8jByHkoaowAYQTCww-zRrTQmN061fLz_OHjTLSrzQQY,58
105
105
  pyedb/dotnet/edb_core/utilities/heatsink.py,sha256=7G7Yx9TxbL5EAiR51MnhdRiAQBVf-d0hKsXDw5OYX2Q,2220
106
106
  pyedb/dotnet/edb_core/utilities/hfss_simulation_setup.py,sha256=_0H_7ypwrR5kj4LFhJLRvG9PV1lemvRnxRBJuOcGeXM,14074
107
- pyedb/dotnet/edb_core/utilities/obj_base.py,sha256=lufR0sZj0QfZ2wlNvLL6aM1KVqCNY2A7taPPdWcK20w,3312
107
+ pyedb/dotnet/edb_core/utilities/obj_base.py,sha256=l2UVc2_D3R1JkRLPiqpFb_3yoxlHSw1Qd5KvHIZCDAY,2883
108
108
  pyedb/dotnet/edb_core/utilities/simulation_setup.py,sha256=5-lpTiErVpRI6Os5iNpa1SIrGCjgHHUgJ0ozI5pVLIs,12236
109
109
  pyedb/dotnet/edb_core/utilities/siwave_simulation_setup.py,sha256=BXuYJ7KQMgKiQnw6_Dft2aT11PYz6M7C-NJrMS8ZFX0,12764
110
110
  pyedb/generic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -185,7 +185,7 @@ pyedb/misc/siw_feature_config/xtalk_scan/scan_config.py,sha256=YmYI6WTQulL5Uf8Wx
185
185
  pyedb/misc/siw_feature_config/xtalk_scan/td_xtalk_config.py,sha256=KHa-UqcXuabiVfT2CV-UvWl5Q2qGYHF2Ye9azcAlnXc,3966
186
186
  pyedb/modeler/geometry_operators.py,sha256=g_Sy7a6R23sP6RtboJn1rl8uTuo8oeLmMF21rNkzwjk,74198
187
187
  pyedb/siwave_core/icepak.py,sha256=WnZ-t8mik7LDY06V8hZFV-TxRZJQWK7bu_8Ichx-oBs,5206
188
- pyedb-0.26.2.dist-info/LICENSE,sha256=qQWivZ12ETN5l3QxvTARY-QI5eoRRlyHdwLlAj0Bg5I,1089
189
- pyedb-0.26.2.dist-info/WHEEL,sha256=EZbGkh7Ie4PoZfRQ8I0ZuP9VklN_TvcZ6DSE5Uar4z4,81
190
- pyedb-0.26.2.dist-info/METADATA,sha256=8buRdKWtIIWq5lyQWkomJ_4QUeH5k_hZV8Tj0y97no8,8388
191
- pyedb-0.26.2.dist-info/RECORD,,
188
+ pyedb-0.27.0.dist-info/LICENSE,sha256=qQWivZ12ETN5l3QxvTARY-QI5eoRRlyHdwLlAj0Bg5I,1089
189
+ pyedb-0.27.0.dist-info/WHEEL,sha256=EZbGkh7Ie4PoZfRQ8I0ZuP9VklN_TvcZ6DSE5Uar4z4,81
190
+ pyedb-0.27.0.dist-info/METADATA,sha256=hY877_LGGnjb-1CLwMRtd6PbPRVk7_L7-g_ZbivQucw,8388
191
+ pyedb-0.27.0.dist-info/RECORD,,
File without changes