SimulationConfiguration#
- class pyedb.dotnet.edb_core.edb_data.simulation_configuration.SimulationConfiguration(filename=None, edb=None)[source]#
Provides an ASCII simulation configuration file parser.
This parser supports all types of inputs for setting up and automating any kind of SI or PI simulation with HFSS 3D Layout or Siwave. If fields are omitted, default values are applied. This class can be instantiated directly from Configuration file.
Examples
This class is very convenient to build HFSS and SIwave simulation projects from layout. It is leveraging EDB commands from Pyaedt but with keeping high level parameters making more easy PCB automation flow. SYZ and DC simulation can be addressed with this class.
The class is instantiated from an open edb:
>>> from pyedb import Edb >>> edb = Edb() >>> sim_setup = edb.new_simulation_configuration()
The returned object sim_setup is a SimulationConfiguration object. From this class you can assign a lot of parameters related the project configuration but also solver options. Here is the list of parameters available:
>>> from dotnet.generic.constants import SolverType >>> sim_setup.solver_type = SolverType.Hfss3dLayout
Solver type can be selected, HFSS 3D Layout and Siwave are supported.
>>> sim_setup.signal_nets = ["net1", "net2"]
Set the list of net names you want to include for the simulation. These nets will have excitations ports created if corresponding pins are found on selected component. We usually refer to signal nets but power / reference nets can also be passed into this list if user wants to have ports created on these ones.
>>> sim_setup.power_nets = ["gnd", "vcc"]
Set the list on power and reference nets. These nets won’t have excitation ports created on them and will be clipped during the project build if the cutout option is enabled.
>>> sim_setup.components = ["comp1", "comp2"]
Set the list of components which will be included in the simulation. These components will have ports created on pins belonging to the net list.
>>> sim_setup.do_cutout_subdesign = True
When true activates the layout cutout based on net signal net selection and cutout expansion.
>>> from dotnet.generic.constants import CutoutSubdesignType >>> sim_setup.cutout_subdesign_type = CutoutSubdesignType.Conformal
Define the type of cutout used for computing the clippingextent polygon. CutoutSubdesignType.Conformal CutoutSubdesignType.BBox are surpported.
>>> sim_setup.cutout_subdesign_expansion = "4mm"
Define the distance used for computing the extent polygon. Integer or string can be passed. For example 0.001 is in meter so here 1mm. You can also pass the string “1mm” for the same result.
>>> sim_setup.cutout_subdesign_round_corner = True
Boolean to allow using rounded corner for the cutout extent or not.
>>> sim_setup.use_default_cutout = False
When True use the native edb API command to process the cutout. Using False uses the Pyaedt one which improves the cutout speed.
>>> sim_setup.generate_solder_balls = True
Boolean to activate the solder ball generation on components. When HFSS solver is selected in combination with this parameter, coaxial ports will be created on solder balls for pins belonging to selected signal nets. If Siwave solver is selected this parameter will be ignored.
>>> sim_setup.use_default_coax_port_radial_extension = True
When
True
the default coaxial extent is used for the ports (only for HFSS). When the design is having dense solder balls close to each other (like typically package design), the default value might be too large and cause port overlapping, then solver failure. To prevent this issue set this parameter toFalse
will use a smaller value.>>> sim_setup.output_aedb = r"C: emp\my_edb.aedb"
Specify the output edb file after building the project. The parameter must be the complete file path. leaving this parameter blank will oervwritte the current open edb.
>>> sim_setup.dielectric_extent = 0.01
Gives the dielectric extent after cutout, keeping default value is advised unless for very specific application.
>>> sim_setup.airbox_horizontal_extent = "5mm"
Provide the air box horizonzal extent values. Unitless float value will be treated as ratio but string value like “5mm” is also supported.
>>> sim_setup.airbox_negative_vertical_extent = "5mm"
Provide the air box negative vertical extent values. Unitless float value will be treated as ratio but string value like “5mm” is also supported.
>>> sim_setup.airbox_positive_vertical_extent = "5mm"
Provide the air box positive vertical extent values. Unitless float value will be treated as ratio but string value like “5mm” is also supported.
>>> sim_setup.use_radiation_boundary = True
When
True
use radiation airbox boundary condition and perfect metal box when set toFalse
. Default value isTrue
, using enclosed metal box will greatly change simulation results. Setting this parameter asFalse
must be used cautiously.>>> sim_setup.do_cutout_subdesign = True
True
activates the cutout with associated parameters. SettingFalse
will keep the entire layout. Setting toFalse
can impact the simulation run time or even memory failure if HFSS solver is used.>>> sim_setup.do_pin_group = False
When circuit ports are used, setting to
True
will force to create pin groups on components having pins belonging to same net. Setting toFalse
will generate port on each signal pin with taking the closest reference pin. The last configuration is more often used when users are creating ports on PDN (Power delivery Network) and want to connect all pins individually.>>> from dotnet.generic.constants import SweepType >>> sim_setup.sweep_type = SweepType.Linear
Specify the frequency sweep type, Linear or Log sweep can be defined.
SimulationCOnfiguration also inherit from SimulationConfigurationAc class for High frequency settings.
>>> sim_setup.start_freq = "OHz"
Define the start frequency from the sweep.
>>> sim_setup.stop_freq = "40GHz"
Define the stop frequency from the sweep.
>>> sim_setup.step_freq = "10MHz"
Define the step frequency from the sweep.
>>> sim_setup.decade_count = 100
Used when log sweep is defined and specify the number of points per decade.
>>> sim_setup.enforce_causality = True
Activate the option
Enforce Causality
for the solver, recommended for signal integrity application>>> sim_setup.enforce_passivity = True
Activate the option
Enforce Passivity
for the solver, recommended for signal integrity application>>> sim_setup.do_lambda_refinement = True
Activate the lambda refinement for the initial mesh (only for HFSS), default value is
True
. Keeping this activated is highly recommended.>>> sim_setup.use_q3d_for_dc = False
Enable when
True
the Q3D DC point computation. Only needed when very high accuracy is required for DC point. Can eventually cause extra computation time.>>> sim_setup.sweep_name = "Test_sweep"
Define the frequency sweep name.
>>> sim_setup.mesh_freq = "10GHz"
Define the frequency used for adaptive meshing (available for both HFSS and SIwave).
>>> from dotnet.generic.constants import RadiationBoxType >>> sim_setup.radiation_box = RadiationBoxType.ConvexHull
Defined the radiation box type, Conformal, Bounding box and ConvexHull are supported (HFSS only).
>>> sim_setup.max_num_passes= 30
Default value is 30, specify the maximum number of adaptive passes (only HFSS). Reasonable high value is recommended to force the solver reaching the convergence criteria.
>>> sim_setup.max_mag_delta_s = 0.02
Define the convergence criteria
>>> sim_setup.min_num_passes = 2
specify the minimum number of consecutive coberged passes. Setting to 2 is a good practice to avoid converging on local minima.
>>> from dotnet.generic.constants import BasisOrder >>> sim_setup.basis_order = BasisOrder.Single
Select the order basis (HFSS only), Zero, Single, Double and Mixed are supported. For Signal integrity Single or Mixed should be used.
>>> sim_setup.minimum_void_surface = 0
Only for Siwave, specify the minimum void surface to be meshed. Void with lower surface value will be ignored by meshing.
SimulationConfiguration also inherits from SimulationDc class to handle DC simulation projects.
>>> sim_setup.dc_compute_inductance = True
True
activate the DC loop inductance computation (Siwave only),False
is deactivated.>>> sim_setup.dc_slide_position = 1
The provided value must be between 0 and 2 and correspond ti the SIwave DC slide position in GUI. 0 : coarse 1 : medium accuracy 2 : high accuracy
>>> sim_setup.dc_plot_jv = True
True
activate the current / voltage plot with Siwave DC solver,False
deactivate.>>> sim_setup.dc_error_energy = 0.02
Fix the DC error convergence criteria. In this example 2% is defined.
>>> sim_setup.dc_max_num_pass = 6
Provide the maximum number of passes during Siwave DC adaptive meshing.
>>> sim_setup.dc_min_num_pass = 1
Provide the minimum number of passes during Siwave DC adaptive meshing.
>>> sim_setup.dc_mesh_bondwires = True
True
bondwires are meshed,False
bond wires are ignored during meshing.>>> sim_setup.dc_num_bondwire_sides = 8
Gives the number of facets wirebonds are discretized.
>>> sim_setup.dc_refine_vias = True
True
meshing refinement on nondwires activated during meshing process. Deactivated when set toFalse
.>>> sim_setup.dc_report_show_Active_devices = True
Activate when
True
the components showing in the DC report.>>> sim_setup.dc_export_thermal_data = True
True
thermal data are exported for Icepak simulation.>>> sim_setup.dc_full_report_path = r"C: emp\my_report.html"
Provides the file path for the DC report.
>>> sim_setup.dc_icepak_temp_file = r"C: emp\my_file"
Provides icepak temporary files location.
>>> sim_setup.dc_import_thermal_data = False
Import DC thermal data when True`
>>> sim_setup.dc_per_pin_res_path = r"C: emp\dc_pin_res_file" Provides the resistance per pin file path.
>>> sim_setup.dc_per_pin_use_pin_format = True
When
True
activate the pin format.>>> sim_setup.dc_use_loop_res_for_per_pin = True
Activate the loop resistance usage per pin when
True
>>> sim_setup.dc_via_report_path = 'C:\temp\via_report_file'
Define the via report path file.
>>> sim_setup.add_current_source(name="test_isrc", >>> current_value=1.2, >>> phase_value=0.0, >>> impedance=5e7, >>> positive_node_component="comp1", >>> positive_node_net="net1", >>> negative_node_component="comp2", >>> negative_node_net="net2" >>> )
Define a current source.
>>> sim_setup.add_dc_ground_source_term(source_name="test_isrc", node_to_ground=1)
Define the pin from a source which has to be set to reference for DC simulation.
>>> sim_setup.add_voltage_source(name="test_vsrc", >>> current_value=1.33, >>> phase_value=0.0, >>> impedance=1e-6, >>> positive_node_component="comp1", >>> positive_node_net="net1", >>> negative_node_component="comp2", >>> negative_node_net="net2" >>> )
Define a voltage source.
>>> sim_setup.add_dc_ground_source_term(source_name="test_vsrc", node_to_ground=1)
Define the pin from a source which has to be set to reference for DC simulation.
>>> edb.build_simulation_project(sim_setup)
Will build and save your project.
Methods
Add a current source for the current SimulationConfiguration instance.
Add a dc ground source terminal for Siwave.
SimulationConfiguration.add_rlc
([name, ...])Add a voltage source for the current SimulationConfiguration instance.
Add a voltage source for the current SimulationConfiguration instance.
Build active simulation project.
SimulationConfiguration.export_json
(output_file)Export Json file from SimulationConfiguration object.
SimulationConfiguration.import_json
(input_file)Import Json file into SimulationConfiguration object instance.
Attributes
AC Settings class.
Cutout and Batch Settings class.
DC Settings class.
Retrieve the file name loaded for mapping properties value.
Either if open the Edb after the build or not.
Retrieve setup name for the simulation.
Retrieve the SolverType class to select the solver to be called during the project build.