pyedb 0.48.0__py3-none-any.whl → 0.50.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 (40) hide show
  1. pyedb/__init__.py +1 -1
  2. pyedb/configuration/cfg_modeler.py +42 -11
  3. pyedb/configuration/cfg_ports_sources.py +9 -1
  4. pyedb/configuration/cfg_stackup.py +4 -4
  5. pyedb/dotnet/database/cell/hierarchy/component.py +64 -8
  6. pyedb/dotnet/database/cell/hierarchy/s_parameter_model.py +7 -0
  7. pyedb/dotnet/database/cell/terminal/terminal.py +3 -3
  8. pyedb/dotnet/database/components.py +68 -46
  9. pyedb/dotnet/database/definition/package_def.py +29 -5
  10. pyedb/dotnet/database/edb_data/padstacks_data.py +5 -5
  11. pyedb/dotnet/database/edb_data/primitives_data.py +3 -3
  12. pyedb/dotnet/database/edb_data/variables.py +3 -3
  13. pyedb/dotnet/database/geometry/polygon_data.py +14 -1
  14. pyedb/dotnet/database/materials.py +16 -16
  15. pyedb/dotnet/database/modeler.py +50 -9
  16. pyedb/dotnet/database/padstack.py +7 -5
  17. pyedb/dotnet/database/sim_setup_data/data/settings.py +28 -0
  18. pyedb/dotnet/database/siwave.py +36 -32
  19. pyedb/dotnet/database/stackup.py +1 -0
  20. pyedb/dotnet/database/utilities/hfss_simulation_setup.py +5 -6
  21. pyedb/dotnet/database/utilities/siwave_simulation_setup.py +3 -1
  22. pyedb/dotnet/edb.py +22 -20
  23. pyedb/extensions/__init__.py +0 -0
  24. pyedb/extensions/via_design_backend.py +681 -0
  25. pyedb/grpc/database/components.py +57 -48
  26. pyedb/grpc/database/definition/materials.py +33 -33
  27. pyedb/grpc/database/definitions.py +6 -4
  28. pyedb/grpc/database/hfss.py +2 -2
  29. pyedb/grpc/database/hierarchy/component.py +3 -2
  30. pyedb/grpc/database/layers/stackup_layer.py +119 -22
  31. pyedb/grpc/database/layout_validation.py +5 -5
  32. pyedb/grpc/database/primitive/path.py +1 -1
  33. pyedb/grpc/database/source_excitations.py +156 -0
  34. pyedb/grpc/database/stackup.py +50 -24
  35. pyedb/grpc/edb.py +115 -105
  36. {pyedb-0.48.0.dist-info → pyedb-0.50.0.dist-info}/METADATA +1 -1
  37. {pyedb-0.48.0.dist-info → pyedb-0.50.0.dist-info}/RECORD +39 -38
  38. pyedb/extensions/pre_layout_design_toolkit/via_design.py +0 -1151
  39. {pyedb-0.48.0.dist-info → pyedb-0.50.0.dist-info}/LICENSE +0 -0
  40. {pyedb-0.48.0.dist-info → pyedb-0.50.0.dist-info}/WHEEL +0 -0
pyedb/grpc/edb.py CHANGED
@@ -418,7 +418,7 @@ class Edb(EdbInit):
418
418
  self._extended_nets = ExtendedNets(self)
419
419
 
420
420
  @property
421
- def cell_names(self):
421
+ def cell_names(self) -> [str]:
422
422
  """Cell name container.
423
423
 
424
424
  Returns
@@ -428,7 +428,7 @@ class Edb(EdbInit):
428
428
  return [cell.name for cell in self.active_db.top_circuit_cells]
429
429
 
430
430
  @property
431
- def design_variables(self):
431
+ def design_variables(self) -> dict[str, float]:
432
432
  """Get all edb design variables.
433
433
 
434
434
  Returns
@@ -438,18 +438,18 @@ class Edb(EdbInit):
438
438
  return {i: self.active_cell.get_variable_value(i).value for i in self.active_cell.get_all_variable_names()}
