pyedb 0.13.dev0__py3-none-any.whl → 0.14.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 (75) hide show
  1. pyedb/__init__.py +1 -1
  2. pyedb/configuration/cfg_common.py +0 -5
  3. pyedb/configuration/cfg_components.py +0 -2
  4. pyedb/configuration/cfg_operations.py +0 -2
  5. pyedb/configuration/cfg_package_definition.py +0 -2
  6. pyedb/configuration/cfg_ports_sources.py +14 -11
  7. pyedb/configuration/cfg_stackup.py +0 -7
  8. pyedb/configuration/configuration.py +0 -6
  9. pyedb/dotnet/application/Variables.py +4 -40
  10. pyedb/dotnet/edb.py +27 -82
  11. pyedb/dotnet/edb_core/{edb_data/components_data.py → cell/hierarchy/component.py} +13 -133
  12. pyedb/dotnet/edb_core/cell/hierarchy/model.py +0 -3
  13. pyedb/dotnet/edb_core/cell/hierarchy/netlist_model.py +30 -0
  14. pyedb/dotnet/edb_core/cell/hierarchy/pin_pair_model.py +105 -0
  15. pyedb/dotnet/edb_core/cell/hierarchy/s_parameter_model.py +34 -0
  16. pyedb/dotnet/edb_core/cell/hierarchy/spice_model.py +34 -0
  17. pyedb/dotnet/edb_core/cell/layout.py +137 -0
  18. pyedb/dotnet/edb_core/cell/layout_obj.py +2 -4
  19. pyedb/dotnet/edb_core/cell/primitive.py +199 -1
  20. pyedb/dotnet/edb_core/cell/terminal/bundle_terminal.py +52 -0
  21. pyedb/dotnet/edb_core/cell/terminal/edge_terminal.py +50 -0
  22. pyedb/dotnet/edb_core/cell/terminal/padstack_instance_terminal.py +88 -0
  23. pyedb/dotnet/edb_core/cell/terminal/pingroup_terminal.py +59 -0
  24. pyedb/dotnet/edb_core/cell/terminal/point_terminal.py +73 -0
  25. pyedb/dotnet/edb_core/{edb_data/terminals.py → cell/terminal/terminal.py} +33 -242
  26. pyedb/dotnet/edb_core/components.py +10 -56
  27. pyedb/dotnet/edb_core/definition/component_def.py +1 -8
  28. pyedb/dotnet/edb_core/definition/component_model.py +0 -2
  29. pyedb/dotnet/edb_core/definition/definitions.py +0 -2
  30. pyedb/dotnet/edb_core/definition/package_def.py +7 -5
  31. pyedb/dotnet/edb_core/edb_data/control_file.py +0 -3
  32. pyedb/dotnet/edb_core/edb_data/hfss_extent_info.py +0 -5
  33. pyedb/dotnet/edb_core/edb_data/hfss_pi_simulation_setup_data.py +4 -9
  34. pyedb/dotnet/edb_core/edb_data/layer_data.py +0 -7
  35. pyedb/dotnet/edb_core/edb_data/nets_data.py +2 -5
  36. pyedb/dotnet/edb_core/edb_data/padstacks_data.py +11 -29
  37. pyedb/dotnet/edb_core/edb_data/ports.py +4 -4
  38. pyedb/dotnet/edb_core/edb_data/primitives_data.py +3 -26
  39. pyedb/dotnet/edb_core/edb_data/raptor_x_simulation_setup_data.py +13 -20
  40. pyedb/dotnet/edb_core/edb_data/simulation_configuration.py +3 -11
  41. pyedb/dotnet/edb_core/edb_data/sources.py +12 -17
  42. pyedb/dotnet/edb_core/general.py +1 -6
  43. pyedb/dotnet/edb_core/geometry/polygon_data.py +0 -3
  44. pyedb/dotnet/edb_core/hfss.py +1 -33
  45. pyedb/dotnet/edb_core/layout.py +0 -35
  46. pyedb/dotnet/edb_core/layout_validation.py +1 -3
  47. pyedb/dotnet/edb_core/materials.py +1 -22
  48. pyedb/dotnet/edb_core/net_class.py +0 -8
  49. pyedb/dotnet/edb_core/nets.py +4 -29
  50. pyedb/dotnet/edb_core/padstack.py +76 -30
  51. pyedb/dotnet/edb_core/sim_setup_data/data/adaptive_frequency_data.py +72 -0
  52. pyedb/dotnet/edb_core/sim_setup_data/data/mesh_operation.py +287 -0
  53. pyedb/dotnet/edb_core/{edb_data/hfss_simulation_setup_data.py → sim_setup_data/data/settings.py} +174 -878
  54. pyedb/dotnet/edb_core/sim_setup_data/data/sweep_data.py +509 -0
  55. pyedb/dotnet/edb_core/sim_setup_data/io/__init__.py +0 -0
  56. pyedb/dotnet/edb_core/{edb_data/siwave_simulation_setup_data.py → sim_setup_data/io/siwave.py} +0 -341
  57. pyedb/dotnet/edb_core/siwave.py +5 -33
  58. pyedb/dotnet/edb_core/stackup.py +4 -51
  59. pyedb/dotnet/edb_core/utilities/simulation_setup.py +612 -366
  60. pyedb/generic/data_handlers.py +1 -9
  61. pyedb/generic/general_methods.py +3 -53
  62. pyedb/generic/plot.py +1 -2
  63. pyedb/ipc2581/ecad/cad_data/layer_feature.py +1 -7
  64. pyedb/ipc2581/ecad/cad_data/package.py +1 -4
  65. pyedb/ipc2581/ecad/cad_data/path.py +1 -3
  66. pyedb/ipc2581/ecad/cad_data/polygon.py +1 -6
  67. pyedb/ipc2581/ecad/cad_data/step.py +1 -10
  68. pyedb/ipc2581/ipc2581.py +8 -15
  69. pyedb/modeler/geometry_operators.py +164 -67
  70. pyedb/siwave.py +1 -16
  71. {pyedb-0.13.dev0.dist-info → pyedb-0.14.0.dist-info}/METADATA +2 -2
  72. {pyedb-0.13.dev0.dist-info → pyedb-0.14.0.dist-info}/RECORD +75 -61
  73. /pyedb/dotnet/edb_core/cell/{__init__.py → terminal/__init__.py} +0 -0
  74. {pyedb-0.13.dev0.dist-info → pyedb-0.14.0.dist-info}/LICENSE +0 -0
  75. {pyedb-0.13.dev0.dist-info → pyedb-0.14.0.dist-info}/WHEEL +0 -0
