pyedb 0.54.0__py3-none-any.whl → 0.56.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 (105) hide show
  1. pyedb/__init__.py +1 -8
  2. pyedb/configuration/cfg_boundaries.py +69 -151
  3. pyedb/configuration/cfg_components.py +201 -460
  4. pyedb/configuration/cfg_data.py +4 -2
  5. pyedb/configuration/cfg_general.py +13 -36
  6. pyedb/configuration/cfg_modeler.py +2 -1
  7. pyedb/configuration/cfg_nets.py +21 -35
  8. pyedb/configuration/cfg_operations.py +22 -151
  9. pyedb/configuration/cfg_package_definition.py +56 -112
  10. pyedb/configuration/cfg_padstacks.py +292 -688
  11. pyedb/configuration/cfg_pin_groups.py +32 -79
  12. pyedb/configuration/cfg_ports_sources.py +19 -6
  13. pyedb/configuration/cfg_s_parameter_models.py +67 -172
  14. pyedb/configuration/cfg_setup.py +102 -295
  15. pyedb/configuration/configuration.py +64 -5
  16. pyedb/dotnet/database/Variables.py +26 -19
  17. pyedb/dotnet/database/cell/connectable.py +38 -9
  18. pyedb/dotnet/database/cell/hierarchy/component.py +28 -28
  19. pyedb/dotnet/database/cell/hierarchy/model.py +1 -1
  20. pyedb/dotnet/database/cell/layout.py +63 -2
  21. pyedb/dotnet/database/cell/layout_obj.py +2 -2
  22. pyedb/dotnet/database/cell/primitive/path.py +6 -8
  23. pyedb/dotnet/database/cell/primitive/primitive.py +3 -24
  24. pyedb/dotnet/database/cell/terminal/edge_terminal.py +2 -2
  25. pyedb/dotnet/database/cell/terminal/padstack_instance_terminal.py +1 -1
  26. pyedb/dotnet/database/cell/terminal/pingroup_terminal.py +1 -1
  27. pyedb/dotnet/database/cell/terminal/point_terminal.py +1 -1
  28. pyedb/dotnet/database/cell/terminal/terminal.py +24 -24
  29. pyedb/dotnet/database/cell/voltage_regulator.py +0 -21
  30. pyedb/dotnet/database/components.py +137 -124
  31. pyedb/dotnet/database/definition/component_def.py +4 -4
  32. pyedb/dotnet/database/definition/component_model.py +1 -1
  33. pyedb/dotnet/database/definition/package_def.py +2 -3
  34. pyedb/dotnet/database/dotnet/database.py +3 -199
  35. pyedb/dotnet/database/dotnet/primitive.py +3 -3
  36. pyedb/dotnet/database/edb_data/control_file.py +5 -5
  37. pyedb/dotnet/database/edb_data/hfss_extent_info.py +6 -6
  38. pyedb/dotnet/database/edb_data/layer_data.py +23 -23
  39. pyedb/dotnet/database/edb_data/padstacks_data.py +63 -88
  40. pyedb/dotnet/database/edb_data/primitives_data.py +5 -5
  41. pyedb/dotnet/database/edb_data/sources.py +6 -6
  42. pyedb/dotnet/database/edb_data/variables.py +1 -1
  43. pyedb/dotnet/database/geometry/point_data.py +14 -10
  44. pyedb/dotnet/database/geometry/polygon_data.py +3 -3
  45. pyedb/dotnet/database/hfss.py +46 -48
  46. pyedb/dotnet/database/layout_validation.py +14 -11
  47. pyedb/dotnet/database/materials.py +10 -11
  48. pyedb/dotnet/database/modeler.py +97 -91
  49. pyedb/dotnet/database/nets.py +19 -22
  50. pyedb/dotnet/database/padstack.py +171 -83
  51. pyedb/dotnet/database/siwave.py +42 -42
  52. pyedb/dotnet/database/stackup.py +140 -72
  53. pyedb/dotnet/database/utilities/heatsink.py +4 -4
  54. pyedb/dotnet/database/utilities/obj_base.py +2 -2
  55. pyedb/dotnet/database/utilities/simulation_setup.py +2 -2
  56. pyedb/dotnet/database/utilities/value.py +16 -16
  57. pyedb/dotnet/edb.py +230 -152
  58. pyedb/edb_logger.py +12 -27
  59. pyedb/extensions/create_cell_array.py +394 -0
  60. pyedb/extensions/via_design_backend.py +6 -3
  61. pyedb/generic/data_handlers.py +6 -7
  62. pyedb/generic/design_types.py +81 -30
  63. pyedb/generic/filesystem.py +5 -2
  64. pyedb/generic/general_methods.py +2 -122
  65. pyedb/generic/process.py +44 -108
  66. pyedb/generic/settings.py +79 -19
  67. pyedb/grpc/database/components.py +26 -4
  68. pyedb/grpc/database/control_file.py +5 -5
  69. pyedb/grpc/database/definition/materials.py +1 -1
  70. pyedb/grpc/database/definition/package_def.py +3 -3
  71. pyedb/grpc/database/definition/padstack_def.py +53 -0
  72. pyedb/grpc/database/geometry/polygon_data.py +1 -1
  73. pyedb/grpc/database/layout/layout.py +81 -5
  74. pyedb/grpc/database/layout_validation.py +5 -5
  75. pyedb/grpc/database/modeler.py +24 -16
  76. pyedb/grpc/database/net/net.py +15 -14
  77. pyedb/grpc/database/nets.py +70 -0
  78. pyedb/grpc/database/padstacks.py +122 -17
  79. pyedb/grpc/database/primitive/padstack_instance.py +175 -7
  80. pyedb/grpc/database/primitive/polygon.py +2 -2
  81. pyedb/grpc/database/simulation_setup/siwave_cpa_simulation_setup.py +3 -2
  82. pyedb/grpc/database/siwave.py +1 -1
  83. pyedb/grpc/database/source_excitations.py +12 -5
  84. pyedb/grpc/database/stackup.py +1 -1
  85. pyedb/grpc/database/terminal/bundle_terminal.py +1 -1
  86. pyedb/grpc/database/terminal/padstack_instance_terminal.py +1 -1
  87. pyedb/grpc/database/terminal/pingroup_terminal.py +1 -1
  88. pyedb/grpc/database/utility/value.py +1 -0
  89. pyedb/grpc/database/utility/xml_control_file.py +5 -5
  90. pyedb/grpc/edb.py +80 -30
  91. pyedb/grpc/edb_init.py +3 -3
  92. pyedb/grpc/rpc_session.py +14 -13
  93. pyedb/libraries/common.py +366 -0
  94. pyedb/libraries/rf_libraries/base_functions.py +1358 -0
  95. pyedb/libraries/rf_libraries/planar_antennas.py +628 -0
  96. pyedb/misc/decorators.py +61 -0
  97. pyedb/misc/misc.py +0 -13
  98. pyedb/modeler/geometry_operators.py +6 -6
  99. pyedb/siwave.py +6 -8
  100. pyedb/siwave_core/__init__.py +0 -0
  101. pyedb/siwave_core/cpa/__init__.py +0 -0
  102. {pyedb-0.54.0.dist-info → pyedb-0.56.0.dist-info}/METADATA +1 -2
  103. {pyedb-0.54.0.dist-info → pyedb-0.56.0.dist-info}/RECORD +105 -98
  104. {pyedb-0.54.0.dist-info → pyedb-0.56.0.dist-info}/WHEEL +0 -0
  105. {pyedb-0.54.0.dist-info → pyedb-0.56.0.dist-info}/licenses/LICENSE +0 -0
