├── .flake8
├── .gitattributes
├── .github
├── CODEOWNERS
├── ISSUE_TEMPLATE
│ ├── bug.yml
│ ├── feature.yml
│ └── syntax.yml
├── dependabot.yml
├── labeler.yml
├── labels.yml
└── workflows
│ ├── ci_cd.yml
│ └── label.yml
├── .gitignore
├── .pre-commit-config.yaml
├── AUTHORS
├── CONTRIBUTING.md
├── CONTRIBUTORS.md
├── LICENSE
├── Makefile
├── README.md
├── codecov.yml
├── doc
├── .vale.ini
├── Makefile
├── clean_gallery.bat
├── make.bat
├── print_errors.py
├── source
│ ├── _static
│ │ ├── README.md
│ │ ├── assets
│ │ │ ├── download
│ │ │ │ ├── .gitignore
│ │ │ │ └── README.md
│ │ │ ├── index_api.png
│ │ │ ├── index_api.svg
│ │ │ ├── index_contribute.png
│ │ │ ├── index_contribute.svg
│ │ │ ├── index_examples.png
│ │ │ ├── index_examples.svg
│ │ │ ├── index_getting_started.png
│ │ │ ├── index_getting_started.svg
│ │ │ ├── index_user_guide.png
│ │ │ └── index_user_guide.svg
│ │ ├── connector_example.png
│ │ ├── custom.css
│ │ ├── diff_via.png
│ │ ├── edb_example_12_sma_connector_on_board.png
│ │ ├── parametrized_design.png
│ │ └── thumbnails
│ │ │ └── 101_getting_started.png
│ ├── api
│ │ ├── CoreEdb.rst
│ │ ├── SiWave.rst
│ │ ├── SimulationConfigurationEdb.rst
│ │ ├── SimulationConfigurationV2.rst
│ │ ├── XmlControlFile.rst
│ │ ├── edb_data
│ │ │ ├── EdbValue.rst
│ │ │ ├── HfssExtentInfo.rst
│ │ │ ├── LayerData.rst
│ │ │ ├── NetData.rst
│ │ │ ├── PadstackData.rst
│ │ │ ├── PortsData.rst
│ │ │ ├── PrimitivesData.rst
│ │ │ ├── RaptorXSimulationSetup.rst
│ │ │ ├── SourceData.rst
│ │ │ ├── Utilities.rst
│ │ │ ├── Variables.rst
│ │ │ └── index.rst
│ │ ├── index.rst
│ │ ├── sim_setup_data
│ │ │ ├── data
│ │ │ │ ├── adaptive_frequency_data.rst
│ │ │ │ ├── index.rst
│ │ │ │ ├── mesh_operation.rst
│ │ │ │ ├── settings.rst
│ │ │ │ ├── sim_setup_info.rst
│ │ │ │ ├── simulation_settings.rst
│ │ │ │ ├── siw_dc_ir_settings.rst
│ │ │ │ └── sweep_data.rst
│ │ │ └── io
│ │ │ │ ├── index.rst
│ │ │ │ └── siwave.rst
│ │ └── utilities
│ │ │ ├── heatsink.rst
│ │ │ ├── hfss_simulation_setup.rst
│ │ │ ├── index.rst
│ │ │ ├── simulation_setup.rst
│ │ │ └── siwave_simulation_setup.rst
│ ├── build_breaking_change.rst
│ ├── conf.py
│ ├── contributing.rst
│ ├── create_documentation.bat
│ ├── getting_started
│ │ ├── about.rst
│ │ ├── contributing.rst
│ │ ├── index.rst
│ │ ├── installation.rst
│ │ ├── quickcode.rst
│ │ ├── troubleshooting.rst
│ │ └── versioning.rst
│ ├── index.rst
│ ├── resources
│ │ ├── 3dlayout.png
│ │ ├── 3dlayout_1.png
│ │ ├── 5gantenna.png
│ │ ├── BlankDiagram3DLayout.png
│ │ ├── add_siwave_setup.png
│ │ ├── advanced_circuit_port_creation.PNG
│ │ ├── aedt_3.png
│ │ ├── build_signal_integrity_user_guide.png
│ │ ├── clipped_layout.png
│ │ ├── create_circuit_ports_on_component.PNG
│ │ ├── create_coaxial_port_on_component.png
│ │ ├── create_edge_port_on_polygon_and_trace.png
│ │ ├── create_hfss_setup.png
│ │ ├── create_padstack_instances.png
│ │ ├── create_port_between_pin_and_layer.png
│ │ ├── create_port_on_component_simple.png
│ │ ├── create_resistor_boundary_user_guide.png
│ │ ├── create_rlc_boundary_on_pin.png
│ │ ├── create_sources_and_probes.png
│ │ ├── define_hfss_extent.png
│ │ ├── define_layer_stackup.png
│ │ ├── edb.png
│ │ ├── edb2.png
│ │ ├── edb_intro.png
│ │ ├── icepak.png
│ │ ├── ipc2581.png
│ │ ├── layout_bbox.png
│ │ ├── layout_nets_after_cutout.png
│ │ ├── layout_plot_all_nets.png
│ │ ├── layout_plot_gnd_nets.png
│ │ ├── layout_stats.png
│ │ ├── merge_utility.png
│ │ ├── parametrized_edb.png
│ │ ├── pyansys-logo-black-cropped.png
│ │ ├── siwave.png
│ │ ├── stackup.png
│ │ ├── starting_load_edb.png
│ │ ├── template_ribbon.png
│ │ ├── toolkits.png
│ │ ├── toolkits_ribbon.png
│ │ └── viawizard.png
│ └── user_guide
│ │ ├── build_simulation_project
│ │ ├── build_signal_integrity_project.rst
│ │ ├── cutout.rst
│ │ └── index.rst
│ │ ├── components
│ │ ├── create_resistor_on_pin.rst
│ │ ├── create_rlc_boundary_on_pins.rst
│ │ ├── create_rlc_component.rst
│ │ └── index.rst
│ │ ├── edb_information_queries
│ │ ├── edb_queries.rst
│ │ ├── get_layout_bounding_box.rst
│ │ └── index.rst
│ │ ├── excitations
│ │ ├── create_circuit_ports_on_component.rst
│ │ ├── create_coax_port_on_component.rst
│ │ ├── create_current_source.rst
│ │ ├── create_edge_port_on_polygon.rst
│ │ ├── create_port_between_pin_and_layer.rst
│ │ └── index.rst
│ │ ├── index.rst
│ │ ├── layer_stackup
│ │ ├── define_layer_stackup.rst
│ │ ├── index.rst
│ │ └── layer_stackup.rst
│ │ ├── load_export_edb
│ │ ├── index.rst
│ │ └── loading_layout.rst
│ │ ├── padstacks
│ │ ├── create_padsatck_instance.rst
│ │ ├── index.rst
│ │ └── set_all_antipads_value.rst
│ │ ├── simulation_setup
│ │ ├── add_siwave_analysis.rst
│ │ ├── define_hfss_extent.rst
│ │ ├── define_hfss_simulation_setup.rst
│ │ └── index.rst
│ │ └── use_design_variables.rst
└── styles
│ ├── .gitignore
│ └── config
│ └── vocabularies
│ └── ANSYS
│ ├── accept.txt
│ └── reject.txt
├── ignore_words.txt
├── pyproject.toml
├── src
├── __init__.py
└── pyedb
│ ├── __init__.py
│ ├── common
│ ├── __init__.py
│ └── nets.py
│ ├── component_libraries
│ └── ansys_components.py
│ ├── configuration
│ ├── __init__.py
│ ├── cfg_boundaries.py
│ ├── cfg_common.py
│ ├── cfg_components.py
│ ├── cfg_data.py
│ ├── cfg_general.py
│ ├── cfg_modeler.py
│ ├── cfg_nets.py
│ ├── cfg_operations.py
│ ├── cfg_package_definition.py
│ ├── cfg_padstacks.py
│ ├── cfg_pin_groups.py
│ ├── cfg_ports_sources.py
│ ├── cfg_s_parameter_models.py
│ ├── cfg_setup.py
│ ├── cfg_spice_models.py
│ ├── cfg_stackup.py
│ └── configuration.py
│ ├── dotnet
│ ├── __init__.py
│ ├── clr_module.py
│ ├── database
│ │ ├── Variables.py
│ │ ├── __init__.py
│ │ ├── cell
│ │ │ ├── __init__.py
│ │ │ ├── connectable.py
│ │ │ ├── hierarchy
│ │ │ │ ├── __init__.py
│ │ │ │ ├── component.py
│ │ │ │ ├── hierarchy_obj.py
│ │ │ │ ├── model.py
│ │ │ │ ├── netlist_model.py
│ │ │ │ ├── pin_pair_model.py
│ │ │ │ ├── s_parameter_model.py
│ │ │ │ └── spice_model.py
│ │ │ ├── layout.py
│ │ │ ├── layout_obj.py
│ │ │ ├── primitive
│ │ │ │ ├── __init__.py
│ │ │ │ ├── bondwire.py
│ │ │ │ ├── path.py
│ │ │ │ └── primitive.py
│ │ │ ├── terminal
│ │ │ │ ├── __init__.py
│ │ │ │ ├── bundle_terminal.py
│ │ │ │ ├── edge_terminal.py
│ │ │ │ ├── padstack_instance_terminal.py
│ │ │ │ ├── pingroup_terminal.py
│ │ │ │ ├── point_terminal.py
│ │ │ │ └── terminal.py
│ │ │ └── voltage_regulator.py
│ │ ├── components.py
│ │ ├── definition
│ │ │ ├── __init__.py
│ │ │ ├── component_def.py
│ │ │ ├── component_model.py
│ │ │ ├── definition_obj.py
│ │ │ ├── definitions.py
│ │ │ └── package_def.py
│ │ ├── dotnet
│ │ │ ├── __init__.py
│ │ │ ├── database.py
│ │ │ └── primitive.py
│ │ ├── edb_data
│ │ │ ├── __init__.py
│ │ │ ├── control_file.py
│ │ │ ├── design_options.py
│ │ │ ├── edbvalue.py
│ │ │ ├── hfss_extent_info.py
│ │ │ ├── layer_data.py
│ │ │ ├── nets_data.py
│ │ │ ├── padstacks_data.py
│ │ │ ├── ports.py
│ │ │ ├── primitives_data.py
│ │ │ ├── raptor_x_simulation_setup_data.py
│ │ │ ├── simulation_configuration.py
│ │ │ ├── sources.py
│ │ │ ├── utilities.py
│ │ │ └── variables.py
│ │ ├── general.py
│ │ ├── geometry
│ │ │ ├── __init__.py
│ │ │ ├── point_data.py
│ │ │ └── polygon_data.py
│ │ ├── hfss.py
│ │ ├── layout_obj_instance.py
│ │ ├── layout_validation.py
│ │ ├── materials.py
│ │ ├── modeler.py
│ │ ├── net_class.py
│ │ ├── nets.py
│ │ ├── padstack.py
│ │ ├── sim_setup_data
│ │ │ ├── __init__.py
│ │ │ ├── data
│ │ │ │ ├── __init__.py
│ │ │ │ ├── adaptive_frequency_data.py
│ │ │ │ ├── mesh_operation.py
│ │ │ │ ├── settings.py
│ │ │ │ ├── sim_setup_info.py
│ │ │ │ ├── simulation_settings.py
│ │ │ │ ├── siw_dc_ir_settings.py
│ │ │ │ └── sweep_data.py
│ │ │ └── io
│ │ │ │ ├── __init__.py
│ │ │ │ └── siwave.py
│ │ ├── siwave.py
│ │ ├── stackup.py
│ │ └── utilities
│ │ │ ├── __init__.py
│ │ │ ├── heatsink.py
│ │ │ ├── hfss_simulation_setup.py
│ │ │ ├── obj_base.py
│ │ │ ├── simulation_setup.py
│ │ │ └── siwave_simulation_setup.py
│ └── edb.py
│ ├── edb_logger.py
│ ├── exceptions.py
│ ├── extensions
│ ├── __init__.py
│ └── via_design_backend.py
│ ├── generic
│ ├── __init__.py
│ ├── constants.py
│ ├── data_handlers.py
│ ├── design_types.py
│ ├── filesystem.py
│ ├── general_methods.py
│ ├── plot.py
│ ├── process.py
│ └── settings.py
│ ├── grpc
│ ├── database
│ │ ├── __init__.py
│ │ ├── components.py
│ │ ├── control_file.py
│ │ ├── definition
│ │ │ ├── __init__.py
│ │ │ ├── component_def.py
│ │ │ ├── component_model.py
│ │ │ ├── component_pin.py
│ │ │ ├── materials.py
│ │ │ ├── n_port_component_model.py
│ │ │ ├── package_def.py
│ │ │ └── padstack_def.py
│ │ ├── definitions.py
│ │ ├── general.py
│ │ ├── geometry
│ │ │ ├── __init__.py
│ │ │ ├── arc_data.py
│ │ │ ├── point_3d_data.py
│ │ │ ├── point_data.py
│ │ │ └── polygon_data.py
│ │ ├── hfss.py
│ │ ├── hierarchy
│ │ │ ├── __init__.py
│ │ │ ├── component.py
│ │ │ ├── model.py
│ │ │ ├── netlist_model.py
│ │ │ ├── pin_pair_model.py
│ │ │ ├── pingroup.py
│ │ │ ├── s_parameter_model.py
│ │ │ └── spice_model.py
│ │ ├── layers
│ │ │ ├── __init__.py
│ │ │ ├── layer.py
│ │ │ └── stackup_layer.py
│ │ ├── layout
│ │ │ ├── __init__.py
│ │ │ ├── cell.py
│ │ │ ├── layout.py
│ │ │ └── voltage_regulator.py
│ │ ├── layout_validation.py
│ │ ├── modeler.py
│ │ ├── net
│ │ │ ├── __init__.py
│ │ │ ├── differential_pair.py
│ │ │ ├── extended_net.py
│ │ │ ├── net.py
│ │ │ └── net_class.py
│ │ ├── nets.py
│ │ ├── padstacks.py
│ │ ├── ports
│ │ │ ├── __init__.py
│ │ │ └── ports.py
│ │ ├── primitive
│ │ │ ├── __init__.py
│ │ │ ├── bondwire.py
│ │ │ ├── circle.py
│ │ │ ├── padstack_instance.py
│ │ │ ├── path.py
│ │ │ ├── polygon.py
│ │ │ ├── primitive.py
│ │ │ └── rectangle.py
│ │ ├── simulation_setup
│ │ │ ├── __init__.py
│ │ │ ├── adaptive_frequency.py
│ │ │ ├── hfss_advanced_meshing_settings.py
│ │ │ ├── hfss_advanced_settings.py
│ │ │ ├── hfss_dcr_settings.py
│ │ │ ├── hfss_general_settings.py
│ │ │ ├── hfss_settings_options.py
│ │ │ ├── hfss_simulation_settings.py
│ │ │ ├── hfss_simulation_setup.py
│ │ │ ├── hfss_solver_settings.py
│ │ │ ├── mesh_operation.py
│ │ │ ├── raptor_x_advanced_settings.py
│ │ │ ├── raptor_x_general_settings.py
│ │ │ ├── raptor_x_simulation_settings.py
│ │ │ ├── raptor_x_simulation_setup.py
│ │ │ ├── siwave_dcir_simulation_setup.py
│ │ │ ├── siwave_simulation_setup.py
│ │ │ └── sweep_data.py
│ │ ├── siwave.py
│ │ ├── source_excitations.py
│ │ ├── stackup.py
│ │ ├── terminal
│ │ │ ├── __init__.py
│ │ │ ├── bundle_terminal.py
│ │ │ ├── edge_terminal.py
│ │ │ ├── padstack_instance_terminal.py
│ │ │ ├── pingroup_terminal.py
│ │ │ ├── point_terminal.py
│ │ │ └── terminal.py
│ │ └── utility
│ │ │ ├── __init__.py
│ │ │ ├── constants.py
│ │ │ ├── heat_sink.py
│ │ │ ├── hfss_extent_info.py
│ │ │ ├── layout_statistics.py
│ │ │ ├── rlc.py
│ │ │ ├── simulation_configuration.py
│ │ │ ├── sources.py
│ │ │ ├── sweep_data_distribution.py
│ │ │ └── xml_control_file.py
│ ├── edb.py
│ ├── edb_init.py
│ └── rpc_session.py
│ ├── ipc2581
│ ├── __init__.py
│ ├── bom
│ │ ├── __init__.py
│ │ ├── bom.py
│ │ ├── bom_item.py
│ │ ├── characteristics.py
│ │ └── refdes.py
│ ├── content
│ │ ├── __init__.py
│ │ ├── color.py
│ │ ├── content.py
│ │ ├── dictionary_color.py
│ │ ├── dictionary_fill.py
│ │ ├── dictionary_line.py
│ │ ├── entry_color.py
│ │ ├── entry_line.py
│ │ ├── fill.py
│ │ ├── layer_ref.py
│ │ └── standard_geometries_dictionary.py
│ ├── ecad
│ │ ├── __init__.py
│ │ ├── cad_data
│ │ │ ├── __init__.py
│ │ │ ├── assembly_drawing.py
│ │ │ ├── cad_data.py
│ │ │ ├── component.py
│ │ │ ├── drill.py
│ │ │ ├── feature.py
│ │ │ ├── layer.py
│ │ │ ├── layer_feature.py
│ │ │ ├── logical_net.py
│ │ │ ├── outline.py
│ │ │ ├── package.py
│ │ │ ├── padstack_def.py
│ │ │ ├── padstack_hole_def.py
│ │ │ ├── padstack_instance.py
│ │ │ ├── padstack_pad_def.py
│ │ │ ├── path.py
│ │ │ ├── phy_net.py
│ │ │ ├── pin.py
│ │ │ ├── polygon.py
│ │ │ ├── profile.py
│ │ │ ├── stackup.py
│ │ │ ├── stackup_group.py
│ │ │ ├── stackup_layer.py
│ │ │ └── step.py
│ │ ├── cad_header.py
│ │ ├── ecad.py
│ │ └── spec.py
│ ├── history_record.py
│ ├── ipc2581.py
│ └── logistic_header.py
│ ├── misc
│ ├── __init__.py
│ ├── aedtlib_personalib_install.py
│ ├── downloads.py
│ ├── misc.py
│ ├── pyedb.runtimeconfig.json
│ ├── siw_feature_config
│ │ ├── __init__.py
│ │ ├── emc
│ │ │ ├── __init__.py
│ │ │ ├── component_tags.py
│ │ │ ├── net_tags.py
│ │ │ ├── tag_library.py
│ │ │ └── xml_generic.py
│ │ ├── emc_rule_checker_settings.py
│ │ └── xtalk_scan
│ │ │ ├── fd_xtalk_scan_config.py
│ │ │ ├── impedance_scan_config.py
│ │ │ ├── net.py
│ │ │ ├── pins.py
│ │ │ ├── scan_config.py
│ │ │ └── td_xtalk_config.py
│ └── utilities.py
│ ├── modeler
│ └── geometry_operators.py
│ ├── siwave.py
│ ├── siwave_core
│ └── icepak.py
│ └── workflow.py
└── tests
├── __init__.py
├── conftest.py
├── example_models
├── T40
│ └── ANSYS-HSD_V1_dcir.aedb
│ │ └── edb.def
├── TEDB
│ ├── ANSYS-HSD_V1.aedb
│ │ ├── config_adaptive_broadband.json
│ │ ├── edb.def
│ │ ├── simsetup.json
│ │ └── simsetup_custom_sballs.json
│ ├── ANSYS-HSD_V1_0.zip
│ ├── ANSYS-HSD_V1_0_ODB.tgz
│ ├── ANSYS-HSD_V1_cut.aedb
│ │ └── edb.def
│ ├── GRM32ER72A225KA35_25C_0V.sp
│ ├── GRM32_DC0V_25degC.mod
│ ├── GRM32_DC0V_25degC_series.s2p
│ ├── MicrostripSpliGnd.aedb
│ │ ├── edb.def
│ │ └── stride
│ │ │ └── model.index
│ ├── MicrostripSplitGND.aedb
│ │ ├── edb.def
│ │ └── stride
│ │ │ └── model.index
│ ├── Multizone_GroundVoids.aedb
│ │ ├── edb.def
│ │ └── stride
│ │ │ └── model.index
│ ├── Package.aedb
│ │ └── edb.def
│ ├── ansys_pcb_stackup.csv
│ ├── ansys_pcb_stackup.xml
│ ├── bom_example.csv
│ ├── bom_example_2.csv
│ ├── chip.a3dcomp
│ ├── chip.aedb
│ │ └── edb.def
│ ├── chip_flipped_stackup.aedb
│ │ └── edb.def
│ ├── chip_offset.aedb
│ │ └── edb.def
│ ├── chip_solder.aedb
│ │ └── edb.def
│ ├── chip_zoffset.aedb
│ │ └── edb.def
│ ├── chip_zoffset_solder.aedb
│ │ └── edb.def
│ ├── component_no_ref_pins.aedb
│ │ └── edb.def
│ ├── dc_flow.aedb
│ │ └── edb.def
│ ├── edb_config_json
│ │ ├── boundaries.json
│ │ ├── components.json
│ │ ├── general.json
│ │ ├── general.toml
│ │ ├── nets.json
│ │ ├── operations_cutout.json
│ │ ├── package_def.json
│ │ ├── padstacks.json
│ │ ├── pin_groups.json
│ │ ├── ports_circuit.json
│ │ ├── ports_coax.json
│ │ ├── s_parameter.json
│ │ ├── setups_hfss.json
│ │ ├── setups_siwave_dc.json
│ │ ├── setups_siwave_syz.json
│ │ ├── sources.json
│ │ ├── spice.json
│ │ └── stackup.json
│ ├── edb_test_82.dxf
│ ├── edge_ports.aedb
│ │ ├── edb.def
│ │ └── stride
│ │ │ └── model.index
│ ├── emi_scanner.tgs
│ ├── example_arbitrary_wave_ports.aedb
│ │ └── edb.def
│ ├── example_package.aedb
│ │ ├── edb.def
│ │ └── stride
│ │ │ └── model.index
│ ├── galileo_stackup.csv
│ ├── lam_for_bottom_place.aedb
│ │ └── edb.def
│ ├── lam_for_top_place.aedb
│ │ └── edb.def
│ ├── lam_for_top_place_no_setups.aedb
│ │ ├── edb.def
│ │ └── stride
│ │ │ └── model.index
│ ├── lam_with_mold.aedb
│ │ └── edb.def
│ ├── merge_via_4layers.aedb
│ │ └── edb.def
│ ├── multi_cells.aedb
│ │ └── edb.def
│ ├── padstacks.aedb
│ │ └── edb.def
│ ├── simple.aedb
│ │ └── edb.def
│ ├── stackup.json
│ ├── stackup_laminate.xml
│ ├── stackup_renamed.json
│ ├── test_107.aedb
│ │ └── edb.def
│ ├── test_mat.json
│ ├── test_mat2.json
│ ├── test_merge_polygon.aedb
│ │ └── edb.def
│ ├── test_path_length.aedb
│ │ └── edb.def
│ ├── test_pin_group.aedb
│ │ └── edb.def
│ ├── test_sources.aedb
│ │ └── edb.def
│ ├── via_fence_generic_project.aedb
│ │ └── edb.def
│ └── vias_300.aedb
│ │ └── edb.def
├── cad
│ └── GDS
│ │ ├── dummy_layermap.map
│ │ ├── sky130_fictitious_dtc_example.gds
│ │ └── sky130_fictitious_dtc_example_control_no_map.xml
├── convert_and_merge_path.aedb
│ └── edb.def
├── edb_edge_ports.aedb
│ └── edb.def
├── misc
│ ├── points_for_line_detection.csv
│ └── points_for_line_detection_135.csv
├── multi_zone_project.aedb
│ └── edb.def
├── siwave
│ ├── icepak_component.pwrd
│ └── siw_dc.siw
└── syslib
│ └── Materials.amat
├── grpc
├── __init__.py
├── integration
│ └── __init__.py
├── system
│ ├── __init__.py
│ ├── conftest.py
│ ├── stackup_renamed.json
│ ├── test_edb.py
│ ├── test_edb_components.py
│ ├── test_edb_configuration_2p0.py
│ ├── test_edb_definition.py
│ ├── test_edb_differential_pairs.py
│ ├── test_edb_extended_nets.py
│ ├── test_edb_future_features_242.py
│ ├── test_edb_ipc.py
│ ├── test_edb_layout.py
│ ├── test_edb_materials.py
│ ├── test_edb_modeler.py
│ ├── test_edb_net_classes.py
│ ├── test_edb_nets.py
│ ├── test_edb_padstacks.py
│ ├── test_edb_stackup.py
│ ├── test_emi_scanner.py
│ ├── test_siwave.py
│ ├── test_siwave_features.py
│ └── wave_ports.aedb
│ │ ├── edb.def
│ │ └── stride
│ │ └── model.index
└── unit
│ ├── __init__.py
│ ├── conftest.py
│ ├── test_edb.py
│ ├── test_edbsiwave.py
│ ├── test_geometry_oprators.py
│ ├── test_materials.py
│ ├── test_padstack.py
│ ├── test_simulation_configuration.py
│ ├── test_source.py
│ └── test_stackup.py
├── legacy
├── __init__.py
├── integration
│ └── __init__.py
├── system
│ ├── __init__.py
│ ├── conftest.py
│ ├── test_edb.py
│ ├── test_edb_components.py
│ ├── test_edb_configuration_1p0.py
│ ├── test_edb_configuration_2p0.py
│ ├── test_edb_definition.py
│ ├── test_edb_differential_pairs.py
│ ├── test_edb_extended_nets.py
│ ├── test_edb_future_features_242.py
│ ├── test_edb_geometry.py
│ ├── test_edb_ipc.py
│ ├── test_edb_layout.py
│ ├── test_edb_materials.py
│ ├── test_edb_modeler.py
│ ├── test_edb_net_classes.py
│ ├── test_edb_nets.py
│ ├── test_edb_padstacks.py
│ ├── test_edb_stackup.py
│ ├── test_emi_scanner.py
│ ├── test_extensions.py
│ ├── test_siwave.py
│ └── test_siwave_features.py
└── unit
│ ├── __init__.py
│ ├── conftest.py
│ ├── test_clr_module.py
│ ├── test_edb.py
│ ├── test_edbsiwave.py
│ ├── test_geometry_oprators.py
│ ├── test_materials.py
│ ├── test_padstack.py
│ ├── test_simulation_configuration.py
│ ├── test_source.py
│ └── test_stackup.py
├── test_warnings.py
└── utils
└── test_utils.py
/.flake8:
--------------------------------------------------------------------------------
1 | [flake8]
2 | exclude = venv, __init__.py, doc/_build, doc/source/examples
3 | select = W191, W291, W293, W391, E115, E117, E122, E124, E125, E225, E231, E301, E303, E501, F401, F403
4 | count = True
5 | max-complexity = 10
6 | max-line-length = 120
7 | statistics = True
--------------------------------------------------------------------------------
/.github/CODEOWNERS:
--------------------------------------------------------------------------------
1 | .github/* @svandenb-dev @ring630 @SMoraisAnsys
2 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature.yml:
--------------------------------------------------------------------------------
1 | name: 💡 New feature
2 | description: Enhancements to the code
3 | title: "Add ..."
4 | labels: ["enhancement"]
5 | assignees: [""]
6 |
7 | body:
8 |
9 | - type: markdown
10 | attributes:
11 | value: '# 📝 **New Feature**'
12 |
13 | - type: textarea
14 | id: feature-description
15 | attributes:
16 | label: Description of the feature
17 | placeholder: Describe what feature you devised and why it is useful for the project
18 | validations:
19 | required: true
20 |
21 | - type: markdown
22 | attributes:
23 | value: '# 💡 **Implementation**'
24 |
25 | - type: textarea
26 | id: implementation-description
27 | attributes:
28 | label: Steps for implementing the feature
29 | placeholder: Describe how this new feature can be implemented
30 | validations:
31 | required: false
32 |
33 | - type: markdown
34 | attributes:
35 | value: '# 🔗 **References**'
36 |
37 | - type: textarea
38 | id: references
39 | attributes:
40 | label: Useful links and references
41 | placeholder: A list of links and references to help when implementing the feature
42 | validations:
43 | required: false
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/syntax.yml:
--------------------------------------------------------------------------------
1 | name: 💡 Improve API and code syntax
2 | description: Enhance the API design
3 | title: "Improve ..."
4 | labels: ["enhancement"]
5 | assignees: [""]
6 |
7 | body:
8 |
9 | - type: markdown
10 | attributes:
11 | value: '# 📝 **API enhancements**'
12 |
13 | - type: textarea
14 | id: modification-description
15 | attributes:
16 | label: Description of the current limitations
17 | placeholder: Explain what are the limitations of the current API or why its usage is not intuitive.
18 | validations:
19 | required: true
20 |
21 | - type: markdown
22 | attributes:
23 | value: '# 💡 **Implementation**'
24 |
25 | - type: textarea
26 | id: implementation-description
27 | attributes:
28 | label: Code sample expected
29 | placeholder: Provide a code example that fills the gap and meets the expectations.
30 | validations:
31 | required: false
32 |
33 | - type: markdown
34 | attributes:
35 | value: '# 🔗 **References**'
36 |
37 | - type: textarea
38 | id: references
39 | attributes:
40 | label: Useful links and references
41 | placeholder: A list of links and references to help when implementing the feature
42 | validations:
43 | required: false
--------------------------------------------------------------------------------
/.github/dependabot.yml:
--------------------------------------------------------------------------------
1 | version: 2
2 | updates:
3 | - package-ecosystem: "pip" # See documentation for possible values
4 | directory: "/" # Location of package manifests
5 | schedule:
6 | interval: "daily"
7 | reviewers:
8 | - "SMoraisAnsys"
9 | assignees:
10 | - "pyansys-ci-bot"
11 | labels:
12 | - "maintenance"
13 | - "dependencies"
14 | commit-message:
15 | prefix: "BUILD"
16 |
17 | - package-ecosystem: "github-actions"
18 | directory: "/"
19 | schedule:
20 | interval: "daily"
21 | reviewers:
22 | - "SMoraisAnsys"
23 | assignees:
24 | - "pyansys-ci-bot"
25 | labels:
26 | - "maintenance"
27 | - "dependencies"
28 | commit-message:
29 | prefix: "BUILD"
30 |
--------------------------------------------------------------------------------
/.github/labeler.yml:
--------------------------------------------------------------------------------
1 | documentation:
2 | - changed-files:
3 | - any-glob-to-any-file: ['doc/source/**/*', 'examples/**/*', 'README.md']
4 |
5 | maintenance:
6 | - changed-files:
7 | - any-glob-to-any-file: ['.github/**/*', 'codecov.yml', '.flake8', 'pyproject.toml']
8 |
9 | dependencies:
10 | - changed-files:
11 | - any-glob-to-any-file: ['pyproject.toml']
12 |
13 | ci/cd:
14 | - changed-files:
15 | - any-glob-to-any-file: ['docker/**/*', '.github/**/*', '.ci/**/*']
16 |
17 | testing:
18 | - changed-files:
19 | - any-glob-to-any-file: ['tests/**/*',]
20 |
21 | grpc-transition:
22 | - changed-files:
23 | - any-glob-to-any-file: ['src/pyedb/dotnet/database/*',]
24 |
--------------------------------------------------------------------------------
/.github/labels.yml:
--------------------------------------------------------------------------------
1 | - name: bug
2 | description: Something isn't working
3 | color: d42a34
4 |
5 | - name: dependencies
6 | description: Related with project dependencies
7 | color: ffc0cb
8 |
9 | - name: documentation
10 | description: Improvements or additions to documentation
11 | color: 0677ba
12 |
13 | - name: enhancement
14 | description: New features or code improvements
15 | color: FFD827
16 |
17 | - name: good first issue
18 | description: Easy to solve for newcomers
19 | color: 62ca50
20 |
21 | - name: maintenance
22 | description: Package and maintenance related
23 | color: f78c37
24 |
25 | - name: release
26 | description: Anything related to an incoming release
27 | color: ffffff
28 |
29 | - name: testing
30 | description: Anything related to testing
31 | color: 5802B8
32 |
33 | - name: ci/cd
34 | description: ""
35 | color: b5f226
36 |
37 | - name: grpc-transition
38 | description: Changes that need to be included in gRPC transition
39 | color: A79962
--------------------------------------------------------------------------------
/.github/workflows/label.yml:
--------------------------------------------------------------------------------
1 | name: Labeler
2 | on:
3 | pull_request:
4 | push:
5 | branches: [ main ]
6 | paths:
7 | - '../labels.yml'
8 |
9 | concurrency:
10 | group: ${{ github.workflow }}-${{ github.ref }}
11 | cancel-in-progress: true
12 |
13 | jobs:
14 |
15 | label-syncer:
16 | name: Syncer
17 | runs-on: ubuntu-latest
18 | steps:
19 | - uses: actions/checkout@v4
20 | - uses: micnncim/action-label-syncer@v1
21 | env:
22 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
23 |
24 | labeler:
25 | name: Set labels
26 | needs: [label-syncer]
27 | permissions:
28 | contents: read
29 | pull-requests: write
30 | runs-on: ubuntu-latest
31 | steps:
32 |
33 | # Label based on modified files
34 | - name: Label based on changed files
35 | uses: actions/labeler@v5
36 | with:
37 | repo-token: "${{ secrets.GITHUB_TOKEN }}"
38 |
--------------------------------------------------------------------------------
/AUTHORS:
--------------------------------------------------------------------------------
1 | # This is the list of {project-name}'s significant contributors.
2 | #
3 | # This file does not necessarily list everyone who has contributed code.
4 | #
5 | # For contributions made under a Corporate CLA, the organization is
6 | # added to this file.
7 | #
8 | # If you have contributed to the repository and want to be added to this file,
9 | # submit a request.
10 | #
11 | #
12 | ANSYS, Inc.
13 |
--------------------------------------------------------------------------------
/CONTRIBUTORS.md:
--------------------------------------------------------------------------------
1 | # Contributors
2 |
3 | ## Project Lead
4 |
5 | * [Simon Vandenbrouck](https://github.com/svandenb-dev)
6 |
7 | ## Individual Contributors
8 |
9 | * [Alberto Di Maria](https://github.com/Alberto-DM)
10 | * [amichel0205](https://github.com/amichel0205)
11 | * [boyang2022](https://github.com/boyang2022)
12 | * [Dipin](https://github.com/dipinknair)
13 | * [drewm102](https://github.com/drewm102)
14 | * [Felipe Castro](https://github.com/felipeescastro)
15 | * [geofetsis](https://github.com/geofetsis)
16 | * [gfetsis](https://github.com/gfetsis)
17 | * [gkorompi](https://github.com/gkorompi)
18 | * [Hui Zhou](https://github.com/hui-zhou-a)
19 | * [Isaac Waldron](https://github.com/isaacwaldron)
20 | * [JDufrenneAnsys](https://github.com/JDufrenneAnsys)
21 | * [Kathy Pippert](https://github.com/PipKat)
22 | * [Massimo Capodiferro](https://github.com/maxcapodi78)
23 | * [Maxime Rey](https://github.com/MaxJPRey)
24 | * [Roberto Pastor Muela](https://github.com/RobPasMue)
25 | * [Samuel Lopez](https://github.com/Samuelopez-ansys)
26 | * [Skanda Kotethota](https://github.com/skandak-ansys)
27 | * [Sébastien Morais](https://github.com/SMoraisAnsys)
28 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2023 ANSYS, Inc. All rights reserved.
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 |
--------------------------------------------------------------------------------
/Makefile:
--------------------------------------------------------------------------------
1 | # Simple makefile to simplify repetitive build env management tasks under posix
2 |
3 | CODESPELL_DIRS ?= ./src
4 | CODESPELL_SKIP ?= "*.pyc,*.aedt,*.xml,*.txt,*.gif,*.png,*.jpg,*.js,*.html,*.doctree,*.ttf,*.woff,*.woff2,*.eot,*.mp4,*.inv,*.pickle,*.ipynb,flycheck*,./.git/*,./.hypothesis/*,*.yml,./docs/build/*,./docs/images/*,./dist/*,*~,.hypothesis*,./docs/source/examples/*,*cover,*.dat,*.mac,\#*,PKG-INFO,*.mypy_cache/*,*.xml,*.aedt,*.svg"
5 | CODESPELL_IGNORE ?= "doc/styles/config/vocabularies/ANSYS/accept.txt"
6 |
7 | all: doctest flake8
8 |
9 | doctest: codespell
10 |
11 | codespell:
12 | @echo "Running codespell"
13 | @codespell $(CODESPELL_DIRS) -S $(CODESPELL_SKIP) -I $(CODESPELL_IGNORE)
14 |
15 | flake8:
16 | @echo "Running flake8"
17 | @flake8 .
--------------------------------------------------------------------------------
/codecov.yml:
--------------------------------------------------------------------------------
1 | comment:
2 | layout: "diff"
3 | behavior: default
4 |
5 | coverage:
6 | status:
7 | project: false
8 | patch:
9 | default:
10 | # basic
11 | target: 85%
12 | if_not_found: success
13 | if_ci_failed: error
14 | if_no_uploads: error
15 | ignore:
16 | - "examples" # ignore folders and all its contents
17 | - "tests" # ignore folders and all its contents
18 | - "src/pyedb/legacy/database/siwave.py" # ignore folders and all its contents
19 | - "src/pyedb/misc/*.py" # ignore folders and all its contents
20 |
--------------------------------------------------------------------------------
/doc/.vale.ini:
--------------------------------------------------------------------------------
1 | # Core settings
2 | # =============
3 |
4 | # Location of our `styles`
5 | StylesPath = "styles"
6 |
7 | # The options are `suggestion`, `warning`, or `error` (defaults to “warning”).
8 | MinAlertLevel = warning
9 |
10 | # By default, `code` and `tt` are ignored.
11 | IgnoredScopes = code, tt
12 |
13 | # By default, `script`, `style`, `pre`, and `figure` are ignored.
14 | SkippedScopes = script, style, pre, figure
15 |
16 | # WordTemplate specifies what Vale will consider to be an individual word.
17 | WordTemplate = \b(?:%s)\b
18 |
19 | # List of Packages to be used for our guidelines
20 | Packages = Google
21 |
22 | # Define the Ansys vocabulary
23 | Vocab = ANSYS
24 |
25 | [*.{md,rst}]
26 |
27 | # Apply the following styles
28 | BasedOnStyles = Vale, Google
29 |
30 | # Removing Google-specific rule - Not applicable under some circumstances
31 | Google.WordList = NO
32 | Google.Colons = NO
33 |
34 | # Removing Google-specific rule - Update severity level to error on rules with default warnings
35 | # This should prevent external users and dependabot to be the only one having code-style action failing
36 | Google.Ellipses = error
37 | Google.FirstPerson = error
38 | Google.Headings = error
39 | Google.HeadingPunctuation = error
40 | Google.OxfordComma = error
41 | Google.Spelling = error
42 | Google.We = error
43 | Google.Will = error
44 | Google.WordList = error
45 |
--------------------------------------------------------------------------------
/doc/Makefile:
--------------------------------------------------------------------------------
1 | # Minimal makefile for Sphinx documentation
2 | #
3 |
4 | # You can set these variables from the command line, and also
5 | # from the environment for the first two.
6 | SPHINXOPTS ?= -j auto --color
7 | SPHINXBUILD ?= sphinx-build
8 | SOURCEDIR = source
9 | BUILDDIR = _build
10 |
11 | # Put it first so that "make" without argument is like "make help".
12 | help:
13 | @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
14 |
15 | .PHONY: help Makefile
16 |
17 | .install-deps:
18 | @pip freeze | grep -q "pypandoc_binary" && is_pypandoc_binary_installed="yes" || is_pypandoc_binary_installed="no"
19 | @if [ "${ON_CI}" = "True" ] && [ "$$is_pypandoc_binary_installed" != "yes" ]; then \
20 | @echo "Removing pypandoc to avoid conflicts with pypandoc-binary needed for CI/CD"; \
21 | pip uninstall --yes pypandoc; \
22 | @echo "Installing pypandoc-binary"; \
23 | pip install pypandoc-binary==1.13; \
24 | fi
25 |
26 | clean:
27 | rm -rf $(BUILDDIR)/*
28 | rm -rf examples/
29 | find . -type d -name "_autosummary" -exec rm -rf {} +
30 |
31 | # Catch-all target: route all unknown targets to Sphinx using the new
32 | # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
33 | %: .install-deps Makefile
34 | @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
35 |
36 | # build html docs in parallel using all available CPUs
37 | # WARNING: this is a resource hog
38 | html: .install-deps
39 | $(SPHINXBUILD) -M html "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
40 |
41 | # Build pdf docs.
42 | pdf: .install-deps
43 | @$(SPHINXBUILD) -M latex "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
44 | cd $(BUILDDIR)/latex && latexmk -r latexmkrc -pdf *.tex -interaction=nonstopmode || true
45 | (test -f $(BUILDDIR)/latex/pyedb.pdf && echo pdf exists) || exit 1
46 |
--------------------------------------------------------------------------------
/doc/clean_gallery.bat:
--------------------------------------------------------------------------------
1 | rem This batch script removes remove gallery examples generated from
2 | rem the sphinx gallery
3 | rmdir /s /q %~dp0\source\examples\
4 |
--------------------------------------------------------------------------------
/doc/print_errors.py:
--------------------------------------------------------------------------------
1 | """Read errors output from a Sphinx build and remove duplicate groups."""
2 | import os
3 | import pathlib
4 | import sys
5 |
6 | sys.tracebacklimit = 0
7 | my_path = pathlib.Path(__file__).parent.resolve()
8 |
9 | errors = set()
10 | error_file = os.path.join(my_path, "build_errors.txt")
11 | if os.path.isfile(error_file):
12 | with open(error_file) as fid:
13 | group = []
14 | for line in fid.readlines():
15 | line = line.strip()
16 | if line:
17 | group.append(line)
18 | else:
19 | errors.add("\n".join(group))
20 | group = []
21 |
22 | for error in list(errors):
23 | print(error)
24 | print()
25 |
26 | # There should be no errors here since sphinx will have exited
27 | print()
28 | if errors:
29 | raise Exception(f"Sphinx reported {len(errors)} warnings\n\n")
30 |
31 | print(f"Sphinx Reported no warnings\n\n")
32 |
--------------------------------------------------------------------------------
/doc/source/_static/README.md:
--------------------------------------------------------------------------------
1 | ### _static
2 |
3 | Place custom CSS files in this folder.
4 |
5 | Emphasis should be on improving the ``ansys-sphinx-theme`` and
6 | having a unified "feel" across the PyAnsys packages.
7 |
--------------------------------------------------------------------------------
/doc/source/_static/assets/download/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore
3 | !README.md
--------------------------------------------------------------------------------
/doc/source/_static/assets/download/README.md:
--------------------------------------------------------------------------------
1 | Downloadable assets are stored here.
2 |
--------------------------------------------------------------------------------
/doc/source/_static/assets/index_api.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/doc/source/_static/assets/index_api.png
--------------------------------------------------------------------------------
/doc/source/_static/assets/index_api.svg:
--------------------------------------------------------------------------------
1 |
2 |
4 |
24 |
--------------------------------------------------------------------------------
/doc/source/_static/assets/index_contribute.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/doc/source/_static/assets/index_contribute.png
--------------------------------------------------------------------------------
/doc/source/_static/assets/index_contribute.svg:
--------------------------------------------------------------------------------
1 |
2 |
4 |
20 |
--------------------------------------------------------------------------------
/doc/source/_static/assets/index_examples.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/doc/source/_static/assets/index_examples.png
--------------------------------------------------------------------------------
/doc/source/_static/assets/index_examples.svg:
--------------------------------------------------------------------------------
1 |
2 |
4 |
23 |
--------------------------------------------------------------------------------
/doc/source/_static/assets/index_getting_started.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/doc/source/_static/assets/index_getting_started.png
--------------------------------------------------------------------------------
/doc/source/_static/assets/index_getting_started.svg:
--------------------------------------------------------------------------------
1 |
2 |
4 |
26 |
--------------------------------------------------------------------------------
/doc/source/_static/assets/index_user_guide.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/doc/source/_static/assets/index_user_guide.png
--------------------------------------------------------------------------------
/doc/source/_static/connector_example.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/doc/source/_static/connector_example.png
--------------------------------------------------------------------------------
/doc/source/_static/custom.css:
--------------------------------------------------------------------------------
1 | @import "../ansys-sphinx-theme.css";
2 |
3 | .col-md-3 {
4 | flex: 0 0 30%;
5 | max-width: 30%;
6 | }
7 | .col-xl-7 {
8 | flex: 0 0 53.33333%;
9 | max-width: 53.33333%;
10 | }
11 |
12 | .bd-toc {
13 | padding-top: 5em;
14 | }
15 |
16 | /* Remove once implemented in ansys-sphinx-theme*/
17 |
18 | .sd-card .sd-card-img-top {
19 | height: 100px;
20 | width: 100px;
21 | margin-left: auto;
22 | margin-right: auto;
23 | }
24 |
25 | .sd-card .sd-card-header {
26 | border: none;
27 | background-color:white;
28 | color: #150458 !important;
29 | font-size: var(--pst-font-size-h5);
30 | font-weight: bold;
31 | padding: .1rem 0rem 0.5rem 0rem;
32 | }
33 |
34 | .sd-card .sd-card-footer .sd-card-text {
35 | max-width: 220px;
36 | margin-left: auto;
37 | margin-right: auto;
38 | }
39 |
40 | nav.bd-links ul li.toctree-l1 > a {
41 | font-size: .90rem;
42 | }
43 |
44 | nav.bd-links ul li.toctree-l2 > a {
45 | font-size: .85rem;
46 | text-indent: 1px;
47 | }
48 | nav.bd-links ul li.toctree-l3 > a {
49 | font-size: .85rem;
50 | text-indent: 2px;
51 | }
52 |
53 | nav.bd-links ul li.toctree-l4 > a {
54 | font-size: .8rem;
55 | text-indent: 3px;
56 | }
57 |
--------------------------------------------------------------------------------
/doc/source/_static/diff_via.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/doc/source/_static/diff_via.png
--------------------------------------------------------------------------------
/doc/source/_static/edb_example_12_sma_connector_on_board.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/doc/source/_static/edb_example_12_sma_connector_on_board.png
--------------------------------------------------------------------------------
/doc/source/_static/parametrized_design.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/doc/source/_static/parametrized_design.png
--------------------------------------------------------------------------------
/doc/source/_static/thumbnails/101_getting_started.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/doc/source/_static/thumbnails/101_getting_started.png
--------------------------------------------------------------------------------
/doc/source/api/CoreEdb.rst:
--------------------------------------------------------------------------------
1 | EDB manager
2 | ===========
3 | An AEDB database is a folder that contains the database representing any part of a PCB.
4 | It can be opened and edited using the ``Edb`` class.
5 |
6 | .. image:: ../resources/3dlayout_1.png
7 | :width: 800
8 | :alt: HFSS 3D Layout is the tool used to visualize EDB content.
9 |
10 |
11 | .. currentmodule:: pyedb.dotnet
12 | .. autosummary::
13 | :toctree: _autosummary
14 |
15 | edb.Edb
16 |
17 |
18 | .. code:: python
19 |
20 | from pyedb import Edb
21 |
22 | # this call returns the Edb class initialized on 2024R2
23 | edb = Edb(myedb, edbversion="2024.2")
24 |
25 | ...
26 |
27 |
28 | EDB modules
29 | ~~~~~~~~~~~
30 | This section lists the core EDB modules for reading and writing information
31 | to AEDB files.
32 |
33 |
34 | .. currentmodule:: pyedb.dotnet.database
35 |
36 | .. autosummary::
37 | :toctree: _autosummary
38 | :nosignatures:
39 |
40 | components.Components
41 | hfss.EdbHfss
42 | layout_validation.LayoutValidation
43 | materials.Materials
44 | modeler.Modeler
45 | nets.EdbNets
46 | edb_data.padstacks_data.EDBPadstack
47 | siwave.EdbSiwave
48 | stackup.Stackup
49 |
50 |
51 |
52 | .. code:: python
53 |
54 | from pyedb import Edb
55 |
56 | edb = Edb(myedb, edbversion="2023.1")
57 |
58 | # this call returns the EdbHfss Class
59 | comp = edb.hfss
60 |
61 | # this call returns the Components Class
62 | comp = edb.components
63 |
64 | # this call returns the EdbSiwave Class
65 | comp = edb.siwave
66 |
67 | # this call returns the EdbPadstacks Class
68 | comp = edb.padstacks
69 |
70 | # this call returns the Stackup Class
71 | comp = edb.stackup
72 |
73 | # this call returns the Materials Class
74 | comp = edb.materials
75 |
76 | # this call returns the EdbNets Class
77 | comp = edb.nets
78 |
79 | ...
80 |
--------------------------------------------------------------------------------
/doc/source/api/SiWave.rst:
--------------------------------------------------------------------------------
1 | SIwave manager
2 | ==============
3 | `SIwave `_ is a specialized tool
4 | for power integrity, signal integrity, and EMI analysis of IC packages and PCB. This tool
5 | solves power delivery systems and high-speed channels in electronic devices. It can be
6 | accessed from PyEDB in Windows only. All setups can be implemented through EDB API.
7 |
8 | .. image:: ../resources/siwave.png
9 | :width: 800
10 | :alt: EdbSiwave
11 | :target: https://www.ansys.com/products/electronics/ansys-siwave
12 |
13 |
14 | .. currentmodule:: pyedb.siwave
15 |
16 | .. autosummary::
17 | :toctree: _autosummary
18 |
19 | Siwave
20 |
21 |
22 | .. code:: python
23 |
24 | from pyedb.siwave import Siwave
25 |
26 | # this call returns the Edb class initialized on 2024 R2
27 | siwave = Siwave("2024.2")
28 | siwave.open_project("pyproject.siw")
29 | siwave.export_element_data("mydata.txt")
30 | siwave.close_project()
31 | ...
32 |
33 | .. currentmodule:: pyedb.siwave_core.icepak
34 | Icepak
35 |
36 |
--------------------------------------------------------------------------------
/doc/source/api/SimulationConfigurationEdb.rst:
--------------------------------------------------------------------------------
1 | Simulation configuration
2 | ========================
3 | These classes are the containers of simulation configuration constructors for the EDB.
4 |
5 |
6 | .. currentmodule:: pyedb.dotnet.database.edb_data.simulation_configuration
7 |
8 | .. autosummary::
9 | :toctree: _autosummary
10 | :nosignatures:
11 |
12 | SimulationConfiguration
13 | SimulationConfigurationDc
14 | SimulationConfigurationAc
15 | SimulationConfigurationBatch
16 |
17 |
18 |
19 | .. code:: python
20 |
21 | from pyedb import Edb
22 |
23 | edbapp = Edb(myedb, edbversion="2023.1")
24 |
25 | sim_setup = edbapp.new_simulation_configuration()
26 | sim_setup.solver_type = sim_setup.SOLVER_TYPE.SiwaveSYZ
27 | sim_setup.batch_solve_settings.cutout_subdesign_expansion = 0.01
28 | sim_setup.batch_solve_settings.do_cutout_subdesign = True
29 | sim_setup.use_default_cutout = False
30 | sim_setup.batch_solve_settings.signal_nets = [
31 | "PCIE0_RX0_P",
32 | "PCIE0_RX0_N",
33 | "PCIE0_TX0_P_C",
34 | "PCIE0_TX0_N_C",
35 | "PCIE0_TX0_P",
36 | "PCIE0_TX0_N",
37 | ]
38 | sim_setup.batch_solve_settings.components = ["U2A5", "J2L1"]
39 | sim_setup.batch_solve_settings.power_nets = ["GND"]
40 | sim_setup.ac_settings.start_freq = "100Hz"
41 | sim_setup.ac_settings.stop_freq = "6GHz"
42 | sim_setup.ac_settings.step_freq = "10MHz"
43 |
44 | sim_setup.export_json(os.path.join(project_path, "configuration.json"))
45 | edbapp.build_simulation_project(sim_setup)
46 |
47 | ...
48 |
--------------------------------------------------------------------------------
/doc/source/api/XmlControlFile.rst:
--------------------------------------------------------------------------------
1 | XML control file
2 | ================
3 | Convert a technology file to EDB control file.
4 |
5 |
6 | .. currentmodule:: pyedb.dotnet.database.edb_data.control_file
7 |
8 | .. autosummary::
9 | :toctree: _autosummary
10 | :nosignatures:
11 |
12 | ControlProperty
13 | ControlFileMaterial
14 | ControlFileDielectric
15 | ControlFileLayer
16 | ControlFileVia
17 | ControlFileStackup
18 | ControlFileImportOptions
19 | ControlExtent
20 | ControlCircuitPt
21 | ControlFileComponent
22 | ControlFileComponents
23 |
24 |
25 |
--------------------------------------------------------------------------------
/doc/source/api/edb_data/EdbValue.rst:
--------------------------------------------------------------------------------
1 | EDB value
2 | =========
3 | Class managing EDB Value.
4 |
5 |
6 | .. currentmodule:: pyedb.dotnet.database.edb_data.edbvalue
7 |
8 | .. autosummary::
9 | :toctree: _autosummary
10 | :nosignatures:
11 |
12 | EdbValue
13 |
--------------------------------------------------------------------------------
/doc/source/api/edb_data/HfssExtentInfo.rst:
--------------------------------------------------------------------------------
1 | HFSS extent info
2 | ================
3 | These class is the containers of HFSS Extent.
4 |
5 |
6 | .. currentmodule:: pyedb.dotnet.database.edb_data.hfss_extent_info
7 |
8 | .. autosummary::
9 | :toctree: _autosummary
10 | :nosignatures:
11 |
12 | HfssExtentInfo
13 |
--------------------------------------------------------------------------------
/doc/source/api/edb_data/LayerData.rst:
--------------------------------------------------------------------------------
1 | Stackup & layers
2 | ================
3 | These classes are the containers of the layer and stackup manager of the EDB API.
4 |
5 |
6 | .. code:: python
7 |
8 | from pyedb import Edb
9 |
10 | edb = Edb(myedb, edbversion="2023.1")
11 |
12 | # this call returns the EDBLayers class
13 | layer = edb.stackup.stackup_layers
14 |
15 | # this call returns the EDBLayer class
16 | layer = edb.stackup["TOP"]
17 | ...
18 |
19 |
20 | .. currentmodule:: pyedb.dotnet.database.edb_data.layer_data
21 |
22 | .. autosummary::
23 | :toctree: _autosummary
24 | :nosignatures:
25 |
26 |
27 | LayerEdbClass
28 |
29 |
30 |
--------------------------------------------------------------------------------
/doc/source/api/edb_data/NetData.rst:
--------------------------------------------------------------------------------
1 | Nets
2 | ====
3 |
4 | Net properties
5 | --------------
6 | The following class is the container of data management for nets, extended nets and differential pairs.
7 |
8 |
9 | .. currentmodule:: pyedb.dotnet.database.edb_data.nets_data
10 |
11 | .. autosummary::
12 | :toctree: _autosummary
13 | :nosignatures:
14 |
15 | EDBNetsData
16 | EDBNetClassData
17 | EDBExtendedNetData
18 | EDBDifferentialPairData
19 |
20 | .. code:: python
21 |
22 | from pyedb import Edb
23 |
24 | edb = Edb(myedb, edbversion="2024.2")
25 |
26 | edb.nets["M_MA<6>"].delete()
27 | edb.net_classes
28 | edb.differential_pairs
29 | edb.extended_nets
30 |
31 |
32 | ...
--------------------------------------------------------------------------------
/doc/source/api/edb_data/PadstackData.rst:
--------------------------------------------------------------------------------
1 | vias and padstacks
2 | ==================
3 |
4 | Instances and definitions
5 | -------------------------
6 | These classes are the containers of data management for padstacks instances and padstack definitions.
7 |
8 |
9 | .. currentmodule:: pyedb.dotnet.database.edb_data.padstacks_data
10 |
11 | .. autosummary::
12 | :toctree: _autosummary
13 | :nosignatures:
14 |
15 | EDBPadProperties
16 | EDBPadstack
17 | EDBPadstackInstance
18 |
--------------------------------------------------------------------------------
/doc/source/api/edb_data/PortsData.rst:
--------------------------------------------------------------------------------
1 | Ports
2 | =====
3 | These classes are the containers of ports methods of the EDB for both HFSS and SIwave.
4 |
5 | .. autosummary::
6 | :toctree: _autosummary
7 |
8 | .. code:: python
9 |
10 | from pyedb import Edb
11 |
12 | edb = Edb(myedb, edbversion="2023.1")
13 |
14 | # this call returns the EDB excitations dictionary
15 | edb.ports
16 | ...
17 |
18 |
19 | .. currentmodule:: pyedb.dotnet.database.edb_data.ports
20 |
21 | .. autosummary::
22 | :toctree: _autosummary
23 | :nosignatures:
24 |
25 | GapPort
26 | WavePort
27 |
--------------------------------------------------------------------------------
/doc/source/api/edb_data/PrimitivesData.rst:
--------------------------------------------------------------------------------
1 | Modeler & primitives
2 | ====================
3 | These classes are the containers of primitives and all relative methods.
4 | Primitives are planes, lines, rectangles, and circles.
5 |
6 |
7 | Primitives properties
8 | ---------------------
9 | These classes are the containers of data management for primitives and arcs.
10 |
11 | .. currentmodule:: pyedb.dotnet.database.edb_data.primitives_data
12 |
13 | .. autosummary::
14 | :toctree: _autosummary
15 | :nosignatures:
16 |
17 |
18 | EDBArcs
19 | EdbPolygon
20 |
21 |
22 | .. code:: python
23 |
24 | from pyedb import Edb
25 |
26 | edb = Edb(myedb, edbversion="2023.1")
27 |
28 | polygon = edbapp.modeler.polygons[0]
29 | polygon.is_void
30 | poly2 = polygon.clone()
31 |
32 | ...
33 |
--------------------------------------------------------------------------------
/doc/source/api/edb_data/RaptorXSimulationSetup.rst:
--------------------------------------------------------------------------------
1 | RaptorX simulation setup
2 | ========================
3 | These classes are the containers of RaptorX simulation setup.
4 |
5 |
6 | .. currentmodule:: pyedb.dotnet.database.edb_data.raptor_x_simulation_setup_data
7 |
8 | .. autosummary::
9 | :toctree: _autosummary
10 | :nosignatures:
11 |
12 | RaptorXSimulationSetup
13 | RaptorXSimulationSettings
14 | RaptorXGeneralSettings
15 | RaptorXSimulationAdvancedSettings
--------------------------------------------------------------------------------
/doc/source/api/edb_data/SourceData.rst:
--------------------------------------------------------------------------------
1 | Sources and excitations
2 | =======================
3 | These classes are the containers of sources methods of the EDB for both HFSS and SIwave.
4 |
5 |
6 | .. code:: python
7 |
8 | from pyedb import Edb
9 |
10 | edb = Edb(myedb, edbversion="2024.2")
11 |
12 | # this call returns the EDB excitations dictionary
13 | edb.excitations
14 | ...
15 |
16 |
17 | .. currentmodule:: pyedb.dotnet.database.edb_data.sources
18 |
19 | .. autosummary::
20 | :toctree: _autosummary
21 | :nosignatures:
22 |
--------------------------------------------------------------------------------
/doc/source/api/edb_data/Utilities.rst:
--------------------------------------------------------------------------------
1 | EDB utilities
2 | =============
3 | Class managing EDB utilities.
4 |
5 |
6 | .. currentmodule:: pyedb.dotnet.database.edb_data.utilities
7 |
8 | .. autosummary::
9 | :toctree: _autosummary
10 | :nosignatures:
11 |
12 | EDBStatistics
13 |
--------------------------------------------------------------------------------
/doc/source/api/edb_data/Variables.rst:
--------------------------------------------------------------------------------
1 | Variables
2 | =========
3 | Class managing EDB Variables.
4 |
5 |
6 | .. currentmodule:: pyedb.dotnet.database.edb_data.variables
7 |
8 | .. autosummary::
9 | :toctree: _autosummary
10 | :nosignatures:
11 |
12 | Variable
13 |
--------------------------------------------------------------------------------
/doc/source/api/edb_data/index.rst:
--------------------------------------------------------------------------------
1 | ================
2 | EDB data classes
3 | ================
4 |
5 | This section describes EDB data classes.
6 |
7 |
8 | .. toctree::
9 | :maxdepth: 2
10 |
11 | EdbValue
12 | HfssExtentInfo
13 | LayerData
14 | NetData
15 | PadstackData
16 | PortsData
17 | PrimitivesData
18 | RaptorXSimulationSetup
19 | SourceData
20 | Utilities
21 | Variables
22 |
23 |
--------------------------------------------------------------------------------
/doc/source/api/index.rst:
--------------------------------------------------------------------------------
1 | =============
2 | API reference
3 | =============
4 |
5 | This section describes EDB functions, classes, and methods
6 | for EDB apps and modules. Use the search feature or click links
7 | to view API documentation.
8 |
9 | The PyEDB API includes classes for apps and modules. You must initialize the
10 | ``Edb`` class to get access to all modules and methods. All other classes and
11 | methods are inherited into the ``Edb`` class.
12 |
13 | If EDB is launched within the ``HfssdLayout`` class, EDB is accessible in read-only mode.
14 |
15 |
16 | .. image:: ../resources/edb_intro.png
17 | :width: 800
18 | :alt: EDB apps
19 | :target: https://www.ansys.com/applications/pcbs-ics-ic-packages
20 |
21 |
22 | **Example**
23 |
24 | .. code:: python
25 |
26 | from pyedb import Edb
27 |
28 | edb = Edb("my_project.aedb", edbversion="2023.1")
29 | edb.core_components.components["R1"].r_value = 40
30 | edb.close_edb()
31 |
32 |
33 | .. toctree::
34 | :maxdepth: 2
35 |
36 | CoreEdb
37 | edb_data/index
38 | sim_setup_data/data/index
39 | sim_setup_data/io/index
40 | utilities/index
41 | SiWave
42 | SimulationConfigurationv2
43 |
44 |
45 |
--------------------------------------------------------------------------------
/doc/source/api/sim_setup_data/data/adaptive_frequency_data.rst:
--------------------------------------------------------------------------------
1 | Adaptive frequency data
2 | =======================
3 | This class is the container of HFSS adaptive frequency data.
4 |
5 |
6 | .. currentmodule:: pyedb.dotnet.database.sim_setup_data.data.adaptive_frequency_data
7 |
8 | .. autosummary::
9 | :toctree: _autosummary
10 | :nosignatures:
11 |
12 |
13 | AdaptiveFrequencyData
14 |
15 |
16 |
--------------------------------------------------------------------------------
/doc/source/api/sim_setup_data/data/index.rst:
--------------------------------------------------------------------------------
1 | =====================
2 | Simulation setup data
3 | =====================
4 |
5 | This section describes Simulation setup data.
6 |
7 |
8 | .. toctree::
9 | :maxdepth: 2
10 |
11 | adaptive_frequency_data
12 | mesh_operation
13 | settings
14 | sim_setup_info
15 | simulation_settings
16 | siw_dc_ir_settings
17 | sweep_data
--------------------------------------------------------------------------------
/doc/source/api/sim_setup_data/data/mesh_operation.rst:
--------------------------------------------------------------------------------
1 | Mesh operation
2 | ==============
3 | This class is the container of HFSS mesh operation.
4 |
5 |
6 | .. currentmodule:: pyedb.dotnet.database.sim_setup_data.data.mesh_operation
7 |
8 | .. autosummary::
9 | :toctree: _autosummary
10 | :nosignatures:
11 |
12 |
13 | MeshOpType
14 | MeshOperation
15 | LengthMeshOperation
16 | SkinDepthMeshOperation
17 |
18 |
19 |
--------------------------------------------------------------------------------
/doc/source/api/sim_setup_data/data/settings.rst:
--------------------------------------------------------------------------------
1 | HFSS simulation setup settings
2 | ==============================
3 | These classes are the containers of HFSS simulation setup settings.
4 |
5 |
6 | .. currentmodule:: pyedb.dotnet.database.sim_setup_data.data.settings
7 |
8 | .. autosummary::
9 | :toctree: _autosummary
10 | :nosignatures:
11 |
12 |
13 | AdaptiveSettings
14 | DefeatureSettings
15 | AdvancedMeshSettings
16 | ViaSettings
17 | CurveApproxSettings
18 | DcrSettings
19 | HfssPortSettings
20 | HfssSolverSettings
21 |
22 |
23 |
--------------------------------------------------------------------------------
/doc/source/api/sim_setup_data/data/sim_setup_info.rst:
--------------------------------------------------------------------------------
1 | Simulation setup info
2 | ======================
3 | This class is the container of simulation setup info.
4 |
5 |
6 | .. currentmodule:: pyedb.dotnet.database.sim_setup_data.data.sim_setup_info
7 |
8 | .. autosummary::
9 | :toctree: _autosummary
10 | :nosignatures:
11 |
12 |
13 | SimSetupInfo
14 |
15 |
16 |
--------------------------------------------------------------------------------
/doc/source/api/sim_setup_data/data/simulation_settings.rst:
--------------------------------------------------------------------------------
1 | Simulation settings
2 | ===================
3 | These classes are the containers of simulation settings.
4 |
5 |
6 | .. currentmodule:: pyedb.dotnet.database.sim_setup_data.data.simulation_settings
7 |
8 | .. autosummary::
9 | :toctree: _autosummary
10 | :nosignatures:
11 |
12 |
13 | BaseSimulationSettings
14 | SimulationSettings
15 | HFSSSimulationSettings
16 | HFSSPISimulationSettings
17 |
18 |
19 |
--------------------------------------------------------------------------------
/doc/source/api/sim_setup_data/data/siw_dc_ir_settings.rst:
--------------------------------------------------------------------------------
1 | SIwave DC-IR settings
2 | =====================
3 | This class is the container of SIwave DC-IR settings.
4 |
5 |
6 | .. currentmodule:: pyedb.dotnet.database.sim_setup_data.data.siw_dc_ir_settings
7 |
8 | .. autosummary::
9 | :toctree: _autosummary
10 | :nosignatures:
11 |
12 |
13 | SiwaveDCIRSettings
14 |
15 |
16 |
--------------------------------------------------------------------------------
/doc/source/api/sim_setup_data/data/sweep_data.rst:
--------------------------------------------------------------------------------
1 | Sweep data
2 | ==========
3 | This class is the container of sweep data.
4 |
5 |
6 | .. currentmodule:: pyedb.dotnet.database.sim_setup_data.data.sweep_data
7 |
8 | .. autosummary::
9 | :toctree: _autosummary
10 | :nosignatures:
11 |
12 |
13 | SweepData
14 |
15 |
16 |
--------------------------------------------------------------------------------
/doc/source/api/sim_setup_data/io/index.rst:
--------------------------------------------------------------------------------
1 | ===================
2 | Simulation setup IO
3 | ===================
4 |
5 | This section describes Simulation setup IO.
6 |
7 |
8 | .. toctree::
9 | :maxdepth: 2
10 |
11 |
--------------------------------------------------------------------------------
/doc/source/api/sim_setup_data/io/siwave.rst:
--------------------------------------------------------------------------------
1 | SIwave IO
2 | =========
3 | This class is the container of SIwave IO.
4 |
5 |
6 | .. currentmodule:: pyedb.dotnet.database.sim_setup_data.io.siwave
7 |
8 | .. autosummary::
9 | :toctree: _autosummary
10 | :nosignatures:
11 |
12 |
13 | SettingsBase
14 | AdvancedSettings
15 | DCSettings
16 | DCAdvancedSettings
17 |
18 |
19 |
--------------------------------------------------------------------------------
/doc/source/api/utilities/heatsink.rst:
--------------------------------------------------------------------------------
1 | Icepak heat sink
2 | ================
3 | This class is the container of Icepak heat sink.
4 |
5 |
6 | .. currentmodule:: pyedb.dotnet.database.utilities.heatsink
7 |
8 | .. autosummary::
9 | :toctree: _autosummary
10 | :nosignatures:
11 |
12 |
13 | HeatSink
14 |
15 |
16 |
--------------------------------------------------------------------------------
/doc/source/api/utilities/hfss_simulation_setup.rst:
--------------------------------------------------------------------------------
1 | HFSS simulation setup
2 | =====================
3 | These classes are the containers of HFSS simulation setup.
4 |
5 |
6 | .. currentmodule:: pyedb.dotnet.database.utilities.hfss_simulation_setup
7 |
8 | .. autosummary::
9 | :toctree: _autosummary
10 | :nosignatures:
11 |
12 |
13 | HfssSimulationSetup
14 | HFSSPISimulationSetup
15 |
16 |
17 |
--------------------------------------------------------------------------------
/doc/source/api/utilities/index.rst:
--------------------------------------------------------------------------------
1 | =========
2 | Utilities
3 | =========
4 |
5 | This section describes utilities.
6 |
7 |
8 | .. toctree::
9 | :maxdepth: 2
10 |
11 | heatsink
12 | hfss_simulation_setup
13 | simulation_setup
14 | siwave_simulation_setup
--------------------------------------------------------------------------------
/doc/source/api/utilities/simulation_setup.rst:
--------------------------------------------------------------------------------
1 | Simulation setup
2 | ================
3 | This class is the container of simulation setup.
4 |
5 |
6 | .. currentmodule:: pyedb.dotnet.database.utilities.simulation_setup
7 |
8 | .. autosummary::
9 | :toctree: _autosummary
10 | :nosignatures:
11 |
12 |
13 | SimulationSetupType
14 | AdaptiveType
15 | SimulationSetup
16 |
17 |
18 |
--------------------------------------------------------------------------------
/doc/source/api/utilities/siwave_simulation_setup.rst:
--------------------------------------------------------------------------------
1 | SIwave simulation setup
2 | =======================
3 | These classes are the containers of siwave simulation setup.
4 |
5 |
6 | .. currentmodule:: pyedb.dotnet.database.utilities.siwave_simulation_setup
7 |
8 | .. autosummary::
9 | :toctree: _autosummary
10 | :nosignatures:
11 |
12 |
13 | SiwaveSimulationSetup
14 | SiwaveDCSimulationSetup
15 |
16 |
17 |
--------------------------------------------------------------------------------
/doc/source/create_documentation.bat:
--------------------------------------------------------------------------------
1 | sphinx-build -b html -a . ../../../PyEDB-docs_dev -j 4
2 |
--------------------------------------------------------------------------------
/doc/source/getting_started/index.rst:
--------------------------------------------------------------------------------
1 | Getting started
2 | ===============
3 |
4 | .. grid:: 2
5 | :gutter: 3 3 4 4
6 |
7 | .. grid-item-card:: About PyEDB
8 | :link: about
9 | :link-type: doc
10 |
11 | Understand what PyEDB is and why you would use it.
12 |
13 | .. grid-item-card:: Installation
14 | :link: installation
15 | :link-type: doc
16 |
17 | Learn how to install PyEDB from PyPI or Conda.
18 |
19 | .. grid-item-card:: Quick code
20 | :link: quickcode
21 | :link-type: doc
22 |
23 | See some brief code examples of how to use PyEDB.
24 |
25 |
26 | .. grid-item-card:: Versions and interfaces
27 | :link: versioning
28 | :link-type: doc
29 |
30 | Discover the compatibility between PyEDB and AEDT versions.
31 |
32 | .. grid-item-card:: Troubleshooting
33 | :link: troubleshooting
34 | :link-type: doc
35 | :margin: 2 2 0 0
36 |
37 | Any questions or issues? See the information on this page before creating an issue.
38 |
39 | .. toctree::
40 | :maxdepth: 1
41 | :hidden:
42 |
43 | about
44 | installation
45 | quickcode
46 | versioning
47 | troubleshooting
48 |
--------------------------------------------------------------------------------
/doc/source/getting_started/quickcode.rst:
--------------------------------------------------------------------------------
1 | .. _quick_code:
2 |
3 | Quick code
4 | ==========
5 |
6 | To help you begin using PyEDB, you can view or download the PyEDB API cheat sheet. This one-page reference
7 | provides syntax rules and commands for using the PyEDB API:
8 |
9 | - `View `_ the PyEDB API cheat sheet.
10 | - `Download `_ the PyEDB API cheat sheet.
11 |
12 | Load an AEDB file into memory
13 | -----------------------------
14 |
15 | This code shows how to use PyEDB to load an existing AEDB file into memory:
16 |
17 | .. code:: python
18 |
19 | from pyedb import Edb
20 | from pyedb.generic.general_methods import generate_unique_folder_name
21 | import pyedb.misc.downloads as downloads
22 |
23 | temp_folder = generate_unique_folder_name()
24 | targetfile = downloads.download_file("edb/ANSYS-HSD_V1.aedb", destination=temp_folder)
25 | edbapp = Edb(edbpath=targetfile, edbversion="2024.2")
26 |
27 | Connect to EDB from a Python IDE
28 | --------------------------------
29 |
30 | PyEDB works both inside AEDT and as a standalone app. PyEDB also provides
31 | advanced error management. The following code examples provide a brief
32 | example of how PyEDB works.
33 |
34 | Explicit PyEDB declaration and error management
35 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
36 |
37 | .. code:: python
38 |
39 | # Start EDB
40 |
41 | from pyedb import Edb
42 |
43 | edb_file = pyedb.layout_examples.ANSYS - HSD_V1.aedb
44 | edb = Edb(edbversion="2024.2", edbpath=edb_file)
45 |
46 |
47 | Variables
48 | ~~~~~~~~~
49 |
50 | .. code:: python
51 |
52 | from pyedb import Edb
53 |
54 | edb_file = pyedb.layout_examples.ANSYS - HSD_V1.aedb
55 | edb = Edb(edbversion="2024.2", edbpath=edb_file)
56 | edb["dim"] = "1mm" # design variable
57 | edb["$dim"] = "1mm" # project variable
58 |
--------------------------------------------------------------------------------
/doc/source/getting_started/versioning.rst:
--------------------------------------------------------------------------------
1 | .. _versions_and_interfaces:
2 |
3 | =======================
4 | Versions and interfaces
5 | =======================
6 |
7 | PyEDB attempts to maintain compatibility with legacy versions of EDB
8 | while allowing for support of faster and better interfaces with the
9 | latest versions of EDB.
10 |
11 | Currently, there is only one interface PyEDB can use to connect to EDB.
12 |
13 | gRPC interface
14 | ==============
15 |
16 | The gRPC interface is under development and should be available soon.
17 |
18 | Legacy interface
19 | ================
20 |
21 | PyEDB currently connects to EDB using the native C# interface for the EDB API.
22 | You do not need to set the ``PYEDB_USE_DOTNET`` environment variable to ``0`` to
23 | use the legacy interface because it is the default value. Once the gRPC interface is
24 | available, to use it, simply set the ``PYEDB_USE_DOTNET`` environment variable to ``1``.
25 |
26 | .. code:: python
27 |
28 |
29 | # Set gRPC interface (future implementation)
30 | import os
31 |
32 | os.environ["PYEDB_USE_DOTNET"] = "1"
33 |
34 | # Set DotNet interface (actual implementation)
35 | import os
36 |
37 | os.environ["PYEDB_USE_DOTNET"] = "0"
38 |
--------------------------------------------------------------------------------
/doc/source/resources/3dlayout.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/doc/source/resources/3dlayout.png
--------------------------------------------------------------------------------
/doc/source/resources/3dlayout_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/doc/source/resources/3dlayout_1.png
--------------------------------------------------------------------------------
/doc/source/resources/5gantenna.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/doc/source/resources/5gantenna.png
--------------------------------------------------------------------------------
/doc/source/resources/BlankDiagram3DLayout.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/doc/source/resources/BlankDiagram3DLayout.png
--------------------------------------------------------------------------------
/doc/source/resources/add_siwave_setup.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/doc/source/resources/add_siwave_setup.png
--------------------------------------------------------------------------------
/doc/source/resources/advanced_circuit_port_creation.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/doc/source/resources/advanced_circuit_port_creation.PNG
--------------------------------------------------------------------------------
/doc/source/resources/aedt_3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/doc/source/resources/aedt_3.png
--------------------------------------------------------------------------------
/doc/source/resources/build_signal_integrity_user_guide.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/doc/source/resources/build_signal_integrity_user_guide.png
--------------------------------------------------------------------------------
/doc/source/resources/clipped_layout.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/doc/source/resources/clipped_layout.png
--------------------------------------------------------------------------------
/doc/source/resources/create_circuit_ports_on_component.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/doc/source/resources/create_circuit_ports_on_component.PNG
--------------------------------------------------------------------------------
/doc/source/resources/create_coaxial_port_on_component.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/doc/source/resources/create_coaxial_port_on_component.png
--------------------------------------------------------------------------------
/doc/source/resources/create_edge_port_on_polygon_and_trace.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/doc/source/resources/create_edge_port_on_polygon_and_trace.png
--------------------------------------------------------------------------------
/doc/source/resources/create_hfss_setup.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/doc/source/resources/create_hfss_setup.png
--------------------------------------------------------------------------------
/doc/source/resources/create_padstack_instances.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/doc/source/resources/create_padstack_instances.png
--------------------------------------------------------------------------------
/doc/source/resources/create_port_between_pin_and_layer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/doc/source/resources/create_port_between_pin_and_layer.png
--------------------------------------------------------------------------------
/doc/source/resources/create_port_on_component_simple.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/doc/source/resources/create_port_on_component_simple.png
--------------------------------------------------------------------------------
/doc/source/resources/create_resistor_boundary_user_guide.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/doc/source/resources/create_resistor_boundary_user_guide.png
--------------------------------------------------------------------------------
/doc/source/resources/create_rlc_boundary_on_pin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/doc/source/resources/create_rlc_boundary_on_pin.png
--------------------------------------------------------------------------------
/doc/source/resources/create_sources_and_probes.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/doc/source/resources/create_sources_and_probes.png
--------------------------------------------------------------------------------
/doc/source/resources/define_hfss_extent.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/doc/source/resources/define_hfss_extent.png
--------------------------------------------------------------------------------
/doc/source/resources/define_layer_stackup.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/doc/source/resources/define_layer_stackup.png
--------------------------------------------------------------------------------
/doc/source/resources/edb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/doc/source/resources/edb.png
--------------------------------------------------------------------------------
/doc/source/resources/edb2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/doc/source/resources/edb2.png
--------------------------------------------------------------------------------
/doc/source/resources/edb_intro.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/doc/source/resources/edb_intro.png
--------------------------------------------------------------------------------
/doc/source/resources/icepak.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/doc/source/resources/icepak.png
--------------------------------------------------------------------------------
/doc/source/resources/ipc2581.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/doc/source/resources/ipc2581.png
--------------------------------------------------------------------------------
/doc/source/resources/layout_bbox.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/doc/source/resources/layout_bbox.png
--------------------------------------------------------------------------------
/doc/source/resources/layout_nets_after_cutout.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/doc/source/resources/layout_nets_after_cutout.png
--------------------------------------------------------------------------------
/doc/source/resources/layout_plot_all_nets.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/doc/source/resources/layout_plot_all_nets.png
--------------------------------------------------------------------------------
/doc/source/resources/layout_plot_gnd_nets.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/doc/source/resources/layout_plot_gnd_nets.png
--------------------------------------------------------------------------------
/doc/source/resources/layout_stats.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/doc/source/resources/layout_stats.png
--------------------------------------------------------------------------------
/doc/source/resources/merge_utility.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/doc/source/resources/merge_utility.png
--------------------------------------------------------------------------------
/doc/source/resources/parametrized_edb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/doc/source/resources/parametrized_edb.png
--------------------------------------------------------------------------------
/doc/source/resources/pyansys-logo-black-cropped.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/doc/source/resources/pyansys-logo-black-cropped.png
--------------------------------------------------------------------------------
/doc/source/resources/siwave.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/doc/source/resources/siwave.png
--------------------------------------------------------------------------------
/doc/source/resources/stackup.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/doc/source/resources/stackup.png
--------------------------------------------------------------------------------
/doc/source/resources/starting_load_edb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/doc/source/resources/starting_load_edb.png
--------------------------------------------------------------------------------
/doc/source/resources/template_ribbon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/doc/source/resources/template_ribbon.png
--------------------------------------------------------------------------------
/doc/source/resources/toolkits.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/doc/source/resources/toolkits.png
--------------------------------------------------------------------------------
/doc/source/resources/toolkits_ribbon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/doc/source/resources/toolkits_ribbon.png
--------------------------------------------------------------------------------
/doc/source/resources/viawizard.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/doc/source/resources/viawizard.png
--------------------------------------------------------------------------------
/doc/source/user_guide/build_simulation_project/build_signal_integrity_project.rst:
--------------------------------------------------------------------------------
1 | .. _build_si_project_example:
2 |
3 | Build a signal integrity project
4 | ================================
5 |
6 | This page shows how to build an signal integrity project.
7 |
8 | .. autosummary::
9 | :toctree: _autosummary
10 |
11 | .. code:: python
12 |
13 |
14 | from pyedb import Edb
15 | from pyedb.generic.general_methods import generate_unique_folder_name
16 | import pyedb.misc.downloads as downloads
17 |
18 | # Ansys release version
19 | ansys_version = "2024.2"
20 |
21 | # download and copy the layout file from examples
22 | temp_folder = generate_unique_folder_name()
23 | targetfile = downloads.download_file("edb/ANSYS-HSD_V1.aedb", destination=temp_folder)
24 |
25 | # load EDB
26 | edbapp = Edb(edbpath=targetfile, edbversion="2024.2")
27 |
28 | sim_setup = edbapp.new_simulation_configuration()
29 | sim_setup.signal_nets = [
30 | "DDR4_A0",
31 | "DDR4_A1",
32 | "DDR4_A2",
33 | "DDR4_A3",
34 | "DDR4_A4",
35 | "DDR4_A5",
36 | ]
37 | sim_setup.power_nets = ["GND"]
38 | sim_setup.do_cutout_subdesign = True
39 | sim_setup.components = ["U1", "U15"]
40 | sim_setup.use_default_coax_port_radial_extension = False
41 | sim_setup.cutout_subdesign_expansion = 0.001
42 | sim_setup.start_freq = 0
43 | sim_setup.stop_freq = 20e9
44 | sim_setup.step_freq = 10e6
45 | edbapp.build_simulation_project(sim_setup)
46 | edbapp.close()
47 |
48 | .. image:: ../../resources/build_signal_integrity_user_guide.png
49 | :width: 800
50 | :alt: Built signal integrity project
51 |
--------------------------------------------------------------------------------
/doc/source/user_guide/build_simulation_project/cutout.rst:
--------------------------------------------------------------------------------
1 | .. _cutout_example:
2 |
3 | Clip a design
4 | =============
5 | Most of the time, only a specific part of a layout needs to be simulated. Thus, you want to
6 | clip the design to reduce computer resources and speed up the simulation.
7 |
8 | This page shows how to clip a design based on net selection.
9 |
10 | .. autosummary::
11 | :toctree: _autosummary
12 |
13 | .. code:: python
14 |
15 | from pyedb import Edb
16 | from pyedb.generic.general_methods import generate_unique_folder_name
17 | import pyedb.misc.downloads as downloads
18 |
19 |
20 | # Ansys release version
21 | ansys_version = "2024.2"
22 |
23 | # download and copy the layout file from examples
24 | temp_folder = generate_unique_folder_name()
25 | targetfile = downloads.download_file("edb/ANSYS-HSD_V1.aedb", destination=temp_folder)
26 |
27 | # load EDB
28 | edbapp = Edb(edbpath=targetfile, edbversion="2024.2")
29 |
30 | # select signal nets to evaluate the extent for clipping the layout
31 | signal_nets = [
32 | "DDR4_DQ0",
33 | "DDR4_DQ1",
34 | "DDR4_DQ2",
35 | "DDR4_DQ3",
36 | "DDR4_DQ4",
37 | "DDR4_DQ5",
38 | "DDR4_DQ6",
39 | "DDR4_DQ7",
40 | ]
41 | # At least one reference net must be included. Reference nets are included in the design but clipped.
42 | reference_nets = ["GND"]
43 | # Define the expansion factor, which gives the distance for evaluating the cutout extent. This code defines a cutout.
44 | expansion = 0.01 # 1cm in this case
45 | # process cutout
46 | edbapp.cutout(
47 | signal_list=signal_nets, reference_list=reference_nets, expansion_size=expansion
48 | )
49 | # save and close project
50 | edbapp.save_edb()
51 | edbapp.close_edb()
52 |
53 | .. image:: ../../resources/clipped_layout.png
54 | :width: 800
55 | :alt: Clipped design
--------------------------------------------------------------------------------
/doc/source/user_guide/build_simulation_project/index.rst:
--------------------------------------------------------------------------------
1 | =========================
2 | Build simulation projects
3 | =========================
4 |
5 | .. grid:: 2
6 |
7 | .. grid-item-card:: Clip a design
8 | :link: cutout
9 | :link-type: doc
10 |
11 | Learn how to clip a design based on net selection to reduce computer resources and speed up the simulation.
12 |
13 |
14 | .. grid-item-card:: Build a signal integrity project
15 | :link: build_signal_integrity_project
16 | :link-type: doc
17 | :margin: 2 2 0 0
18 |
19 | Learn build an signal integrity project.
20 |
21 | .. toctree::
22 | :hidden:
23 | :maxdepth: 2
24 |
25 | cutout
26 | build_signal_integrity_project
27 |
--------------------------------------------------------------------------------
/doc/source/user_guide/components/create_resistor_on_pin.rst:
--------------------------------------------------------------------------------
1 | .. _create_resistor_on_pin_example:
2 |
3 | Create a resistor boundary on pins
4 | ==================================
5 |
6 | This page shows how to create a resistor boundary on pins:
7 |
8 | .. autosummary::
9 | :toctree: _autosummary
10 |
11 | .. code:: python
12 |
13 | from pyedb import Edb
14 | from pyedb.generic.general_methods import generate_unique_folder_name
15 | import pyedb.misc.downloads as downloads
16 |
17 | temp_folder = generate_unique_folder_name()
18 | targetfile = downloads.download_file("edb/ANSYS-HSD_V1.aedb", destination=temp_folder)
19 | edbapp = Edb(edbpath=targetfile, edbversion="2024.2")
20 |
21 | pins = edbapp.components.get_pin_from_component("U1")
22 | resistor = edbapp.siwave.create_resistor_on_pin(pins[302], pins[10], 40, "RST4000")
23 | edbapp.save_edb()
24 | edbapp.close_edb()
25 |
26 |
27 | .. image:: ../../resources/create_resistor_boundary_user_guide.png
28 | :width: 800
29 | :alt: Created resistor boundary
30 |
--------------------------------------------------------------------------------
/doc/source/user_guide/components/create_rlc_boundary_on_pins.rst:
--------------------------------------------------------------------------------
1 | .. _create_rlc_boundary_on_pin_example:
2 |
3 | Create an RLC boundary on pins
4 | ==============================
5 |
6 | This page shows how to create an RLC boundary on pins.
7 |
8 | .. autosummary::
9 | :toctree: _autosummary
10 |
11 | .. code:: python
12 |
13 | from pyedb import Edb
14 | from pyedb.generic.general_methods import generate_unique_folder_name
15 | import pyedb.misc.downloads as downloads
16 |
17 | # download and open EDB project
18 | temp_folder = generate_unique_folder_name()
19 | targetfile = downloads.download_file("edb/ANSYS-HSD_V1.aedb", destination=temp_folder)
20 | edbapp = Edb(edbpath=targetfile, edbversion="2024.2")
21 |
22 | # retrieve pins from ``U1`` component and ``1V0`` net
23 | pins = edbapp.components.get_pin_from_component("U1", "1V0")
24 |
25 | # reference pins
26 | ref_pins = edbapp.components.get_pin_from_component("U1", "GND")
27 |
28 | # create rlc boundary
29 | edbapp.hfss.create_rlc_boundary_on_pins(
30 | pins[0], ref_pins[0], rvalue=1.05, lvalue=1.05e-12, cvalue=1.78e-13
31 | )
32 |
33 | # close EDB
34 | edbapp.save_edb()
35 | edbapp.close_edb()
36 |
37 |
38 | .. image:: ../../resources/create_rlc_boundary_on_pin.png
39 | :width: 800
40 | :alt: RLC boundary created on pins
--------------------------------------------------------------------------------
/doc/source/user_guide/components/create_rlc_component.rst:
--------------------------------------------------------------------------------
1 | .. _create_rlc_component_example:
2 |
3 | Create an RLC component between pins
4 | ====================================
5 |
6 | This page shows how to create an RLC component between pins:
7 |
8 | .. autosummary::
9 | :toctree: _autosummary
10 |
11 | .. code:: python
12 |
13 |
14 |
15 | from pyedb import Edb
16 | from pyedb.generic.general_methods import generate_unique_folder_name
17 | import pyedb.misc.downloads as downloads
18 |
19 | # download and open EDB project
20 | temp_folder = generate_unique_folder_name()
21 | targetfile = downloads.download_file("edb/ANSYS-HSD_V1.aedb", destination=temp_folder)
22 | edbapp = Edb(edbpath=targetfile, edbversion="2024.2")
23 |
24 | # retrieving pins from component U1 and net 1V0
25 | pins = edbapp.components.get_pin_from_component("U1", "1V0")
26 |
27 | # retrieving reference pins from component U1 and net GND
28 | ref_pins = edbapp.components.get_pin_from_component("U1", "GND")
29 |
30 | # create RLC network between 2 pins
31 | edbapp.components.create(
32 | [pins[0], ref_pins[0]], "test_0rlc", r_value=1.67, l_value=1e-13, c_value=1e-11
33 | )
34 | edbapp.save_edb()
35 | edbapp.close_edb()
36 |
37 |
38 | .. image:: ../../resources/create_rlc_boundary_on_pin.png
39 | :width: 800
40 | :alt: Create RLC boundary
--------------------------------------------------------------------------------
/doc/source/user_guide/components/index.rst:
--------------------------------------------------------------------------------
1 | ========================
2 | Working with a component
3 | ========================
4 |
5 |
6 | .. grid:: 2
7 |
8 | .. grid-item-card:: Create a resistor boundary on pins
9 | :link: create_resistor_on_pin
10 | :link-type: doc
11 |
12 | Learn how to create a resistor boundary on pins.
13 |
14 | .. grid-item-card:: Create an RLC component between pins
15 | :link: create_rlc_component
16 | :link-type: doc
17 | :margin: 2 2 0 0
18 |
19 | Learn how to create an RLC component between pins.
20 |
21 | .. grid-item-card:: Create an RLC boundary on pins
22 | :link: create_rlc_boundary_on_pins
23 | :link-type: doc
24 |
25 | Learn how to create an RLC boundary on pins.
26 |
27 | .. toctree::
28 | :hidden:
29 | :maxdepth: 2
30 |
31 | create_resistor_on_pin
32 | create_rlc_component
33 | create_rlc_boundary_on_pins
--------------------------------------------------------------------------------
/doc/source/user_guide/edb_information_queries/edb_queries.rst:
--------------------------------------------------------------------------------
1 | .. _edb_queries_example:
2 |
3 | Get layout statistics
4 | =====================
5 |
6 | PyEDB allows you to query a layout for statistics. This page shows how to perform
7 | these tasks:
8 |
9 | - Load a layout.
10 | - Get statistics.
11 | - Get nets and plot them in matplotlib.
12 | - Get all components and then get pins from components connected to a given net.
13 |
14 | .. autosummary::
15 | :toctree: _autosummary
16 |
17 | Load a layout
18 | ~~~~~~~~~~~~~
19 |
20 | .. code:: python
21 |
22 |
23 | # import EDB and load a layout
24 | from pyedb import Edb
25 | from pyedb.generic.general_methods import generate_unique_folder_name
26 | import pyedb.misc.downloads as downloads
27 |
28 | temp_folder = generate_unique_folder_name()
29 | targetfile = downloads.download_file("edb/ANSYS-HSD_V1.aedb", destination=temp_folder)
30 | edbapp = Edb(edbpath=targetfile, edbversion="2024.2")
31 |
32 | Get statistics
33 | ~~~~~~~~~~~~~~
34 |
35 | .. code:: python
36 |
37 | stats = edbapp.get_statistics()
38 |
39 | .. image:: ../../resources/layout_stats.png
40 | :width: 400
41 | :alt: Layout stats
42 |
43 | Get nets and plot them in matplotlib
44 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
45 |
46 | .. code:: python
47 |
48 | # net list
49 | edbapp.nets.netlist
50 | # power nets
51 | nets.power
52 | # Plot nets in matplotlib
53 | edbapp.nets.plot(None)
54 |
55 | .. image:: ../../resources/layout_plot_all_nets.png
56 | :width: 800
57 | :alt: Plot all nets in matplotlib
58 |
59 | Get all components and then pins from components connected to a net
60 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
61 |
62 | .. code:: python
63 |
64 | # Get all components
65 | nets = edbapp.components.instances
66 | # Get pins from components connected to a given net
67 | u9_gnd_pins = [
68 | pin for pin in list(edbapp.components["U9"].pins.values()) if pin.net_name == "GND"
69 | ]
70 |
--------------------------------------------------------------------------------
/doc/source/user_guide/edb_information_queries/get_layout_bounding_box.rst:
--------------------------------------------------------------------------------
1 | .. _edb_queries_layout_bbox_example:
2 |
3 | Get layout size
4 | ===============
5 |
6 | This tutorial shows how to retrieve the layout size by getting the bounding box.
7 |
8 | .. autosummary::
9 | :toctree: _autosummary
10 |
11 | .. code:: python
12 |
13 | from pyedb import Edb
14 | from pyedb.generic.general_methods import generate_unique_folder_name
15 | import pyedb.misc.downloads as downloads
16 |
17 | temp_folder = generate_unique_folder_name()
18 | targetfile = downloads.download_file("edb/ANSYS-HSD_V1.aedb", destination=temp_folder)
19 | edbapp = Edb(edbpath=targetfile, edbversion="2024.2")
20 |
21 | edbapp.get_bounding_box()
22 |
23 | .. image:: ../../resources/layout_bbox.png
24 | :width: 800
25 | :alt: Layout bounding box
26 |
--------------------------------------------------------------------------------
/doc/source/user_guide/edb_information_queries/index.rst:
--------------------------------------------------------------------------------
1 | ==================
2 | Run layout queries
3 | ==================
4 |
5 | .. grid:: 2
6 |
7 | .. grid-item-card:: Get layout statistics
8 | :link: edb_queries
9 | :link-type: doc
10 |
11 | Learn how to run a query for getting layout statistics.
12 |
13 | .. grid-item-card:: Get layout size
14 | :link: get_layout_bounding_box
15 | :link-type: doc
16 | :margin: 2 2 0 0
17 |
18 | Learn how to run a query for getting the layout size.
19 |
20 | .. toctree::
21 | :hidden:
22 | :maxdepth: 2
23 |
24 | edb_queries
25 | get_layout_bounding_box
26 |
--------------------------------------------------------------------------------
/doc/source/user_guide/excitations/create_circuit_ports_on_component.rst:
--------------------------------------------------------------------------------
1 | .. _create_circuit_port_on_component_example:
2 |
3 | Create a circuit port
4 | =====================
5 |
6 | This page shows how to retrieve pins and create a circuit port on a component.
7 |
8 | .. autosummary::
9 | :toctree: _autosummary
10 |
11 | .. code:: python
12 |
13 |
14 |
15 | from pyedb import Edb
16 | from pyedb.generic.general_methods import generate_unique_folder_name
17 | import pyedb.misc.downloads as downloads
18 |
19 | temp_folder = generate_unique_folder_name()
20 | targetfile = downloads.download_file("edb/ANSYS-HSD_V1.aedb", destination=temp_folder)
21 | edbapp = Edb(edbpath=targetfile, edbversion="2024.2")
22 |
23 | edbapp.siwave.create_circuit_port_on_net("U1", "1V0", "U1", "GND", 50, "test")
24 | edbapp.components.get_pin_from_component("U1")
25 |
26 | # create pin groups
27 | edbapp.siwave.create_pin_group_on_net("U1", "1V0", "PG_V1P0_S0")
28 | # create port on pin group
29 | edbapp.siwave.create_circuit_port_on_pin_group(
30 | "PG_V1P0_S0", "PinGroup_2", impedance=50, name="test_port"
31 | )
32 | # rename port with property setter
33 | edbapp.excitations["test_port"].name = "test_rename"
34 | # retrieve port
35 | created_port = (port for port in list(edbapp.excitations) if port == "test_rename")
36 | edbapp.save_edb()
37 | edbapp.close_edb()
38 |
39 |
40 | .. image:: ../../resources/create_circuit_ports_on_component.png
41 | :width: 800
42 | :alt: Circuit port created on a component
--------------------------------------------------------------------------------
/doc/source/user_guide/excitations/create_coax_port_on_component.rst:
--------------------------------------------------------------------------------
1 | .. _create_coaxial_port_on_component_example:
2 |
3 | Create a coaxial port
4 | =====================
5 |
6 | This page shows how to create an HFSS coaxial port on a component.
7 |
8 | .. autosummary::
9 | :toctree: _autosummary
10 |
11 | .. code:: python
12 |
13 |
14 | from pyedb import Edb
15 | from pyedb.generic.general_methods import generate_unique_folder_name
16 | import pyedb.misc.downloads as downloads
17 |
18 | # Ansys release version
19 | ansys_version = "2024.2"
20 |
21 | # download and copy the layout file from examples
22 | temp_folder = generate_unique_folder_name()
23 | targetfile = downloads.download_file("edb/ANSYS-HSD_V1.aedb", destination=temp_folder)
24 |
25 | # load EDB
26 | edbapp = Edb(edbpath=targetfile, edbversion="2024.2")
27 |
28 | edbapp.hfss.create_coax_port_on_component("U1", ["DDR4_DQS0_P", "DDR4_DQS0_N"])
29 | edbapp.save_edb()
30 | edbapp.close_edb()
31 |
32 | The preceding code creates a coaxial port on nets ``DDR4_DSQ0_P`` and ``DDR4_DSQ0_N`` from component ``U1``:
33 |
34 | .. image:: ../../resources/create_port_on_component_simple.png
35 | :width: 800
36 | :alt: HFSS coaxial port created on a component
--------------------------------------------------------------------------------
/doc/source/user_guide/excitations/create_port_between_pin_and_layer.rst:
--------------------------------------------------------------------------------
1 | .. _create_port_between_pin_and_layer_example:
2 |
3 | Create port between a pin and layer
4 | ===================================
5 |
6 | This page shows how to create a port between a pin and a layer.
7 |
8 | .. autosummary::
9 | :toctree: _autosummary
10 |
11 | .. code:: python
12 |
13 | from pyedb import Edb
14 | from pyedb.generic.general_methods import generate_unique_folder_name
15 | import pyedb.misc.downloads as downloads
16 |
17 | # Ansys release version
18 | ansys_version = "2024.2"
19 |
20 | # download and copy the layout file from examples
21 | temp_folder = generate_unique_folder_name()
22 | targetfile = downloads.download_file("edb/ANSYS-HSD_V1.aedb", destination=temp_folder)
23 |
24 | # load EDB
25 | edbapp = Edb(edbpath=targetfile, edbversion="2024.2")
26 |
27 | edbapp.siwave.create_port_between_pin_and_layer(
28 | component_name="U1", pins_name="A27", layer_name="16_Bottom", reference_net="GND"
29 | )
30 | U7 = edbapp.components["U7"]
31 | _, pin_group = edbapp.siwave.create_pin_group_on_net(
32 | reference_designator="U7", net_name="GND", group_name="U7_GND"
33 | )
34 | U7.pins["F7"].create_port(reference=pin_group)
35 | edbapp.save_edb()
36 | edbapp.close_edb()
37 |
38 | .. image:: ../../resources/create_port_between_pin_and_layer.png
39 | :width: 800
40 | :alt: Port created between a pin and layer
41 |
--------------------------------------------------------------------------------
/doc/source/user_guide/excitations/index.rst:
--------------------------------------------------------------------------------
1 | ==============
2 | Create sources
3 | ==============
4 |
5 | .. grid:: 2
6 |
7 | .. grid-item-card:: Create a circuit port
8 | :link: create_circuit_ports_on_component
9 | :link-type: doc
10 |
11 | Learn how to retrieve pins and create a circuit port on a component.
12 |
13 | .. grid-item-card:: Create a coaxial port
14 | :link: create_coax_port_on_component
15 | :link-type: doc
16 | :margin: 2 2 0 0
17 |
18 | Learn how to create an HFSS coaxial port on a component.
19 |
20 | .. grid-item-card:: Create current and voltage sources
21 | :link: create_current_source
22 | :link-type: doc
23 |
24 | Learn how to create current and voltage sources on a component.
25 |
26 | .. grid-item-card:: Create an edge port
27 | :link: create_edge_port_on_polygon
28 | :link-type: doc
29 | :margin: 2 2 0 0
30 |
31 | Learn how to create an edge port on a polygon and trace.
32 |
33 | .. grid-item-card:: Create a port between a pin and layer
34 | :link: create_port_between_pin_and_layer
35 | :link-type: doc
36 | :margin: 2 2 0 0
37 |
38 | Learn how to create a port between a pin and a layer.
39 |
40 | .. toctree::
41 | :hidden:
42 | :maxdepth: 2
43 |
44 | create_circuit_ports_on_component
45 | create_coax_port_on_component
46 | create_current_source
47 | create_edge_port_on_polygon
48 | create_port_between_pin_and_layer
49 |
--------------------------------------------------------------------------------
/doc/source/user_guide/layer_stackup/define_layer_stackup.rst:
--------------------------------------------------------------------------------
1 | .. _define_layer_stackup_example:
2 |
3 | Add a layer in a layout stackup
4 | ===============================
5 |
6 | This page shows how to add a layer in the current layer stackup.
7 |
8 | .. autosummary::
9 | :toctree: _autosummary
10 |
11 | .. code:: python
12 |
13 | from pyedb import Edb
14 |
15 | edb = Edb(edbversion=desktop_version)
16 | edb.stackup.add_layer(layer_name="gnd", fillMaterial="AIR", thickness="10um")
17 | edb.stackup.add_layer(
18 | layer_name="diel1", fillMaterial="AIR", thickness="200um", base_layer="gnd"
19 | )
20 | edb.stackup.add_layer(
21 | layer_name="sig1", fillMaterial="AIR", thickness="10um", base_layer="diel1"
22 | )
23 | edb.stackup.add_layer(
24 | layer_name="diel2", fillMaterial="AIR", thickness="200um", base_layer="sig1"
25 | )
26 | edb.stackup.add_layer(
27 | layer_name="sig3", fillMaterial="AIR", thickness="10um", base_layer="diel2"
28 | )
29 | edb.close()
30 |
31 | .. image:: ../../resources/define_layer_stackup.png
32 | :width: 800
33 | :alt: Layer added to the layer stackup
34 |
--------------------------------------------------------------------------------
/doc/source/user_guide/layer_stackup/index.rst:
--------------------------------------------------------------------------------
1 | =========================
2 | Work with a layer stackup
3 | =========================
4 |
5 |
6 | .. grid:: 2
7 |
8 | .. grid-item-card:: Edit a layer in a layer stackup
9 | :link: layer_stackup
10 | :link-type: doc
11 |
12 | Learn how to edit a layer in the current layer stackup.
13 |
14 | .. grid-item-card:: Add a layer in a layout stackup
15 | :link: define_layer_stackup
16 | :link-type: doc
17 | :margin: 2 2 0 0
18 |
19 | Learn how to add a layer in the current layout stackup.
20 |
21 |
22 | .. toctree::
23 | :hidden:
24 | :maxdepth: 2
25 |
26 |
27 | layer_stackup
28 | define_layer_stackup
--------------------------------------------------------------------------------
/doc/source/user_guide/load_export_edb/index.rst:
--------------------------------------------------------------------------------
1 | ===================
2 | Load a layout file
3 | ===================
4 |
5 | .. grid:: 2
6 |
7 | .. grid-item-card:: Load a layout file
8 | :link: loading_layout
9 | :link-type: doc
10 |
11 | Learn how to load an AEDB layout file in EDB.
12 |
13 |
14 |
15 | .. toctree::
16 | :hidden:
17 | :maxdepth: 2
18 |
19 | loading_layout
--------------------------------------------------------------------------------
/doc/source/user_guide/load_export_edb/loading_layout.rst:
--------------------------------------------------------------------------------
1 | .. _load_edb_example:
2 |
3 | Load a layout
4 | =============
5 |
6 | Although you can use PyEDB to build an entire layout from scratch, most of the time you
7 | load an layout in an existing AEDB file. This page shows how to load a layout in EDB and
8 | start manipulating objects.
9 |
10 | .. autosummary::
11 | :toctree: _autosummary
12 |
13 | .. code:: python
14 |
15 |
16 | from pyedb import Edb
17 | from pyedb.generic.general_methods import generate_unique_folder_name
18 | import pyedb.misc.downloads as downloads
19 |
20 | temp_folder = generate_unique_folder_name()
21 | targetfile = downloads.download_file("edb/ANSYS-HSD_V1.aedb", destination=temp_folder)
22 | edbapp = Edb(edbpath=targetfile, edbversion="2024.2")
23 |
24 | .. image:: ../../resources/starting_load_edb.png
25 | :width: 600
26 | :alt: Load layout in EDB
27 |
28 |
--------------------------------------------------------------------------------
/doc/source/user_guide/padstacks/index.rst:
--------------------------------------------------------------------------------
1 | ====================
2 | Work with a padstack
3 | ====================
4 |
5 |
6 | .. grid:: 2
7 |
8 | .. grid-item-card:: Edit a padstack definition
9 | :link: set_all_antipads_value
10 | :link-type: doc
11 |
12 | Learn how to edit a padstack definition, setting all anti-pad values to a fixed value.
13 |
14 | .. grid-item-card:: Create a padstack instance
15 | :link: create_padsatck_instance
16 | :link-type: doc
17 | :margin: 2 2 0 0
18 |
19 | Learn how to create a padstack instance.
20 |
21 | .. toctree::
22 | :hidden:
23 | :maxdepth: 2
24 |
25 | set_all_antipads_value
26 | create_padsatck_instance
--------------------------------------------------------------------------------
/doc/source/user_guide/padstacks/set_all_antipads_value.rst:
--------------------------------------------------------------------------------
1 | .. _set_all_antipads_value_example:
2 |
3 | Edit a padstack definition
4 | ==========================
5 |
6 | This page shows how to edit a padstack definition, setting all anti-pad values to a fixed value.
7 |
8 | .. autosummary::
9 | :toctree: _autosummary
10 |
11 | .. code:: python
12 |
13 | from pyedb import Edb
14 | from pyedb.generic.general_methods import generate_unique_folder_name
15 | import pyedb.misc.downloads as downloads
16 |
17 | # Ansys release version
18 | ansys_version = "2024.2"
19 |
20 | # download and copy the layout file from examples
21 | temp_folder = generate_unique_folder_name()
22 | targetfile = downloads.download_file("edb/ANSYS-HSD_V1.aedb", destination=temp_folder)
23 |
24 | # load EDB
25 | edbapp = Edb(edbpath=targetfile, edbversion="2024.2")
26 |
27 | # sets all anti-pads value to zero
28 | edbapp.padstacks.set_all_antipad_value(0.0)
29 | edbapp.close()
--------------------------------------------------------------------------------
/doc/source/user_guide/simulation_setup/add_siwave_analysis.rst:
--------------------------------------------------------------------------------
1 | .. _add_siwave_setup_example:
2 |
3 | Set up a SIwave analysis
4 | ========================
5 |
6 | This page shows how to create and set up a SIwave SYZ analysis.
7 |
8 | .. autosummary::
9 | :toctree: _autosummary
10 |
11 | .. code:: python
12 |
13 | from pyedb import Edb
14 | from pyedb.generic.general_methods import generate_unique_folder_name
15 | import pyedb.misc.downloads as downloads
16 |
17 | temp_folder = generate_unique_folder_name()
18 | targetfile = downloads.download_file("edb/ANSYS-HSD_V1.aedb", destination=temp_folder)
19 | edbapp = Edb(edbpath=targetfile, edbversion="2024.2")
20 |
21 | # Add SIwave SYZ analysis
22 | edbapp.siwave.add_siwave_syz_analysis(
23 | start_freq="=GHz", stop_freq="10GHz", step_freq="10MHz"
24 | )
25 |
26 | # Add DC analysis
27 | edbapp.siwave.add_siwave_dc_analysis(name="Test_dc")
28 | edbapp.save()
29 | edbapp.close()
30 |
31 |
32 | .. image:: ../../resources/add_siwave_setup.png
33 | :width: 400
34 | :alt: Add SIwave setup
35 |
--------------------------------------------------------------------------------
/doc/source/user_guide/simulation_setup/index.rst:
--------------------------------------------------------------------------------
1 | ==================
2 | Set up simulations
3 | ==================
4 |
5 | .. grid:: 2
6 |
7 | .. grid-item-card:: Set up a SIwave analysis
8 | :link: add_siwave_analysis
9 | :link-type: doc
10 |
11 | Learn how to create and set up a SIwave SWZ analysis.
12 |
13 |
14 | .. grid-item-card:: Set up an HFSS simulation
15 | :link: define_hfss_simulation_setup
16 | :link-type: doc
17 | :margin: 2 2 0 0
18 |
19 | Learn how to create and set up an HFSS simulation.
20 |
21 | .. grid-item-card:: Define an HFSS extent
22 | :link: define_hfss_extent
23 | :link-type: doc
24 | :margin: 2 2 0 0
25 |
26 | Learn how to define an HFSS extent.
27 |
28 | .. toctree::
29 | :hidden:
30 | :maxdepth: 2
31 |
32 | add_siwave_analysis
33 | define_hfss_simulation_setup
34 | define_hfss_extent
--------------------------------------------------------------------------------
/doc/source/user_guide/use_design_variables.rst:
--------------------------------------------------------------------------------
1 | .. _use_design_variables_example:
2 |
3 | Define design variables
4 | =======================
5 |
6 | This page shows how to define design variables for use by EDB.
7 |
8 | .. autosummary::
9 | :toctree: _autosummary
10 |
11 | .. code:: python
12 |
13 | from pyedb import Edb
14 | from pyedb.generic.general_methods import generate_unique_folder_name
15 | import pyedb.misc.downloads as downloads
16 |
17 | temp_folder = generate_unique_folder_name()
18 | targetfile = downloads.download_file("edb/ANSYS-HSD_V1.aedb", destination=temp_folder)
19 | edbapp = Edb(edbpath=targetfile, edbversion="2024.2")
20 |
21 | # adding design variable
22 | edbapp.add_design_variable("my_variable", "1mm")
23 |
24 | # parametrize trace width
25 | edbapp.modeler.parametrize_trace_width("A0_N")
26 | edbapp.modeler.parametrize_trace_width("A0_N_R")
27 |
28 | # adding project variable
29 | edbapp.add_project_variable("$my_project_variable", "3mm")
30 |
31 |
--------------------------------------------------------------------------------
/doc/styles/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !config
3 | !config/vocabularies
4 | !config/vocabularies/ANSYS
5 | !config/vocabularies/ANSYS/**
6 | !.gitignore
--------------------------------------------------------------------------------
/doc/styles/config/vocabularies/ANSYS/accept.txt:
--------------------------------------------------------------------------------
1 | .NET
2 | _static
3 | AC
4 | AEDB
5 | AEDT
6 | airbox
7 | (?i)Ansys
8 | API
9 | [Cc]ircuit
10 | codecov
11 | [Cc]om
12 | [Cc]omponents
13 | Conda
14 | CPython
15 | DC
16 | docstring
17 | [Dd]ocstrings
18 | EDB
19 | EDT
20 | GDS
21 | [Gg]gRPC
22 | HFSS
23 | Icepak
24 | IO
25 | IR
26 | IronPython
27 | libssl
28 | [Ll]ayout
29 | matplotlib
30 | Maxwell(?:\s(?:2D|3D|Circuit))?
31 | netlist
32 | openssl
33 | padstack(?:s)?
34 | postprocessing
35 | (?i)Pyedb
36 | (?i)Pyaedt
37 | (?i)PyAnsys
38 | [Pp]y[Pp][Ii]
39 | Python
40 | Python.NET
41 | Q3D
42 | RaptorX
43 | RLC
44 | SimulationConfiguration
45 | S[Ii]wave
46 | SYZ
47 | (?i)stackup(?:\s3D|s)?
48 | vias
49 | XML
--------------------------------------------------------------------------------
/doc/styles/config/vocabularies/ANSYS/reject.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/doc/styles/config/vocabularies/ANSYS/reject.txt
--------------------------------------------------------------------------------
/ignore_words.txt:
--------------------------------------------------------------------------------
1 | REnabled
2 | renabled
3 | delet
4 | appen
5 | parm
6 | pres
7 | WAN
8 | filname
9 | ans
10 | tread
11 | wan
12 | levl
13 | mater
14 | aadd
15 | extrem
16 | imagin
17 | ist
18 | nin
19 | sord
20 | struc
21 | emiss
22 | vise
23 | datas
24 | fo
25 | te
26 | sie
27 | mot
28 | nam
29 | ue
30 | ro
31 | aline
32 | COM
33 | gRPC
34 | Toolkits
35 |
--------------------------------------------------------------------------------
/src/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/src/__init__.py
--------------------------------------------------------------------------------
/src/pyedb/__init__.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 | import os
3 | import sys
4 | import warnings
5 |
6 | # if os.name == "nt":
7 | # os.environ["PYTHONMALLOC"] = "malloc"
8 |
9 | # By default we use pyedb legacy implementation
10 | if "PYEDB_USE_DOTNET" not in os.environ:
11 | os.environ["PYEDB_USE_DOTNET"] = "0"
12 |
13 | LATEST_DEPRECATED_PYTHON_VERSION = (3, 7)
14 |
15 |
16 | def deprecation_warning():
17 | """Warning message informing users that some Python versions are deprecated in PyEDB."""
18 | # Store warnings showwarning
19 | existing_showwarning = warnings.showwarning
20 |
21 | # Define and use custom showwarning
22 | def custom_show_warning(message, category, filename, lineno, file=None, line=None):
23 | """Custom warning used to remove :loc: pattern."""
24 | print(f"{category.__name__}: {message}")
25 |
26 | warnings.showwarning = custom_show_warning
27 |
28 | current_version = sys.version_info[:2]
29 | if current_version <= LATEST_DEPRECATED_PYTHON_VERSION:
30 | str_current_version = "{}.{}".format(*sys.version_info[:2])
31 | warnings.warn(
32 | "Current python version ({}) is deprecated in PyEDB. We encourage you "
33 | "to upgrade to the latest version to benefit from the latest features "
34 | "and security updates.".format(str_current_version),
35 | PendingDeprecationWarning,
36 | )
37 |
38 | # Restore warnings showwarning
39 | warnings.showwarning = existing_showwarning
40 |
41 |
42 | deprecation_warning()
43 |
44 | #
45 |
46 | pyedb_path = os.path.dirname(__file__)
47 | __version__ = "0.50.dev0"
48 | version = __version__
49 |
50 | #
51 |
52 | from pyedb.generic.design_types import Edb, Siwave
53 |
--------------------------------------------------------------------------------
/src/pyedb/common/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/src/pyedb/common/__init__.py
--------------------------------------------------------------------------------
/src/pyedb/configuration/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/src/pyedb/configuration/__init__.py
--------------------------------------------------------------------------------
/src/pyedb/dotnet/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/src/pyedb/dotnet/__init__.py
--------------------------------------------------------------------------------
/src/pyedb/dotnet/database/__init__.py:
--------------------------------------------------------------------------------
1 | from __future__ import absolute_import # noreorder
2 |
--------------------------------------------------------------------------------
/src/pyedb/dotnet/database/cell/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/src/pyedb/dotnet/database/cell/__init__.py
--------------------------------------------------------------------------------
/src/pyedb/dotnet/database/cell/hierarchy/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/src/pyedb/dotnet/database/cell/hierarchy/__init__.py
--------------------------------------------------------------------------------
/src/pyedb/dotnet/database/cell/hierarchy/netlist_model.py:
--------------------------------------------------------------------------------
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 |
24 | class NetlistModel(object): # pragma: no cover
25 | def __init__(self, edb_model):
26 | self._edb_model = edb_model
27 |
28 | @property
29 | def netlist(self):
30 | return self._edb_model.GetNetlist()
31 |
--------------------------------------------------------------------------------
/src/pyedb/dotnet/database/cell/hierarchy/s_parameter_model.py:
--------------------------------------------------------------------------------
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 |
24 | class SparamModel(object): # pragma: no cover
25 | def __init__(self, edb_model):
26 | self._edb_model = edb_model
27 |
28 | @property
29 | def name(self):
30 | return self._edb_model.GetComponentModelName()
31 |
32 | @property
33 | def reference_net(self):
34 | return self._edb_model.GetReferenceNet()
35 |
36 | @property
37 | def is_null(self):
38 | """Adding this property to be compatible with grpc."""
39 | if self.name:
40 | return False
41 | return True
42 |
--------------------------------------------------------------------------------
/src/pyedb/dotnet/database/cell/hierarchy/spice_model.py:
--------------------------------------------------------------------------------
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 |
24 | class SpiceModel(object): # pragma: no cover
25 | def __init__(self, edb_model):
26 | self._edb_model = edb_model
27 |
28 | @property
29 | def file_path(self):
30 | return self._edb_model.GetSPICEFilePath()
31 |
32 | @property
33 | def name(self):
34 | return self._edb_model.GetSPICEName()
35 |
--------------------------------------------------------------------------------
/src/pyedb/dotnet/database/cell/primitive/__init__.py:
--------------------------------------------------------------------------------
1 | from pathlib import Path
2 |
3 | workdir = Path(__file__).parent
4 |
--------------------------------------------------------------------------------
/src/pyedb/dotnet/database/cell/terminal/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/src/pyedb/dotnet/database/cell/terminal/__init__.py
--------------------------------------------------------------------------------
/src/pyedb/dotnet/database/definition/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/src/pyedb/dotnet/database/definition/__init__.py
--------------------------------------------------------------------------------
/src/pyedb/dotnet/database/definition/definition_obj.py:
--------------------------------------------------------------------------------
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 | from pyedb.dotnet.database.utilities.obj_base import ObjBase
24 |
25 |
26 | class DefinitionObj(ObjBase):
27 | """Base class for definition objects."""
28 |
29 | def __init__(self, pedb, edb_object):
30 | super().__init__(pedb, edb_object)
31 |
32 | @property
33 | def definition_obj_type(self):
34 | return self._edb_object.GetDefinitionObjType()
35 |
36 | @property
37 | def name(self):
38 | return self._edb_object.GetName()
39 |
--------------------------------------------------------------------------------
/src/pyedb/dotnet/database/dotnet/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/src/pyedb/dotnet/database/dotnet/__init__.py
--------------------------------------------------------------------------------
/src/pyedb/dotnet/database/edb_data/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/src/pyedb/dotnet/database/edb_data/__init__.py
--------------------------------------------------------------------------------
/src/pyedb/dotnet/database/geometry/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/src/pyedb/dotnet/database/geometry/__init__.py
--------------------------------------------------------------------------------
/src/pyedb/dotnet/database/layout_obj_instance.py:
--------------------------------------------------------------------------------
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 | from pyedb.dotnet.database.utilities.obj_base import ObjBase
24 |
25 |
26 | class LayoutObjInstance(ObjBase):
27 | """Manages EDB functionalities for the layout object instance."""
28 |
29 | def __init__(self, pedb, edb_object):
30 | super().__init__(pedb, edb_object)
31 |
--------------------------------------------------------------------------------
/src/pyedb/dotnet/database/sim_setup_data/__init__.py:
--------------------------------------------------------------------------------
1 | from pathlib import Path
2 |
3 | workdir = Path(__file__).parent
4 |
--------------------------------------------------------------------------------
/src/pyedb/dotnet/database/sim_setup_data/data/__init__.py:
--------------------------------------------------------------------------------
1 | from pathlib import Path
2 |
3 | workdir = Path(__file__).parent
4 |
--------------------------------------------------------------------------------
/src/pyedb/dotnet/database/sim_setup_data/io/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/src/pyedb/dotnet/database/sim_setup_data/io/__init__.py
--------------------------------------------------------------------------------
/src/pyedb/dotnet/database/utilities/__init__.py:
--------------------------------------------------------------------------------
1 | from pathlib import Path
2 |
3 | workdir = Path(__file__).parent
4 |
--------------------------------------------------------------------------------
/src/pyedb/exceptions.py:
--------------------------------------------------------------------------------
1 | """
2 | """
3 |
4 |
5 | class MaterialModelException(Exception):
6 | """Exception triggered when handling material model."""
7 |
--------------------------------------------------------------------------------
/src/pyedb/extensions/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/src/pyedb/extensions/__init__.py
--------------------------------------------------------------------------------
/src/pyedb/generic/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/src/pyedb/generic/__init__.py
--------------------------------------------------------------------------------
/src/pyedb/grpc/database/__init__.py:
--------------------------------------------------------------------------------
1 | from __future__ import absolute_import # noreorder
2 |
--------------------------------------------------------------------------------
/src/pyedb/grpc/database/definition/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/src/pyedb/grpc/database/definition/__init__.py
--------------------------------------------------------------------------------
/src/pyedb/grpc/database/definition/component_model.py:
--------------------------------------------------------------------------------
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 | from ansys.edb.core.definition.component_model import (
24 | ComponentModel as GrpcComponentModel,
25 | )
26 |
27 |
28 | class ComponentModel(GrpcComponentModel):
29 | """Class managing :class:`ComponentModel `."""
30 |
31 | def __init__(self):
32 | super().__init__(self.msg)
33 |
34 |
35 | class NPortComponentModel(GrpcComponentModel):
36 | """Class managing :class:`NPortComponentModel `"""
37 |
38 | def __init__(self):
39 | super().__init__(self.msg)
40 |
--------------------------------------------------------------------------------
/src/pyedb/grpc/database/definition/component_pin.py:
--------------------------------------------------------------------------------
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 |
24 | from ansys.edb.core.definition.component_pin import ComponentPin as GrpcComponentPin
25 |
26 |
27 | class ComponentPin(GrpcComponentPin):
28 | """Class managing :class:`ComponentPin `."""
29 |
30 | def __init__(self, pedb, edb_object):
31 | super().__init__(edb_object.msg)
32 | self._pedb = pedb
33 |
--------------------------------------------------------------------------------
/src/pyedb/grpc/database/definition/n_port_component_model.py:
--------------------------------------------------------------------------------
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 |
24 | from ansys.edb.core.definition.component_model import (
25 | NPortComponentModel as GrpcNPortComponentModel,
26 | )
27 |
28 |
29 | class NPortComponentModel(GrpcNPortComponentModel):
30 | """Class managing :class:`NPortComponentModel `"""
31 |
32 | def __init__(self, pedb, edb_object):
33 | super().__init__(edb_object)
34 | self._pedb = pedb
35 |
--------------------------------------------------------------------------------
/src/pyedb/grpc/database/general.py:
--------------------------------------------------------------------------------
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 | """
24 | This module contains EDB general methods and related methods.
25 |
26 | """
27 |
28 | from __future__ import absolute_import # noreorder
29 |
30 | import logging
31 | import re
32 |
33 | logger = logging.getLogger(__name__)
34 |
35 |
36 | def pascal_to_snake(s):
37 | # Convert PascalCase to snake_case
38 | return re.sub(r"(?`"""
28 |
29 | def __init__(self, edb_object=None):
30 | super().__init__(edb_object)
31 |
--------------------------------------------------------------------------------
/src/pyedb/grpc/database/hierarchy/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/src/pyedb/grpc/database/hierarchy/__init__.py
--------------------------------------------------------------------------------
/src/pyedb/grpc/database/hierarchy/model.py:
--------------------------------------------------------------------------------
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 | from ansys.edb.core.hierarchy.model import Model as GrpcModel
24 |
25 |
26 | class Model(GrpcModel):
27 | """Manages model :class:`Model `."""
28 |
29 | def __init__(self, pedb):
30 | super().__init__(self.msg)
31 | self._pedb = pedb
32 |
--------------------------------------------------------------------------------
/src/pyedb/grpc/database/hierarchy/netlist_model.py:
--------------------------------------------------------------------------------
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 | from ansys.edb.core.hierarchy.netlist_model import NetlistModel as GrpcNetlistModel
24 |
25 |
26 | class NetlistModel(GrpcNetlistModel):
27 | """Manage :class:`NetlistModel `."""
28 |
29 | def __init__(self):
30 | super().__init__(self.msg)
31 |
--------------------------------------------------------------------------------
/src/pyedb/grpc/database/hierarchy/s_parameter_model.py:
--------------------------------------------------------------------------------
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 | from ansys.edb.core.hierarchy.sparameter_model import (
24 | SParameterModel as GrpcSParameterModel,
25 | )
26 |
27 |
28 | class SparamModel(GrpcSParameterModel): # pragma: no cover
29 | """Manage :class:`SParameterModel `"""
30 |
31 | def __init__(self, edb_object):
32 | super().__init__(self.msg)
33 | self._edb_model = edb_object
34 |
--------------------------------------------------------------------------------
/src/pyedb/grpc/database/layers/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/src/pyedb/grpc/database/layers/__init__.py
--------------------------------------------------------------------------------
/src/pyedb/grpc/database/layout/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/src/pyedb/grpc/database/layout/__init__.py
--------------------------------------------------------------------------------
/src/pyedb/grpc/database/layout/cell.py:
--------------------------------------------------------------------------------
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 | from ansys.edb.core.layout.cell import Cell as GrpcCell
24 |
25 |
26 | class Cell(GrpcCell):
27 | """Manage :class:`Cell `"""
28 |
29 | def __init__(self, pedb, edb_object):
30 | super().__init__(edb_object)
31 |
--------------------------------------------------------------------------------
/src/pyedb/grpc/database/net/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/src/pyedb/grpc/database/net/__init__.py
--------------------------------------------------------------------------------
/src/pyedb/grpc/database/ports/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/src/pyedb/grpc/database/ports/__init__.py
--------------------------------------------------------------------------------
/src/pyedb/grpc/database/primitive/__init__.py:
--------------------------------------------------------------------------------
1 | from pathlib import Path
2 |
3 | workdir = Path(__file__).parent
4 |
--------------------------------------------------------------------------------
/src/pyedb/grpc/database/simulation_setup/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/src/pyedb/grpc/database/simulation_setup/__init__.py
--------------------------------------------------------------------------------
/src/pyedb/grpc/database/simulation_setup/adaptive_frequency.py:
--------------------------------------------------------------------------------
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 |
24 | from ansys.edb.core.simulation_setup.adaptive_solutions import (
25 | AdaptiveFrequency as GrpcAdaptiveFrequency,
26 | )
27 |
28 |
29 | class AdaptiveFrequency(GrpcAdaptiveFrequency):
30 | """EDB-core Adaptive Frequency class."""
31 |
32 | def __init__(self, adaptive_frequency):
33 | super().__init__(adaptive_frequency)
34 |
--------------------------------------------------------------------------------
/src/pyedb/grpc/database/simulation_setup/hfss_advanced_meshing_settings.py:
--------------------------------------------------------------------------------
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 | from ansys.edb.core.simulation_setup.hfss_simulation_settings import (
24 | HFSSAdvancedMeshingSettings as GrpcHFSSAdvancedMeshingSettings,
25 | )
26 |
27 |
28 | class HFSSAdvancedMeshingSettings(GrpcHFSSAdvancedMeshingSettings):
29 | def __init__(self, pedb, edb_object):
30 | """EDB-core HFSS advanced meshing settings class."""
31 | super().__init__(edb_object)
32 | self._pedb = pedb
33 |
--------------------------------------------------------------------------------
/src/pyedb/grpc/database/simulation_setup/hfss_dcr_settings.py:
--------------------------------------------------------------------------------
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 |
24 | from ansys.edb.core.simulation_setup.hfss_simulation_settings import (
25 | HFSSDCRSettings as GrpcHFSSDCRSettings,
26 | )
27 |
28 |
29 | class HFSSDCRSettings(GrpcHFSSDCRSettings):
30 | """PyEDB-core HFSS DC settings class."""
31 |
32 | def __init__(self, pedb, edb_object):
33 | super().__init__(edb_object)
34 | self._edb_object = edb_object
35 | self._pedb = pedb
36 |
--------------------------------------------------------------------------------
/src/pyedb/grpc/database/simulation_setup/hfss_solver_settings.py:
--------------------------------------------------------------------------------
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 |
24 | from ansys.edb.core.simulation_setup.hfss_simulation_settings import (
25 | HFSSSolverSettings as GrpcHFSSSolverSettings,
26 | )
27 |
28 |
29 | class HFSSSolverSettings(GrpcHFSSSolverSettings):
30 | """HFSS solver settings class."""
31 |
32 | def __init__(self, pedb, edb_object):
33 | super().__init__(edb_object)
34 | self._pedb = pedb
35 |
--------------------------------------------------------------------------------
/src/pyedb/grpc/database/simulation_setup/mesh_operation.py:
--------------------------------------------------------------------------------
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 | # FITNE SS 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 |
24 | from ansys.edb.core.simulation_setup.mesh_operation import (
25 | MeshOperation as GrpcMeshOperation,
26 | )
27 |
28 |
29 | class MeshOperation(GrpcMeshOperation):
30 | """Mesh operation class."""
31 |
32 | def __init__(self, pedb, edb_object):
33 | super().__init__(edb_object)
34 | self._pedb = pedb
35 |
--------------------------------------------------------------------------------
/src/pyedb/grpc/database/simulation_setup/raptor_x_advanced_settings.py:
--------------------------------------------------------------------------------
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 | # FITNE SS 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 |
24 | from ansys.edb.core.simulation_setup.raptor_x_simulation_settings import (
25 | RaptorXAdvancedSettings as GrpcRaptorXAdvancedSettings,
26 | )
27 |
28 |
29 | class RaptorXAdvancedSettings(GrpcRaptorXAdvancedSettings):
30 | """Raptor X advanced settings class."""
31 |
32 | def __init__(self, pedb, edb_object):
33 | super().__init__(edb_object)
34 | self._pedb = pedb
35 |
--------------------------------------------------------------------------------
/src/pyedb/grpc/database/simulation_setup/raptor_x_general_settings.py:
--------------------------------------------------------------------------------
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 | # FITNE SS 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 | from ansys.edb.core.simulation_setup.raptor_x_simulation_settings import (
24 | RaptorXGeneralSettings as GrpcRaptorXGeneralSettings,
25 | )
26 |
27 |
28 | class RaptorXGeneralSettings(GrpcRaptorXGeneralSettings):
29 | """Raptor X general settings class."""
30 |
31 | def __init__(self, pedb, edb_object):
32 | super().__init__(edb_object)
33 | self._pedb = pedb
34 |
--------------------------------------------------------------------------------
/src/pyedb/grpc/database/simulation_setup/siwave_dcir_simulation_setup.py:
--------------------------------------------------------------------------------
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 |
24 | from ansys.edb.core.simulation_setup.siwave_dcir_simulation_setup import (
25 | SIWaveDCIRSimulationSetup as Grpcsiwave_dcir_simulation_setup,
26 | )
27 |
28 |
29 | class SIWaveDCIRSimulationSetup(Grpcsiwave_dcir_simulation_setup):
30 | """Siwave Dcir simulation setup class."""
31 |
32 | def __init__(self, pedb, edb_object):
33 | super().__init__(edb_object.msg)
34 | self._pedb = pedb
35 |
--------------------------------------------------------------------------------
/src/pyedb/grpc/database/terminal/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/src/pyedb/grpc/database/terminal/__init__.py
--------------------------------------------------------------------------------
/src/pyedb/grpc/database/utility/__init__.py:
--------------------------------------------------------------------------------
1 | from pathlib import Path
2 |
3 | workdir = Path(__file__).parent
4 |
--------------------------------------------------------------------------------
/src/pyedb/grpc/database/utility/constants.py:
--------------------------------------------------------------------------------
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 |
24 | def get_terminal_supported_boundary_types():
25 | return ["voltage_source", "current_source", "port", "dc_terminal", "voltage_probe"]
26 |
--------------------------------------------------------------------------------
/src/pyedb/ipc2581/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/src/pyedb/ipc2581/__init__.py
--------------------------------------------------------------------------------
/src/pyedb/ipc2581/bom/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/src/pyedb/ipc2581/bom/__init__.py
--------------------------------------------------------------------------------
/src/pyedb/ipc2581/bom/bom.py:
--------------------------------------------------------------------------------
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 | from pyedb.generic.general_methods import ET
24 |
25 |
26 | class Bom(object):
27 | def __init__(self, edb):
28 | self._edb = edb
29 | self.name = self._edb.cell_names[0]
30 | self.revision = "1.0"
31 | self.step_ref = "1.0"
32 | self.bom_items = []
33 |
34 | def write_xml(self, root): # pragma no cover
35 | bom = ET.SubElement(root, "Bom")
36 | bom.set("name", self.name)
37 | bom_header = ET.SubElement(bom, "BomHeader")
38 | bom_header.set("assembly", self.name)
39 | bom_header.set("revision", self.revision)
40 | step_ref = ET.SubElement(bom_header, "StepRef")
41 | step_ref.set("name", self.name)
42 | for bom_item in self.bom_items:
43 | bom_item.write_xml(bom)
44 |
--------------------------------------------------------------------------------
/src/pyedb/ipc2581/bom/refdes.py:
--------------------------------------------------------------------------------
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 | from pyedb.generic.general_methods import ET
24 |
25 |
26 | class RefDes(object):
27 | def __init__(self):
28 | self.name = ""
29 | self.packaged_def = ""
30 | self.populate = "True"
31 | self.placement_layer = ""
32 |
33 | def write_xml(self, bom_item): # pragma no cover
34 | refdes = ET.SubElement(bom_item, "RefDes")
35 | refdes.set("name", self.name)
36 | refdes.set("packageRef", self.packaged_def)
37 | refdes.set("populate", self.populate)
38 | refdes.set("layerRef", self.placement_layer)
39 |
--------------------------------------------------------------------------------
/src/pyedb/ipc2581/content/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/src/pyedb/ipc2581/content/__init__.py
--------------------------------------------------------------------------------
/src/pyedb/ipc2581/content/entry_color.py:
--------------------------------------------------------------------------------
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 | from pyedb.generic.general_methods import ET
24 | from pyedb.ipc2581.content.color import Color
25 |
26 |
27 | class EntryColor(object):
28 | def __init__(self):
29 | self.name = ""
30 | self.color = Color()
31 |
32 | def write_xml(self, color=None): # pragma no cover
33 | entry_color = ET.SubElement(color, "EntryColor")
34 | entry_color.set("id", self.name)
35 | self.color.write_xml(entry_color)
36 |
--------------------------------------------------------------------------------
/src/pyedb/ipc2581/content/entry_line.py:
--------------------------------------------------------------------------------
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 | from pyedb.generic.general_methods import ET
24 |
25 |
26 | class EntryLine(object):
27 | def __init__(self):
28 | self._line_end = "ROUND"
29 | self.line_width = ""
30 |
31 | def write_xml(self, dictionnary_line): # pragma no cover
32 | entry_line = ET.SubElement(dictionnary_line, "EntryLineDesc")
33 | entry_line.set("id", "{}_{}".format(self._line_end, self.line_width))
34 | line_desc = ET.SubElement(entry_line, "LineDesc")
35 | line_desc.set("lineEnd", self._line_end)
36 | line_desc.set("lineWidth", str(self.line_width))
37 |
--------------------------------------------------------------------------------
/src/pyedb/ipc2581/content/fill.py:
--------------------------------------------------------------------------------
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 | from pyedb.generic.general_methods import ET
24 | from pyedb.ipc2581.content.content import Content
25 |
26 |
27 | class FillDesc(Content):
28 | def __init__(self):
29 | self.id = ""
30 | self.fill_property = ""
31 |
32 | def write_xml(self, dict_fill=None): # pragma no cover
33 | if dict_fill:
34 | fill = ET.SubElement(dict_fill, "EntryFillDesc")
35 | fill.set("id", self.id)
36 | fill_desc = ET.SubElement(fill, "FillDesc")
37 | fill_desc.set("fillProperty", self.fill_property)
38 |
--------------------------------------------------------------------------------
/src/pyedb/ipc2581/content/layer_ref.py:
--------------------------------------------------------------------------------
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 | from pyedb.generic.general_methods import ET
24 |
25 |
26 | class LayerRef(object):
27 | def __init__(self):
28 | self.name = ""
29 |
30 | def write_xml(self, content=None): # pragma no cover
31 | layer_ref = ET.SubElement(content, "LayerRef")
32 | layer_ref.set("name", self.name)
33 |
--------------------------------------------------------------------------------
/src/pyedb/ipc2581/ecad/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/src/pyedb/ipc2581/ecad/__init__.py
--------------------------------------------------------------------------------
/src/pyedb/ipc2581/ecad/cad_data/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/src/pyedb/ipc2581/ecad/cad_data/__init__.py
--------------------------------------------------------------------------------
/src/pyedb/ipc2581/ecad/ecad.py:
--------------------------------------------------------------------------------
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 | from pyedb.generic.general_methods import ET
24 | from pyedb.ipc2581.ecad.cad_data.cad_data import CadData
25 | from pyedb.ipc2581.ecad.cad_header import CadHeader
26 |
27 |
28 | class Ecad(object):
29 | def __init__(self, ipc, edb, units):
30 | self.design_name = "Design"
31 | self.units = units
32 | self.cad_header = CadHeader()
33 | self._ipc = ipc
34 | self.cad_data = CadData(self, edb, units, self._ipc)
35 | self._pedb = edb
36 |
37 | def write_xml(self, root): # pragma no cover
38 | ecad = ET.SubElement(root, "Ecad")
39 | ecad.set("name", self.design_name)
40 | self.cad_header.write_xml(ecad)
41 | self.cad_data.write_xml(ecad)
42 |
--------------------------------------------------------------------------------
/src/pyedb/misc/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/src/pyedb/misc/__init__.py
--------------------------------------------------------------------------------
/src/pyedb/misc/aedtlib_personalib_install.py:
--------------------------------------------------------------------------------
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 | from xml.dom.minidom import parseString
24 | import xml.etree.ElementTree as ET
25 |
26 |
27 | def write_pretty_xml(root, file_path):
28 | """Write the XML in a pretty format."""
29 | # If we use the commented code below, then the previously existing lines will have double lines added. We need to
30 | # split and ignore the double lines.
31 | # xml_str = parseString(ET.tostring(root)).toprettyxml(indent=" " * 4)
32 | lines = [line for line in parseString(ET.tostring(root)).toprettyxml(indent=" " * 4).split("\n") if line.strip()]
33 | xml_str = "\n".join(lines)
34 |
35 | with open(file_path, "w") as f:
36 | f.write(xml_str)
37 |
--------------------------------------------------------------------------------
/src/pyedb/misc/pyedb.runtimeconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "runtimeOptions": {
3 | "tfm": "net3.1",
4 | "framework": {
5 | "name": "Microsoft.NETCore.App",
6 | "version": "3.1.23"
7 | },
8 | "rollForward": "LatestPatch",
9 | "configProperties": {
10 | "System.Reflection.Metadata.MetadataUpdater.IsSupported": false
11 | }
12 | }
13 | }
--------------------------------------------------------------------------------
/src/pyedb/misc/siw_feature_config/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/src/pyedb/misc/siw_feature_config/__init__.py
--------------------------------------------------------------------------------
/src/pyedb/misc/siw_feature_config/emc/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/src/pyedb/misc/siw_feature_config/emc/__init__.py
--------------------------------------------------------------------------------
/src/pyedb/misc/siw_feature_config/emc/component_tags.py:
--------------------------------------------------------------------------------
1 | from pyedb.misc.siw_feature_config.emc.xml_generic import XmlGeneric
2 |
3 |
4 | class Comp(XmlGeneric):
5 | """Manages component tags."""
6 |
7 | def __init__(self, element):
8 | super().__init__(element)
9 | if element is not None:
10 | self.CompName = self._element.attrib["CompName"]
11 | self.CompValue = self._element.attrib["CompValue"]
12 | self.DeviceName = self._element.attrib["DeviceName"]
13 | self.capType = self._element.attrib["capType"] if "capType" in self._element.attrib else None
14 | self.isClockDriver = self._element.attrib["isClockDriver"]
15 | self.isHighSpeed = self._element.attrib["isHighSpeed"]
16 | self.isIC = self._element.attrib["isIC"]
17 | self.isOscillator = self._element.attrib["isOscillator"]
18 | self.xLoc = self._element.attrib["xLoc"]
19 | self.yLoc = self._element.attrib["yLoc"]
20 | else:
21 | self.CompName = None
22 | self.CompValue = None
23 | self.DeviceName = None
24 | self.capType = None
25 | self.isClockDriver = None
26 | self.isHighSpeed = None
27 | self.isIC = None
28 | self.isOscillator = None
29 | self.xLoc = None
30 | self.yLoc = None
31 |
32 |
33 | class ComponentTags(XmlGeneric):
34 | """Manages component tags."""
35 |
36 | CLS_MAPPING = {"Comp": Comp}
37 |
38 | def __init__(self, element):
39 | super().__init__(element)
40 |
41 | if element:
42 | for el in self._element.findall("Comp"):
43 | comp = Comp(el)
44 | self.sub_elements.append(comp)
45 |
--------------------------------------------------------------------------------
/src/pyedb/misc/siw_feature_config/emc/net_tags.py:
--------------------------------------------------------------------------------
1 | from pyedb.misc.siw_feature_config.emc.xml_generic import XmlGeneric
2 |
3 |
4 | class Net(XmlGeneric):
5 | """Manages net."""
6 |
7 | def __init__(self, element=None):
8 | super().__init__(element)
9 |
10 | if element is not None:
11 | self.isBus = self._element.attrib["isBus"]
12 | self.isClock = self._element.attrib["isClock"]
13 | self.isCritical = self._element.attrib["isCritical"]
14 | self.name = self._element.attrib["name"]
15 | self.type = self._element.attrib["type"] if "type" in self._element.attrib else None
16 | self.Diffmatename = self._element.attrib["Diffmatename"] if "Diffmatename" in self._element.attrib else None
17 | else:
18 | self.isBus = None
19 | self.isClock = None
20 | self.isCritical = None
21 | self.name = None
22 | self.type = None
23 | self.Diffmatename = None
24 |
25 |
26 | class NetTags(XmlGeneric):
27 | """Manages net tag."""
28 |
29 | CLS_MAPPING = {"Net": Net}
30 |
31 | def __init__(self, element):
32 | super().__init__(element)
33 |
34 | if element:
35 | for el in self._element.findall("Net"):
36 | net = Net(el)
37 | self.sub_elements.append(net)
38 |
--------------------------------------------------------------------------------
/src/pyedb/misc/siw_feature_config/emc/tag_library.py:
--------------------------------------------------------------------------------
1 | from pyedb.misc.siw_feature_config.emc.xml_generic import XmlGeneric
2 |
3 |
4 | class TagType(XmlGeneric):
5 | """Manages tag type."""
6 |
7 | def __init__(self, element):
8 | super().__init__(element)
9 |
10 | if element is not None:
11 | self.name = self._element.attrib["name"]
12 | else:
13 | self.name = None
14 |
15 |
16 | class TagConfig(XmlGeneric):
17 | """Manages tag config."""
18 |
19 | def __init__(self, element):
20 | super().__init__(element)
21 |
22 |
23 | class Tag(XmlGeneric):
24 | """Manages tag."""
25 |
26 | CLS_MAPPING = {"TagType": TagType, "TagConfig": TagConfig}
27 |
28 | def __init__(self, element):
29 | super().__init__(element)
30 |
31 | if element is not None:
32 | self.label = self._element.attrib["label"]
33 | self.name = self._element.attrib["name"]
34 | self.sub_elements = []
35 |
36 | for el in self._element.findall("TagType"):
37 | temp = TagType(el)
38 | self.sub_elements.append(temp)
39 |
40 | for el in self._element.findall("TagConfig"):
41 | temp = TagConfig(el)
42 | self.sub_elements.append(temp)
43 | else:
44 | self.label = None
45 | self.name = None
46 | self.sub_elements = []
47 |
48 |
49 | class TagLibrary(XmlGeneric):
50 | """Manages tag library."""
51 |
52 | CLS_MAPPING = {
53 | "Tag": Tag,
54 | }
55 |
56 | def __init__(self, element):
57 | super().__init__(element)
58 | self._element = element
59 |
60 | if element:
61 | for el in self._element.findall("Tag"):
62 | tag = Tag(el)
63 | self.sub_elements.append(tag)
64 |
--------------------------------------------------------------------------------
/src/pyedb/workflow.py:
--------------------------------------------------------------------------------
1 | from pathlib import Path
2 | from typing import Union
3 |
4 | import pandas as pd
5 |
6 |
7 | class Workflow:
8 | def __init__(self, pedb):
9 | self._pedb = pedb
10 |
11 | def export_bill_of_materials(self, file_path: Union[str, Path]):
12 | """Export bill of materials to a csv file.
13 |
14 | Parameters
15 | ----------
16 | file_path : Union[str, Path]
17 | Path to the csv file.
18 |
19 | Returns
20 | -------
21 |
22 | """
23 | file_path = str(file_path)
24 | data = self._pedb.configuration.get_data_from_db(components=True)
25 | comps = data["components"]
26 | temp = []
27 | for comp in comps:
28 | comp_attrs = {k: v for k, v in comp.items() if isinstance(v, Union[str, float, int])}
29 | temp.append(comp_attrs)
30 |
31 | df = pd.DataFrame(temp)
32 | return df.to_csv(file_path)
33 |
--------------------------------------------------------------------------------
/tests/__init__.py:
--------------------------------------------------------------------------------
1 | """
2 | Unit Test Configuration Module
3 | -------------------------------
4 |
5 | Description
6 | ===========
7 |
8 | This module contains the configuration and fixture for the pytest-based tests for pyedb.
9 |
10 | The default configuration can be changed by placing a file called local_config.json in the same
11 | directory as this module. An example of the contents of local_config.json
12 | {
13 | "desktopVersion": "2022.2",
14 | "NonGraphical": false,
15 | "NewThread": false,
16 | }
17 |
18 | """
19 |
--------------------------------------------------------------------------------
/tests/example_models/T40/ANSYS-HSD_V1_dcir.aedb/edb.def:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/tests/example_models/T40/ANSYS-HSD_V1_dcir.aedb/edb.def
--------------------------------------------------------------------------------
/tests/example_models/TEDB/ANSYS-HSD_V1.aedb/edb.def:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/tests/example_models/TEDB/ANSYS-HSD_V1.aedb/edb.def
--------------------------------------------------------------------------------
/tests/example_models/TEDB/ANSYS-HSD_V1_0.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/tests/example_models/TEDB/ANSYS-HSD_V1_0.zip
--------------------------------------------------------------------------------
/tests/example_models/TEDB/ANSYS-HSD_V1_0_ODB.tgz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/tests/example_models/TEDB/ANSYS-HSD_V1_0_ODB.tgz
--------------------------------------------------------------------------------
/tests/example_models/TEDB/ANSYS-HSD_V1_cut.aedb/edb.def:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/tests/example_models/TEDB/ANSYS-HSD_V1_cut.aedb/edb.def
--------------------------------------------------------------------------------
/tests/example_models/TEDB/GRM32ER72A225KA35_25C_0V.sp:
--------------------------------------------------------------------------------
1 | *----------------------------------------------------------------------
2 | * SPICE Model generated by Murata Manufacturing Co., Ltd.
3 | * Copyright(C) Murata Manufacturing Co., Ltd.
4 | * Description :3225M(1210)/X7R/2.2uF/100V
5 | * Murata P/N :GRM32ER72A225KA35
6 | * Property : C = 2.2[uF]
7 | * Data Generated on Mar 14, 2018
8 | *----------------------------------------------------------------------
9 | * Applicable Conditions:
10 | * Frequency Range = 100Hz-6GHz
11 | * Temperature = 25 degC
12 | * DC Bias Voltage = 0V
13 | * Small Signal Operation
14 | *----------------------------------------------------------------------
15 | .SUBCKT GRM32ER72A225KA35_25C_0V port1 port2
16 | C1 port1 11 2.18e-6
17 | L2 11 12 1.28e-10
18 | R3 12 13 2.50e-3
19 | C4 13 14 8.43e-5
20 | R4 13 14 91.0
21 | C5 14 15 3.62e-4
22 | R5 14 15 1.44
23 | C6 15 16 2.76e-4
24 | R6 15 16 1.91e-1
25 | C7 16 17 2.39e-4
26 | R7 16 17 2.22e-2
27 | C8 17 18 1.82e-4
28 | R8 17 18 2.69e-3
29 | L9 18 19 3.18e-10
30 | R9 18 19 3.02e-2
31 | L10 19 20 1.76e-11
32 | R10 19 20 2.18e-2
33 | C11 20 21 4.33e-6
34 | L11 20 21 1.35e-10
35 | R11 20 21 3.50e-2
36 | C12 21 22 2.64e-6
37 | L12 21 22 7.74e-11
38 | R12 21 22 1.86e-2
39 | C13 22 port2 1.81e-12
40 | L13 22 port2 2.74e-10
41 | R13 22 port2 46.5
42 | R100 port1 11 2.27e+8
43 | .ENDS GRM32ER72A225KA35_25C_0V
44 |
--------------------------------------------------------------------------------
/tests/example_models/TEDB/GRM32_DC0V_25degC.mod:
--------------------------------------------------------------------------------
1 | *----------------------------------------------------------------------
2 | * SPICE Model generated by Murata Manufacturing Co., Ltd.
3 | * Copyright(C) Murata Manufacturing Co., Ltd.
4 | * Description :3225M(1210)/X5R/220uF/6.3V
5 | * Murata P/N :GRM32ER60J227ME05
6 | * Property : C = 220[uF]
7 | * Data Generated on Dec 1, 2020
8 | *----------------------------------------------------------------------
9 | * Applicable Conditions:
10 | * Frequency Range = 100Hz-6GHz
11 | * Temperature = 25 degC
12 | * DC Bias Voltage = 0V
13 | * Small Signal Operation
14 | *----------------------------------------------------------------------
15 | .SUBCKT GRM32ER60J227ME05_DC0V_25degC port1 port2
16 | C1 port1 11 1.77e-4
17 | L2 11 12 1.13e-10
18 | R3 12 13 8.72e-4
19 | C4 13 14 8.49e-3
20 | R4 13 14 6.25e-1
21 | C5 14 15 9.22e-3
22 | R5 14 15 6.58e-2
23 | C6 15 16 7.68e-3
24 | R6 15 16 1.12e-2
25 | L7 16 17 1.23e-11
26 | R7 16 17 5.47e-2
27 | L8 17 18 3.67e-11
28 | R8 17 18 1.96e-2
29 | L9 18 19 7.95e-11
30 | R9 18 19 8.28e-3
31 | L10 19 20 5.91e-10
32 | R10 19 20 4.91e-3
33 | C11 20 21 3.47e-4
34 | L11 20 21 2.44e-10
35 | R11 20 21 1.53e-3
36 | C12 21 22 4.26e-4
37 | L12 21 22 9.29e-11
38 | R12 21 22 1.20e-3
39 | C13 22 23 6.52e-11
40 | L13 22 23 5.86e-11
41 | R13 22 23 4.17
42 | C14 23 port2 3.21e-12
43 | L14 23 port2 2.02e-10
44 | R14 23 port2 81.7
45 | R100 port1 11 2.27e+5
46 | .ENDS GRM32ER60J227ME05_DC0V_25degC
--------------------------------------------------------------------------------
/tests/example_models/TEDB/MicrostripSpliGnd.aedb/edb.def:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/tests/example_models/TEDB/MicrostripSpliGnd.aedb/edb.def
--------------------------------------------------------------------------------
/tests/example_models/TEDB/MicrostripSpliGnd.aedb/stride/model.index:
--------------------------------------------------------------------------------
1 | $begin 'Models'
2 | $end 'Models'
3 |
--------------------------------------------------------------------------------
/tests/example_models/TEDB/MicrostripSplitGND.aedb/edb.def:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/tests/example_models/TEDB/MicrostripSplitGND.aedb/edb.def
--------------------------------------------------------------------------------
/tests/example_models/TEDB/MicrostripSplitGND.aedb/stride/model.index:
--------------------------------------------------------------------------------
1 | $begin 'Models'
2 | $end 'Models'
3 |
--------------------------------------------------------------------------------
/tests/example_models/TEDB/Multizone_GroundVoids.aedb/edb.def:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/tests/example_models/TEDB/Multizone_GroundVoids.aedb/edb.def
--------------------------------------------------------------------------------
/tests/example_models/TEDB/Multizone_GroundVoids.aedb/stride/model.index:
--------------------------------------------------------------------------------
1 | $begin 'Models'
2 | $end 'Models'
3 |
--------------------------------------------------------------------------------
/tests/example_models/TEDB/Package.aedb/edb.def:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/tests/example_models/TEDB/Package.aedb/edb.def
--------------------------------------------------------------------------------
/tests/example_models/TEDB/ansys_pcb_stackup.csv:
--------------------------------------------------------------------------------
1 | ,Type,Material,Dielectric_Fill,Thickness
2 | 1_Top,signal,copper,Solder Resist,3.5000000000000004e-05
3 | DE1,dielectric,Megtron4,,0.0001
4 | Inner1(GND1),signal,copper,Megtron4_2,1.7000000000000003e-05
5 | DE2,dielectric,Megtron4_2,,8.8e-05
6 | Inner2(PWR1),signal,copper,Megtron4_2,1.7000000000000003e-05
7 | DE3,dielectric,Megtron4,,0.0001
8 | Inner3(Sig1),signal,copper,Megtron4_3,1.7000000000000003e-05
9 | Megtron4-1mm,dielectric,Megtron4_3,,0.001
10 | Inner4(Sig2),signal,copper,Megtron4_3,1.7000000000000003e-05
11 | DE5,dielectric,Megtron4,,0.0001
12 | Inner5(PWR2),signal,copper,Megtron4_2,1.7000000000000003e-05
13 | DE6,dielectric,Megtron4_2,,8.8e-05
14 | Inner6(GND2),signal,copper,Megtron4_2,1.7000000000000003e-05
15 | DE7,dielectric,Megtron4,,0.0001
16 | 16_Bottom,signal,copper,Solder Resist,3.5000000000000004e-05
17 | 17_Bottom,signal,copper,Solder Resist,3.5000000000000004e-05
18 | 18_Bottom,signal,copper,Solder Resist,3.5000000000000004e-05
19 |
--------------------------------------------------------------------------------
/tests/example_models/TEDB/bom_example.csv:
--------------------------------------------------------------------------------
1 | Prod name,RefDes,Value
2 | Capacitor,C10,1nF
3 | Inductor,L10,2nH
4 | Resistor,R1,50ohm
5 |
--------------------------------------------------------------------------------
/tests/example_models/TEDB/bom_example_2.csv:
--------------------------------------------------------------------------------
1 | RefDes,Part name, Type, Value
2 | C380,CAPC1005X55X25LL05T10,Capacitor,1nF
3 | L10,WE-Coil-PD4-S,Inductor,2nH
4 | U13,SLAB-QFN-24-2550x2550TP_V,IC,
5 | B1,MOLX-74754-0101_V,IO
6 | J7,'SAMTEC_ADF6-40-X-X-4-X-A-X,Other
7 |
--------------------------------------------------------------------------------
/tests/example_models/TEDB/chip.a3dcomp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/tests/example_models/TEDB/chip.a3dcomp
--------------------------------------------------------------------------------
/tests/example_models/TEDB/chip.aedb/edb.def:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/tests/example_models/TEDB/chip.aedb/edb.def
--------------------------------------------------------------------------------
/tests/example_models/TEDB/chip_flipped_stackup.aedb/edb.def:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/tests/example_models/TEDB/chip_flipped_stackup.aedb/edb.def
--------------------------------------------------------------------------------
/tests/example_models/TEDB/chip_offset.aedb/edb.def:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/tests/example_models/TEDB/chip_offset.aedb/edb.def
--------------------------------------------------------------------------------
/tests/example_models/TEDB/chip_solder.aedb/edb.def:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/tests/example_models/TEDB/chip_solder.aedb/edb.def
--------------------------------------------------------------------------------
/tests/example_models/TEDB/chip_zoffset.aedb/edb.def:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/tests/example_models/TEDB/chip_zoffset.aedb/edb.def
--------------------------------------------------------------------------------
/tests/example_models/TEDB/chip_zoffset_solder.aedb/edb.def:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/tests/example_models/TEDB/chip_zoffset_solder.aedb/edb.def
--------------------------------------------------------------------------------
/tests/example_models/TEDB/component_no_ref_pins.aedb/edb.def:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/tests/example_models/TEDB/component_no_ref_pins.aedb/edb.def
--------------------------------------------------------------------------------
/tests/example_models/TEDB/dc_flow.aedb/edb.def:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/tests/example_models/TEDB/dc_flow.aedb/edb.def
--------------------------------------------------------------------------------
/tests/example_models/TEDB/edb_config_json/boundaries.json:
--------------------------------------------------------------------------------
1 | {
2 | "boundaries": {
3 | "open_region": true,
4 | "open_region_type": "radiation",
5 | "pml_visible": false,
6 | "pml_operation_frequency": "5ghz",
7 | "pml_radiation_factor": 10,
8 | "dielectric_extents_type": "bounding_box",
9 | "dielectric_base_polygon": "",
10 | "horizontal_padding": 0,
11 | "honor_primitives_on_dielectric_layers": true,
12 | "air_box_extents_type": "bounding_box",
13 | "air_box_base_polygon": "",
14 | "air_box_truncate_model_ground_layers": false,
15 | "air_box_horizontal_padding": 0.15,
16 | "air_box_positive_vertical_padding": 1,
17 | "air_box_negative_vertical_padding": 1
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/tests/example_models/TEDB/edb_config_json/components.json:
--------------------------------------------------------------------------------
1 | {
2 | "components": [
3 | {
4 | "reference_designator": "C375",
5 | "part_type": "capacitor",
6 | "enabled": false,
7 | "rlc_model": {
8 | "pin_pairs": [
9 | {
10 | "type": "series",
11 | "p1": "1",
12 | "p2": "2"
13 | }
14 | ]
15 | }
16 | },
17 | {
18 | "reference_designator": "R100",
19 | "part_type": "resistor",
20 | "enabled": false
21 | },
22 | {
23 | "reference_designator": "L2",
24 | "part_type": "inductor",
25 | "enabled": false,
26 | "rlc_model": {
27 | "pin_pairs": [
28 | {
29 | "type": "series",
30 | "capacitance": "100nf",
31 | "inductance": "1nh",
32 | "resistance": "0.001",
33 | "p1": "1",
34 | "p2": "2"
35 | }
36 | ]
37 | }
38 | },
39 | {
40 | "reference_designator": "C375",
41 | "part_type": "capacitor",
42 | "enabled": false,
43 | "rlc_model": {
44 | "pin_pairs": [
45 | {
46 | "type": "series",
47 | "p1": "1",
48 | "p2": "2"
49 | }
50 | ]
51 | }
52 | },
53 | {
54 | "reference_designator": "U1",
55 | "part_type": "io",
56 | "solder_ball_properties": {
57 | "shape": "cylinder",
58 | "diameter": "244um",
59 | "height": "406um"
60 | },
61 | "port_properties": {
62 | "reference_offset": 0,
63 | "reference_size_auto": true,
64 | "reference_size_x": 0,
65 | "reference_size_y": 0
66 | }
67 | },
68 | {
69 | "reference_designator": "U14",
70 | "part_type": "ic"
71 | },
72 | {
73 | "reference_designator": "U3",
74 | "part_type": "other"
75 | }
76 | ]
77 | }
--------------------------------------------------------------------------------
/tests/example_models/TEDB/edb_config_json/general.json:
--------------------------------------------------------------------------------
1 | {
2 | "general": {
3 | "spice_model_library": "",
4 | "s_parameter_library": ""
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/tests/example_models/TEDB/edb_config_json/general.toml:
--------------------------------------------------------------------------------
1 | [general]
2 | s_parameter_library = ""
--------------------------------------------------------------------------------
/tests/example_models/TEDB/edb_config_json/nets.json:
--------------------------------------------------------------------------------
1 | {
2 | "nets": {
3 | "power_ground_nets": ["1.2V_DVDDL"],
4 | "signal_nets": ["SFPA_VCCR"]
5 | }
6 | }
--------------------------------------------------------------------------------
/tests/example_models/TEDB/edb_config_json/operations_cutout.json:
--------------------------------------------------------------------------------
1 | {
2 | "operations": {
3 | "cutout": {
4 | "signal_list": ["SFPA_RX_P", "SFPA_RX_N"],
5 | "reference_list": ["GND"],
6 | "extent_type": "ConvexHull",
7 | "expansion_size": 0.002,
8 | "use_round_corner": false,
9 | "output_aedb_path": "",
10 | "open_cutout_at_end": true,
11 | "use_pyaedt_cutout": true,
12 | "number_of_threads": 4,
13 | "use_pyaedt_extent_computing": true,
14 | "extent_defeature": 0,
15 | "remove_single_pin_components": false,
16 | "custom_extent": "",
17 | "custom_extent_units": "mm",
18 | "include_partial_instances": false,
19 | "keep_voids": true,
20 | "check_terminals": false,
21 | "include_pingroups": false,
22 | "expansion_factor": 0,
23 | "maximum_iterations": 10,
24 | "preserve_components_with_model": false,
25 | "simple_pad_check": true,
26 | "keep_lines_as_path": false
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/tests/example_models/TEDB/edb_config_json/package_def.json:
--------------------------------------------------------------------------------
1 | {
2 | "package_definitions": [
3 | {
4 | "name": "package_1",
5 | "component_definition": "SMTC-MECT-110-01-M-D-RA1_V",
6 | "maximum_power": 1,
7 | "therm_cond": 1,
8 | "theta_jb": 1,
9 | "theta_jc": 1,
10 | "height": 1,
11 | "heatsink": {
12 | "fin_base_height": "1mm",
13 | "fin_height": "1mm",
14 | "fin_orientation": "x_oriented",
15 | "fin_spacing": "1mm",
16 | "fin_thickness": "4mm"
17 | },
18 | "apply_to_all": false,
19 | "components": [
20 | "J5"
21 | ]
22 | },
23 | {
24 | "name": "package_2",
25 | "component_definition": "COIL-1008CS_V",
26 | "extent_bounding_box": [["-1mm", "-1mm"], ["1mm", "1mm"]],
27 | "maximum_power": 1,
28 | "therm_cond": 1,
29 | "theta_jb": 1,
30 | "theta_jc": 1,
31 | "height": 1,
32 | "apply_to_all": true,
33 | "components": [
34 | "L8"
35 | ]
36 | }
37 | ]
38 | }
39 |
--------------------------------------------------------------------------------
/tests/example_models/TEDB/edb_config_json/padstacks.json:
--------------------------------------------------------------------------------
1 | {
2 | "padstacks": {
3 | "definitions": [
4 | {
5 | "name": "v40h20",
6 | "hole_diameter": "0.18mm",
7 | "hole_plating_thickness": "25um",
8 | "hole_material": "copper",
9 | "hole_range": "through"
10 | }
11 | ],
12 | "instances": [
13 | {
14 | "name": "Via998",
15 | "backdrill_top": {
16 | "drill_to_layer": "Inner3(Sig1)",
17 | "drill_diameter": "0.5mm",
18 | "stub_length": "0.2mm"
19 | },
20 | "backdrill_bottom": {
21 | "drill_to_layer": "Inner4(Sig2)",
22 | "drill_diameter": "0.5mm",
23 | "stub_length": "0.2mm"
24 | }
25 | }
26 | ]
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/tests/example_models/TEDB/edb_config_json/pin_groups.json:
--------------------------------------------------------------------------------
1 | {
2 | "pin_groups": [
3 | {
4 | "name": "U9_5V_1",
5 | "reference_designator": "U9",
6 | "pins": [
7 | "32",
8 | "33"
9 | ]
10 | },
11 | {
12 | "name": "U9_GND",
13 | "reference_designator": "U9",
14 | "net": "GND"
15 | },
16 | {
17 | "name": "U9_AVDD_PLL",
18 | "reference_designator": "U9",
19 | "pins": ["44"]
20 | },
21 | {
22 | "name": "U6_ALL_PINS",
23 | "reference_designator": "U6"
24 | },
25 | {
26 | "name": "J5_TWO_NETS",
27 | "reference_designator": "J5",
28 | "net": ["SFPA_VCCR", "SFPA_VCCT"]
29 | }
30 | ],
31 | "ports": [
32 | {
33 | "name": "U9_pin_group_port",
34 | "type": "circuit",
35 | "positive_terminal": {
36 | "pin_group": "U9_5V_1"
37 | },
38 | "negative_terminal": {
39 | "pin_group": "U9_GND"
40 | }
41 | }
42 | ],
43 | "sources": [
44 | {
45 | "name": "U9_pin_group_source",
46 | "type": "voltage",
47 | "magnitude": 1.2,
48 | "positive_terminal": {
49 | "pin_group": "U9_AVDD_PLL"
50 | },
51 | "negative_terminal": {
52 | "pin_group": "U9_GND"
53 | }
54 | }
55 | ]
56 | }
--------------------------------------------------------------------------------
/tests/example_models/TEDB/edb_config_json/ports_circuit.json:
--------------------------------------------------------------------------------
1 | {
2 | "ports": [
3 | {
4 | "name": "CIRCUIT_C375_1_2",
5 | "reference_designator": "C375",
6 | "type": "circuit",
7 | "positive_terminal": {
8 | "pin": "1"
9 | },
10 | "negative_terminal": {
11 | "pin": "2"
12 | }
13 | },
14 | {
15 | "name": "CIRCUIT_X1_B8_GND",
16 | "reference_designator": "X1",
17 | "type": "circuit",
18 | "positive_terminal": {
19 | "pin": "B8"
20 | },
21 | "negative_terminal": {
22 | "net": "GND"
23 | }
24 | },
25 | {
26 | "name": "CIRCUIT_X1_B9_GND",
27 | "reference_designator": "X1",
28 | "type": "circuit",
29 | "positive_terminal": {
30 | "net": "PCIe_Gen4_TX2_N"
31 | },
32 | "negative_terminal": {
33 | "net": "GND"
34 | }
35 | },
36 | {
37 | "name": "CIRCUIT_U7_VDD_DDR_GND",
38 | "reference_designator": "U7",
39 | "type": "circuit",
40 | "positive_terminal": {
41 | "net": "VDD_DDR"
42 | },
43 | "negative_terminal": {
44 | "net": "GND"
45 | }
46 | }
47 | ]
48 | }
--------------------------------------------------------------------------------
/tests/example_models/TEDB/edb_config_json/ports_coax.json:
--------------------------------------------------------------------------------
1 | {
2 | "ports": [
3 | {
4 | "name": "COAX_U1_AM17",
5 | "reference_designator": "U1",
6 | "type": "coax",
7 | "positive_terminal": {
8 | "pin": "AM17"
9 | }
10 | },
11 | {
12 | "name": "COAX_U1_PCIe_Gen4_TX2_CAP_N",
13 | "reference_designator": "U1",
14 | "type": "coax",
15 | "positive_terminal": {
16 | "net": "PCIe_Gen4_TX2_CAP_N"
17 | }
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/tests/example_models/TEDB/edb_config_json/s_parameter.json:
--------------------------------------------------------------------------------
1 | {
2 | "general": {
3 | "s_parameter_library": ""
4 | },
5 | "s_parameters": [
6 | {
7 | "name": "GRM32_DC0V_25degC_series",
8 | "component_definition": "CAPC3216X180X55ML20T25",
9 | "file_path": "GRM32_DC0V_25degC_series.s2p",
10 | "apply_to_all": true,
11 | "components": [],
12 | "reference_net": "GND"
13 | },
14 | {
15 | "name": "GRM32_DC0V_25degC_series",
16 | "component_definition": "CAPC3216X190X55ML30T25",
17 | "file_path": "GRM32_DC0V_25degC_series.s2p",
18 | "apply_to_all": false,
19 | "components": ["C59"],
20 | "reference_net": "GND",
21 | "reference_net_per_component": {
22 | "C59": "GND"
23 | }
24 | }
25 | ]
26 | }
27 |
--------------------------------------------------------------------------------
/tests/example_models/TEDB/edb_config_json/setups_hfss.json:
--------------------------------------------------------------------------------
1 | {
2 | "setups": [
3 | {
4 | "name": "hfss_setup_1",
5 | "type": "HFSS",
6 | "f_adapt": "5GHz",
7 | "max_num_passes": 10,
8 | "max_mag_delta_s": 0.02,
9 | "freq_sweep": [
10 | {
11 | "name": "Sweep1",
12 | "type": "Interpolation",
13 | "frequencies": [
14 | {
15 | "distribution": "linear step",
16 | "start": 0,
17 | "stop": 5e9,
18 | "step": 10e7
19 | }
20 | ]
21 | }
22 | ]
23 | },
24 | {
25 | "name": "hfss_setup_2",
26 | "type": "HFSS",
27 | "f_adapt": "5GHz",
28 | "max_num_passes": 10,
29 | "max_mag_delta_s": 0.02,
30 | "freq_sweep": [
31 | {
32 | "name": "Sweep1",
33 | "type": "Interpolation",
34 | "frequencies": [
35 | {
36 | "distribution": "linear count",
37 | "start": 0,
38 | "stop": 5e9,
39 | "points": 10
40 | }
41 | ]
42 | }
43 | ]
44 | },
45 | {
46 | "name": "hfss_setup_3",
47 | "type": "HFSS",
48 | "f_adapt": "5GHz",
49 | "max_num_passes": 10,
50 | "max_mag_delta_s": 0.02,
51 | "freq_sweep": [
52 | {
53 | "name": "Sweep1",
54 | "type": "Interpolation",
55 | "frequencies": [
56 | {
57 | "distribution": "log scale",
58 | "start": 1e6,
59 | "stop": 1e9,
60 | "samples": 10
61 | }
62 | ]
63 | }
64 | ]
65 | }
66 | ]
67 | }
--------------------------------------------------------------------------------
/tests/example_models/TEDB/edb_config_json/setups_siwave_dc.json:
--------------------------------------------------------------------------------
1 | {
2 | "setups": [
3 | {
4 | "name": "siwave_dc",
5 | "type": "siwave_dc",
6 | "dc_slider_position": 1,
7 | "dc_ir_settings": {
8 | "export_dc_thermal_data": true
9 | }
10 | }
11 | ]
12 | }
--------------------------------------------------------------------------------
/tests/example_models/TEDB/edb_config_json/setups_siwave_syz.json:
--------------------------------------------------------------------------------
1 | {
2 | "setups": [
3 | {
4 | "name": "siwave_syz",
5 | "type": "siwave_syz",
6 | "si_slider_position": 1,
7 | "freq_sweep": [
8 | {
9 | "name": "Sweep1",
10 | "type": "Interpolation",
11 | "frequencies": [
12 | {
13 | "distribution": "linear count",
14 | "start": 0,
15 | "stop": 10e9,
16 | "points": 11
17 | },
18 | {
19 | "distribution": "log scale",
20 | "start": 1e6,
21 | "stop": 1e9,
22 | "samples": 10
23 | }
24 | ]
25 | }
26 | ]
27 | }
28 | ]
29 | }
--------------------------------------------------------------------------------
/tests/example_models/TEDB/edb_config_json/sources.json:
--------------------------------------------------------------------------------
1 | {
2 | "sources": [
3 | {
4 | "name": "VSOURCE_U2_1V0_GND",
5 | "reference_designator": "U2",
6 | "type": "voltage",
7 | "magnitude": 1,
8 | "positive_terminal": {
9 | "net": "1V0"
10 | },
11 | "negative_terminal": {
12 | "net": "GND"
13 | }
14 | },
15 | {
16 | "name": "ISOURCE_U2_1V0_GND",
17 | "reference_designator": "U1",
18 | "type": "current",
19 | "magnitude": 1,
20 | "positive_terminal": {
21 | "net": "1V0"
22 | },
23 | "negative_terminal": {
24 | "net": "GND"
25 | }
26 | },
27 | {
28 | "name": "VSOURCE_U4_2V5_GND",
29 | "reference_designator": "U4",
30 | "type": "voltage",
31 | "magnitude": 2.5,
32 | "positive_terminal": {
33 | "net": "2V5"
34 | },
35 | "negative_terminal": {
36 | "net": "GND"
37 | }
38 | },
39 | {
40 | "name": "ISOURCE_U1_2V5_GND",
41 | "reference_designator": "U1",
42 | "type": "current",
43 | "magnitude": 1,
44 | "positive_terminal": {
45 | "net": "2V5"
46 | },
47 | "negative_terminal": {
48 | "net": "GND"
49 | }
50 | },
51 | {
52 | "name": "ISOURCE_U11_1_11",
53 | "reference_designator": "U11",
54 | "type": "current",
55 | "magnitude": 1,
56 | "positive_terminal": {
57 | "pin": "1"
58 | },
59 | "negative_terminal": {
60 | "pin": "11"
61 | }
62 | }
63 | ]
64 | }
--------------------------------------------------------------------------------
/tests/example_models/TEDB/edb_config_json/spice.json:
--------------------------------------------------------------------------------
1 | {
2 | "general": {
3 | "spice_model_library": ""
4 | },
5 | "spice_models": [
6 | {
7 | "name": "GRM32ER72A225KA35_25C_0V",
8 | "component_definition": "RESC1005X40X25LL05T05",
9 | "file_path": "GRM32ER72A225KA35_25C_0V.sp",
10 | "sub_circuit_name": "GRM32ER72A225KA35_25C_0V",
11 | "apply_to_all": true,
12 | "components": []
13 | },
14 | {
15 | "name": "GRM32ER72A225KA35_25C_0V",
16 | "component_definition": "RESC1005X40X25NL05T05",
17 | "file_path": "GRM32ER72A225KA35_25C_0V.sp",
18 | "sub_circuit_name": "GRM32ER72A225KA35_25C_0V",
19 | "apply_to_all": false,
20 | "components": ["R106"]
21 | }
22 | ]
23 | }
24 |
--------------------------------------------------------------------------------
/tests/example_models/TEDB/edge_ports.aedb/edb.def:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/tests/example_models/TEDB/edge_ports.aedb/edb.def
--------------------------------------------------------------------------------
/tests/example_models/TEDB/edge_ports.aedb/stride/model.index:
--------------------------------------------------------------------------------
1 | $begin 'Models'
2 | $end 'Models'
3 |
--------------------------------------------------------------------------------
/tests/example_models/TEDB/example_arbitrary_wave_ports.aedb/edb.def:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/tests/example_models/TEDB/example_arbitrary_wave_ports.aedb/edb.def
--------------------------------------------------------------------------------
/tests/example_models/TEDB/example_package.aedb/edb.def:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/tests/example_models/TEDB/example_package.aedb/edb.def
--------------------------------------------------------------------------------
/tests/example_models/TEDB/example_package.aedb/stride/model.index:
--------------------------------------------------------------------------------
1 | $begin 'Models'
2 | $end 'Models'
3 |
--------------------------------------------------------------------------------
/tests/example_models/TEDB/galileo_stackup.csv:
--------------------------------------------------------------------------------
1 | ,Type,Material,Dielectric_Fill,Thickness
2 | UNNAMED_000,dielectric,AIR,,0.0
3 | TOP,signal,COPPER,TOP_FILL,6e-05
4 | UNNAMED_002,dielectric,FR-4_3,,6.731e-05
5 | PWR,signal,COPPER_1,PWR_FILL,3.302e-05
6 | Signal3,signal,copper,FR4_epoxy,3.5000000000000004e-05
7 | UNNAMED_004,dielectric,FR-4_2,,0.00127
8 | LYR_1,signal,COPPER_1,FR-4_1,3.048e-05
9 | UNNAMED_006,dielectric,FR-4_1,,0.0002032
10 | LYR_2,signal,COPPER_1,FR-4_1,3.048e-05
11 | UNNAMED_008,dielectric,FR-4_1,,0.0002032
12 | GND,signal,COPPER_1,FR-4_1,3.302e-05
13 | UNNAMED_010,dielectric,FR-4,,6.731e-05
14 | Diel1,dielectric,myMaterial,,0.001
15 | BOTTOM,signal,COPPER,BOTTOM_FILL,4.826e-05
16 | Signal1,signal,copper,FR4_epoxy,3.5000000000000004e-05
17 | UNNAMED_012,dielectric,AIR,,0.0
18 |
--------------------------------------------------------------------------------
/tests/example_models/TEDB/lam_for_bottom_place.aedb/edb.def:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/tests/example_models/TEDB/lam_for_bottom_place.aedb/edb.def
--------------------------------------------------------------------------------
/tests/example_models/TEDB/lam_for_top_place.aedb/edb.def:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/tests/example_models/TEDB/lam_for_top_place.aedb/edb.def
--------------------------------------------------------------------------------
/tests/example_models/TEDB/lam_for_top_place_no_setups.aedb/edb.def:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/tests/example_models/TEDB/lam_for_top_place_no_setups.aedb/edb.def
--------------------------------------------------------------------------------
/tests/example_models/TEDB/lam_for_top_place_no_setups.aedb/stride/model.index:
--------------------------------------------------------------------------------
1 | $begin 'Models'
2 | $end 'Models'
3 |
--------------------------------------------------------------------------------
/tests/example_models/TEDB/lam_with_mold.aedb/edb.def:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/tests/example_models/TEDB/lam_with_mold.aedb/edb.def
--------------------------------------------------------------------------------
/tests/example_models/TEDB/merge_via_4layers.aedb/edb.def:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/tests/example_models/TEDB/merge_via_4layers.aedb/edb.def
--------------------------------------------------------------------------------
/tests/example_models/TEDB/multi_cells.aedb/edb.def:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/tests/example_models/TEDB/multi_cells.aedb/edb.def
--------------------------------------------------------------------------------
/tests/example_models/TEDB/padstacks.aedb/edb.def:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/tests/example_models/TEDB/padstacks.aedb/edb.def
--------------------------------------------------------------------------------
/tests/example_models/TEDB/simple.aedb/edb.def:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/tests/example_models/TEDB/simple.aedb/edb.def
--------------------------------------------------------------------------------
/tests/example_models/TEDB/test_107.aedb/edb.def:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/tests/example_models/TEDB/test_107.aedb/edb.def
--------------------------------------------------------------------------------
/tests/example_models/TEDB/test_merge_polygon.aedb/edb.def:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/tests/example_models/TEDB/test_merge_polygon.aedb/edb.def
--------------------------------------------------------------------------------
/tests/example_models/TEDB/test_path_length.aedb/edb.def:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/tests/example_models/TEDB/test_path_length.aedb/edb.def
--------------------------------------------------------------------------------
/tests/example_models/TEDB/test_pin_group.aedb/edb.def:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/tests/example_models/TEDB/test_pin_group.aedb/edb.def
--------------------------------------------------------------------------------
/tests/example_models/TEDB/test_sources.aedb/edb.def:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/tests/example_models/TEDB/test_sources.aedb/edb.def
--------------------------------------------------------------------------------
/tests/example_models/TEDB/via_fence_generic_project.aedb/edb.def:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/tests/example_models/TEDB/via_fence_generic_project.aedb/edb.def
--------------------------------------------------------------------------------
/tests/example_models/TEDB/vias_300.aedb/edb.def:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/tests/example_models/TEDB/vias_300.aedb/edb.def
--------------------------------------------------------------------------------
/tests/example_models/cad/GDS/dummy_layermap.map:
--------------------------------------------------------------------------------
1 | #Layer Name Layer Purpose Layer Stream Number Datatype Stream Number
2 |
3 | met5 drawing 72 20
4 | met4 drawing 71 20
5 | met3 drawing 70 20
6 | met2 drawing 69 20
7 | met1 drawing 68 20
8 | via4 drawing 71 44
9 | via3 drawing 70 44
10 | via2 drawing 69 44
11 | via drawing 68 44
--------------------------------------------------------------------------------
/tests/example_models/cad/GDS/sky130_fictitious_dtc_example.gds:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/tests/example_models/cad/GDS/sky130_fictitious_dtc_example.gds
--------------------------------------------------------------------------------
/tests/example_models/convert_and_merge_path.aedb/edb.def:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/tests/example_models/convert_and_merge_path.aedb/edb.def
--------------------------------------------------------------------------------
/tests/example_models/edb_edge_ports.aedb/edb.def:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/tests/example_models/edb_edge_ports.aedb/edb.def
--------------------------------------------------------------------------------
/tests/example_models/multi_zone_project.aedb/edb.def:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/tests/example_models/multi_zone_project.aedb/edb.def
--------------------------------------------------------------------------------
/tests/grpc/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/tests/grpc/__init__.py
--------------------------------------------------------------------------------
/tests/grpc/integration/__init__.py:
--------------------------------------------------------------------------------
1 | """Tests related to the interaction of multiple classes
2 | from PyEDB, e.g. Edb and Ipc2581, ...
3 | """
4 |
--------------------------------------------------------------------------------
/tests/grpc/system/__init__.py:
--------------------------------------------------------------------------------
1 | """Tests related to testing the system as a whole, e.g. exporting
2 | the data of an aedb file to ipc2581, ...
3 | """
4 |
--------------------------------------------------------------------------------
/tests/grpc/system/wave_ports.aedb/edb.def:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/tests/grpc/system/wave_ports.aedb/edb.def
--------------------------------------------------------------------------------
/tests/grpc/system/wave_ports.aedb/stride/model.index:
--------------------------------------------------------------------------------
1 | $begin 'Models'
2 | $end 'Models'
3 |
--------------------------------------------------------------------------------
/tests/grpc/unit/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/tests/grpc/unit/__init__.py
--------------------------------------------------------------------------------
/tests/grpc/unit/test_edbsiwave.py:
--------------------------------------------------------------------------------
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 os
24 |
25 | from mock import Mock
26 | import pytest
27 |
28 | from pyedb.dotnet.database.siwave import EdbSiwave
29 |
30 | pytestmark = [pytest.mark.unit, pytest.mark.no_licence, pytest.mark.grpc]
31 |
32 |
33 | class TestClass:
34 | @pytest.fixture(autouse=True)
35 | def init(self):
36 | self.edb = Mock()
37 | self.edb.edbpath = os.path.join(os.path.expanduser("~"), "fake_edb.aedb")
38 | self.siwave = EdbSiwave(self.edb)
39 |
40 | def test_siwave_add_syz_analsyis(self):
41 | """Add a sywave AC analysis."""
42 | assert self.siwave.add_siwave_syz_analysis()
43 |
--------------------------------------------------------------------------------
/tests/grpc/unit/test_source.py:
--------------------------------------------------------------------------------
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 pytest
24 |
25 | from pyedb.dotnet.database.edb_data.sources import Source
26 |
27 | pytestmark = [pytest.mark.unit, pytest.mark.no_licence, pytest.mark.grpc]
28 |
29 |
30 | class TestClass:
31 | # @pytest.fixture(autouse=True)
32 | # def init(self,local_scratch,):
33 | # self.local_scratch = local_scratch
34 |
35 | def test_source_change_values(self):
36 | """Create source and change its values"""
37 | source = Source()
38 | source.l_value = 1e-9
39 | assert source.l_value == 1e-9
40 | source.r_value = 1.3
41 | assert source.r_value == 1.3
42 | source.c_value = 1e-13
43 | assert source.c_value == 1e-13
44 | source.create_physical_resistor = True
45 | assert source.create_physical_resistor
46 |
--------------------------------------------------------------------------------
/tests/legacy/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/tests/legacy/__init__.py
--------------------------------------------------------------------------------
/tests/legacy/integration/__init__.py:
--------------------------------------------------------------------------------
1 | """Tests related to the interaction of multiple classes
2 | from PyEDB, e.g. Edb and Ipc2581, ...
3 | """
4 |
--------------------------------------------------------------------------------
/tests/legacy/system/__init__.py:
--------------------------------------------------------------------------------
1 | """Tests related to testing the system as a whole, e.g. exporting
2 | the data of an aedb file to ipc2581, ...
3 | """
4 |
--------------------------------------------------------------------------------
/tests/legacy/system/test_edb_geometry.py:
--------------------------------------------------------------------------------
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 |
24 | import pytest
25 |
26 | pytestmark = [pytest.mark.unit, pytest.mark.legacy]
27 |
28 |
29 | class TestClass:
30 | @pytest.fixture(autouse=True)
31 | def init(self, local_scratch, edb_examples):
32 | edbapp = edb_examples.get_si_verse()
33 | path = edbapp.layout.find_primitive(name="line_272")[0]
34 | self.path_center_line_polygon_data = path.get_center_line_polygon_data()
35 | self.point_data = self.path_center_line_polygon_data.get_point(1)
36 | pass
37 |
38 | def test_point_data(self):
39 | assert isinstance(self.point_data.x_evaluated, float)
40 | assert isinstance(self.point_data.y_evaluated, float)
41 | self.point_data.x = "1mm"
42 | assert self.point_data.x == "1mm"
43 |
--------------------------------------------------------------------------------
/tests/legacy/unit/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ansys/pyedb/70a76bce7e8f88e0b72b30700c683511486dbdcc/tests/legacy/unit/__init__.py
--------------------------------------------------------------------------------
/tests/legacy/unit/test_edbsiwave.py:
--------------------------------------------------------------------------------
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 os
24 |
25 | from mock import Mock
26 | import pytest
27 |
28 | from pyedb.dotnet.database.siwave import EdbSiwave
29 |
30 | pytestmark = [pytest.mark.unit, pytest.mark.no_licence, pytest.mark.legacy]
31 |
32 |
33 | class TestClass:
34 | @pytest.fixture(autouse=True)
35 | def init(self, tmpdir):
36 | self.edb = Mock()
37 | self.edb.edbpath = os.path.join(tmpdir, "fake_edb.aedb")
38 | self.siwave = EdbSiwave(self.edb)
39 |
40 | def test_siwave_add_syz_analsyis(self):
41 | """Add a sywave AC analysis."""
42 | assert self.siwave.add_siwave_syz_analysis()
43 |
--------------------------------------------------------------------------------
/tests/legacy/unit/test_source.py:
--------------------------------------------------------------------------------
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 pytest
24 |
25 | from pyedb.dotnet.database.edb_data.sources import Source
26 |
27 | pytestmark = [pytest.mark.unit, pytest.mark.no_licence, pytest.mark.legacy]
28 |
29 |
30 | class TestClass:
31 | # @pytest.fixture(autouse=True)
32 | # def init(self,local_scratch,):
33 | # self.local_scratch = local_scratch
34 |
35 | def test_source_change_values(self):
36 | """Create source and change its values"""
37 | source = Source()
38 | source.l_value = 1e-9
39 | assert source.l_value == 1e-9
40 | source.r_value = 1.3
41 | assert source.r_value == 1.3
42 | source.c_value = 1e-13
43 | assert source.c_value == 1e-13
44 | source.create_physical_resistor = True
45 | assert source.create_physical_resistor
46 |
--------------------------------------------------------------------------------
/tests/utils/test_utils.py:
--------------------------------------------------------------------------------
1 | import warnings
2 |
3 | from pyedb.generic.general_methods import deprecate_argument_name
4 |
5 | VALUE = "Dummy value"
6 | NEW_VALUE = "Other dummy value"
7 | WARNING_MSG = "Argument `old_arg` is deprecated for method `dummy_function`; use `new_arg` instead."
8 |
9 |
10 | @deprecate_argument_name({"old_arg": "new_arg"})
11 | def dummy_function(new_arg=None):
12 | """Dummy function used for testing."""
13 | return new_arg
14 |
15 |
16 | def test_warning_on_deprecated_argument():
17 | """Test deprecation warning on deprecated argument."""
18 | with warnings.catch_warnings(record=True) as log:
19 | warnings.simplefilter("always")
20 | res = dummy_function(old_arg=VALUE)
21 | warning = log[-1]
22 |
23 | assert VALUE == res
24 | assert 1 == len(log)
25 | assert WARNING_MSG in str(warning.message)
26 |
27 |
28 | def test_warning_on_new_argument():
29 | """Test deprecation warning on new argument."""
30 | with warnings.catch_warnings(record=True) as log:
31 | warnings.simplefilter("always")
32 | res = dummy_function(new_arg=VALUE)
33 |
34 | assert VALUE == res
35 | assert 0 == len(log)
36 |
37 |
38 | def test_warning_on_both_deprecated_and_new_arguments():
39 | """Test deprecation warning on both new and old arguments."""
40 | with warnings.catch_warnings(record=True) as log:
41 | warnings.simplefilter("always")
42 | res = dummy_function(new_arg=NEW_VALUE, old_arg=VALUE)
43 | warning = log[-1]
44 |
45 | assert NEW_VALUE == res
46 | assert 1 == len(log)
47 | assert WARNING_MSG in str(warning.message)
48 |
--------------------------------------------------------------------------------