439
439
 
440
440
  @property
441
- def project_variables(self):
441
+ def project_variables(self) -> dict[str, float]:
442
442
  """Get all project variables.
443
443
 
444
444
  Returns
445
445
  -------
446
- variables dictionary : Dict[str, variable_name: float, variable_value]
446
+ variables dictionary : dict[str, variable_name: float, variable_value]
447
447
 
448
448
  """
449
449
  return {i: self.active_db.get_variable_value(i).value for i in self.active_db.get_all_variable_names()}
450
450
 
451
451
  @property
452
- def layout_validation(self):
452
+ def layout_validation(self) -> LayoutValidation:
453
453
  """Return LayoutValidation object.
454
454
 
455
455
  Returns
@@ -459,7 +459,7 @@ class Edb(EdbInit):
459
459
  return LayoutValidation(self)
460
460
 
461
461
  @property
462
- def variables(self):
462
+ def variables(self) -> dict[str, float]:
463
463
  """Get all Edb variables.
464
464
 
465
465
  Returns
@@ -475,7 +475,7 @@ class Edb(EdbInit):
475
475
  return all_vars
476
476
 
477
477
  @property
478
- def terminals(self):
478
+ def terminals(self) -> dict[str, Terminal]:
479
479
  """Get terminals belonging to active layout.
480
480
 
481
481
  Returns
@@ -485,7 +485,7 @@ class Edb(EdbInit):
485
485
  return {i.name: i for i in self.layout.terminals}
486
486
 
487
487
  @property
488
- def excitations(self):
488
+ def excitations(self) -> dict[str, GapPort]:
489
489
  """Get all layout excitations.
490
490
 
491
491
  Returns
@@ -503,7 +503,7 @@ class Edb(EdbInit):
503
503
  return temp
504
504
 
505
505
  @property
506
- def ports(self):
506
+ def ports(self) -> dict[str, GapPort]:
507
507
  """Get all ports.
508
508
 
509
509
  Returns
@@ -537,7 +537,7 @@ class Edb(EdbInit):
537
537
  return ports
538
538
 
539
539
  @property
540
- def excitations_nets(self):
540
+ def excitations_nets(self) -> [str]:
541
541
  """Get all net names with excitation defined.
542
542
 
543
543
  Returns
@@ -548,7 +548,7 @@ class Edb(EdbInit):
548
548
  return list(set([i.net.name for i in self.layout.terminals if not i.is_reference_terminal]))
549
549
 
550
550
  @property
551
- def sources(self):
551
+ def sources(self) -> dict[str, Terminal]:
552
552
  """Get all layout sources.
553
553
 
554
554
  Returns
@@ -574,7 +574,7 @@ class Edb(EdbInit):
574
574
  return _vrms
575
575
 
576
576
  @property
577
- def probes(self):
577
+ def probes(self) -> dict[str, Terminal]:
578
578
  """Get all layout probes.
579
579
 
580
580
  Returns
@@ -585,7 +585,7 @@ class Edb(EdbInit):
585
585
  terms = [term for term in self.layout.terminals if term.boundary_type.value == 8]
586
586
  return {ter.name: ter for ter in terms}
587
587
 
588
- def open_edb(self, restart_rpc_server=False, kill_all_instances=False):
588
+ def open_edb(self, restart_rpc_server=False) -> bool:
589
589
  """Open EDB.
590
590
 
591
591
  Returns
@@ -626,7 +626,7 @@ class Edb(EdbInit):
626
626
  self.logger.error("Builder was not initialized.")
627
627
  return True
628
628
 
629
- def create_edb(self, restart_rpc_server=False, kill_all_instances=False):
629
+ def create_edb(self, restart_rpc_server=False) -> bool:
630
630
  """Create EDB.
631
631
 
632
632
  Returns
@@ -801,7 +801,7 @@ class Edb(EdbInit):
801
801
  self.edbpath = os.path.join(working_dir, aedb_name)