pyedb/dotnet/edb.py CHANGED
@@ -39,6 +39,15 @@ import warnings
39
39
 
40
40
  from pyedb.configuration.configuration import Configuration
41
41
  from pyedb.dotnet.application.Variables import decompose_variable_value
42
+ from pyedb.dotnet.edb_core.cell.layout import Layout
43
+ from pyedb.dotnet.edb_core.cell.terminal.bundle_terminal import BundleTerminal
44
+ from pyedb.dotnet.edb_core.cell.terminal.edge_terminal import EdgeTerminal
45
+ from pyedb.dotnet.edb_core.cell.terminal.padstack_instance_terminal import (
46
+ PadstackInstanceTerminal,
47
+ )
48
+ from pyedb.dotnet.edb_core.cell.terminal.pingroup_terminal import PinGroupTerminal
49
+ from pyedb.dotnet.edb_core.cell.terminal.point_terminal import PointTerminal
50
+ from pyedb.dotnet.edb_core.cell.terminal.terminal import Terminal
42
51
  from pyedb.dotnet.edb_core.components import Components
43
52
  from pyedb.dotnet.edb_core.dotnet.database import Database
44
53
  from pyedb.dotnet.edb_core.dotnet.layout import LayoutDotNet
@@ -51,9 +60,6 @@ from pyedb.dotnet.edb_core.edb_data.edbvalue import EdbValue
51
60
  from pyedb.dotnet.edb_core.edb_data.hfss_pi_simulation_setup_data import (
52
61
  HFSSPISimulationSetup,
53
62
  )
