pyedb 0.36.0__py3-none-any.whl → 0.38.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.36.0"
47
+ __version__ = "0.38.0"
48
48
  version = __version__
49
49
 
50
50
  #
@@ -22,7 +22,7 @@
22
22
 
23
23
 
24
24
  class CfgBase:
25
- protected_attributes = []
25
+ protected_attributes = ["pedb", "pyedb_obj", "api"]
26
26
 
27
27
  def get_attributes(self, exclude=None):
28
28
  attrs = {i: j for i, j in self.__dict__.items() if i not in self.protected_attributes}
@@ -19,244 +19,272 @@
19
19
  # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
20
  # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
21
  # SOFTWARE.
22
+ import os
22
23
 
23
24
  from pyedb.configuration.cfg_common import CfgBase
24
25
  from pyedb.dotnet.edb_core.general import pascal_to_snake, snake_to_pascal
25
26
 
26
27
 
27
28
  class CfgComponent(CfgBase):
28
- def __init__(self, pedb, pedb_object, **kwargs):
29
- self._pedb = pedb
30
- self._pyedb_obj = pedb_object
29
+ class Common:
30
+ @property
31
+ def pyedb_obj(self):
32
+ return self.parent.pyedb_obj
31
33
 
32
- self.enabled = kwargs.get("enabled", None)
33
- self.reference_designator = kwargs.get("reference_designator", None)
34
- self.definition = kwargs.get("definition", None)
35
- self.type = kwargs["part_type"].lower() if kwargs.get("part_type") else None
36
- self.placement_layer = kwargs.get("placement_layer", None)
37
- self.pins = kwargs.get("pins", [])
34
+ def __init__(self, parent):
35
+ self.parent = parent
36
+ self.pedb = parent.pedb
38
37
 
39
- self.port_properties = kwargs.get("port_properties", {})
40
- self.solder_ball_properties = kwargs.get("solder_ball_properties", {})
41
- self.ic_die_properties = kwargs.get("ic_die_properties", {})
42
- self.pin_pair_model = kwargs.get("pin_pair_model", [])
43
- self.spice_model = kwargs.get("spice_model", {})
44
- self.s_parameter_model = kwargs.get("s_parameter_model", {})
45
- self.netlist_model = kwargs.get("netlist_model", {})
38
+ def retrieve_model_properties_from_edb(self):
39
+ c_p = self.pyedb_obj.component_property
40
+ model = c_p.GetModel().Clone()
46
41
 
47
- def retrieve_model_properties_from_edb(self):
48
- c_p = self._pyedb_obj.component_property
49
- model = c_p.GetModel().Clone()
42
+ if model.GetModelType().ToString() == "NetlistModel":
43
+ self.parent.netlist_model["netlist"] = model.GetNetlist()
44
+ elif model.GetModelType().ToString() == "PinPairModel":
45
+ temp = {}
46
+ for i in model.PinPairs:
47
+ temp["first_pin"] = i.FirstPin
48
+ temp["second_pin"] = i.SecondPin
49
+ rlc = model.GetPinPairRlc(i)
50
+ temp["is_parallel"] = rlc.IsParallel
51
+ temp["resistance"] = rlc.R.ToString()
52
+ temp["resistance_enabled"] = rlc.REnabled
53
+ temp["inductance"] = rlc.L.ToString()
54
+ temp["inductance_enabled"] = rlc.LEnabled
55
+ temp["capacitance"] = rlc.C.ToString()
56
+ temp["capacitance_enabled"] = rlc.CEnabled
57
+ self.parent.pin_pair_model.append(temp)
58
+ elif model.GetModelType().ToString() == "SParameterModel":
59
+ self.parent.s_parameter_model["reference_net"] = model.GetReferenceNet()
60
+ self.parent.s_parameter_model["model_name"] = model.GetComponentModelName()
61
+ elif model.GetModelType().ToString() == "SPICEModel":
62
+ self.parent.spice_model["model_name"] = model.GetModelName()
63
+ self.parent.spice_model["model_path"] = model.GetModelPath()
64
+ self.parent.spice_model["sub_circuit"] = model.GetSubCkt()
65
+ self.parent.spice_model["terminal_pairs"] = [
66
+ [i, j] for i, j in dict(model.GetTerminalPinPairs()).items()
67
+ ]
50
68
 
