pyedb 0.15.dev0__py3-none-any.whl → 0.17.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 (42) hide show
  1. pyedb/__init__.py +1 -1
  2. pyedb/configuration/cfg_common.py +1 -3
  3. pyedb/configuration/cfg_components.py +49 -5
  4. pyedb/configuration/cfg_data.py +3 -6
  5. pyedb/configuration/cfg_package_definition.py +3 -5
  6. pyedb/configuration/cfg_setup.py +214 -176
  7. pyedb/configuration/cfg_stackup.py +4 -4
  8. pyedb/configuration/configuration.py +9 -5
  9. pyedb/dotnet/edb.py +64 -44
  10. pyedb/dotnet/edb_core/cell/__init__.py +0 -0
  11. pyedb/dotnet/edb_core/cell/hierarchy/component.py +12 -17
  12. pyedb/dotnet/edb_core/cell/hierarchy/hierarchy_obj.py +50 -0
  13. pyedb/dotnet/edb_core/cell/layout.py +0 -6
  14. pyedb/dotnet/edb_core/cell/voltage_regulator.py +143 -0
  15. pyedb/dotnet/edb_core/components.py +2 -2
  16. pyedb/dotnet/edb_core/dotnet/primitive.py +129 -3
  17. pyedb/dotnet/edb_core/edb_data/hfss_pi_simulation_setup_data.py +0 -460
  18. pyedb/dotnet/edb_core/edb_data/primitives_data.py +38 -38
  19. pyedb/dotnet/edb_core/edb_data/raptor_x_simulation_setup_data.py +1 -1
  20. pyedb/dotnet/edb_core/layout.py +25 -1
  21. pyedb/dotnet/edb_core/layout_validation.py +26 -0
  22. pyedb/dotnet/edb_core/nets.py +1 -1
  23. pyedb/dotnet/edb_core/sim_setup_data/data/mesh_operation.py +63 -49
  24. pyedb/dotnet/edb_core/sim_setup_data/data/settings.py +1 -1
  25. pyedb/dotnet/edb_core/sim_setup_data/data/sim_setup_info.py +81 -0
  26. pyedb/dotnet/edb_core/sim_setup_data/data/simulation_settings.py +424 -0
  27. pyedb/dotnet/edb_core/sim_setup_data/data/sweep_data.py +131 -96
  28. pyedb/dotnet/edb_core/siwave.py +63 -0
  29. pyedb/dotnet/edb_core/utilities/hfss_simulation_setup.py +469 -0
  30. pyedb/dotnet/edb_core/utilities/simulation_setup.py +112 -773
  31. pyedb/dotnet/edb_core/utilities/siwave_simulation_setup.py +369 -0
  32. pyedb/misc/siw_feature_config/xtalk_scan/fd_xtalk_scan_config.py +91 -0
  33. pyedb/misc/siw_feature_config/xtalk_scan/impedance_scan_config.py +70 -0
  34. pyedb/misc/siw_feature_config/xtalk_scan/net.py +69 -0
  35. pyedb/misc/siw_feature_config/xtalk_scan/pins.py +60 -0
  36. pyedb/misc/siw_feature_config/xtalk_scan/scan_config.py +88 -0
  37. pyedb/misc/siw_feature_config/xtalk_scan/td_xtalk_config.py +104 -0
  38. pyedb/workflow.py +32 -0
  39. {pyedb-0.15.dev0.dist-info → pyedb-0.17.0.dist-info}/METADATA +1 -1
  40. {pyedb-0.15.dev0.dist-info → pyedb-0.17.0.dist-info}/RECORD +42 -28
  41. {pyedb-0.15.dev0.dist-info → pyedb-0.17.0.dist-info}/LICENSE +0 -0
  42. {pyedb-0.15.dev0.dist-info → pyedb-0.17.0.dist-info}/WHEEL +0 -0