802
802
  return self.open_edb()
803
803
 
804
- def export_to_ipc2581(self, ipc_path=None, units="MILLIMETER"):
804
+ def export_to_ipc2581(self, ipc_path=None, units="MILLIMETER") -> str:
805
805
  """Create an XML IPC2581 file from the active EDB.
806
806
 
807
807
  .. note::
@@ -847,7 +847,7 @@ class Edb(EdbInit):
847
847
  return False
848
848
 
849
849
  @property
850
- def configuration(self):
850
+ def configuration(self) -> Configuration:
851
851
  """Edb project configuration from a file.
852
852
 
853
853
  Returns
@@ -917,7 +917,7 @@ class Edb(EdbInit):
917
917
  raise "No valid design."
918
918
 
919
919
  @property
920
- def components(self):
920
+ def components(self) -> Components:
921
921
  """Edb Components methods and properties.
922
922
 
923
923
  Returns
@@ -935,7 +935,7 @@ class Edb(EdbInit):
935
935
  return self._components
936
936
 
937
937
  @property
938
- def stackup(self):
938
+ def stackup(self) -> Stackup:
939
939
  """Stackup manager.
940
940
 
941
941
  Returns
@@ -955,7 +955,7 @@ class Edb(EdbInit):
955
955
  return self._stackup
956
956
 
957
957
  @property
958
- def source_excitation(self):
958
+ def source_excitation(self) -> SourceExcitation:
959
959
  """Returns layout source excitations.
960
960
 
961
961
  Returns
@@ -966,7 +966,7 @@ class Edb(EdbInit):
966
966
  return self._source_excitation
967
967
 
968
968
  @property
969
- def materials(self):
969
+ def materials(self) -> Materials:
970
970
  """Material Database.
971
971
 
972
972
  Returns
@@ -986,7 +986,7 @@ class Edb(EdbInit):
986
986
  return self._materials
987
987
 
988
988
  @property
989
- def padstacks(self):
989
+ def padstacks(self) -> Padstacks:
990
990
  """Returns padstack object.
991
991
 
992
992
 
@@ -1009,7 +1009,7 @@ class Edb(EdbInit):
1009
1009
  return self._padstack
1010
1010
 
1011
1011
  @property
1012
- def siwave(self):
1012
+ def siwave(self) -> Siwave:
1013
1013
  """Returns SIWave object.
1014
1014
 
1015
1015
  Returns
@@ -1027,7 +1027,7 @@ class Edb(EdbInit):
1027
1027
  return self._siwave
1028
1028
 
1029
1029
  @property
1030
- def hfss(self):
1030
+ def hfss(self) -> Hfss:
1031
1031
  """Returns HFSS object.
1032
1032
 
1033
1033
  Returns
@@ -1047,7 +1047,7 @@ class Edb(EdbInit):
1047
1047
  return self._hfss
1048
1048
 
1049
1049
  @property
1050
- def nets(self):
1050
+ def nets(self) -> Nets:
1051
1051
  """Returns nets object.
1052
1052
 
1053
1053
  Returns
@@ -1067,7 +1067,7 @@ class Edb(EdbInit):
1067
1067
  return self._nets
1068
1068
 
1069
1069
  @property
1070
- def net_classes(self):
1070
+ def net_classes(self) -> NetClass:
1071
1071
  """Returns net classes object.
1072
1072
 
1073
1073
  Returns
@@ -1085,7 +1085,7 @@ class Edb(EdbInit):
1085
1085
  return {net.name: NetClass(self, net) for net in self.active_layout.net_classes}
1086
1086
 
1087
1087
  @property
1088
- def extended_nets(self):
1088
+ def extended_nets(self) -> ExtendedNets:
1089
1089
  """Returns extended nets.
1090
1090
 
1091
1091
  Returns
@@ -1104,7 +1104,7 @@ class Edb(EdbInit):
1104
1104
  return self._extended_nets
1105
1105
 
1106
1106
  @property