54
- from pyedb.dotnet.edb_core.edb_data.hfss_simulation_setup_data import (
55
- HfssSimulationSetup,
56
- )
57
63
  from pyedb.dotnet.edb_core.edb_data.ports import (
58
64
  BundleWavePort,
59
65
  CircuitPort,
@@ -68,12 +74,7 @@ from pyedb.dotnet.edb_core.edb_data.raptor_x_simulation_setup_data import (
68
74
  from pyedb.dotnet.edb_core.edb_data.simulation_configuration import (
69
75
  SimulationConfiguration,
70
76
  )
71
- from pyedb.dotnet.edb_core.edb_data.siwave_simulation_setup_data import (
72
- SiwaveDCSimulationSetup,
73
- SiwaveSYZSimulationSetup,
74
- )
75
77
  from pyedb.dotnet.edb_core.edb_data.sources import SourceType
76
- from pyedb.dotnet.edb_core.edb_data.terminals import Terminal
77
78
  from pyedb.dotnet.edb_core.edb_data.variables import Variable
78
79
  from pyedb.dotnet.edb_core.general import (
79
80
  LayoutObjType,
@@ -81,7 +82,6 @@ from pyedb.dotnet.edb_core.general import (
81
82
  convert_py_list_to_net_list,
82
83
  )
83
84
  from pyedb.dotnet.edb_core.hfss import EdbHfss
84
- from pyedb.dotnet.edb_core.layout import EdbLayout
85
85
  from pyedb.dotnet.edb_core.layout_validation import LayoutValidation
86
86
  from pyedb.dotnet.edb_core.materials import Materials
87
87
  from pyedb.dotnet.edb_core.net_class import (
@@ -93,6 +93,11 @@ from pyedb.dotnet.edb_core.nets import EdbNets
93
93
  from pyedb.dotnet.edb_core.padstack import EdbPadstacks
94
94
  from pyedb.dotnet.edb_core.siwave import EdbSiwave
95
95
  from pyedb.dotnet.edb_core.stackup import Stackup
96
+ from pyedb.dotnet.edb_core.utilities.simulation_setup import (
97
+ HfssSimulationSetup,
98
+ SiwaveDCSimulationSetup,
99
+ SiwaveSYZSimulationSetup,
100
+ )
96
101
  from pyedb.generic.constants import AEDT_UNITS, SolverType
97
102
  from pyedb.generic.general_methods import (
98
103
  generate_unique_name,
@@ -101,7 +106,6 @@ from pyedb.generic.general_methods import (
101
106
  is_ironpython,
102
107
  is_linux,
103
108
  is_windows,
104
- pyedb_function_handler,
105
109
  )
106
110
  from pyedb.generic.process import SiwaveSolve
107
111
  from pyedb.generic.settings import settings
@@ -271,7 +275,6 @@ class Edb(Database):
271
275
  if ex_type:
272
276
  self.edb_exception(ex_value, ex_traceback)
273
277
 
274
- @pyedb_function_handler()
275
278
  def __getitem__(self, variable_name):
276
279
  """Get or Set a variable to the Edb project. The variable can be project using ``$`` prefix or
277
280
  it can be a design variable, in which case the ``$`` is omitted.
@@ -289,7 +292,6 @@ class Edb(Database):
289
292
  return self.variables[variable_name]
290
293
  return
291
294
 
292
- @pyedb_function_handler()
293
295
  def __setitem__(self, variable_name, variable_value):
294
296
  type_error_message = "Allowed values are str, numeric or two-item list with variable description."
295
297
  if type(variable_value) in [
@@ -350,7 +352,6 @@ class Edb(Database):
350
352
  self._layout = None
351
353
  self._configuration = None
352
354
 
353
- @pyedb_function_handler()
354
355
  def _init_objects(self):
355
356
  self._components = Components(self)
356
357
  self._stackup = Stackup(self, self.layout.layer_collection)
@@ -358,7 +359,7 @@ class Edb(Database):
358
359
  self._siwave = EdbSiwave(self)
359
360
  self._hfss = EdbHfss(self)
360
361
  self._nets = EdbNets(self)
361
- self._core_primitives = EdbLayout(self)
362
+ self._core_primitives = Layout(self, self._active_cell.GetLayout())
362
363
  self._stackup2 = self._stackup
363
364
  self._materials = Materials(self)
364
365
 
@@ -438,12 +439,18 @@ class Edb(Database):
438
439
  """
439
440
 
440
441
  temp = {}
441
- terminal_mapping = Terminal(self)._terminal_mapping
442
442
  for i in self.layout.terminals:
443
443
  terminal_type = i.ToString().split(".")[-1]
444
- ter = terminal_mapping[terminal_type](self, i)
445
- temp[ter.name] = ter
446
-
444
+ if terminal_type == "PinGroupTerminal":
445
+ temp[i.GetName()] = PinGroupTerminal(self, i)
446
+ elif terminal_type == "PadstackInstanceTerminal":
447
+ temp[i.GetName()] = PadstackInstanceTerminal(self, i)
448
+ elif terminal_type == "EdgeTerminal":
449
+ temp[i.GetName()] = EdgeTerminal(self, i)
450
+ elif terminal_type == "BundleTerminal":
451
+ temp[i.GetName()] = BundleTerminal(self, i)
452
+ elif terminal_type == "PointTerminal":
453
+ temp[i.GetName()] = PointTerminal(self, i)
447
454
  return temp
448
455
 
449
456
  @property
@@ -513,7 +520,6 @@ class Edb(Database):
513
520
  temp[name] = val
514
521
  return temp
515
522
 
516
- @pyedb_function_handler()
517
523
  def open_edb(self):
518
524
  """Open EDB.
519
525
 
@@ -556,7 +562,6 @@ class Edb(Database):
556
562
 
557
563
  return True
558
564
 
559
- @pyedb_function_handler()
560
565
  def open_edb_inside_aedt(self):
561
566
  """Open EDB inside AEDT.
562
567
 
@@ -591,7 +596,6 @@ class Edb(Database):
591
596
  self._active_cell = None
592
597
  return None
593
598
 
594
- @pyedb_function_handler()
595
599
  def create_edb(self):
596
600
  """Create EDB.
597
601
 
@@ -618,7 +622,6 @@ class Edb(Database):
618
622
  return True
619
623
  return None
620
624
 
621
- @pyedb_function_handler()
622
625
  def import_layout_pcb(
623
626
  self,
624
627
  input_file,
@@ -692,7 +695,6 @@ class Edb(Database):
692
695
  self.edbpath = os.path.join(working_dir, aedb_name)
693
696
  return self.open_edb()
694
697
 
695
- @pyedb_function_handler()
696
698
  def export_to_ipc2581(self, ipc_path=None, units="MILLIMETER"):
697
699
  """Create an XML IPC2581 file from the active EDB.
698
700
 
@@ -1139,7 +1141,7 @@ class Edb(Database):
1139
1141
  >>> top_prims = edbapp.modeler.primitives_by_layer["TOP"]
1140
1142
  """
1141
1143
  if not self._core_primitives and self.active_db:
1142
- self._core_primitives = EdbLayout(self)
1144
+ self._core_primitives = Layout(self, self._active_cell.GetLayout())
1143
1145
  return self._core_primitives
1144
1146
 
1145
1147
  @property
@@ -1167,7 +1169,6 @@ class Edb(Database):
1167
1169
  """Edb Layout Instance."""
1168
1170
  return self.layout.layout_instance
1169
1171
 
1170
- @pyedb_function_handler()
1171
1172
  def get_connected_objects(self, layout_object_instance):
1172
1173
  """Get connected objects.
1173
1174
 
@@ -1259,7 +1260,6 @@ class Edb(Database):
1259
1260
  VoltageProbe,
1260
1261
  ) = range(0, 9)
1261
1262
 
1262
- @pyedb_function_handler()
1263
1263
  def edb_value(self, val):
1264
1264
  """Convert a value to an EDB value. Value can be a string, float or integer. Mainly used in internal calls.
1265
1265
 
@@ -1275,7 +1275,6 @@ class Edb(Database):
1275
1275
  """
1276
1276
  return self.edb_api.utility.value(val)
1277
1277
 
1278
- @pyedb_function_handler()
1279
1278
  def point_3d(self, x, y, z=0.0):
1280
1279
  """Compute the Edb 3d Point Data.
1281
1280
 
@@ -1294,7 +1293,6 @@ class Edb(Database):
1294
1293
  """
1295
1294
  return self.edb_api.geometry.point3d_data(x, y, z)
1296
1295
 
1297
- @pyedb_function_handler()
1298
1296
  def point_data(self, x, y=None):
1299
1297
  """Compute the Edb Point Data.
1300
1298
 
@@ -1315,7 +1313,6 @@ class Edb(Database):
1315
1313
  else:
1316
1314
  return self.edb_api.geometry.point_data(x, y)
1317
1315
 
1318
- @pyedb_function_handler()
1319
1316
  def _is_file_existing_and_released(self, filename):
1320
1317
  if os.path.exists(filename):
1321
1318
  try:
@@ -1327,14 +1324,12 @@ class Edb(Database):
1327
1324
  else:
1328
1325
  return False
1329
1326
 
1330
- @pyedb_function_handler()
1331
1327
  def _is_file_existing(self, filename):
1332
1328
  if os.path.exists(filename):
1333
1329
  return True
1334
1330
  else:
1335
1331
  return False
1336
1332
 
1337
- @pyedb_function_handler()
1338
1333
  def _wait_for_file_release(self, timeout=30, file_to_release=None):
1339
1334
  if not file_to_release:
1340
1335
  file_to_release = os.path.join(self.edbpath)
@@ -1347,7 +1342,6 @@ class Edb(Database):
1347
1342
  else:
1348
1343
  time.sleep(0.250)
1349
1344
 
1350
- @pyedb_function_handler()
1351
1345
  def _wait_for_file_exists(self, timeout=30, file_to_release=None, wait_count=4):
1352
1346
  if not file_to_release:
1353
1347
  file_to_release = os.path.join(self.edbpath)
@@ -1366,7 +1360,6 @@ class Edb(Database):
1366
1360
  times = 0
1367
1361
  time.sleep(0.250)
1368
1362
 
1369
- @pyedb_function_handler()
1370
1363
  def close_edb(self):
1371
1364
  """Close EDB and cleanup variables.
1372
1365
 
@@ -1387,7 +1380,6 @@ class Edb(Database):
1387
1380
  self._clean_variables()
1388
1381
  return True
1389
1382
 
1390
- @pyedb_function_handler()
1391
1383
  def save_edb(self):
1392
1384
  """Save the EDB file.
1393
1385
 
@@ -1404,7 +1396,6 @@ class Edb(Database):
1404
1396
  self.logger.info("EDB file save time: {0:.2f}ms".format(elapsed_time * 1000.0))
1405
1397
  return True
1406
1398
 
1407
- @pyedb_function_handler()
1408
1399
  def save_edb_as(self, fname):
1409
1400
  """Save the EDB file as another file.
1410
1401
 
@@ -1438,7 +1429,6 @@ class Edb(Database):
1438
1429
  self._logger.remove_file_logger(origin_name)
1439
1430
  return True
1440
1431
 
1441
- @pyedb_function_handler()
1442
1432
  def execute(self, func):
1443
1433
  """Execute a function.
1444
1434
 
@@ -1456,7 +1446,6 @@ class Edb(Database):
1456
1446
  """
1457
1447
  return self.edb_api.utility.utility.Command.Execute(func)
1458
1448
 
1459
- @pyedb_function_handler()
1460
1449
  def import_cadence_file(self, inputBrd, WorkDir=None, anstranslator_full_path="", use_ppe=False):
1461
1450
  """Import a board file and generate an ``edb.def`` file in the working directory.
1462
1451
 
@@ -1489,7 +1478,6 @@ class Edb(Database):
1489
1478
  else:
1490
1479
  return False
1491
1480
 
1492
- @pyedb_function_handler()
1493
1481
  def import_gds_file(
1494
1482
  self,
1495
1483
  inputGDS,
@@ -1548,7 +1536,6 @@ class Edb(Database):
1548
1536
  else:
1549
1537
  return False
1550
1538
 
1551
- @pyedb_function_handler()
1552
1539
  def _create_extent(
1553
1540
  self,
1554
1541
  net_signals,
@@ -1624,7 +1611,6 @@ class Edb(Database):
1624
1611
  _poly = self.edb_api.geometry.polygon_data.get_convex_hull_of_polygons(_poly_list)
1625
1612
  return _poly
1626
1613
 
1627
- @pyedb_function_handler()
1628
1614
  def _create_conformal(
1629
1615
  self,
1630
1616
  net_signals,
@@ -1678,7 +1664,6 @@ class Edb(Database):
1678
1664
  areas = [i.Area() for i in _poly_unite]
1679
1665
  return _poly_unite[areas.index(max(areas))]
1680
1666
 
1681
- @pyedb_function_handler()
1682
1667
  def _smart_cut(self, reference_list=[], expansion_size=1e-12):
1683
1668
  from pyedb.dotnet.clr_module import Tuple
1684
1669
 
@@ -1706,7 +1691,6 @@ class Edb(Database):
1706
1691
  _polys.append(self.edb_api.geometry.polygon_data.create_from_bbox(points))
1707
1692
  return _polys
1708
1693
 
1709
- @pyedb_function_handler()
1710
1694
  def _create_convex_hull(
1711
1695
  self,
1712
1696
  net_signals,
@@ -1741,7 +1725,6 @@ class Edb(Database):
1741
1725
  _poly = _poly.Expand(expansion_size, tolerance, round_corner, round_extension)[0]
1742
1726
  return _poly
1743
1727
 
1744
- @pyedb_function_handler()
1745
1728
  def cutout(
1746
1729
  self,
1747
1730
  signal_list=None,
@@ -1983,7 +1966,6 @@ class Edb(Database):
1983
1966
  self.open_edb()
1984
1967
  return result
1985
1968
 
1986
- @pyedb_function_handler()
1987
1969
  def _create_cutout_legacy(
1988
1970
  self,
1989
1971
  signal_list=[],
@@ -2098,7 +2080,6 @@ class Edb(Database):
2098
2080
  self.components.refresh_components()
2099
2081
  return [[pt.X.ToDouble(), pt.Y.ToDouble()] for pt in list(_poly.GetPolygonWithoutArcs().Points)]
2100
2082
 
2101
- @pyedb_function_handler()
2102
2083
  def create_cutout(
2103
2084
  self,
2104
2085
  signal_list=[],
@@ -2160,7 +2141,6 @@ class Edb(Database):
2160
2141
  use_pyaedt_extent_computing=use_pyaedt_extent_computing,
2161
2142
  )
2162
2143
 
2163
- @pyedb_function_handler()
2164
2144
  def _create_cutout_multithread(
2165
2145
  self,
2166
2146
  signal_list=[],
@@ -2399,7 +2379,6 @@ class Edb(Database):
2399
2379
  self.logger.reset_timer()
2400
2380
  return [[pt.X.ToDouble(), pt.Y.ToDouble()] for pt in list(_poly.GetPolygonWithoutArcs().Points)]
2401
2381
 
2402
- @pyedb_function_handler()
2403
2382
  def create_cutout_multithread(
2404
2383
  self,
2405
2384
  signal_list=[],
@@ -2508,7 +2487,6 @@ class Edb(Database):
2508
2487
  return_extent=return_extent,
2509
2488
  )
2510
2489
 
2511
- @pyedb_function_handler()
2512
2490
  def get_conformal_polygon_from_netlist(self, netlist=None):
2513
2491
  """Return an EDB conformal polygon based on a netlist.
2514
2492
 
@@ -2545,7 +2523,6 @@ class Edb(Database):
2545
2523
  else:
2546
2524
  return False
2547
2525
 
2548
- @pyedb_function_handler()
2549
2526
  def number_with_units(self, value, units=None):
2550
2527
  """Convert a number to a string with units. If value is a string, it's returned as is.
2551
2528
 
@@ -2569,7 +2546,6 @@ class Edb(Database):
2569
2546
  else:
2570
2547
  return "{0}{1}".format(value, units)
2571
2548
 
2572
- @pyedb_function_handler()
2573
2549
  def arg_with_dim(self, Value, sUnits):
2574
2550
  """Convert a number to a string with units. If value is a string, it's returned as is.
2575
2551
 
@@ -2599,7 +2575,6 @@ class Edb(Database):
2599
2575
  else:
2600
2576
  return val
2601
2577
 
2602
- @pyedb_function_handler()
2603
2578
  def _create_cutout_on_point_list(
2604
2579
  self,
2605
2580
  point_list,
@@ -2786,7 +2761,6 @@ class Edb(Database):
2786
2761
  pass
2787
2762
  return [[pt.X.ToDouble(), pt.Y.ToDouble()] for pt in list(polygonData.GetPolygonWithoutArcs().Points)]
2788
2763
 
2789
- @pyedb_function_handler()
2790
2764
  def create_cutout_on_point_list(
2791
2765
  self,
2792
2766
  point_list,
@@ -2840,7 +2814,6 @@ class Edb(Database):
2840
2814
  keep_voids=keep_voids,
2841
2815
  )
2842
2816
 
2843
- @pyedb_function_handler()
2844
2817
  def write_export3d_option_config_file(self, path_to_output, config_dictionaries=None):
2845
2818
  """Write the options for a 3D export to a configuration file.
2846
2819
 
@@ -2878,7 +2851,6 @@ class Edb(Database):
2878
2851
  f.write(el + " " + str(val) + "\n")
2879
2852
  return os.path.join(path_to_output, "options.config")
2880
2853
 
2881
- @pyedb_function_handler()
2882
2854
  def export_hfss(
2883
2855
  self,
2884
2856
  path_to_output,
@@ -2922,7 +2894,6 @@ class Edb(Database):
2922
2894
  siwave_s = SiwaveSolve(self.edbpath, aedt_installer_path=self.base_path)
2923
2895
  return siwave_s.export_3d_cad("HFSS", path_to_output, net_list, num_cores, aedt_file_name, hidden=hidden)
2924
2896
 
2925
- @pyedb_function_handler()
2926
2897
  def export_q3d(
2927
2898
  self,
2928
2899
  path_to_output,
@@ -2973,7 +2944,6 @@ class Edb(Database):
2973
2944
  hidden=hidden,
2974
2945
  )
2975
2946
 
2976
- @pyedb_function_handler()
2977
2947
  def export_maxwell(
2978
2948
  self,
2979
2949
  path_to_output,
@@ -3025,7 +2995,6 @@ class Edb(Database):
3025
2995
  hidden=hidden,
3026
2996
  )
3027
2997
 
3028
- @pyedb_function_handler()
3029
2998
  def solve_siwave(self):
3030
2999
  """Close EDB and solve it with Siwave.
3031
3000
 
@@ -3042,7 +3011,6 @@ class Edb(Database):
3042
3011
  process.solve()
3043
3012
  return self.edbpath[:-5] + ".siw"
3044
3013
 
3045
- @pyedb_function_handler()
3046
3014
  def export_siwave_dc_results(
3047
3015
  self,
3048
3016
  siwave_project,
@@ -3105,7 +3073,6 @@ class Edb(Database):
3105
3073
  hidden=True,
3106
3074
  )
3107
3075
 
3108
- @pyedb_function_handler()
3109
3076
  def variable_exists(self, variable_name):
3110
3077
  """Check if a variable exists or not.
3111
3078
 
@@ -3130,7 +3097,6 @@ class Edb(Database):
3130
3097
  return True, var_server
3131
3098
  return False, var_server
3132
3099
 
3133
- @pyedb_function_handler()
3134
3100
  def get_variable(self, variable_name):
3135
3101
  """Return Variable Value if variable exists.
3136
3102
 
@@ -3149,7 +3115,6 @@ class Edb(Database):
3149
3115
  self.logger.info("Variable %s doesn't exists.", variable_name)
3150
3116
  return None
3151
3117
 
3152
- @pyedb_function_handler()
3153
3118
  def add_project_variable(self, variable_name, variable_value):
3154
3119
  """Add a variable to edb database (project). The variable will have the prefix `$`.
3155
3120
 
@@ -3182,7 +3147,6 @@ class Edb(Database):
3182
3147
  variable_name = "${}".format(variable_name)
3183
3148
  return self.add_design_variable(variable_name=variable_name, variable_value=variable_value)
3184
3149
 
3185
- @pyedb_function_handler()
3186
3150
  def add_design_variable(self, variable_name, variable_value, is_parameter=False):
3187
3151
  """Add a variable to edb. The variable can be a design one or a project variable (using ``$`` prefix).
3188
3152
 
@@ -3225,7 +3189,6 @@ class Edb(Database):
3225
3189
  self.logger.error("Variable %s already exists.", variable_name)
3226
3190
  return False, var_server[1]
3227
3191
 
3228
- @pyedb_function_handler()
3229
3192
  def change_design_variable_value(self, variable_name, variable_value):
3230
3193
  """Change a variable value.
3231
3194
 
@@ -3260,7 +3223,6 @@ class Edb(Database):
3260
3223
  self.logger.error("Variable %s does not exists.", variable_name)
3261
3224
  return False, var_server[1]
3262
3225
 
3263
- @pyedb_function_handler()
3264
3226
  def get_bounding_box(self):
3265
3227
  """Get the layout bounding box.
3266
3228
 
@@ -3275,7 +3237,6 @@ class Edb(Database):
3275
3237
  [bbox.Item2.X.ToDouble(), bbox.Item2.Y.ToDouble()],
3276
3238
  ]
3277
3239
 
3278
- @pyedb_function_handler()
3279
3240
  def build_simulation_project(self, simulation_setup):
3280
3241
  # type: (SimulationConfiguration) -> bool
3281
3242
  """Build a ready-to-solve simulation project.
@@ -3466,7 +3427,6 @@ class Edb(Database):
3466
3427
  except:
3467
3428
  return False
3468
3429
 
3469
- @pyedb_function_handler()
3470
3430
  def get_statistics(self, compute_area=False):
3471
3431
  """Get the EDBStatistics object.
3472
3432
 
@@ -3476,7 +3436,6 @@ class Edb(Database):
3476
3436
  """
3477
3437
  return self.modeler.get_layout_statistics(evaluate_area=compute_area, net_list=None)
3478
3438
 
3479
- @pyedb_function_handler()
3480
3439
  def are_port_reference_terminals_connected(self, common_reference=None):
3481
3440
  """Check if all terminal references in design are connected.
3482
3441
  If the reference nets are different, there is no hope for the terminal references to be connected.
@@ -3566,7 +3525,6 @@ class Edb(Database):
3566
3525
  # If the intersections are non-zero, the terminal references are connected.
3567
3526
  return True if len(iDintersection) > 0 else False
3568
3527
 
3569
- @pyedb_function_handler()
3570
3528
  def new_simulation_configuration(self, filename=None):
3571
3529
  # type: (str) -> SimulationConfiguration
3572
3530
  """New SimulationConfiguration Object.
@@ -3713,7 +3671,6 @@ class Edb(Database):
3713
3671
  return False
3714
3672
  return HFSSPISimulationSetup(self).create(name)
3715
3673
 
3716
- @pyedb_function_handler()
3717
3674
  def create_siwave_syz_setup(self, name=None):
3718
3675
  """Create a setup from a template.
3719
3676
 
@@ -3744,7 +3701,6 @@ class Edb(Database):
3744
3701
  SiwaveSYZSimulationSetup(self).create(name)
3745
3702
  return self.setups[name]
3746
3703
 
3747
- @pyedb_function_handler()
3748
3704
  def create_siwave_dc_setup(self, name=None):
3749
3705
  """Create a setup from a template.
3750
3706
 
@@ -3772,7 +3728,6 @@ class Edb(Database):
3772
3728
  setup = SiwaveDCSimulationSetup(self).create(name)
3773
3729
  return setup
3774
3730
 
3775
- @pyedb_function_handler()
3776
3731
  def calculate_initial_extent(self, expansion_factor):
3777
3732
  """Compute a float representing the larger number between the dielectric thickness or trace width
3778
3733
  multiplied by the nW factor. The trace width search is limited to nets with ports attached.
@@ -3805,7 +3760,6 @@ class Edb(Database):
3805
3760
  self.logger.info("The W factor is {}, The initial extent = {:e}".format(expansion_factor, max_width))
3806
3761
  return max_width
3807
3762
 
3808
- @pyedb_function_handler()
3809
3763
  def copy_zones(self, working_directory=None):
3810
3764
  """Copy multizone EDB project to one new edb per zone.
3811
3765
 
@@ -3854,7 +3808,6 @@ class Edb(Database):
3854
3808
  edb_zones[edb_zone_path] = (-1, poly_data)
3855
3809
  return edb_zones
3856
3810
 
3857
- @pyedb_function_handler()
3858
3811
  def cutout_multizone_layout(self, zone_dict, common_reference_net=None):
3859
3812
  """Create a multizone project cutout.
3860
3813
 
@@ -3915,7 +3868,6 @@ class Edb(Database):
3915
3868
  edb.close_edb()
3916
3869
  return defined_ports, project_connexions
3917
3870
 
3918
- @pyedb_function_handler()
3919
3871
  def _get_connected_ports_from_multizone_cutout(self, terminal_info_dict):
3920
3872
  """Return connected port list from clipped multizone layout.
3921
3873
 
@@ -3989,7 +3941,6 @@ class Edb(Database):
3989
3941
  connected_ports_list.append((port1_connexion, port2_connexion))
3990
3942
  return connected_ports_list
3991
3943
 
3992
- @pyedb_function_handler
3993
3944
  def create_port(self, terminal, ref_terminal=None, is_circuit_port=False, name=None):
3994
3945
  """Create a port.
3995
3946
 
@@ -4026,7 +3977,6 @@ class Edb(Database):
4026
3977
  terminal.name = name
4027
3978
  return self.ports[terminal.name]
4028
3979
 
4029
- @pyedb_function_handler
4030
3980
  def create_voltage_probe(self, terminal, ref_terminal):
4031
3981
  """Create a voltage probe.
4032
3982
 
@@ -4056,7 +4006,6 @@ class Edb(Database):
4056
4006
  term.ref_terminal = ref_terminal
4057
4007
  return self.probes[term.name]
4058
4008
 
4059
- @pyedb_function_handler
4060
4009
  def create_voltage_source(self, terminal, ref_terminal):
4061
4010
  """Create a voltage source.
4062
4011
 
@@ -4086,7 +4035,6 @@ class Edb(Database):
4086
4035
  term.ref_terminal = ref_terminal
4087
4036
  return self.sources[term.name]
4088
4037
 
4089
- @pyedb_function_handler
4090
4038
  def create_current_source(self, terminal, ref_terminal):
4091
4039
  """Create a current source.
4092
4040
 
@@ -4116,7 +4064,6 @@ class Edb(Database):
4116
4064
  term.ref_terminal = ref_terminal
4117
4065
  return self.sources[term.name]
4118
4066
 
4119
- @pyedb_function_handler
4120
4067
  def get_point_terminal(self, name, net_name, location, layer):
4121
4068
  """Place a voltage probe between two points.
4122
4069
 
@@ -4135,12 +4082,11 @@ class Edb(Database):
4135
4082
  -------
4136
4083
  :class:`legacy.edb_core.edb_data.terminals.PointTerminal`
4137
4084
  """
4138
- from pyedb.dotnet.edb_core.edb_data.terminals import PointTerminal
4085
+ from pyedb.dotnet.edb_core.cell.terminal.point_terminal import PointTerminal
4139
4086
 
4140
4087
  point_terminal = PointTerminal(self)
4141
4088
  return point_terminal.create(name, net_name, location, layer)
4142
4089
 
4143
- @pyedb_function_handler
4144
4090
  def auto_parametrize_design(
4145
4091
  self,
4146
4092
  layers=True,
@@ -4319,7 +4265,6 @@ class Edb(Database):
4319
4265
  parameters.append(antipad_size_variable_y)
4320
4266
  return parameters
4321
4267
 
4322
- @pyedb_function_handler
4323
4268
  def _clean_string_for_variable_name(self, variable_name):
4324
4269
  """Remove forbidden character for variable name.
4325
4270
  Parameters