pyedb 0.26.3__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 +1 -1
- pyedb/configuration/cfg_spice_models.py +3 -2
- pyedb/dotnet/edb_core/cell/connectable.py +21 -0
- pyedb/dotnet/edb_core/cell/hierarchy/component.py +46 -18
- pyedb/dotnet/edb_core/cell/layout.py +25 -21
- pyedb/dotnet/edb_core/cell/primitive/primitive.py +1 -22
- pyedb/dotnet/edb_core/cell/terminal/terminal.py +0 -10
- pyedb/dotnet/edb_core/components.py +2 -2
- pyedb/dotnet/edb_core/definition/component_def.py +13 -3
- pyedb/dotnet/edb_core/edb_data/padstacks_data.py +0 -24
- pyedb/dotnet/edb_core/geometry/polygon_data.py +13 -0
- pyedb/dotnet/edb_core/layout_validation.py +1 -1
- pyedb/dotnet/edb_core/padstack.py +1 -1
- pyedb/dotnet/edb_core/utilities/obj_base.py +0 -13
- {pyedb-0.26.3.dist-info → pyedb-0.27.0.dist-info}/METADATA +1 -1
- {pyedb-0.26.3.dist-info → pyedb-0.27.0.dist-info}/RECORD +18 -18
- {pyedb-0.26.3.dist-info → pyedb-0.27.0.dist-info}/LICENSE +0 -0
- {pyedb-0.26.3.dist-info → pyedb-0.27.0.dist-info}/WHEEL +0 -0
pyedb/__init__.py
CHANGED
|
@@ -34,6 +34,7 @@ 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."""
|
|
@@ -45,8 +46,8 @@ class CfgSpiceModel:
|
|
|
45
46
|
comps = self._pedb.components.definitions[self.component_definition].components
|
|
46
47
|
if self.apply_to_all:
|
|
47
48
|
for ref_des, comp in comps.items():
|
|
48
|
-
comp.assign_spice_model(fpath, self.name, self.sub_circuit_name)
|
|
49
|
+
comp.assign_spice_model(fpath, self.name, self.sub_circuit_name, self.terminal_pairs)
|
|
49
50
|
else:
|
|
50
51
|
for ref_des, comp in comps.items():
|
|
51
52
|
if ref_des in self.components:
|
|
52
|
-
comp.assign_spice_model(fpath, self.name, self.sub_circuit_name)
|
|
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(
|
|
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
|
-
|
|
832
|
-
|
|
833
|
-
|
|
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(
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
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.
|
|
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
|
-
|
|
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.
|
|
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(
|
|
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(
|
|
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
|
-
|
|
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."""
|
|
@@ -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,4 +1,4 @@
|
|
|
1
|
-
pyedb/__init__.py,sha256=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
44
|
-
pyedb/dotnet/edb_core/cell/layout.py,sha256=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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.
|
|
189
|
-
pyedb-0.
|
|
190
|
-
pyedb-0.
|
|
191
|
-
pyedb-0.
|
|
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
|
|
File without changes
|