1107
- def differential_pairs(self):
1107
+ def differential_pairs(self) -> DifferentialPairs:
1108
1108
  """Returns differential pairs.
1109
1109
 
1110
1110
  Returns
@@ -1122,7 +1122,7 @@ class Edb(EdbInit):
1122
1122
  return self._differential_pairs
1123
1123
 
1124
1124
  @property
1125
- def modeler(self):
1125
+ def modeler(self) -> Modeler:
1126
1126
  """Returns primitives modeler object.
1127
1127
 
1128
1128
  Returns
@@ -1140,7 +1140,7 @@ class Edb(EdbInit):
1140
1140
  return self._modeler
1141
1141
 
1142
1142
  @property
1143
- def layout(self):
1143
+ def layout(self) -> Layout:
1144
1144
  """Returns Layout object.
1145
1145
 
1146
1146
  Returns
@@ -1150,7 +1150,7 @@ class Edb(EdbInit):
1150
1150
  return Layout(self)
1151
1151
 
1152
1152
  @property
1153
- def active_layout(self):
1153
+ def active_layout(self) -> Layout:
1154
1154
  """Active layout.
1155
1155
 
1156
1156
  Returns
@@ -1255,7 +1255,7 @@ class Edb(EdbInit):
1255
1255
  return PointData(x, y)
1256
1256
 
1257
1257
  @staticmethod
1258
- def _is_file_existing_and_released(filename):
1258
+ def _is_file_existing_and_released(filename) -> bool:
1259
1259
  if os.path.exists(filename):
1260
1260
  try:
1261
1261
  os.rename(filename, filename + "_")
@@ -1267,13 +1267,13 @@ class Edb(EdbInit):
1267
1267
  return False
1268
1268
 
1269
1269
  @staticmethod
1270
- def _is_file_existing(filename):
1270
+ def _is_file_existing(filename) -> bool:
1271
1271
  if os.path.exists(filename):
1272
1272
  return True
1273
1273
  else:
1274
1274
  return False
1275
1275
 
1276
- def _wait_for_file_release(self, timeout=30, file_to_release=None):
1276
+ def _wait_for_file_release(self, timeout=30, file_to_release=None) -> bool:
1277
1277
  if not file_to_release:
1278
1278
  file_to_release = os.path.join(self.edbpath)
1279
1279
  tstart = time.time()
@@ -1303,7 +1303,7 @@ class Edb(EdbInit):
1303
1303
  times = 0
1304
1304
  time.sleep(0.250)
1305
1305
 
1306
- def close_edb(self):
1306
+ def close_edb(self) -> bool:
1307
1307
  """Close EDB and cleanup variables.
1308
1308
 
1309
1309
  Returns
@@ -1318,7 +1318,7 @@ class Edb(EdbInit):
1318
1318
  self._clean_variables()
1319
1319
  return True
1320
1320
 
1321
- def save_edb(self):
1321
+ def save_edb(self) -> bool:
1322
1322
  """Save the EDB file.
1323
1323
 
1324
1324
  Returns
@@ -1332,7 +1332,7 @@ class Edb(EdbInit):
1332
1332
  self.logger.info("EDB file save time: {0:.2f}ms".format(elapsed_time * 1000.0))
1333
1333
  return True
1334
1334
 
1335
- def save_edb_as(self, fname):
1335
+ def save_edb_as(self, fname) -> bool:
1336
1336
  """Save the EDB file as another file.
1337
1337
 
1338
1338
  Parameters
@@ -2306,7 +2306,7 @@ class Edb(EdbInit):
2306
2306
  self.logger.reset_timer()
2307
2307
  return [[pt.x.value, pt.y.value] for pt in _poly.without_arcs().points]
2308
2308
 
2309
- def get_conformal_polygon_from_netlist(self, netlist=None):
2309
+ def get_conformal_polygon_from_netlist(self, netlist=None) -> Union[bool, Polygon]:
2310
2310
  """Returns conformal polygon data based on a netlist.
2311
2311
 
2312
2312
  Parameters
