.. 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 [[0.04833361583642983, 0.06845950802472248], [0.04839217710290317, 0.06820646420842003], [0.048476096302053164, 0.06797637324983577], [0.048586150580908885, 0.06776080406509359], [0.048672445716054995, 0.06762130958381865], [0.05067176818706848, 0.06491330967510935], [0.050769291930717185, 0.0648000049584815], [0.05114842692016208, 0.06442086996903659], [0.05120289468443713, 0.0643703064923304], [0.08720212328418347, 0.03335982576863652], [0.08735511697746182, 0.03325121473069015], [0.0877047359472929, 0.03304936212434437], [0.0882134021373534, 0.032913065429500635], [0.08878659946264658, 0.032913065429500635], [0.08929526565270708, 0.03304936212434437], [0.08979166909779229, 0.03333596078699098], [0.09016403859300909, 0.033708330282207793], [0.09045063725565565, 0.034204733727292984], [0.09058693395049935, 0.034713399917353435], [0.09058693395049935, 0.03503044372649857], [0.09058683166450263, 0.03504474631880416], [0.09048967107082366, 0.04183735396100174], [0.09048926753190141, 0.04185485402368393], [0.08978637017721422, 0.0639458794927306], [0.0897676295798525, 0.0641094442946288], [0.08970628997324057, 0.06441781932138024], [0.0895555258600598, 0.06478179608814026], [0.08937199173688463, 0.06505647431452988], [0.08924732876262124, 0.06520837658818007], [0.0880208395789273, 0.06643486577187402], [0.08788643646933333, 0.06654755746655197], [0.08679664168378841, 0.06730942192276895], [0.08676294623404525, 0.06733197520160766], [0.08667866067063877, 0.06738594842571934], [0.08658597244333009, 0.06743856277022901], [0.08636336408365564, 0.06754969080651728], [0.08602704906993228, 0.06764934763029656], [0.08581990776977562, 0.06767288408064792], [0.08580812308064588, 0.06767415242192924], [0.051806832872544235, 0.07112987171313323], [0.05170565396058174, 0.07113500016000002], [0.050887072320460844, 0.07113500016000002], [0.050691511158220036, 0.07111573906668872], [0.05046879970844227, 0.07107143900497076], [0.050289214965552706, 0.0710178513978896], [0.04953634065667003, 0.07071397723210866], [0.04935457314629638, 0.07061787855828856], [0.04915820200547062, 0.070486667556885], [0.04900629973182032, 0.07036200458262161], [0.04883555655902538, 0.07019126140982673], [0.04868479628064163, 0.06999824426118566], [0.04853182672022683, 0.06974350703807211], [0.048427348957554184, 0.06950305012843623], [0.0483566751331029, 0.0692563340940017], [0.048318457999324806, 0.0690144173068744], [0.04830834906256023, 0.06872046150414503]] .. 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_VEW\post_layout_parameterization_PNM1ID.aedb True .. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 6.453 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 `_