.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "examples\00-EDB\11_post_layout_parameterization.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_11_post_layout_parameterization.py: EDB: post-layout parameterization --------------------------------- This example shows you how to parameterize the signal net in post-layout. .. GENERATED FROM PYTHON SOURCE LINES 8-10 Define input parameters ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. GENERATED FROM PYTHON SOURCE LINES 10-14 .. code-block:: default signal_net_name = "DDR4_ALERT3" coplanar_plane_net_name = "1V0" # Specify coplanar plane net name for adding clearance layers = ["16_Bottom"] # Specify layers to be parameterized .. GENERATED FROM PYTHON SOURCE LINES 15-17 Perform required imports ~~~~~~~~~~~~~~~~~~~~~~~~ .. GENERATED FROM PYTHON SOURCE LINES 17-26 .. code-block:: default import os import tempfile import pyaedt from pyaedt import downloads from pyaedt import Edb temppath = pyaedt.generate_unique_folder_name() .. GENERATED FROM PYTHON SOURCE LINES 27-29 Download and open example layout file in edb format ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. GENERATED FROM PYTHON SOURCE LINES 29-32 .. code-block:: default edb_fpath = pyaedt.downloads.download_file('edb/ANSYS-HSD_V1.aedb',destination=temppath) appedb = Edb(edb_fpath, edbversion="2023.2") .. GENERATED FROM PYTHON SOURCE LINES 33-35 Cutout ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. GENERATED FROM PYTHON SOURCE LINES 35-38 .. code-block:: default appedb.cutout([signal_net_name], [coplanar_plane_net_name, "GND"], remove_single_pin_components=True) .. rst-class:: sphx-glr-script-out .. code-block:: none True .. GENERATED FROM PYTHON SOURCE LINES 39-41 Get all trace segments from the signal net ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. GENERATED FROM PYTHON SOURCE LINES 41-50 .. code-block:: default net = appedb.nets[signal_net_name] trace_segments = [] for p in net.primitives: if p.layer_name not in layers: continue if not p.type == "Path": continue trace_segments.append(p) .. GENERATED FROM PYTHON SOURCE LINES 51-53 Create and assign delta w variable per layer ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. GENERATED FROM PYTHON SOURCE LINES 53-60 .. code-block:: default for p in trace_segments: vname = f"{p.net_name}_{p.layer_name}_dw" if vname not in appedb.variables: appedb[vname] = "0mm" new_w = f"{p.width}+{vname}" p.width = new_w .. GENERATED FROM PYTHON SOURCE LINES 61-63 Delete existing clearance ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. GENERATED FROM PYTHON SOURCE LINES 63-69 .. code-block:: default for p in trace_segments: for g in appedb.modeler.get_polygons_by_layer(p.layer_name, coplanar_plane_net_name): for v in g.voids: if p.is_intersecting(v): v.delete() .. GENERATED FROM PYTHON SOURCE LINES 70-72 Create and assign clearance variable per layer ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. GENERATED FROM PYTHON SOURCE LINES 72-81 .. code-block:: default for p in trace_segments: clr = f"{p.net_name}_{p.layer_name}_clr" if clr not in appedb.variables: appedb[clr] = "0.5mm" path = p.get_center_line() for g in appedb.modeler.get_polygons_by_layer(p.layer_name, coplanar_plane_net_name): void = appedb.modeler.create_trace(path, p.layer_name, f"{p.width}+{clr}*2") g.add_void(void) .. GENERATED FROM PYTHON SOURCE LINES 82-84 Plot ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. GENERATED FROM PYTHON SOURCE LINES 84-86 .. code-block:: default appedb.nets.plot(layers=layers[0], size=2000) .. image-sg:: /examples/00-EDB/images/sphx_glr_11_post_layout_parameterization_001.png :alt: main :srcset: /examples/00-EDB/images/sphx_glr_11_post_layout_parameterization_001.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 87-89 Save and close Edb ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. GENERATED FROM PYTHON SOURCE LINES 89-94 .. code-block:: default save_edb_fpath = os.path.join(temppath, pyaedt.generate_unique_name("post_layout_parameterization") + ".aedb") appedb.save_edb_as(save_edb_fpath) print("Edb is saved to ", save_edb_fpath) appedb.close_edb() .. rst-class:: sphx-glr-script-out .. code-block:: none Edb is saved to D:\Temp\pyaedt_prj_KRA\post_layout_parameterization_6BUFMO.aedb True .. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 6.609 seconds) .. _sphx_glr_download_examples_00-EDB_11_post_layout_parameterization.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: 11_post_layout_parameterization.py <11_post_layout_parameterization.py>` .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: 11_post_layout_parameterization.ipynb <11_post_layout_parameterization.ipynb>` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_