@@ -2337,7 +2337,7 @@ class Edb(EdbInit):
2337
2337
  else:
2338
2338
  return False
2339
2339
 
2340
- def number_with_units(self, value, units=None):
2340
+ def number_with_units(self, value, units=None) -> str:
2341
2341
  """Convert a number to a string with units. If value is a string, it's returned as is.
2342
2342
 
2343
2343
  Parameters
@@ -2821,39 +2821,44 @@ class Edb(EdbInit):
2821
2821
  self.logger.info(f"Variable {variable_name} doesn't exists.")
2822
2822
  return False
2823
2823
 
2824
- def add_project_variable(self, variable_name, variable_value):
2824
+ def add_project_variable(self, variable_name, variable_value, description=None) -> bool:
2825
2825
  """Add a variable to database. The variable will have the prefix `$`.
2826
2826
 
2827
2827
  Parameters
2828
- ----------
2829
- variable_name : str
2830
- Name of the variable. Name can be provided without ``$`` prefix.
2831
- variable_value : str, float
2832
- Value of the variable with units.
2828
+ ----------
2829
+ variable_name : str
2830
+ Name of the variable. Name can be provided without ``$`` prefix.
2831
+ variable_value : str, float
2832
+ Value of the variable with units.
2833
+ description : str, optional.
2834
+ Add variable description.
2833
2835
 
2834
- Returns
2835
- -------
2836
- bool
2836
+ Returns
2837
+ -------
2838
+ bool
2837
2839
 
2838
- Examples
2839
- --------
2840
+ Examples
2841
+ --------
2840
2842
 
2841
- >>> from pyedb import Edb
2842
- >>> edb_app = Edb()
2843
- >>> boolean_1, ant_length = edb_app.add_project_variable("my_local_variable", "1cm")
2844
- >>> print(edb_app["$my_local_variable"]) #using getitem
2845
- >>> edb_app["$my_local_variable"] = "1cm" #using setitem
2843
+ >>> from pyedb import Edb
2844
+ >>> edb_app = Edb()
2845
+ >>> boolean_1, ant_length = edb_app.add_project_variable("my_local_variable", "1cm")
2846
+ >>> print(edb_app["$my_local_variable"]) #using getitem
2847
+ >>> edb_app["$my_local_variable"] = "1cm" #using setitem
2846
2848
 
2847
2849
  """
2848
2850
  if not variable_name.startswith("$"):
2849
2851
  variable_name = f"${variable_name}"
2850
2852
  if not self.variable_exists(variable_name):
2851
- return self.active_db.add_variable(variable_name, variable_value)
2853
+ var = self.active_db.add_variable(variable_name, variable_value)
2854
+ if description:
2855
+ self.active_db.set_variable_desc(name=variable_name, desc=description)
2856
+ return var
2852
2857
  else:
2853
2858
  self.logger.error(f"Variable {variable_name} already exists.")
2854
2859
  return False
2855
2860
 
2856
- def add_design_variable(self, variable_name, variable_value, is_parameter=False):
2861
+ def add_design_variable(self, variable_name, variable_value, is_parameter=False, description=None) -> bool:
2857
2862
  """Add a variable to edb. The variable can be a design one or a project variable (using ``$`` prefix).
2858
2863
 
2859
2864
  Parameters
@@ -2866,6 +2871,8 @@ class Edb(EdbInit):
2866
2871
  is_parameter : bool, optional
2867
2872
  Whether to add the variable as a local variable. The default is ``False``.
2868
2873
  When ``True``, the variable is added as a parameter default.
2874
+ description : str, optional
2875
+ Add variable description.
2869
2876
 
2870
2877
  Returns
2871
2878
  -------
@@ -2887,7 +2894,10 @@ class Edb(EdbInit):
2887
2894
  if variable_name.startswith("$"):
2888
2895
  variable_name = variable_name[1:]
2889
2896
  if not self.variable_exists(variable_name):