51
- if model.GetModelType().ToString() == "NetlistModel":
52
- self.netlist_model["netlist"] = model.GetNetlist()
53
- elif model.GetModelType().ToString() == "PinPairModel":
54
- temp = {}
55
- for i in model.PinPairs:
56
- temp["first_pin"] = i.FirstPin
57
- temp["second_pin"] = i.SecondPin
58
- rlc = model.GetPinPairRlc(i)
59
- temp["is_parallel"] = rlc.IsParallel
60
- temp["resistance"] = rlc.R.ToString()
61
- temp["resistance_enabled"] = rlc.REnabled
62
- temp["inductance"] = rlc.L.ToString()
63
- temp["inductance_enabled"] = rlc.LEnabled
64
- temp["capacitance"] = rlc.C.ToString()
65
- temp["capacitance_enabled"] = rlc.CEnabled
66
- self.pin_pair_model.append(temp)
67
- elif model.GetModelType().ToString() == "SParameterModel":
68
- self.s_parameter_model["reference_net"] = model.GetReferenceNet()
69
- self.s_parameter_model["model_name"] = model.GetComponentModelName()
70
- elif model.GetModelType().ToString() == "SPICEModel":
71
- self.spice_model["model_name"] = model.GetModelName()
72
- self.spice_model["model_path"] = model.GetModelPath()
73
- self.spice_model["sub_circuit"] = model.GetSubCkt()
74
- self.spice_model["terminal_pairs"] = [[i, j] for i, j in dict(model.GetTerminalPinPairs()).items()]
75
-
76
- def _set_model_properties_to_edb(self):
77
- c_p = self._pyedb_obj.component_property
78
- if self.netlist_model:
79
- m = self._pedb._edb.Cell.Hierarchy.SParameterModel()
80
- m.SetNetlist(self.netlist_model["netlist"])
81
- c_p.SetModel(m)
82
- self.component_property = c_p
83
- elif self.pin_pair_model:
84
- m = self._pedb._edb.Cell.Hierarchy.PinPairModel()
85
- for i in self.pin_pair_model:
86
- p = self._pedb._edb.Utility.PinPair(str(i["first_pin"]), str(i["second_pin"]))
87
- rlc = self._pedb._edb.Utility.Rlc(
88
- self._pedb.edb_value(i["resistance"]),
89
- i["resistance_enabled"],
90
- self._pedb.edb_value(i["inductance"]),
91
- i["inductance_enabled"],
92
- self._pedb.edb_value(i["capacitance"]),
93
- i["capacitance_enabled"],
94
- i["is_parallel"],
69
+ def _set_model_properties_to_edb(self):
70
+ c_p = self.pyedb_obj.component_property
71
+ if self.parent.netlist_model:
72
+ m = self.pedb._edb.Cell.Hierarchy.SParameterModel()
73
+ m.SetNetlist(self.parent.netlist_model["netlist"])
74
+ c_p.SetModel(m)
75
+ self.component_property = c_p
76
+ elif self.parent.pin_pair_model:
77
+ m = self.pedb._edb.Cell.Hierarchy.PinPairModel()
78
+ for i in self.parent.pin_pair_model:
79
+ p = self.pedb._edb.Utility.PinPair(str(i["first_pin"]), str(i["second_pin"]))
80
+ rlc = self.pedb._edb.Utility.Rlc(
81
+ self.pedb.edb_value(i["resistance"]),
82
+ i["resistance_enabled"],
83
+ self.pedb.edb_value(i["inductance"]),
84
+ i["inductance_enabled"],
85
+ self.pedb.edb_value(i["capacitance"]),
86
+ i["capacitance_enabled"],
87
+ i["is_parallel"],
88
+ )
89
+ m.SetPinPairRlc(p, rlc)
90
+ c_p.SetModel(m)
91
+ self.pyedb_obj.component_property = c_p
92
+ elif self.parent.s_parameter_model:
93
+ m = self.pedb._edb.Cell.Hierarchy.SParameterModel()
94
+ m.SetComponentModelName(self.parent.s_parameter_model["model_name"])
95
+ m.SetReferenceNet(self.parent.s_parameter_model["reference_net"])
96
+ c_p.SetModel(m)
97
+ self.component_property = c_p
98
+ elif self.parent.spice_model:
99
+ self.pyedb_obj.assign_spice_model(
100
+ self.parent.spice_model["model_path"],
101
+ self.parent.spice_model["model_name"],
102
+ self.parent.spice_model["sub_circuit"],
103
+ self.parent.spice_model["terminal_pairs"],
95
104
  )
96
- m.SetPinPairRlc(p, rlc)
97
- c_p.SetModel(m)
98
- self._pyedb_obj.component_property = c_p
99
- elif self.s_parameter_model:
100
- m = self._pedb._edb.Cell.Hierarchy.SParameterModel()
101
- m.SetComponentModelName(self.s_parameter_model["model_name"])
102
- m.SetReferenceNet(self.s_parameter_model["reference_net"])
103
- c_p.SetModel(m)
104
- self.component_property = c_p
105
- elif self.spice_model:
106
- self._pyedb_obj.assign_spice_model(
107
- self.spice_model["model_path"],
108
- self.spice_model["model_name"],
109
- self.spice_model["sub_circuit"],
110
- self.spice_model["terminal_pairs"],
111
- )
112
105
 
113
- def _retrieve_ic_die_properties_from_edb(self):
114
- temp = dict()
115
- cp = self._pyedb_obj.component_property
116
- ic_die_prop = cp.GetDieProperty().Clone()
117
- die_type = pascal_to_snake(ic_die_prop.GetType().ToString())
118
- temp["type"] = die_type
119
- if not die_type == "no_die":
120
- temp["orientation"] = pascal_to_snake(ic_die_prop.GetOrientation().ToString())
121
- if die_type == "wire_bond":
122
- temp["height"] = ic_die_prop.GetHeightValue().ToString()
123
- self.ic_die_properties = temp
106
+ def _retrieve_ic_die_properties_from_edb(self):
107
+ temp = dict()
108
+ cp = self.pyedb_obj.component_property
109
+ ic_die_prop = cp.GetDieProperty().Clone()
110
+ die_type = pascal_to_snake(ic_die_prop.GetType().ToString())
111
+ temp["type"] = die_type
112
+ if not die_type == "no_die":
113
+ temp["orientation"] = pascal_to_snake(ic_die_prop.GetOrientation().ToString())
114
+ if die_type == "wire_bond":
115
+ temp["height"] = ic_die_prop.GetHeightValue().ToString()
116
+ self.parent.ic_die_properties = temp
124
117
 
125
- def _set_ic_die_properties_to_edb(self):
126
- cp = self._pyedb_obj.component_property
127
- ic_die_prop = cp.GetDieProperty().Clone()
128
- die_type = self.ic_die_properties.get("type")
129
- ic_die_prop.SetType(getattr(self._pedb._edb.Definition.DieType, snake_to_pascal(die_type)))
130
- if not die_type == "no_die":
131
- orientation = self.ic_die_properties.get("orientation")
132
- if orientation:
133
- ic_die_prop.SetOrientation(
134
- getattr(self._pedb._edb.Definition.DieOrientation, snake_to_pascal(orientation))
135
- )
136
- if die_type == "wire_bond":
137
- height = self.ic_die_properties.get("height")
138
- if height:
139
- ic_die_prop.SetHeight(self._pedb.edb_value(height))
140
- cp.SetDieProperty(ic_die_prop)
141
- self._pyedb_obj.component_property = cp
118
+ def _set_ic_die_properties_to_edb(self):
119
+ cp = self.pyedb_obj.component_property
120
+ ic_die_prop = cp.GetDieProperty().Clone()
121
+ die_type = self.parent.ic_die_properties.get("type")
122
+ ic_die_prop.SetType(getattr(self.pedb._edb.Definition.DieType, snake_to_pascal(die_type)))
123
+ if not die_type == "no_die":
124
+ orientation = self.parent.ic_die_properties.get("orientation")
125
+ if orientation:
126
+ ic_die_prop.SetOrientation(
127
+ getattr(self.pedb._edb.Definition.DieOrientation, snake_to_pascal(orientation))
128
+ )
129
+ if die_type == "wire_bond":
130
+ height = self.parent.ic_die_properties.get("height")
131
+ if height:
132
+ ic_die_prop.SetHeight(self.pedb.edb_value(height))
133
+ cp.SetDieProperty(ic_die_prop)
134
+ self.pyedb_obj.component_property = cp
142
135
 
143
- def _retrieve_solder_ball_properties_from_edb(self):
144
- temp = dict()
145
- cp = self._pyedb_obj.component_property
146
- solder_ball_prop = cp.GetSolderBallProperty().Clone()
147
- _, diam, mid_diam = solder_ball_prop.GetDiameterValue()
148
- height = solder_ball_prop.GetHeightValue().ToString()
149
- shape = solder_ball_prop.GetShape().ToString()
150
- uses_solder_ball = solder_ball_prop.UsesSolderball()
151
- temp["uses_solder_ball"] = uses_solder_ball
152
- temp["shape"] = pascal_to_snake(shape)
153
- temp["diameter"] = diam.ToString()
154
- temp["mid_diameter"] = mid_diam.ToString()
155
- temp["height"] = height
156
- self.solder_ball_properties = temp
136
+ def _retrieve_solder_ball_properties_from_edb(self):
137
+ temp = dict()
138
+ cp = self.pyedb_obj.component_property
139
+ solder_ball_prop = cp.GetSolderBallProperty().Clone()
140
+ _, diam, mid_diam = solder_ball_prop.GetDiameterValue()
141
+ height = solder_ball_prop.GetHeightValue().ToString()
142
+ shape = solder_ball_prop.GetShape().ToString()
143
+ material = solder_ball_prop.GetMaterialName()
144
+ uses_solder_ball = solder_ball_prop.UsesSolderball()
157
145
 
158
- def _set_solder_ball_properties_to_edb(self):
159
- cp = self._pyedb_obj.component_property
160
- solder_ball_prop = cp.GetSolderBallProperty().Clone()
161
- shape = self.solder_ball_properties.get("shape")
162
- if shape:
163
- solder_ball_prop.SetShape(getattr(self._pedb._edb.Definition.SolderballShape, snake_to_pascal(shape)))
164
- else:
165
- return
146
+ temp["uses_solder_ball"] = uses_solder_ball
147
+ temp["shape"] = pascal_to_snake(shape)
148
+ temp["diameter"] = diam.ToString()
149
+ temp["mid_diameter"] = mid_diam.ToString()
150
+ temp["height"] = height
151
+ temp["material"] = material
152
+ self.parent.solder_ball_properties = temp
166
153
 
167
- if shape == "cylinder":
168
- diameter = self.solder_ball_properties["diameter"]
169
- solder_ball_prop.SetDiameter(self._pedb.edb_value(diameter), self._pedb.edb_value(diameter))
170
- elif shape == "spheroid":
171
- diameter = self.solder_ball_properties["diameter"]
172
- mid_diameter = self.solder_ball_properties["mid_diameter"]
173
- solder_ball_prop.SetDiameter(self._pedb.edb_value(diameter), self._pedb.edb_value(mid_diameter))
174
- else:
175
- raise ValueError("Solderball shape must be either cylinder or spheroid")
176
- solder_ball_prop.SetHeight(self._pedb.edb_value(self.solder_ball_properties["height"]))
177
- cp.SetSolderBallProperty(solder_ball_prop)
178
- self._pyedb_obj.component_property = cp
154
+ def _set_solder_ball_properties_to_edb(self):
155
+ cp = self.pyedb_obj.component_property
156
+ solder_ball_prop = cp.GetSolderBallProperty().Clone()
157
+ shape = self.parent.solder_ball_properties.get("shape")
158
+ if shape:
159
+ solder_ball_prop.SetShape(getattr(self.pedb._edb.Definition.SolderballShape, snake_to_pascal(shape)))
160
+ else:
161
+ return
179
162
 
180
- def _retrieve_port_properties_from_edb(self):
181
- temp = dict()
182
- cp = self._pyedb_obj.component_property
183
- c_type = self.type.lower()
184
- if c_type not in ["ic", "io", "other"]:
185
- return
186
- else:
163
+ if shape == "cylinder":
164
+ diameter = self.parent.solder_ball_properties["diameter"]
165
+ solder_ball_prop.SetDiameter(self.pedb.edb_value(diameter), self.pedb.edb_value(diameter))
166
+ elif shape == "spheroid":
167
+ diameter = self.parent.solder_ball_properties["diameter"]
168
+ mid_diameter = self.parent.solder_ball_properties["mid_diameter"]
169
+ solder_ball_prop.SetDiameter(self.pedb.edb_value(diameter), self.pedb.edb_value(mid_diameter))
170
+ else:
171
+ raise ValueError("Solderball shape must be either cylinder or spheroid")
172
+ solder_ball_prop.SetHeight(self.pedb.edb_value(self.parent.solder_ball_properties["height"]))
173
+ solder_ball_prop.SetMaterialName(self.parent.solder_ball_properties.get("material", "solder"))
174
+ cp.SetSolderBallProperty(solder_ball_prop)
175
+ self.pyedb_obj.component_property = cp
176
+
177
+ def _retrieve_port_properties_from_edb(self):
178
+ temp = dict()
179
+ cp = self.pyedb_obj.component_property
180
+ c_type = self.parent.type.lower()
181
+ if c_type not in ["ic", "io", "other"]:
182
+ return
183
+ else:
184
+ port_prop = cp.GetPortProperty().Clone()
185
+ reference_height = port_prop.GetReferenceHeightValue().ToString()
186
+ reference_size_auto = port_prop.GetReferenceSizeAuto()
187
+ _, reference_size_x, reference_size_y = port_prop.GetReferenceSize()
188
+ temp["reference_height"] = reference_height
189
+ temp["reference_size_auto"] = reference_size_auto
190
+ temp["reference_size_x"] = str(reference_size_x)
191
+ temp["reference_size_y"] = str(reference_size_y)
192
+ self.parent.port_properties = temp
193
+
194
+ def _set_port_properties_to_edb(self):
195
+ cp = self.pyedb_obj.component_property
187
196
  port_prop = cp.GetPortProperty().Clone()
188
- reference_height = port_prop.GetReferenceHeightValue().ToString()
189
- reference_size_auto = port_prop.GetReferenceSizeAuto()
190
- _, reference_size_x, reference_size_y = port_prop.GetReferenceSize()
191
- temp["reference_height"] = reference_height
192
- temp["reference_size_auto"] = reference_size_auto
193
- temp["reference_size_x"] = str(reference_size_x)
194
- temp["reference_size_y"] = str(reference_size_y)
195
- self.port_properties = temp
197
+ height = self.parent.port_properties.get("reference_height")
198
+ if height:
199
+ port_prop.SetReferenceHeight(self.pedb.edb_value(height))
200
+ reference_size_auto = self.parent.port_properties.get("reference_size_auto")
201
+ if reference_size_auto is not None:
202
+ port_prop.SetReferenceSizeAuto(reference_size_auto)
203
+ reference_size_x = self.parent.port_properties.get("reference_size_x", 0)
204
+ reference_size_y = self.parent.port_properties.get("reference_size_y", 0)
205
+ port_prop.SetReferenceSize(self.pedb.edb_value(reference_size_x), self.pedb.edb_value(reference_size_y))
206
+ cp.SetPortProperty(port_prop)
207
+ self.pyedb_obj.component_property = cp
196
208
 
197
- def _set_port_properties_to_edb(self):
198
- cp = self._pyedb_obj.component_property
199
- port_prop = cp.GetPortProperty().Clone()
200
- height = self.port_properties.get("reference_height")
201
- if height:
202
- port_prop.SetReferenceHeight(self._pedb.edb_value(height))
203
- reference_size_auto = self.port_properties.get("reference_size_auto")
204
- if reference_size_auto is not None:
205
- port_prop.SetReferenceSizeAuto(reference_size_auto)
206
- reference_size_x = self.port_properties.get("reference_size_x", 0)
207
- reference_size_y = self.port_properties.get("reference_size_y", 0)
208
- port_prop.SetReferenceSize(self._pedb.edb_value(reference_size_x), self._pedb.edb_value(reference_size_y))
209
- cp.SetPortProperty(port_prop)
210
- self._pyedb_obj.component_property = cp
209
+ def set_parameters_to_edb(self):
210
+ if self.parent.type:
211
+ self.pyedb_obj.type = self.parent.type
212
+ if self.parent.enabled:
213
+ self.pyedb_obj.enabled = self.parent.enabled
211
214
 
212
- def set_parameters_to_edb(self):
213
- if self.type:
214
- self._pyedb_obj.type = self.type
215
- if self.enabled:
216
- self._pyedb_obj.enabled = self.enabled
215
+ self._set_model_properties_to_edb()
216
+ if self.pyedb_obj.type.lower() == "ic":
217
+ self._set_ic_die_properties_to_edb()
218
+ self._set_port_properties_to_edb()
219
+ elif self.pyedb_obj.type.lower() in ["io", "other"]:
220
+ self._set_solder_ball_properties_to_edb()
221
+ self._set_port_properties_to_edb()
217
222
 
218
- self._set_model_properties_to_edb()
219
- if self._pyedb_obj.type.lower() == "ic":
220
- self._set_ic_die_properties_to_edb()
221
- self._set_port_properties_to_edb()
222
- elif self._pyedb_obj.type.lower() in ["io", "other"]:
223
- self._set_solder_ball_properties_to_edb()
224
- self._set_port_properties_to_edb()
223
+ def retrieve_parameters_from_edb(self):
224
+ self.parent.type = self.pyedb_obj.type
225
+ self.parent.definition = self.pyedb_obj.part_name
226
+ self.parent.reference_designator = self.pyedb_obj.name
227
+ self.retrieve_model_properties_from_edb()
228
+ if self.pyedb_obj.type.lower() == "ic":
229
+ self._retrieve_ic_die_properties_from_edb()
230
+ self._retrieve_port_properties_from_edb()
231
+ elif self.pyedb_obj.type.lower() in ["io", "other"]:
232
+ self._retrieve_solder_ball_properties_from_edb()
233
+ self._retrieve_port_properties_from_edb()
225
234
 
226
- def retrieve_parameters_from_edb(self):
227
- self.type = self._pyedb_obj.type
228
- self.definition = self._pyedb_obj.part_name
229
- self.reference_designator = self._pyedb_obj.name
230
- self.retrieve_model_properties_from_edb()
231
- if self._pyedb_obj.type.lower() == "ic":
232
- self._retrieve_ic_die_properties_from_edb()
233
- self._retrieve_port_properties_from_edb()
234
- elif self._pyedb_obj.type.lower() in ["io", "other"]:
235
- self._retrieve_solder_ball_properties_from_edb()
236
- self._retrieve_port_properties_from_edb()
235
+ class Grpc(Common):
236
+ def __init__(self, parent):
237
+ super().__init__(parent)
238
+
239
+ class DotNet(Grpc):
240
+ def __init__(self, parent):
241
+ super().__init__(parent)
242
+
243
+ def __init__(self, pedb, pedb_object, **kwargs):
244
+ self.pedb = pedb
245
+ self.pyedb_obj = pedb_object
246
+ if os.environ["PYEDB_USE_DOTNET"] == "0":
247
+ self.api = self.Grpc(self)
248
+ else:
249
+ self.api = self.DotNet(self)
250
+
251
+ self.enabled = kwargs.get("enabled", None)
252
+ self.reference_designator = kwargs.get("reference_designator", None)
253
+ self.definition = kwargs.get("definition", None)
254
+ self.type = kwargs["part_type"].lower() if kwargs.get("part_type") else None
255
+ self.placement_layer = kwargs.get("placement_layer", None)
256
+ self.pins = kwargs.get("pins", [])
257
+
258
+ self.port_properties = kwargs.get("port_properties", {})
259
+ self.solder_ball_properties = kwargs.get("solder_ball_properties", {})
260
+ self.ic_die_properties = kwargs.get("ic_die_properties", {})
261
+ self.pin_pair_model = kwargs.get("pin_pair_model", [])
262
+ self.spice_model = kwargs.get("spice_model", {})
263
+ self.s_parameter_model = kwargs.get("s_parameter_model", {})
264
+ self.netlist_model = kwargs.get("netlist_model", {})
237
265
 
238
266
 
239
267
  class CfgComponents:
240
268
  def __init__(self, pedb, components_data):
241
- self._pedb = pedb
269
+ self.pedb = pedb
242
270
  self.components = []
243
271
 
244
272
  if components_data:
245
273
  for comp in components_data:
246
- obj = self._pedb.layout.find_component_by_name(comp["reference_designator"])
247
- self.components.append(CfgComponent(self._pedb, obj, **comp))
274
+ obj = self.pedb.layout.find_component_by_name(comp["reference_designator"])
275
+ self.components.append(CfgComponent(self.pedb, obj, **comp))
248
276
 
249
277
  def clean(self):
250
278
  self.components = []
251
279
 
252
280
  def apply(self):
253
281
  for comp in self.components:
254
- comp.set_parameters_to_edb()
282
+ comp.api.set_parameters_to_edb()
255
283
 
256
284
  def retrieve_parameters_from_edb(self):
257
285
  self.clean()
258
- comps_in_db = self._pedb.components
286
+ comps_in_db = self.pedb.components
259
287
  for _, comp in comps_in_db.instances.items():
260
- cfg_comp = CfgComponent(self._pedb, comp)
261
- cfg_comp.retrieve_parameters_from_edb()
288
+ cfg_comp = CfgComponent(self.pedb, comp)
289
+ cfg_comp.api.retrieve_parameters_from_edb()
262
290
  self.components.append(cfg_comp)
@@ -31,7 +31,7 @@ from pyedb.configuration.cfg_operations import CfgOperations
31
31
  from pyedb.configuration.cfg_package_definition import CfgPackageDefinitions
32
32
  from pyedb.configuration.cfg_padstacks import CfgPadstacks
33
33
  from pyedb.configuration.cfg_pin_groups import CfgPinGroups
34
- from pyedb.configuration.cfg_ports_sources import CfgPorts, CfgSources
34
+ from pyedb.configuration.cfg_ports_sources import CfgPorts, CfgProbes, CfgSources
35
35
  from pyedb.configuration.cfg_s_parameter_models import CfgSParameters
36
36
  from pyedb.configuration.cfg_setup import CfgSetups
37
37
  from pyedb.configuration.cfg_spice_models import CfgSpiceModel
@@ -78,3 +78,5 @@ class CfgData(object):
78
78
  self.modeler = CfgModeler(self._pedb, data=kwargs.get("modeler", {}))
79
79
 
80
80
  self.variables = CfgVariables(self._pedb, data=kwargs.get("variables", []))
81
+
82
+ self.probes = CfgProbes(self._pedb, data=kwargs.get("probes", []))
@@ -90,8 +90,8 @@ class CfgModeler:
90
90
  pdef = self._pedb._edb.Definition.PadstackDef.Create(self._pedb.active_db, p.name)
91
91
  pdef.SetData(pdata)
92
92
  pdef = EDBPadstack(pdef, self._pedb.padstacks)
93
- p._pyedb_obj = pdef
94
- p.set_parameters_to_edb()
93
+ p.pyedb_obj = pdef
94
+ p.api.set_parameters_to_edb()
95
95
 
96
96
  if self.padstack_instances:
97
97
  for p in self.padstack_instances:
@@ -101,8 +101,8 @@ class CfgModeler:
101
101
  position=p.position,
102
102
  definition_name=p.definition,
103
103
  )
104
- p._pyedb_obj = p_inst
105
- p.set_parameters_to_edb()
104
+ p.pyedb_obj = p_inst
105
+ p.api.set_parameters_to_edb()
106
106
 
107
107
  if self.planes:
108
108
  for p in self.planes:
@@ -136,5 +136,5 @@ class CfgModeler:
136
136
  placement_layer=c.placement_layer,
137
137
  component_part_name=c.definition,
138
138
  )
139
- c._pyedb_obj = obj
140
- c.set_parameters_to_edb()
139
+ c.pyedb_obj = obj
140
+ c.api.set_parameters_to_edb()