Configuration file architecture#
PyEDB configuration files let you describe design setup, modeling content,
excitations, and post-processing options in a single JSON or TOML document.
The same data model can be consumed from a file or built entirely in Python
through the programmatic API described in Configuration API guide and complete example under
pyedb.configuration.
This page explains how the configuration file is organized, what each top-level section is used for, and which fields are supported by each section.
Note
While this guide uses JSON fragments for readability, the same hierarchy can also be written as TOML. The section names and nested field names are identical in both formats.
Tip
A machine-readable JSON Schema is available for the complete
configuration file. You can use it to validate your config files in any
JSON-schema-aware editor (VS Code, PyCharm, etc.) or with tools such as
jsonschema.
Two ways to configure a design#
Approach |
When to use |
How to apply |
|---|---|---|
File-based (this page) |
Reproducible, human-readable artifacts kept in version control. |
|
Programmatic API (Configuration API guide and complete example) |
Scripted workflows, templates, conditional logic. |
|
Tip
edb.configuration.run() accepts a file path, a plain dictionary, or
a CfgData instance, so you can mix and match approaches in the
same script.
How a configuration file is consumed#
At runtime, PyEDB parses the file (or builder) into a dictionary, maps each top-level key to an internal section model, and then applies those models to the active EDB design.
Top-level architecture#
A configuration file is a single dictionary. Every top-level key is optional. If a section is omitted, PyEDB leaves that area unchanged.
Section |
JSON type |
Purpose |
Typical content |
|---|---|---|---|
|
object |
Global library paths and design flags. |
SPICE library path, S-parameter library path, pad options. |
|
object |
Material definitions and layer stack. |
|
|
object |
Net classification. |
|
|
array |
Component model and package settings. |
RLC, S-parameter, SPICE, die, solder-ball, port properties. |
|
object |
Padstack definitions and placed instances. |
|
|
array |
Named groups of pins for ports and sources. |
Explicit pin lists or groups derived from nets. |
|
array |
Low-level EDB terminal definitions. |
Padstack, pin-group, point, edge, and bundle terminals. |
|
array |
Port definitions. |
Circuit, coax, wave, gap, and differential wave ports. |
|
array |
Current and voltage sources. |
Positive and negative terminal specifiers, magnitude, impedance. |
|
array |
Voltage probes. |
Positive and negative terminal specifiers. |
|
array |
Simulation setups. |
HFSS, SIwave AC, SIwave DC, sweeps, mesh operations. |
|
object |
HFSS region and dielectric extent settings. |
Radiation/PML, air-box extents, dielectric extent. |
|
object |
Layout operations applied after import. |
Cutout and auto HFSS region generation. |
|
array |
S-parameter model assignments. |
Touchstone path, component definition, reference net mapping. |
|
array |
SPICE model assignments. |
Model path, subcircuit, target components. |
|
array |
Thermal package definitions. |
Theta values, power, geometry, heat sink. |
|
array |
Design and project variables. |
Name, value, description. |
|
object |
Geometry-driven construction and cleanup. |
Traces, planes, padstacks, components, primitive deletion. |
Minimal file shape#
The following skeleton shows the overall shape of a complete configuration payload:
{
"general": {},
"stackup": {
"materials": [],
"layers": []
},
"nets": {
"signal_nets": [],
"power_ground_nets": []
},
"components": [],
"padstacks": {
"definitions": [],
"instances": []
},
"pin_groups": [],
"terminals": [],
"ports": [],
"sources": [],
"probes": [],
"setups": [],
"boundaries": {},
"operations": {},
"s_parameters": [],
"spice_models": [],
"package_definitions": [],
"variables": [],
"modeler": {}
}
Supported sections and fields#
general#
Use this section for design-wide paths and a small number of global options.
Field |
Type |
Purpose |
|---|---|---|
|
string |
Base folder used to resolve relative paths in |
|
string |
Base folder used to resolve relative paths in |
|
Boolean |
Controls the design option that keeps anti-pads enabled. |
|
Boolean |
Controls the design option that suppresses pads where supported. |
stackup#
This section defines materials and the layer sequence.
stackup.materials[] objects support these keys:
nameconductivitydielectric_loss_tangentmagnetic_loss_tangentmass_densitypermittivitypermeabilitypoisson_ratiospecific_heatthermal_conductivityyoungs_modulusthermal_expansion_coefficientdc_conductivitydc_permittivitydielectric_model_frequencyloss_tangent_at_frequencypermittivity_at_frequencythermal_modifiersEach entry in
thermal_modifiersis an object with these fields:property_name: material property this modifier applies to (required)basic_quadratic_c1: first quadratic coefficient (default0)basic_quadratic_c2: second quadratic coefficient (default0)basic_quadratic_temperature_reference: reference temperature in °C (default22)advanced_quadratic_lower_limit: lower temperature limit in °C (default-273.15)advanced_quadratic_upper_limit: upper temperature limit in °C (default1000)advanced_quadratic_auto_calculate: auto-calculate quadratic constants (defaulttrue)advanced_quadratic_lower_constant: lower constant (default1)advanced_quadratic_upper_constant: upper constant (default1)
stackup.layers[] objects support these keys:
nametypematerialfill_materialthicknessroughnessetching
roughness supports:
enabledtop/bottom/sideEach surface can use either a Huray roughness model (
model,nodule_radius,surface_ratio) or a Groiss roughness model (model,roughness).
etching supports:
factoretch_power_ground_netsenabled
Example:
{
"stackup": {
"materials": [
{
"name": "copper",
"conductivity": 58000000.0
},
{
"name": "fr4",
"permittivity": 4.4,
"dielectric_loss_tangent": 0.02
}
],
"layers": [
{
"name": "top",
"type": "signal",
"material": "copper",
"fill_material": "fr4",
"thickness": "35um"
},
{
"name": "diel1",
"type": "dielectric",
"material": "fr4",
"thickness": "100um"
}
]
}
}
nets#
Use this section to classify nets by intent.
Field |
Type |
Purpose |
|---|---|---|
|
array of strings |
Nets treated as signal nets. |
|
array of strings |
Nets treated as power or ground nets. |
components#
This section assigns electrical and package-related properties to component instances.
Each components[] entry supports these keys:
Field |
Type |
Purpose |
|---|---|---|
|
string |
Component instance name such as |
|
string |
Component type such as |
|
Boolean |
Enables or disables application of the entry. |
|
string |
Component definition / part name. |
|
string |
Placement layer used when constructing components in |
|
array |
Pin-pair RLC model definitions. |
|
object |
S-parameter model assignment for the component. |
|
object |
SPICE model assignment for the component. |
|
object |
Raw netlist payload. |
|
object |
Die configuration for IC components. |
|
object |
Solder-ball geometry and material. |
|
object |
Port reference geometry. |
Nested component objects support these keys:
pin_pair_model[]:first_pin,second_pin,resistance,inductance,capacitance,is_parallel,resistance_enabled,inductance_enabled,capacitance_enabled.s_parameter_model:model_name,model_path,reference_net.spice_model:model_name,model_path,sub_circuit,terminal_pairs.netlist_model:netlist.ic_die_properties:type(flip_chip,wire_bond,no_die),orientation(chip_uporchip_down),height.solder_ball_properties:shape(cylinder,spheroid,no_solder_ball),diameter,height,material,mid_diameter.port_properties:reference_height,reference_size_auto,reference_size_x,reference_size_y.
padstacks#
Use this section to define padstack definitions and update placed padstack instances.
padstacks.definitions[] supports:
namehole_plating_thicknessmaterial(serialized as the hole material)hole_rangepad_parametershole_parameterssolder_ball_parameters
padstacks.instances[] supports:
nameidbackdrill_parametersis_pinnet_namelayer_rangedefinitionpositionrotationhole_override_enabledhole_override_diametersolder_ball_layer
backdrill_parameters can define from_top and/or from_bottom. Each
branch can use either:
drill_to_layer+diameterdrill_to_layer+diameter+stub_lengthdrill_depth+diameter
pin_groups#
Use pin groups to name a set of pins once and then reuse that name in ports, sources, probes, or explicit terminals.
Each pin_groups[] entry supports:
namereference_designatorpins(explicit pin list)net(single net name or list of net names)
Define either pins or net.
terminals#
This is the low-level terminal section. Most users do not need it because
ports, sources, and probes create terminals implicitly. It becomes
useful when you want explicit terminal objects or bundle terminals.
Supported terminal entry types are:
padstack_instancepin_grouppointedgebundle
Common terminal keys are:
nameimpedanceis_circuit_portreference_terminalamplitudephaseterminal_to_groundAccepted values:
"no_ground"/"kNoGround"(default),"negative"/"kNegative","positive"/"kPositive","kNegativeNode","kPositiveNode".boundary_typeAccepted values (human-friendly aliases recommended):
"port"/"PortBoundary""pec"/"PecBoundary""rlc"/"RlcBoundary""current_source"/"kCurrentSource""voltage_source"/"kVoltageSource""voltage_probe"/"kVoltageProbe""dc_terminal"/"kDcTerminal""kNexximGround","kNexximPort","InvalidBoundary"
hfss_typeAccepted values:
"Wave","Gap", ornull.
Type-specific keys:
padstack_instance:padstack_instance,padstack_instance_id,layerpin_group:pin_grouppoint:x,y,layer,netedge:primitive,point_on_edge_x,point_on_edge_y,horizontal_extent_factor,vertical_extent_factor,pec_launch_widthbundle:terminals
ports, sources, and probes#
These sections use terminal specifiers rather than low-level terminal objects.
Supported terminal-specifier forms are:
Specifier |
Shape |
Purpose |
|---|---|---|
Pin |
|
Address a specific component pin. |
Net |
|
Address pins on a named net. |
Pin group |
|
Reuse a previously defined pin group. |
Padstack instance |
|
Address a named padstack instance. |
Coordinates |
|
Create a point-based terminal at a coordinate. |
Nearest pin |
|
Choose a reference pin automatically for negative terminals. |
Optional terminal-specifier helper fields supported by the runtime terminal resolver are:
reference_designatorcontact_type(for exampledefault,full,center,quad,inline)contact_radiusnum_of_contactcontact_expansion
Each ports[] entry uses one of these shapes:
Circuit or coax port:
nametype=circuitorcoaxpositive_terminalnegative_terminal(circuit only)reference_designatorimpedancedistributed
Wave or gap port:
nametype=wave_portorgap_portprimitive_namepoint_on_edgehorizontal_extent_factorvertical_extent_factorpec_launch_width
Differential wave port:
nametype=diff_wave_portpositive_terminalwithprimitive_nameandpoint_on_edgenegative_terminalwithprimitive_nameandpoint_on_edgehorizontal_extent_factorvertical_extent_factorpec_launch_width
Each sources[] entry supports:
nametype=currentorvoltagepositive_terminalnegative_terminalmagnitudeimpedancereference_designatordistributed
Each probes[] entry supports:
nametype=probepositive_terminalnegative_terminalreference_designator
setups#
The setups array contains HFSS, SIwave AC, and SIwave DC simulation setup
objects.
Every setup has at least:
nametype
hfss setups support:
adapt_type=single,broadband, ormulti_frequenciessingle_frequency_adaptive_solutionbroadband_adaptive_solutionmulti_frequency_adaptive_solutionauto_mesh_operationmesh_operationsfreq_sweep
single_frequency_adaptive_solution supports:
adaptive_frequencymax_passesmax_delta
broadband_adaptive_solution supports:
low_frequencyhigh_frequencymax_passesmax_delta
multi_frequency_adaptive_solution supports:
adapt_frequencies[]withadaptive_frequency,max_passes, andmax_delta
auto_mesh_operation supports:
enabledtrace_ratio_seedingsignal_via_side_number
mesh_operations[] currently supports length mesh operations with:
typeormesh_operation_type=lengthnamemax_elementsmax_lengthrestrict_lengthrefine_insidenets_layers_list
siwave_ac setups support:
use_si_settingssi_slider_positionpi_slider_positionfreq_sweep
siwave_dc setups support:
dc_slider_positiondc_ir_settingswithexport_dc_thermal_data
All AC sweep objects inside freq_sweep support:
nametype=discrete,interpolation, orinterpolatingfrequenciesuse_q3d_for_dccompute_dc_pointenforce_causalityenforce_passivityadv_dc_extrapolationuse_hfss_solver_regionshfss_solver_region_setup_namehfss_solver_region_sweep_name
Each frequencies[] entry supports:
startstopincrementdistribution=linear_scale,log_scale,single,linear_count,log_count
boundaries#
Use this section to control HFSS open-region and dielectric extent settings.
Supported keys are:
use_open_regionopen_region_typeis_pml_visibleoperating_freqradiation_leveldielectric_extent_typedielectric_base_polygondielectric_extent_sizewithsizeandis_multiplehonor_user_dielectricextent_typebase_polygontruncate_air_box_at_groundair_box_horizontal_extentwithsizeandis_multipleair_box_positive_vertical_extentwithsizeandis_multipleair_box_negative_vertical_extentwithsizeandis_multiplesync_air_box_vertical_extent
operations#
Use this section for cutout creation and automatic HFSS region generation.
Supported keys are:
cutoutgenerate_auto_hfss_regions
cutout supports:
auto_identify_netswithenabled,resistor_below,inductor_below,capacitor_abovesignal_listreference_listextent_typeexpansion_sizenumber_of_threadscustom_extentcustom_extent_unitsexpansion_factor
s_parameters#
Each s_parameters[] entry supports:
namecomponent_definitionfile_pathapply_to_allcomponentsreference_netreference_net_per_componentpin_order
Relative file_path values are resolved from general.s_parameter_library.
spice_models#
Each spice_models[] entry supports:
namecomponent_definitionfile_pathsub_circuit_nameapply_to_allcomponentsterminal_pairs
Relative file_path values are resolved from general.spice_model_library.
package_definitions#
Use this section for thermal package and heat-sink definitions.
Each package_definitions[] entry supports:
namecomponent_definitionmaximum_powerthermal_conductivitytheta_jbtheta_jcheightapply_to_allcomponentsextent_bounding_boxheatsink
heatsink supports:
fin_base_heightfin_heightfin_orientationfin_spacingfin_thickness
variables#
Each variables[] entry supports:
namevaluedescription
Names starting with $ are created as project variables. Other names are
created as design variables.
modeler#
Use this section to create traces, planes, padstack content, components, and primitive deletions.
Supported keys are:
tracesplanespadstack_definitionspadstack_instancescomponentsprimitives_to_delete
traces[] support:
namelayerpathwidthnet_namestart_cap_styleend_cap_stylecorner_styleincremental_path
planes[] support:
Common:
name,layer,net_name,type,voidsRectangle:
lower_left_point,upper_right_point,corner_radius,rotationPolygon:
pointsCircle:
radius,position
modeler.padstack_definitions[] and modeler.padstack_instances[] use the
same payload shapes as the top-level padstacks section.
modeler.components[] use the same payload shape as the top-level
components section, and can additionally be combined with the created
padstack instances referenced through pins in the lower-level runtime
configuration path.
primitives_to_delete supports:
layer_namenamenet_name
Best practices#
Start with only the sections you need.
Prefer
pin_groupsand terminal specifiers for readability.Use
ports/sources/probesunless you explicitly need low-levelterminals.Keep relative model paths under
general.spice_model_libraryandgeneral.s_parameter_library.When a section is empty, omit it entirely instead of writing empty values.
For programmatic authoring, prefer Configuration API guide and complete example.
Next step#
If you want to generate these payloads in Python instead of hand-authoring JSON, continue with Configuration API guide and complete example.