2890
- return self.active_cell.add_variable(variable_name, variable_value)
2897
+ var = self.active_cell.add_variable(variable_name, variable_value)
2898
+ if description:
2899
+ self.active_cell.set_variable_desc(name=variable_name, desc=description)
2900
+ return var
2891
2901
  else:
2892
2902
  self.logger.error(f"Variable {variable_name} already exists.")
2893
2903
  return False
@@ -2921,7 +2931,7 @@ class Edb(EdbInit):
2921
2931
  elif variable_name in self.active_cell.get_all_variable_names():
2922
2932
  self.active_cell.set_variable_value(variable_name, GrpcValue(variable_value))
2923
2933
 
2924
- def get_bounding_box(self):
2934
+ def get_bounding_box(self) -> list[list[float, float], list[float, float]]:
2925
2935
  """Get the layout bounding box.
2926
2936
 
2927
2937
  Returns
@@ -3030,7 +3040,9 @@ class Edb(EdbInit):
3030
3040
  return True if len(iDintersection) > 0 else False
3031
3041
 
3032
3042
  @property
3033
- def setups(self):
3043
+ def setups(
3044
+ self,
3045
+ ) -> Union[HfssSimulationSetup, SiwaveSimulationSetup, SIWaveDCIRSimulationSetup, RaptorXSimulationSetup]:
3034
3046
  """Get the dictionary of all EDB HFSS and SIwave setups.
3035
3047
 
3036
3048
  Returns
@@ -3056,7 +3068,7 @@ class Edb(EdbInit):
3056
3068
  return self._setups
3057
3069
 
3058
3070
  @property
3059
- def hfss_setups(self):
3071
+ def hfss_setups(self) -> dict[str, HfssSimulationSetup]:
3060
3072
  """Active HFSS setup in EDB.
3061
3073
 
3062
3074
  Returns
@@ -3072,7 +3084,7 @@ class Edb(EdbInit):
3072
3084
  return setups
3073
3085
 
3074
3086
  @property
3075
- def siwave_dc_setups(self):
3087
+ def siwave_dc_setups(self) -> dict[str, SIWaveDCIRSimulationSetup]:
3076
3088
  """Active Siwave DC IR Setups.
3077
3089
 
3078
3090
  Returns
@@ -3084,7 +3096,7 @@ class Edb(EdbInit):
3084
3096
  return {name: i for name, i in self.setups.items() if isinstance(i, SIWaveDCIRSimulationSetup)}
3085
3097
 
3086
3098
  @property
3087
- def siwave_ac_setups(self):
3099
+ def siwave_ac_setups(self) -> dict[str, SiwaveSimulationSetup]:
3088
3100
  """Active Siwave SYZ setups.
3089
3101
 
3090
3102
  Returns
@@ -3094,7 +3106,9 @@ class Edb(EdbInit):
3094
3106
  """
3095
3107
  return {name: i for name, i in self.setups.items() if isinstance(i, SiwaveSimulationSetup)}
3096
3108
 
3097
- def create_hfss_setup(self, name=None, start_frequency="0GHz", stop_frequency="20GHz", step_frequency="10MHz"):
3109
+ def create_hfss_setup(
3110
+ self, name=None, start_frequency="0GHz", stop_frequency="20GHz", step_frequency="10MHz"
3111
+ ) -> HfssSimulationSetup:
3098
3112
  """Create an HFSS simulation setup from a template.
3099
3113
 
3100
3114
  . deprecated:: pyedb 0.30.0
@@ -3122,7 +3136,7 @@ class Edb(EdbInit):
3122
3136
  step_freq=step_frequency,
3123
3137
  )
3124
3138
 
3125
- def create_raptorx_setup(self, name=None):
3139
+ def create_raptorx_setup(self, name=None) -> RaptorXSimulationSetup:
3126
3140
  """Create an RaptorX simulation setup from a template.
3127
3141
 
3128
3142
  Parameters
@@ -3176,7 +3190,7 @@ class Edb(EdbInit):
3176
3190
  # TODO check HFSS-PI with Grpc. seems to defined at terminal level not setup.
