pyedb 0.49.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.
- pyedb/__init__.py +1 -1
- pyedb/configuration/cfg_modeler.py +42 -11
- pyedb/configuration/cfg_ports_sources.py +9 -1
- pyedb/dotnet/database/cell/hierarchy/component.py +3 -3
- pyedb/dotnet/database/components.py +3 -3
- pyedb/dotnet/database/edb_data/primitives_data.py +3 -3
- pyedb/dotnet/database/edb_data/variables.py +3 -3
- pyedb/dotnet/database/materials.py +16 -16
- pyedb/dotnet/database/modeler.py +38 -4
- pyedb/dotnet/database/sim_setup_data/data/settings.py +28 -0
- pyedb/dotnet/database/stackup.py +1 -0
- pyedb/dotnet/database/utilities/hfss_simulation_setup.py +5 -6
- pyedb/dotnet/edb.py +22 -20
- pyedb/extensions/__init__.py +0 -0
- pyedb/extensions/via_design_backend.py +681 -0
- pyedb/grpc/database/components.py +57 -48
- pyedb/grpc/database/definition/materials.py +33 -33
- pyedb/grpc/database/definitions.py +6 -4
- pyedb/grpc/database/hfss.py +2 -2
- pyedb/grpc/database/hierarchy/component.py +3 -2
- pyedb/grpc/database/layers/stackup_layer.py +119 -22
- pyedb/grpc/database/layout_validation.py +5 -5
- pyedb/grpc/database/primitive/path.py +1 -1
- pyedb/grpc/database/source_excitations.py +156 -0
- pyedb/grpc/database/stackup.py +50 -24
- pyedb/grpc/edb.py +115 -105
- {pyedb-0.49.0.dist-info → pyedb-0.50.0.dist-info}/METADATA +1 -1
- {pyedb-0.49.0.dist-info → pyedb-0.50.0.dist-info}/RECORD +30 -29
- pyedb/extensions/pre_layout_design_toolkit/via_design.py +0 -1151
- {pyedb-0.49.0.dist-info → pyedb-0.50.0.dist-info}/LICENSE +0 -0
- {pyedb-0.49.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 :
|
|
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
|
|
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
|
|
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
|
-
|
|
2830
|
-
|
|
2831
|
-
|
|
2832
|
-
|
|
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
|
-
|
|
2835
|
-
|
|
2836
|
-
|
|
2836
|
+
Returns
|
|
2837
|
+
-------
|
|
2838
|
+
bool
|
|
2837
2839
|
|
|
2838
|
-
|
|
2839
|
-
|
|
2840
|
+
Examples
|
|
2841
|
+
--------
|
|
2840
2842
|
|
|
2841
|
-
|
|
2842
|
-
|
|
2843
|
-
|
|
2844
|
-
|
|
2845
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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(
|
|
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(
|
|
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
|
-
|
|
3485
|
-
|
|
3486
|
-
|
|
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
|
-
|
|
3518
|
-
|
|
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
|
-
|
|
3547
|
-
|
|
3548
|
-
|
|
3549
|
-
|
|
3550
|
-
|
|
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
|
-
|
|
3576
|
-
|
|
3577
|
-
|
|
3578
|
-
|
|
3579
|
-
|
|
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
|
|
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
|
-
|
|
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,
|