pyedb/dotnet/edb.py CHANGED
@@ -48,6 +48,7 @@ from pyedb.dotnet.edb_core.cell.terminal.padstack_instance_terminal import (
48
48
  from pyedb.dotnet.edb_core.cell.terminal.pingroup_terminal import PinGroupTerminal
49
49
  from pyedb.dotnet.edb_core.cell.terminal.point_terminal import PointTerminal
50
50
  from pyedb.dotnet.edb_core.cell.terminal.terminal import Terminal
51
+ from pyedb.dotnet.edb_core.cell.voltage_regulator import VoltageRegulator
51
52
  from pyedb.dotnet.edb_core.components import Components
52
53
  from pyedb.dotnet.edb_core.dotnet.database import Database
53
54
  from pyedb.dotnet.edb_core.dotnet.layout import LayoutDotNet
@@ -57,9 +58,6 @@ from pyedb.dotnet.edb_core.edb_data.control_file import (
57
58
  )
58
59
  from pyedb.dotnet.edb_core.edb_data.design_options import EdbDesignOptions
59
60
  from pyedb.dotnet.edb_core.edb_data.edbvalue import EdbValue
60
- from pyedb.dotnet.edb_core.edb_data.hfss_pi_simulation_setup_data import (
61
- HFSSPISimulationSetup,
62
- )
63
61
  from pyedb.dotnet.edb_core.edb_data.ports import (
64
62
  BundleWavePort,
65
63
  CircuitPort,
@@ -93,10 +91,13 @@ from pyedb.dotnet.edb_core.nets import EdbNets
93
91
  from pyedb.dotnet.edb_core.padstack import EdbPadstacks
94
92
  from pyedb.dotnet.edb_core.siwave import EdbSiwave
95
93
  from pyedb.dotnet.edb_core.stackup import Stackup
96
- from pyedb.dotnet.edb_core.utilities.simulation_setup import (
94
+ from pyedb.dotnet.edb_core.utilities.hfss_simulation_setup import (
95
+ HFSSPISimulationSetup,
97
96
  HfssSimulationSetup,
97
+ )
98
+ from pyedb.dotnet.edb_core.utilities.siwave_simulation_setup import (
98
99
  SiwaveDCSimulationSetup,
99
- SiwaveSYZSimulationSetup,
100
+ SiwaveSimulationSetup,
100
101
  )
101
102
  from pyedb.generic.constants import AEDT_UNITS, SolverType
102
103
  from pyedb.generic.general_methods import (
@@ -111,6 +112,7 @@ from pyedb.generic.process import SiwaveSolve
111
112
  from pyedb.generic.settings import settings
112
113
  from pyedb.ipc2581.ipc2581 import Ipc2581
113
114
  from pyedb.modeler.geometry_operators import GeometryOperators
115
+ from pyedb.workflow import Workflow
114
116
 
115
117
  if is_linux and is_ironpython:
116
118
  import subprocessdotnet as subprocess
@@ -156,7 +158,7 @@ class Edb(Database):
156
158
  --------
157
159
  Create an ``Edb`` object and a new EDB cell.
158
160
 
159
- >>> from pyedb.dotnet.edb import Edb
161
+ >>> from pyedb import Edb
160
162
  >>> app = Edb()
161
163
 
162
164
  Add a new variable named "s1" to the ``Edb`` instance.
@@ -510,6 +512,15 @@ class Edb(Database):
510
512
  terms = [term for term in self.layout.terminals if int(term.GetBoundaryType()) in [3, 4, 7]]
511
513
  return {ter.GetName(): ExcitationSources(self, ter) for ter in terms}
512
514
 
515
+ @property
516
+ def voltage_regulator_modules(self):
517
+ """Get all voltage regulator modules"""
518
+ vrms = [VoltageRegulator(self, edb_object) for edb_object in list(self.active_layout.VoltageRegulators)]
519
+ _vrms = {}
520
+ for vrm in vrms:
521
+ _vrms[vrm.name] = vrm
522
+ return _vrms
523
+
513
524
  @property
514
525
  def probes(self):
515
526
  """Get all layout probes."""
@@ -791,7 +802,7 @@ class Edb(Database):
791
802
 
792
803
  Examples
793
804
  --------
794
- >>> from pyedb.dotnet.edb import Edb
805
+ >>> from pyedb import Edb
795
806
  >>> edbapp = Edb("myproject.aedb")
796
807
  >>> comp = edbapp.components.get_component_by_name("J1")
797
808
  """
@@ -808,7 +819,7 @@ class Edb(Database):
808
819
 
809
820
  Examples
810
821
  --------
811
- >>> from pyedb.dotnet.edb import Edb
822
+ >>> from pyedb import Edb
812
823
  >>> edbapp = Edb("myproject.aedb")
813
824
  >>> comp = edbapp.components.get_component_by_name("J1")
814
825
  """
@@ -851,7 +862,7 @@ class Edb(Database):
851
862
 
852
863
  Examples
853
864
  --------
854
- >>> from pyedb.dotnet.edb import Edb
865
+ >>> from pyedb import Edb
855
866
  >>> edbapp = Edb("myproject.aedb")
856
867
  >>> edbapp.stackup.layers["TOP"].thickness = 4e-5
857
868
  >>> edbapp.stackup.layers["TOP"].thickness == 4e-05
@@ -869,7 +880,7 @@ class Edb(Database):
869
880
 
870
881
  Examples
871
882
  --------
872
- >>> from pyedb.dotnet.edb import Edb
883
+ >>> from pyedb import Edb
873
884
  >>> edbapp = Edb()
874
885
  >>> edbapp.materials.add_material("air", permittivity=1.0)
875
886
  >>> edbapp.materials.add_debye_material("debye_mat", 5, 3, 0.02, 0.05, 1e5, 1e9)
@@ -893,7 +904,7 @@ class Edb(Database):
893
904
 
894
905
  Examples
895
906
  --------
896
- >>> from pyedb.dotnet.edb import Edb
907
+ >>> from pyedb import Edb
897
908
  >>> edbapp = Edb("myproject.aedb")
898
909
  >>> p = edbapp.padstacks.create(padstackname="myVia_bullet", antipad_shape="Bullet")
899
910
  >>> edbapp.padstacks.get_pad_parameters(
@@ -915,7 +926,7 @@ class Edb(Database):
915
926
 
916
927
  Examples
917
928
  --------
918
- >>> from pyedb.dotnet.edb import Edb
929
+ >>> from pyedb import Edb
919
930
  >>> edbapp = Edb("myproject.aedb")
920
931
  >>> p = edbapp.padstacks.create(padstackname="myVia_bullet", antipad_shape="Bullet")
921
932
  >>> edbapp.padstacks.get_pad_parameters(
@@ -940,7 +951,7 @@ class Edb(Database):
940
951
 
941
952
  Examples
942
953
  --------
943
- >>> from pyedb.dotnet.edb import Edb
954
+ >>> from pyedb import Edb
944
955
  >>> edbapp = Edb("myproject.aedb")
945
956
  >>> p2 = edbapp.siwave.create_circuit_port_on_net("U2A5", "V3P3_S0", "U2A5", "GND", 50, "test")
946
957
  """
@@ -957,7 +968,7 @@ class Edb(Database):
957
968
 
958
969
  Examples
959
970
  --------
960
- >>> from pyedb.dotnet.edb import Edb
971
+ >>> from pyedb import Edb
961
972
  >>> edbapp = Edb("myproject.aedb")
962
973
  >>> p2 = edbapp.siwave.create_circuit_port_on_net("U2A5", "V3P3_S0", "U2A5", "GND", 50, "test")
963
974
  """
@@ -978,7 +989,7 @@ class Edb(Database):
978
989
 
979
990
  Examples
980
991
  --------
981
- >>> from pyedb.dotnet.edb import Edb
992
+ >>> from pyedb import Edb
982
993
  >>> edbapp = Edb("myproject.aedb")
983
994
  >>> edbapp.hfss.configure_hfss_analysis_setup(sim_config)
984
995
  """
@@ -999,7 +1010,7 @@ class Edb(Database):
999
1010
 
1000
1011
  Examples
1001
1012
  --------
1002
- >>> from pyedb.dotnet.edb import Edb
1013
+ >>> from pyedb import Edb
1003
1014
  >>> edbapp = Edb("myproject.aedb")
1004
1015
  >>> sim_config = edbapp.new_simulation_configuration()
1005
1016
  >>> sim_config.mesh_freq = "10Ghz"
@@ -1022,7 +1033,7 @@ class Edb(Database):
1022
1033
 
1023
1034
  Examples
1024
1035
  --------
1025
- >>> from pyedb.dotnet.edb import Edb
1036
+ >>> from pyedb import Edb
1026
1037
  >>> edbapp = Edb("myproject.aedb")
1027
1038
  >>> edbapp.nets.find_or_create_net("GND")
1028
1039
  >>> edbapp.nets.find_and_fix_disjoint_nets("GND", keep_only_main_net=True)
@@ -1040,7 +1051,7 @@ class Edb(Database):
1040
1051
 
1041
1052
  Examples
1042
1053
  --------
1043
- >>> from pyedb.dotnet.edb import Edb
1054
+ >>> from pyedb import Edb
1044
1055
  >>> edbapp = Edb"myproject.aedb")
1045
1056
  >>> edbapp.nets.find_or_create_net("GND")
1046
1057
  >>> edbapp.nets.find_and_fix_disjoint_nets("GND", keep_only_main_net=True)
@@ -1061,7 +1072,7 @@ class Edb(Database):
1061
1072
 
1062
1073
  Examples
1063
1074
  --------
1064
- >>> from pyedb.dotnet.edb import Edb
1075
+ >>> from pyedb import Edb
1065
1076
  >>> edbapp = Edb("myproject.aedb")
1066
1077
  >>> edbapp.net_classes
1067
1078
  """
@@ -1079,7 +1090,7 @@ class Edb(Database):
1079
1090
 
1080
1091
  Examples
1081
1092
  --------
1082
- >>> from pyedb.dotnet.edb import Edb
1093
+ >>> from pyedb import Edb
1083
1094
  >>> edbapp = Edb("myproject.aedb")
1084
1095
  >>> edbapp.extended_nets
1085
1096
  """
@@ -1097,7 +1108,7 @@ class Edb(Database):
1097
1108
 
1098
1109
  Examples
1099
1110
  --------
1100
- >>> from pyedb.dotnet.edb import Edb
1111
+ >>> from pyedb import Edb
1101
1112
  >>> edbapp = Edb("myproject.aedb")
1102
1113
  >>> edbapp.differential_pairs
1103
1114
  """
@@ -1119,7 +1130,7 @@ class Edb(Database):
1119
1130
 
1120
1131
  Examples
1121
1132
  --------
1122
- >>> from pyedb.dotnet.edb import Edb
1133
+ >>> from pyedb import Edb
1123
1134
  >>> edbapp = Edb("myproject.aedb")
1124
1135
  >>> top_prims = edbapp.modeler.primitives_by_layer["TOP"]
1125
1136
  """
@@ -1136,7 +1147,7 @@ class Edb(Database):
1136
1147
 
1137
1148
  Examples
1138
1149
  --------
1139
- >>> from pyedb.dotnet.edb import Edb
1150
+ >>> from pyedb import Edb
1140
1151
  >>> edbapp = Edb("myproject.aedb")
1141
1152
  >>> top_prims = edbapp.modeler.primitives_by_layer["TOP"]
1142
1153
  """
@@ -1233,7 +1244,7 @@ class Edb(Database):
1233
1244
 
1234
1245
  Examples
1235
1246
  --------
1236
- >>> from pyedb.dotnet.edb import Edb
1247
+ >>> from pyedb import Edb
1237
1248
  >>> edbapp = Edb("myproject.aedb")
1238
1249
  >>> pin_net_name = edbapp.pins[424968329].netname
1239
1250
  """
@@ -1835,7 +1846,7 @@ class Edb(Database):
1835
1846
 
1836
1847
  Examples
1837
1848
  --------
1838
- >>> from pyedb.dotnet.edb import Edb
1849
+ >>> from pyedb import Edb
1839
1850
  >>> edb = Edb(r'C:\\test.aedb', edbversion="2022.2")
1840
1851
  >>> edb.logger.info_timer("Edb Opening")
1841
1852
  >>> edb.logger.reset_timer()
@@ -2451,7 +2462,7 @@ class Edb(Database):
2451
2462
 
2452
2463
  Examples
2453
2464
  --------
2454
- >>> from pyedb.dotnet.edb import Edb
2465
+ >>> from pyedb import Edb
2455
2466
  >>> edb = Edb(r'C:\\test.aedb', edbversion="2022.2")
2456
2467
  >>> edb.logger.info_timer("Edb Opening")
2457
2468
  >>> edb.logger.reset_timer()
@@ -2884,7 +2895,7 @@ class Edb(Database):
2884
2895
  Examples
2885
2896
  --------
2886
2897
 
2887
- >>> from pyedb.dotnet.edb import Edb
2898
+ >>> from pyedb import Edb
2888
2899
  >>> edb = Edb(edbpath=r"C:\temp\myproject.aedb", edbversion="2023.2")
2889
2900
 
2890
2901
  >>> options_config = {'UNITE_NETS' : 1, 'LAUNCH_Q3D' : 0}
@@ -2927,7 +2938,7 @@ class Edb(Database):
2927
2938
  Examples
2928
2939
  --------
2929
2940
 
2930
- >>> from pyedb.dotnet.edb import Edb
2941
+ >>> from pyedb import Edb
2931
2942
  >>> edb = Edb(edbpath=r"C:\temp\myproject.aedb", edbversion="2021.2")
2932
2943
  >>> options_config = {'UNITE_NETS' : 1, 'LAUNCH_Q3D' : 0}
2933
2944
  >>> edb.write_export3d_option_config_file(r"C:\temp", options_config)
@@ -2977,7 +2988,7 @@ class Edb(Database):
2977
2988
  Examples
2978
2989
  --------
2979
2990
 
2980
- >>> from pyedb.dotnet.edb import Edb
2991
+ >>> from pyedb import Edb
2981
2992
 
2982
2993
  >>> edb = Edb(edbpath=r"C:\temp\myproject.aedb", edbversion="2021.2")
2983
2994
 
@@ -3136,7 +3147,7 @@ class Edb(Database):
3136
3147
  Examples
3137
3148
  --------
3138
3149
 
3139
- >>> from pyedb.dotnet.edb import Edb
3150
+ >>> from pyedb import Edb
3140
3151
  >>> edb_app = Edb()
3141
3152
  >>> boolean_1, ant_length = edb_app.add_project_variable("my_local_variable", "1cm")
3142
3153
  >>> print(edb_app["$my_local_variable"]) #using getitem
@@ -3172,7 +3183,7 @@ class Edb(Database):
3172
3183
  Examples
3173
3184
  --------
3174
3185
 
3175
- >>> from pyedb.dotnet.edb import Edb
3186
+ >>> from pyedb import Edb
3176
3187
  >>> edb_app = Edb()
3177
3188
  >>> boolean_1, ant_length = edb_app.add_design_variable("my_local_variable", "1cm")
3178
3189
  >>> print(edb_app["my_local_variable"]) #using getitem
@@ -3210,7 +3221,7 @@ class Edb(Database):
3210
3221
  Examples
3211
3222
  --------
3212
3223
 
3213
- >>> from pyedb.dotnet.edb import Edb
3224
+ >>> from pyedb import Edb
3214
3225
  >>> edb_app = Edb()
3215
3226
  >>> boolean, ant_length = edb_app.add_design_variable("ant_length", "1cm")
3216
3227
  >>> boolean, ant_length = edb_app.change_design_variable_value("ant_length", "1m")
@@ -3255,7 +3266,7 @@ class Edb(Database):
3255
3266
  Examples
3256
3267
  --------
3257
3268
 
3258
- >>> from pyedb.dotnet.edb import Edb
3269
+ >>> from pyedb import Edb
3259
3270
  >>> from pyedb.dotnet.edb_core.edb_data.simulation_configuration import SimulationConfiguration
3260
3271
  >>> config_file = path_configuration_file
3261
3272
  >>> source_file = path_to_edb_folder
@@ -3455,7 +3466,7 @@ class Edb(Database):
3455
3466
 
3456
3467
  Examples
3457
3468
  --------
3458
- >>> from pyedb.dotnet.edb import Edb
3469
+ >>> from pyedb import Edb
3459
3470
  >>>edb = Edb()
3460
3471
  >>> edb.hfss.create_edge_port_vertical(prim_1_id, ["-66mm", "-4mm"], "port_ver")
3461
3472
  >>> edb.hfss.create_edge_port_horizontal(
@@ -3556,7 +3567,7 @@ class Edb(Database):
3556
3567
  if i.GetType() == self.edb_api.utility.utility.SimulationSetupType.kHFSS:
3557
3568
  setups[i.GetName()] = HfssSimulationSetup(self, i)
3558
3569
  elif i.GetType() == self.edb_api.utility.utility.SimulationSetupType.kSIWave:
3559
- setups[i.GetName()] = SiwaveSYZSimulationSetup(self, i)
3570
+ setups[i.GetName()] = SiwaveSimulationSetup(self, i)
3560
3571
  elif i.GetType() == self.edb_api.utility.utility.SimulationSetupType.kSIWaveDCIR:
3561
3572
  setups[i.GetName()] = SiwaveDCSimulationSetup(self, i)
3562
3573
  elif i.GetType() == self.edb_api.utility.utility.SimulationSetupType.kRaptorX:
@@ -3594,7 +3605,7 @@ class Edb(Database):
3594
3605
  -------
3595
3606
  Dict[str, :class:`legacy.edb_core.edb_data.siwave_simulation_setup_data.SiwaveSYZSimulationSetup`]
3596
3607
  """
3597
- return {name: i for name, i in self.setups.items() if isinstance(i, SiwaveSYZSimulationSetup)}
3608
+ return {name: i for name, i in self.setups.items() if isinstance(i, SiwaveSimulationSetup)}
3598
3609
 
3599
3610
  def create_hfss_setup(self, name=None):
3600
3611
  """Create an HFSS simulation setup from a template.
@@ -3610,7 +3621,7 @@ class Edb(Database):
3610
3621
 
3611
3622
  Examples
3612
3623
  --------
3613
- >>> from pyedb.dotnet.edb import Edb
3624
+ >>> from pyedb import Edb
3614
3625
  >>> edbapp = Edb()
3615
3626
  >>> setup1 = edbapp.create_hfss_setup("setup1")
3616
3627
  >>> setup1.hfss_port_settings.max_delta_z0 = 0.5
@@ -3620,7 +3631,7 @@ class Edb(Database):
3620
3631
  return False
3621
3632
  elif not name:
3622
3633
  name = generate_unique_name("setup")
3623
- setup = HfssSimulationSetup(self).create(name)
3634
+ setup = HfssSimulationSetup(self, name=name)
3624
3635
  setup.set_solution_single_frequency("1GΗz")
3625
3636
  return setup
3626
3637
 
@@ -3671,7 +3682,7 @@ class Edb(Database):
3671
3682
  return False
3672
3683
  return HFSSPISimulationSetup(self).create(name)
3673
3684
 
3674
- def create_siwave_syz_setup(self, name=None):
3685
+ def create_siwave_syz_setup(self, name=None, **kwargs):
3675
3686
  """Create a setup from a template.
3676
3687
 
3677
3688
  Parameters
@@ -3685,7 +3696,7 @@ class Edb(Database):
3685
3696
 
3686
3697
  Examples
3687
3698
  --------
3688
- >>> from pyedb.dotnet.edb import Edb
3699
+ >>> from pyedb import Edb
3689
3700
  >>> edbapp = Edb()
3690
3701
  >>> setup1 = edbapp.create_siwave_syz_setup("setup1")
3691
3702
  >>> setup1.add_frequency_sweep(frequency_sweep=[
@@ -3698,10 +3709,12 @@ class Edb(Database):
3698
3709
  name = generate_unique_name("Siwave_SYZ")
3699
3710
  if name in self.setups:
3700
3711
  return False
3701
- SiwaveSYZSimulationSetup(self).create(name)
3712
+ setup = SiwaveSimulationSetup(self, name=name)
3713
+ for k, v in kwargs.items():
3714
+ setattr(setup, k, v)
3702
3715
  return self.setups[name]
3703
3716
 
3704
- def create_siwave_dc_setup(self, name=None):
3717
+ def create_siwave_dc_setup(self, name=None, **kwargs):
3705
3718
  """Create a setup from a template.
3706
3719
 
3707
3720
  Parameters
@@ -3715,7 +3728,7 @@ class Edb(Database):
3715
3728
 
3716
3729
  Examples
3717
3730
  --------
3718
- >>> from pyedb.dotnet.edb import Edb
3731
+ >>> from pyedb import Edb
3719
3732
  >>> edbapp = Edb()
3720
3733
  >>> setup1 = edbapp.create_siwave_dc_setup("setup1")
3721
3734
  >>> setup1.mesh_bondwires = True
@@ -3725,7 +3738,9 @@ class Edb(Database):
3725
3738
  name = generate_unique_name("Siwave_DC")
3726
3739
  if name in self.setups:
3727
3740
  return False
3728
- setup = SiwaveDCSimulationSetup(self).create(name)
3741
+ setup = SiwaveDCSimulationSetup(self, name=name)
3742
+ for k, v in kwargs.items():
3743
+ setattr(setup, k, v)
3729
3744
  return setup
3730
3745
 
3731
3746
  def calculate_initial_extent(self, expansion_factor):
@@ -4442,3 +4457,8 @@ class Edb(Database):
4442
4457
  from pyedb.dotnet.edb_core.definition.definitions import Definitions
4443
4458
 
4444
4459
  return Definitions(self)
4460
+
4461
+ @property
4462
+ def workflow(self):
4463
+ """Workflow class."""
4464
+ return Workflow(self)
File without changes
@@ -24,6 +24,7 @@ import logging
24
24
  import re
25
25
  import warnings
26
26
 
27
+ from pyedb.dotnet.edb_core.cell.hierarchy.hierarchy_obj import Group
27
28
  from pyedb.dotnet.edb_core.cell.hierarchy.model import PinPairModel, SPICEModel
28
29
  from pyedb.dotnet.edb_core.cell.hierarchy.netlist_model import NetlistModel
29
30
  from pyedb.dotnet.edb_core.cell.hierarchy.pin_pair_model import PinPair
@@ -44,7 +45,7 @@ if not is_ironpython:
44
45
  from pyedb.generic.general_methods import get_filename_without_extension
45
46
 
46
47
 
47
- class EDBComponent(object):
48
+ class EDBComponent(Group):
48
49
  """Manages EDB functionalities for components.
49
50
 
50
51
  Parameters
@@ -56,9 +57,9 @@ class EDBComponent(object):
56
57
 
57
58
  """
58
59
 
59
- def __init__(self, pedb, cmp):
60
- self._pedb = pedb
61
- self.edbcomponent = cmp
60
+ def __init__(self, pedb, edb_object):
61
+ super().__init__(pedb, edb_object)
62
+ self.edbcomponent = edb_object
62
63
  self._layout_instance = None
63
64
  self._comp_instance = None
64
65
 
@@ -186,7 +187,10 @@ class EDBComponent(object):
186
187
  @property
187
188
  def enabled(self):
188
189
  """Get or Set the component to active mode."""
189
- return self.component_property.IsEnabled()
190
+ if self.type.lower() in ["resistor", "capacitor", "inductor"]:
191
+ return self.component_property.IsEnabled()
192
+ else:
193
+ return
190
194
 
191
195
  @enabled.setter
192
196
  def enabled(self, value):
@@ -319,11 +323,11 @@ class EDBComponent(object):
319
323
  str
320
324
  Reference Designator Name.
321
325
  """
322
- return self.edbcomponent.GetName()
326
+ return self.name
323
327
 
324
328
  @refdes.setter
325
329
  def refdes(self, name):
326
- self.edbcomponent.SetName(name)
330
+ self.name = name
327
331
 
328
332
  @property
329
333
  def is_null(self):
@@ -395,12 +399,7 @@ class EDBComponent(object):
395
399
  """
396
400
  if self.model_type == "RLC":
397
401
  if not self._pin_pairs:
398
- if self.type == "Inductor":
399
- return 1e-9
400
- elif self.type == "Resistor":
401
- return 1e6
402
- else:
403
- return 1
402
+ return
404
403
  else:
405
404
  pin_pair = self._pin_pairs[0]
406
405
  if len([i for i in pin_pair.rlc_enable if i]) == 1:
@@ -731,10 +730,6 @@ class EDBComponent(object):
731
730
  """Set component part name."""
732
731
  self.edbcomponent.GetComponentDef().SetName(name)
733
732
 
734
- @property
735
- def _edb(self):
736
- return self._pedb.edb_api
737
-
738
733
  @property
739
734
  def placement_layer(self):
740
735
  """Placement layer.
@@ -0,0 +1,50 @@
1
+ # Copyright (C) 2023 - 2024 ANSYS, Inc. and/or its affiliates.
2
+ # SPDX-License-Identifier: MIT
3
+ #
4
+ #
5
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ # of this software and associated documentation files (the "Software"), to deal
7
+ # in the Software without restriction, including without limitation the rights
8
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ # copies of the Software, and to permit persons to whom the Software is
10
+ # furnished to do so, subject to the following conditions:
11
+ #
12
+ # The above copyright notice and this permission notice shall be included in all
13
+ # copies or substantial portions of the Software.
14
+ #
15
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ # SOFTWARE.
22
+
23
+ import logging
24
+
25
+ from pyedb.dotnet.edb_core.cell.layout_obj import Connectable
26
+
27
+
28
+ class HierarchyObj(Connectable):
29
+ def __init__(self, pedb, edb_object):
30
+ super().__init__(pedb, edb_object)
31
+
32
+ @property
33
+ def component_def(self):
34
+ """Component definition."""
35
+ return self._edb_object.GetComponentDef().GetName()
36
+
37
+ @property
38
+ def location(self):
39
+ """XY Coordinates."""
40
+ flag, x, y = self._edb_object.GetLocation()
41
+ if flag:
42
+ return [x, y]
43
+ else: # pragma no cover
44
+ logging.warning(f"Failed to get location of '{self.name}'.")
45
+ return
46
+
47
+
48
+ class Group(HierarchyObj):
49
+ def __init__(self, pedb, edb_object):
50
+ super().__init__(pedb, edb_object)
@@ -84,8 +84,6 @@ class Layout(EdbLayout):
84
84
 
85
85
  Parameters
86
86
  ----------
87
- layout : :class:`Layout <ansys.edb.layout.Layout>`
88
- Layout this bondwire will be in.
89
87
  bondwire_type : :class:`BondwireType`
90
88
  Type of bondwire: kAPDBondWire or kJDECBondWire types.
91
89
  definition_name : str
@@ -96,16 +94,12 @@ class Layout(EdbLayout):
96
94
  Bondwire width.
97
95
  material : str
98
96
  Bondwire material name.
99
- start_context : :class:`CellInstance <ansys.edb.hierarchy.CellInstance>`
100
- Start context: None means top level.
101
97
  start_layer_name : str
102
98
  Name of start layer.
103
99
  start_x : :class:`Value <ansys.edb.utility.Value>`
104
100
  X value of start point.
105
101
  start_y : :class:`Value <ansys.edb.utility.Value>`
106
102
  Y value of start point.
107
- end_context : :class:`CellInstance <ansys.edb.hierarchy.CellInstance>`
108
- End context: None means top level.
109
103
  end_layer_name : str
110
104
  Name of end layer.
111
105
  end_x : :class:`Value <ansys.edb.utility.Value>`