.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "examples\00-EDB\08_CPWG.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note :ref:`Go to the end ` to download the full example code .. rst-class:: sphx-glr-example-title .. _sphx_glr_examples_00-EDB_08_CPWG.py: EDB: fully parametrized CPWG design ----------------------------------- This example shows how you can use HFSS 3D Layout to create a parametric design for a CPWG (coplanar waveguide with ground). .. GENERATED FROM PYTHON SOURCE LINES 9-13 Perform required imports ~~~~~~~~~~~~~~~~~~~~~~~~ Peform required imports. Importing the ``Hfss3dlayout`` object initializes it on version 2023 R2. .. GENERATED FROM PYTHON SOURCE LINES 13-18 .. code-block:: default import pyaedt import os import numpy as np .. GENERATED FROM PYTHON SOURCE LINES 19-22 Set non-graphical mode ~~~~~~~~~~~~~~~~~~~~~~ Set non-graphical mode. The default is ``False``. .. GENERATED FROM PYTHON SOURCE LINES 22-25 .. code-block:: default non_graphical = False .. GENERATED FROM PYTHON SOURCE LINES 26-29 Launch EDB ~~~~~~~~~~ Launch EDB. .. GENERATED FROM PYTHON SOURCE LINES 29-34 .. code-block:: default aedb_path = os.path.join(pyaedt.generate_unique_folder_name(), pyaedt.generate_unique_name("pcb") + ".aedb") print(aedb_path) edbapp = pyaedt.Edb(edbpath=aedb_path, edbversion="2023.2") .. rst-class:: sphx-glr-script-out .. code-block:: none D:\Temp\pyaedt_prj_6ME\pcb_STA31M.aedb .. GENERATED FROM PYTHON SOURCE LINES 35-38 Define parameters ~~~~~~~~~~~~~~~~~ Define parameters. .. GENERATED FROM PYTHON SOURCE LINES 38-46 .. code-block:: default params = {"$ms_width": "0.4mm", "$ms_clearance": "0.3mm", "$ms_length": "20mm", } for par_name in params: edbapp.add_project_variable(par_name, params[par_name]) .. GENERATED FROM PYTHON SOURCE LINES 47-50 Create stackup ~~~~~~~~~~~~~~ Create a symmetric stackup. .. GENERATED FROM PYTHON SOURCE LINES 50-54 .. code-block:: default edbapp.stackup.create_symmetric_stackup(2) edbapp.stackup.plot() .. image-sg:: /examples/00-EDB/images/sphx_glr_08_CPWG_001.png :alt: Stackup :srcset: /examples/00-EDB/images/sphx_glr_08_CPWG_001.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none .. GENERATED FROM PYTHON SOURCE LINES 55-58 Draw planes ~~~~~~~~~~~ Draw planes. .. GENERATED FROM PYTHON SOURCE LINES 58-71 .. code-block:: default plane_lw_pt = ["0mm", "-3mm"] plane_up_pt = ["$ms_length", "3mm"] top_layer_obj = edbapp.modeler.create_rectangle("TOP", net_name="gnd", lower_left_point=plane_lw_pt, upper_right_point=plane_up_pt) bot_layer_obj = edbapp.modeler.create_rectangle("BOTTOM", net_name="gnd", lower_left_point=plane_lw_pt, upper_right_point=plane_up_pt) layer_dict = {"TOP": top_layer_obj, "BOTTOM": bot_layer_obj} .. GENERATED FROM PYTHON SOURCE LINES 72-75 Draw trace ~~~~~~~~~~ Draw a trace. .. GENERATED FROM PYTHON SOURCE LINES 75-85 .. code-block:: default trace_path = [["0", "0"], ["$ms_length", "0"]] edbapp.modeler.create_trace(trace_path, layer_name="TOP", width="$ms_width", net_name="sig", start_cap_style="Flat", end_cap_style="Flat" ) .. rst-class:: sphx-glr-script-out .. code-block:: none .. GENERATED FROM PYTHON SOURCE LINES 86-89 Create trace to plane clearance ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Create a trace to the plane clearance. .. GENERATED FROM PYTHON SOURCE LINES 89-96 .. code-block:: default poly_void = edbapp.modeler.create_trace(trace_path, layer_name="TOP", net_name="gnd", width="{}+2*{}".format("$ms_width", "$ms_clearance"), start_cap_style="Flat", end_cap_style="Flat") edbapp.modeler.add_void(layer_dict["TOP"], poly_void) .. rst-class:: sphx-glr-script-out .. code-block:: none True .. GENERATED FROM PYTHON SOURCE LINES 97-100 Create ground via padstack and place ground stitching vias ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Create a ground via padstack and place ground stitching vias. .. GENERATED FROM PYTHON SOURCE LINES 100-113 .. code-block:: default edbapp.padstacks.create(padstackname="GVIA", holediam="0.3mm", paddiam="0.5mm", ) yloc_u = "$ms_width/2+$ms_clearance+0.25mm" yloc_l = "-$ms_width/2-$ms_clearance-0.25mm" for i in np.arange(1, 20): edbapp.padstacks.place([str(i) + "mm", yloc_u], "GVIA", net_name="GND") edbapp.padstacks.place([str(i) + "mm", yloc_l], "GVIA", net_name="GND") .. GENERATED FROM PYTHON SOURCE LINES 114-117 Save and close EDB ~~~~~~~~~~~~~~~~~~ Save and close EDB. .. GENERATED FROM PYTHON SOURCE LINES 117-121 .. code-block:: default edbapp.save_edb() edbapp.close_edb() .. rst-class:: sphx-glr-script-out .. code-block:: none True .. GENERATED FROM PYTHON SOURCE LINES 122-125 Open EDB in AEDT ~~~~~~~~~~~~~~~~ Open EDB in AEDT. .. GENERATED FROM PYTHON SOURCE LINES 125-129 .. code-block:: default h3d = pyaedt.Hfss3dLayout(projectname=aedb_path, specified_version="2023.2", non_graphical=non_graphical, new_desktop_session=True) .. rst-class:: sphx-glr-script-out .. code-block:: none Initializing new desktop! .. GENERATED FROM PYTHON SOURCE LINES 130-133 Create wave ports ~~~~~~~~~~~~~~~~~ Create wave ports. .. GENERATED FROM PYTHON SOURCE LINES 133-137 .. code-block:: default h3d.create_edge_port("line_3", 0, iswave=True, wave_vertical_extension=10, wave_horizontal_extension=10) h3d.create_edge_port("line_3", 2, iswave=True, wave_vertical_extension=10, wave_horizontal_extension=10) .. rst-class:: sphx-glr-script-out .. code-block:: none .. GENERATED FROM PYTHON SOURCE LINES 138-141 Edit airbox extents ~~~~~~~~~~~~~~~~~~~ Edit airbox extents. .. GENERATED FROM PYTHON SOURCE LINES 141-145 .. code-block:: default h3d.edit_hfss_extents(air_vertical_positive_padding="10mm", air_vertical_negative_padding="1mm") .. rst-class:: sphx-glr-script-out .. code-block:: none True .. GENERATED FROM PYTHON SOURCE LINES 146-149 Create setup ~~~~~~~~~~~~ Create an HFSS simulation setup. .. GENERATED FROM PYTHON SOURCE LINES 149-168 .. code-block:: default setup = h3d.create_setup() setup["MaxPasses"]=2 setup["AdaptiveFrequency"]="3GHz" setup["SaveAdaptiveCurrents"]=True h3d.create_linear_count_sweep( setupname=setup.name, unit="GHz", freqstart=0, freqstop=5, num_of_freq_points=1001, sweepname="sweep1", sweep_type="Interpolating", interpolation_tol_percent=1, interpolation_max_solutions=255, save_fields=False, use_q3d_for_dc=False, ) .. rst-class:: sphx-glr-script-out .. code-block:: none .. GENERATED FROM PYTHON SOURCE LINES 169-172 Plot layout ~~~~~~~~~~~ Plot layout .. GENERATED FROM PYTHON SOURCE LINES 172-179 .. code-block:: default h3d.modeler.edb.nets.plot(None, None, color_by_net=True) cp_name = h3d.modeler.clip_plane() h3d.save_project() .. image-sg:: /examples/00-EDB/images/sphx_glr_08_CPWG_002.png :alt: Cell_RY5TM1 :srcset: /examples/00-EDB/images/sphx_glr_08_CPWG_002.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none True .. GENERATED FROM PYTHON SOURCE LINES 180-183 Start HFSS solver ~~~~~~~~~~~~~~~~~ Start the HFSS solver by uncommenting the ``h3d.analyze()`` command. .. GENERATED FROM PYTHON SOURCE LINES 183-198 .. code-block:: default h3d.analyze() # Save AEDT aedt_path = aedb_path.replace(".aedb", ".aedt") h3d.logger.info("Your AEDT project is saved to {}".format(aedt_path)) solutions = h3d.get_touchstone_data()[0] solutions.log_x = False solutions.plot() h3d.post.create_fieldplot_cutplane(cp_name, "Mag_E", h3d.nominal_adaptive, intrinsincDict={"Freq":"3GHz", "Phase":"0deg"}) # Release AEDT. h3d.release_desktop() .. image-sg:: /examples/00-EDB/images/sphx_glr_08_CPWG_003.png :alt: 08 CPWG :srcset: /examples/00-EDB/images/sphx_glr_08_CPWG_003.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none True .. rst-class:: sphx-glr-timing **Total running time of the script:** (2 minutes 15.559 seconds) .. _sphx_glr_download_examples_00-EDB_08_CPWG.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: 08_CPWG.py <08_CPWG.py>` .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: 08_CPWG.ipynb <08_CPWG.ipynb>` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_