@@ -158,7 +158,7 @@ class EdbSiwave(object):
158
158
 
159
159
  pos_pingroup_terminal = _retry_ntimes(
160
160
  10,
161
- self._edb.cell.terminal.PadstackInstanceTerminal.Create,
161
+ self._edb.Cell.Terminal.PadstackInstanceTerminal.Create,
162
162
  self._active_layout,
163
163
  pos_pin.GetNet(),
164
164
  pos_pin.GetName(),
@@ -168,7 +168,7 @@ class EdbSiwave(object):
168
168
  time.sleep(0.5)
169
169
  neg_pingroup_terminal = _retry_ntimes(
170
170
  20,
171
- self._edb.cell.terminal.PadstackInstanceTerminal.Create,
171
+ self._edb.Cell.Terminal.PadstackInstanceTerminal.Create,
172
172
  self._active_layout,
173
173
  neg_pin.GetNet(),
174
174
  neg_pin.GetName(),
@@ -176,8 +176,8 @@ class EdbSiwave(object):
176
176
  toLayer_neg,
177
177
  )
178
178
  if source.source_type in [SourceType.CoaxPort, SourceType.CircPort, SourceType.LumpedPort]:
179
- pos_pingroup_terminal.SetBoundaryType(self._edb.cell.terminal.BoundaryType.PortBoundary)
180
- neg_pingroup_terminal.SetBoundaryType(self._edb.cell.terminal.BoundaryType.PortBoundary)
179
+ pos_pingroup_terminal.SetBoundaryType(self._edb.Cell.Terminal.BoundaryType.PortBoundary)
180
+ neg_pingroup_terminal.SetBoundaryType(self._edb.Cell.Terminal.BoundaryType.PortBoundary)
181
181
  pos_pingroup_terminal.SetImpedance(self._get_edb_value(source.impedance))
182
182
  if source.source_type == SourceType.CircPort:
183
183
  pos_pingroup_terminal.SetIsCircuitPort(True)
@@ -190,8 +190,8 @@ class EdbSiwave(object):
190
190
  pos_pingroup_terminal.SetName(name)
191
191
  self._logger.warning("%s already exists. Renaming to %s", source.name, name)
192
192
  elif source.source_type == SourceType.Isource:
193
- pos_pingroup_terminal.SetBoundaryType(self._edb.cell.terminal.BoundaryType.kCurrentSource)
194
- neg_pingroup_terminal.SetBoundaryType(self._edb.cell.terminal.BoundaryType.kCurrentSource)
193
+ pos_pingroup_terminal.SetBoundaryType(self._edb.Cell.Terminal.BoundaryType.kCurrentSource)
194
+ neg_pingroup_terminal.SetBoundaryType(self._edb.Cell.Terminal.BoundaryType.kCurrentSource)
195
195
  pos_pingroup_terminal.SetSourceAmplitude(self._get_edb_value(source.magnitude))
196
196
  pos_pingroup_terminal.SetSourcePhase(self._get_edb_value(source.phase))
197
197
  pos_pingroup_terminal.SetReferenceTerminal(neg_pingroup_terminal)
@@ -203,8 +203,8 @@ class EdbSiwave(object):
203
203
  self._logger.warning("%s already exists. Renaming to %s", source.name, name)
204
204
 
205
205
  elif source.source_type == SourceType.Vsource:
206
- pos_pingroup_terminal.SetBoundaryType(self._edb.cell.terminal.BoundaryType.kVoltageSource)
207
- neg_pingroup_terminal.SetBoundaryType(self._edb.cell.terminal.BoundaryType.kVoltageSource)
206
+ pos_pingroup_terminal.SetBoundaryType(self._edb.Cell.Terminal.BoundaryType.kVoltageSource)
207
+ neg_pingroup_terminal.SetBoundaryType(self._edb.Cell.Terminal.BoundaryType.kVoltageSource)
208
208
  pos_pingroup_terminal.SetSourceAmplitude(self._get_edb_value(source.magnitude))
209
209
  pos_pingroup_terminal.SetSourcePhase(self._get_edb_value(source.phase))
210
210
  pos_pingroup_terminal.SetReferenceTerminal(neg_pingroup_terminal)
@@ -216,11 +216,11 @@ class EdbSiwave(object):
216
216
  self._logger.warning("%s already exists. Renaming to %s", source.name, name)
217
217
 
218
218
  elif source.source_type == SourceType.Rlc:
219
- pos_pingroup_terminal.SetBoundaryType(self._edb.cell.terminal.BoundaryType.RlcBoundary)
220
- neg_pingroup_terminal.SetBoundaryType(self._edb.cell.terminal.BoundaryType.RlcBoundary)
219
+ pos_pingroup_terminal.SetBoundaryType(self._edb.Cell.Terminal.BoundaryType.RlcBoundary)
220
+ neg_pingroup_terminal.SetBoundaryType(self._edb.Cell.Terminal.BoundaryType.RlcBoundary)
221
221
  pos_pingroup_terminal.SetReferenceTerminal(neg_pingroup_terminal)
222
222
  pos_pingroup_terminal.SetSourceAmplitude(self._get_edb_value(source.rvalue))
223
- Rlc = self._edb.utility.utility.Rlc()
223
+ Rlc = self._edb.Utility.Rlc()
224
224
  Rlc.CEnabled = False
225
225
  Rlc.LEnabled = False
226
226
  Rlc.REnabled = True
@@ -322,7 +322,7 @@ class EdbSiwave(object):
322
322
  self._logger.error("reference net {} not found.".format(layer_name))
323
323
  return False
324
324
  else:
325
- if not isinstance(reference_net, self._edb.cell.net.net): # pragma no cover
325
+ if not isinstance(reference_net, self._edb.Cell.Net): # pragma no cover
326
326
  reference_net = self._pedb.nets.get_net_by_name(reference_net)
327
327
  if not reference_net:
328
328
  self._logger.error("Net {} not found".format(reference_net))
@@ -337,25 +337,25 @@ class EdbSiwave(object):
337
337
  res, start_layer, stop_layer = pin._edb_object.GetLayerRange()
338
338
  if res:
339
339
  pin_instance = pin._edb_padstackinstance
340
- positive_terminal = self._edb.cell.terminal.PadstackInstanceTerminal.Create(
340
+ positive_terminal = self._edb.Cell.Terminal.PadstackInstanceTerminal.Create(
341
341
  self._active_layout, pin_instance.GetNet(), term_name, pin_instance, start_layer
342
342
  )
343
- positive_terminal.SetBoundaryType(self._edb.cell.terminal.BoundaryType.PortBoundary)
344
- positive_terminal.SetImpedance(self._edb.utility.value(impedance))
343
+ positive_terminal.SetBoundaryType(self._edb.Cell.Terminal.BoundaryType.PortBoundary)
344
+ positive_terminal.SetImpedance(self._edb.Utility.Value(impedance))
345
345
  positive_terminal.SetIsCircuitPort(True)
346
346
  pos = self._pedb.components.get_pin_position(pin_instance)
347
- position = self._edb.geometry.point_data(
348
- self._edb.utility.value(pos[0]), self._edb.utility.value(pos[1])
347
+ position = self._edb.Geometry.PointData(
348
+ self._edb.Utility.Value(pos[0]), self._edb.Utility.Value(pos[1])
349
349
  )
350
- negative_terminal = self._edb.cell.terminal.PointTerminal.Create(
350
+ negative_terminal = self._edb.Cell.Terminal.PointTerminal.Create(
351
351
  self._active_layout,
352
352
  reference_net.net_obj,
353
353
  "{}_ref".format(term_name),
354
354
  position,
355
355
  self._pedb.stackup.signal_layers[layer_name]._edb_layer,
356
356
  )
357
- negative_terminal.SetBoundaryType(self._edb.cell.terminal.BoundaryType.PortBoundary)
358
- negative_terminal.SetImpedance(self._edb.utility.value(impedance))
357
+ negative_terminal.SetBoundaryType(self._edb.Cell.Terminal.BoundaryType.PortBoundary)
358
+ negative_terminal.SetImpedance(self._edb.Utility.Value(impedance))
359
359
  negative_terminal.SetIsCircuitPort(True)
360
360
  if positive_terminal.SetReferenceTerminal(negative_terminal):
361
361
  self._logger.info("Port {} successfully created".format(term_name))
@@ -814,7 +814,7 @@ class EdbSiwave(object):
814
814
  f.write('ExportTouchstone "{}"\n'.format(touchstone_file_path))
815
815
  f.write("SaveSiw\n")
816
816
 
817
- return True if os.path.exists(file_name) else False
817
+ return file_name
818
818
 
819
819
  def add_siwave_syz_analysis(
820
820
  self,
@@ -931,7 +931,7 @@ class EdbSiwave(object):
931
931
  pos_pingroup_term_name = source.name
932
932
  pos_pingroup_terminal = _retry_ntimes(
933
933
  10,
934
- self._edb.cell.terminal.PinGroupTerminal.Create,
934
+ self._edb.Cell.Terminal.PinGroupTerminal.Create,
935
935
  self._active_layout,
936
936
  pos_node_net.net_obj,
937
937
  pos_pingroup_term_name,
@@ -945,7 +945,7 @@ class EdbSiwave(object):
945
945
  neg_pingroup_term_name = source.name + "_N"
946
946
  neg_pingroup_terminal = _retry_ntimes(
947
947
  20,
948
- self._edb.cell.terminal.PinGroupTerminal.Create,
948
+ self._edb.Cell.Terminal.PinGroupTerminal.Create,
949
949
  self._active_layout,
950
950
  neg_node_net.net_obj,
951
951
  neg_pingroup_term_name,
@@ -954,8 +954,8 @@ class EdbSiwave(object):
954
954
  )
955
955
 
956
956
  if source.source_type in [SourceType.CoaxPort, SourceType.CircPort, SourceType.LumpedPort]:
957
- pos_pingroup_terminal.SetBoundaryType(self._edb.cell.terminal.BoundaryType.PortBoundary)
958
- neg_pingroup_terminal.SetBoundaryType(self._edb.cell.terminal.BoundaryType.PortBoundary)
957
+ pos_pingroup_terminal.SetBoundaryType(self._edb.Cell.Terminal.BoundaryType.PortBoundary)
958
+ neg_pingroup_terminal.SetBoundaryType(self._edb.Cell.Terminal.BoundaryType.PortBoundary)
959
959
  pos_pingroup_terminal.SetSourceAmplitude(self._get_edb_value(source.impedance))
960
960
  if source.source_type == SourceType.CircPort:
961
961
  pos_pingroup_terminal.SetIsCircuitPort(True)
@@ -969,10 +969,10 @@ class EdbSiwave(object):
969
969
  self._logger.warning("%s already exists. Renaming to %s", source.name, name)
970
970
 
971
971
  elif source.source_type == SourceType.Isource:
972
- pos_pingroup_terminal.SetBoundaryType(self._edb.cell.terminal.BoundaryType.kCurrentSource)
973
- neg_pingroup_terminal.SetBoundaryType(self._edb.cell.terminal.BoundaryType.kCurrentSource)
972
+ pos_pingroup_terminal.SetBoundaryType(self._edb.Cell.Terminal.BoundaryType.kCurrentSource)
973
+ neg_pingroup_terminal.SetBoundaryType(self._edb.Cell.Terminal.BoundaryType.kCurrentSource)
974
974
  pos_pingroup_terminal.SetSourceAmplitude(self._get_edb_value(source.magnitude))
975
- pos_pingroup_terminal.SetSourcePhase(self._edb.utility.value(source.phase))
975
+ pos_pingroup_terminal.SetSourcePhase(self._edb.Utility.Value(source.phase))
976
976
  pos_pingroup_terminal.SetReferenceTerminal(neg_pingroup_terminal)
977
977
  try:
978
978
  pos_pingroup_terminal.SetName(source.name)
@@ -982,8 +982,8 @@ class EdbSiwave(object):
982
982
  self._logger.warning("%s already exists. Renaming to %s", source.name, name)
983
983
 
984
984
  elif source.source_type == SourceType.Vsource:
985
- pos_pingroup_terminal.SetBoundaryType(self._edb.cell.terminal.BoundaryType.kVoltageSource)
986
- neg_pingroup_terminal.SetBoundaryType(self._edb.cell.terminal.BoundaryType.kVoltageSource)
985
+ pos_pingroup_terminal.SetBoundaryType(self._edb.Cell.Terminal.BoundaryType.kVoltageSource)
986
+ neg_pingroup_terminal.SetBoundaryType(self._edb.Cell.Terminal.BoundaryType.kVoltageSource)
987
987
  pos_pingroup_terminal.SetSourceAmplitude(self._get_edb_value(source.magnitude))
988
988
  pos_pingroup_terminal.SetSourcePhase(self._get_edb_value(source.phase))
989
989
  pos_pingroup_terminal.SetReferenceTerminal(neg_pingroup_terminal)
@@ -995,18 +995,18 @@ class EdbSiwave(object):
995
995
  self._logger.warning("%s already exists. Renaming to %s", source.name, name)
996
996
 
997
997
  elif source.source_type == SourceType.Rlc:
998
- pos_pingroup_terminal.SetBoundaryType(self._edb.cell.terminal.BoundaryType.RlcBoundary)
999
- neg_pingroup_terminal.SetBoundaryType(self._edb.cell.terminal.BoundaryType.RlcBoundary)
998
+ pos_pingroup_terminal.SetBoundaryType(self._edb.Cell.Terminal.BoundaryType.RlcBoundary)
999
+ neg_pingroup_terminal.SetBoundaryType(self._edb.Cell.Terminal.BoundaryType.RlcBoundary)
1000
1000
  pos_pingroup_terminal.SetReferenceTerminal(neg_pingroup_terminal)
1001
1001
  pos_pingroup_terminal.SetSourceAmplitude(self._get_edb_value(source.rvalue))
1002
- Rlc = self._edb.utility.utility.Rlc()
1002
+ Rlc = self._edb.Utility.Rlc()
1003
1003
  Rlc.CEnabled = False
1004
1004
  Rlc.LEnabled = False
1005
1005
  Rlc.REnabled = True
1006
1006
  Rlc.R = self._get_edb_value(source.rvalue)
1007
1007
  pos_pingroup_terminal.SetRlcBoundaryParameters(Rlc)
1008
1008
  elif source.source_type == SourceType.DcTerminal:
1009
- pos_pingroup_terminal.SetBoundaryType(self._edb.cell.terminal.BoundaryType.kDcTerminal)
1009
+ pos_pingroup_terminal.SetBoundaryType(self._edb.Cell.Terminal.BoundaryType.kDcTerminal)
1010
1010
  else:
1011
1011
  pass
1012
1012
  return pos_pingroup_terminal.GetName()
@@ -1097,7 +1097,7 @@ class EdbSiwave(object):
1097
1097
  self._logger.info("Adding frequency sweep disabled")
1098
1098
  except Exception as err:
1099
1099
  self._logger.error("Exception in sweep configuration: {0}.".format(err))
1100
- edb_sim_setup = self._edb.utility.utility.SIWaveSimulationSetup(simsetup_info)
1100
+ edb_sim_setup = self._edb.Utility.SIWaveSimulationSetup(simsetup_info)
1101
1101
  for setup in self._cell.SimulationSetups:
1102
1102
  self._cell.DeleteSimulationSetup(setup.GetName())
1103
1103
  self._logger.warning("Setup {} has been deleted".format(setup.GetName()))
@@ -1153,7 +1153,7 @@ class EdbSiwave(object):
1153
1153
  dcir_setup.SimulationSettings.DCIRSettings.ViaReportPath = simulation_setup.dc_via_report_path
1154
1154
  dcir_setup.SimulationSettings.DCIRSettings.SourceTermsToGround = simulation_setup.dc_source_terms_to_ground
1155
1155
  dcir_setup.Name = simulation_setup.setup_name
1156
- sim_setup = self._edb.utility.utility.SIWaveDCIRSimulationSetup(dcir_setup)
1156
+ sim_setup = self._edb.Utility.SIWaveDCIRSimulationSetup(dcir_setup)
1157
1157
  for setup in self._cell.SimulationSetups:
1158
1158
  self._cell.DeleteSimulationSetup(setup.GetName())
1159
1159
  self._logger.warning("Setup {} has been delete".format(setup.GetName()))
@@ -1244,10 +1244,10 @@ class EdbSiwave(object):
1244
1244
  pin_numbers = [pin_numbers]
1245
1245
  pin_numbers = [str(p) for p in pin_numbers]
1246
1246
  if group_name is None:
1247
- group_name = self._edb.cell.hierarchy.pin_group.GetUniqueName(self._active_layout)
1247
+ group_name = self._edb.Cell.Hierarchy.PinGroup.GetUniqueName(self._active_layout)
1248
1248
  comp = self._pedb.components.instances[reference_designator]
1249
1249
  pins = [pin.pin for name, pin in comp.pins.items() if name in pin_numbers]
1250
- edb_pingroup = self._edb.cell.hierarchy.pin_group.Create(
1250
+ edb_pingroup = self._edb.Cell.Hierarchy.PinGroup.Create(
1251
1251
  self._active_layout, group_name, convert_py_list_to_net_list(pins)
1252
1252
  )
1253
1253
 
@@ -1493,7 +1493,7 @@ class EdbSiwave(object):
1493
1493
  The power dissipation of the resistors are calculated from DC results.
1494
1494
  """
1495
1495
  siwave_id = self._pedb.core.ProductId.SIWave
1496
- cell = self._pedb.active_cell._active_cell
1496
+ cell = self._pedb.active_cell
1497
1497
  _, value = cell.GetProductProperty(siwave_id, 422, "")
1498
1498
  return bool(value)
1499
1499
 
@@ -1525,19 +1525,19 @@ class EdbSiwave(object):
1525
1525
  def icepak_use_minimal_comp_defaults(self, value):
1526
1526
  value = "True" if bool(value) else ""
1527
1527
  siwave_id = self._pedb.core.ProductId.SIWave
1528
- cell = self._pedb.active_cell._active_cell
1528
+ cell = self._pedb.active_cell
1529
1529
  cell.SetProductProperty(siwave_id, 422, value)
1530
1530
 
1531
1531
  @property
1532
1532
  def icepak_component_file(self):
1533
1533
  """Icepak component file path."""
1534
1534
  siwave_id = self._pedb.core.ProductId.SIWave
1535
- cell = self._pedb.active_cell._active_cell
1535
+ cell = self._pedb.active_cell
1536
1536
  _, value = cell.GetProductProperty(siwave_id, 420, "")
1537
1537
  return value
1538
1538
 
1539
1539
  @icepak_component_file.setter
1540
1540
  def icepak_component_file(self, value):
1541
1541
  siwave_id = self._pedb.core.ProductId.SIWave
1542
- cell = self._pedb.active_cell._active_cell
1542
+ cell = self._pedb.active_cell
1543
1543
  cell.SetProductProperty(siwave_id, 420, value)