3177
3191
  pass
3178
3192
 
3179
- def create_siwave_syz_setup(self, name=None, **kwargs):
3193
+ def create_siwave_syz_setup(self, name=None, **kwargs) -> SiwaveSimulationSetup:
3180
3194
  """Create a setup from a template.
3181
3195
 
3182
3196
  Parameters
@@ -3213,7 +3227,7 @@ class Edb(EdbInit):
3213
3227
  setattr(setup, k, v)
3214
3228
  return self.setups[name]
3215
3229
 
3216
- def create_siwave_dc_setup(self, name=None, **kwargs):
3230
+ def create_siwave_dc_setup(self, name=None, **kwargs) -> GrpcSIWaveDCIRSimulationSetup:
3217
3231
  """Create a setup from a template.
3218
3232
 
3219
3233
  Parameters
@@ -3459,6 +3473,9 @@ class Edb(EdbInit):
3459
3473
  def create_port(self, terminal, ref_terminal=None, is_circuit_port=False, name=None):
3460
3474
  """Create a port.
3461
3475
 
3476
+ ..deprecated:: 0.51.0
3477
+ Use: func:`create_port` has been move to source_excitation.create_port.
3478
+
3462
3479
  Parameters
3463
3480
  ----------
3464
3481
  terminal : class:`pyedb.dotnet.database.edb_data.terminals.EdgeTerminal`,
@@ -3481,22 +3498,16 @@ class Edb(EdbInit):
3481
3498
  list: [:class:`GapPort <pyedb.grpc.database.ports.ports.GapPort`>,
3482
3499
  :class:`WavePort <pyedb.grpc.database.ports.ports.WavePort>`].
3483
3500
  """
3484
- from ansys.edb.core.terminal.terminal import BoundaryType as GrpcBoundaryType
3485
-
3486
- if terminal.boundary_type == "port":
3487
- terminal.boundary_type = GrpcBoundaryType.PORT
3488
- terminal.is_circuit_port = is_circuit_port
3489
- if ref_terminal:
3490
- if ref_terminal.boundary_type == "port":
3491
- ref_terminal.boundary_type = GrpcBoundaryType.PORT
3492
- terminal.reference_terminal = ref_terminal
3493
- if name:
3494
- terminal.name = name
3495
- return self.ports[terminal.name]
3501
+
3502
+ warnings.warn("Use create_port from edb.source_excitation.create_port", DeprecationWarning)
3503
+ return self.source_excitation.create_port(terminal, ref_terminal, is_circuit_port, name)
3496
3504
 
3497
3505
  def create_voltage_probe(self, terminal, ref_terminal):
3498
3506
  """Create a voltage probe.
3499
3507
 
3508
+ ..deprecated:: 0.50.0
3509
+ Use: func:`create_voltage_probe` located in edb.source_excitation.create_voltage_probe instead.
3510
+
3500
3511
  Parameters
3501
3512
  ----------
3502
3513
  terminal : :class:`EdgeTerminal <pyedb.grpc.database.terminals.EdgeTerminal>`,
@@ -3514,18 +3525,15 @@ class Edb(EdbInit):
3514
3525
  -------
3515
3526
  :class:`Terminal <pyedb.dotnet.database.edb_data.terminals.Terminal>`
3516
3527
  """
3517
- term = Terminal(self, terminal)
3518
- term.boundary_type = "voltage_probe"
3519
-
3520
- ref_term = Terminal(self, ref_terminal)
3521
- ref_term.boundary_type = "voltage_probe"
3522
-
3523
- term.ref_terminal = ref_terminal
3524
- return term
3528
+ warnings.warn("Use create_voltage_probe located in edb.source_excitation instead", DeprecationWarning)
3529
+ return self.source_excitation.create_voltage_probe(terminal, ref_terminal)
3525
3530
 
3526
3531
  def create_voltage_source(self, terminal, ref_terminal):
3527
3532
  """Create a voltage source.
3528
3533
 
3534
+ ..deprecated:: 0.50.0
3535
+ Use: func:`create_voltage_source` located in edb.source_excitation.create_voltage_source instead.
3536
+
3529
3537
  Parameters
3530
3538
  ----------
3531
3539
  terminal : :class:`EdgeTerminal <pyedb.grpc.database.terminals.EdgeTerminal>`,
@@ -3543,18 +3551,18 @@ class Edb(EdbInit):
3543
3551
  -------
3544
3552
  class:`ExcitationSources <legacy.database.edb_data.ports.ExcitationSources>`
3545
3553
  """
3546
- term = Terminal(self, terminal)
3547
- term.boundary_type = "voltage_source"
3548
-
3549
- ref_term = Terminal(self, ref_terminal)
3550
- ref_term.boundary_type = "voltage_source"
3551
-
3552
- term.ref_terminal = ref_terminal
3553
- return term
3554
+ warnings.warn(
3555
+ "use create_voltage_source located in edb.source_excitation.create_voltage_source instead",
3556
+ DeprecationWarning,
3557
+ )
3558
+ return self.source_excitation.create_voltage_source(terminal, ref_terminal)
3554
3559
 
3555
3560
  def create_current_source(self, terminal, ref_terminal):
3556
3561
  """Create a current source.
3557
3562
 
3563
+ ..deprecated:: 0.50.0
3564
+ Use: func:`create_current_source` located in edb.source_excitation.create_current_source instead.
3565
+
3558
3566
  Parameters
3559
3567
  ----------
3560
3568
  terminal : :class:`EdgeTerminal <pyedb.grpc.database.terminals.EdgeTerminal>`,
@@ -3572,17 +3580,17 @@ class Edb(EdbInit):
3572
3580
  -------
3573
3581
  :class:`ExcitationSources <legacy.database.edb_data.ports.ExcitationSources>`
3574
3582
  """
3575
- term = Terminal(self, terminal)
3576
- term.boundary_type = "current_source"
3577
-
3578
- ref_term = Terminal(self, ref_terminal)
3579
- ref_term.boundary_type = "current_source"
3580
-
3581
- term.ref_terminal = ref_terminal
3582
- return term
3583
+ warnings.warn(
3584
+ "use create_current_source located in edb.source_excitation.create_current_source instead",
3585
+ DeprecationWarning,
3586
+ )
3587
+ return self.source_excitation.create_current_source(terminal, ref_terminal)
3583
3588
 
3584
3589
  def get_point_terminal(self, name, net_name, location, layer):
3585
- """Place a voltage probe between two points.
3590
+ """Place terminal between two points.
3591
+
3592
+ ..deprecated:: 0.50.0
3593
+ Use: func:`get_point_terminal` located in edb.source_excitation.get_point_terminal instead.
3586
3594
 
3587
3595
  Parameters
3588
3596
  ----------
@@ -3599,9 +3607,11 @@ class Edb(EdbInit):
3599
3607
  -------
3600
3608
  :class:`PointTerminal <pyedb.grpc.database.terminal.point_terminal.PointTerminal>`
3601
3609
  """
3602
- from pyedb.grpc.database.terminal.point_terminal import PointTerminal
3603
3610
 
3604
- return PointTerminal.create(layout=self.active_layout, name=name, net=net_name, layer=layer, point=location)
3611
+ warnings.warn(
3612
+ "use get_point_terminal located in edb.source_excitation.get_point_terminal instead", DeprecationWarning
3613
+ )
3614
+ return self.source_excitation.get_point_terminal(name, net_name, location, layer)
3605
3615
 
3606
3616
  def auto_parametrize_design(
3607
3617
  self,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: pyedb
3
- Version: 0.48.0
3
+ Version: 0.50.0
4
4
  Summary: Higher-Level Pythonic Ansys Electronics Data Base
5
5
  Author-email: "ANSYS, Inc." <pyansys.core@ansys.com>
6
6
  Maintainer-email: PyEDB developers <simon.vandenbrouck@ansys.com>