.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "examples\00-EDB\10_GDS_workflow.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_10_GDS_workflow.py: EDB: Edit Control File and import gds ------------------------------------- This example shows how you can use PyAEDT to import a gds from an IC file. .. GENERATED FROM PYTHON SOURCE LINES 8-11 Perform required imports ~~~~~~~~~~~~~~~~~~~~~~~~ Perform required imports, which includes importing a section. .. GENERATED FROM PYTHON SOURCE LINES 11-18 .. code-block:: default import os import tempfile import pyaedt import shutil from pyaedt.edb_core.edb_data.control_file import ControlFile .. GENERATED FROM PYTHON SOURCE LINES 19-22 Download file ~~~~~~~~~~~~~ Download the AEDB file and copy it in the temporary folder. .. GENERATED FROM PYTHON SOURCE LINES 22-31 .. code-block:: default temppath = tempfile.gettempdir() local_path = pyaedt.downloads.download_file('gds') c_file_in = os.path.join( local_path, "sky130_fictitious_dtc_example_control_no_map.xml" ) c_map = os.path.join(local_path, "dummy_layermap.map") gds_in = os.path.join(local_path, "sky130_fictitious_dtc_example.gds") gds_out = os.path.join(temppath, "example.gds") shutil.copy2(gds_in,gds_out ) .. rst-class:: sphx-glr-script-out .. code-block:: none 'D:\\Temp\\example.gds' .. GENERATED FROM PYTHON SOURCE LINES 32-38 Control file ~~~~~~~~~~~~ A Control file is an xml file which purpose if to provide additional information during import phase. It can include, materials, stackup, setup, boundaries and settings. In this example we will import an exising xml, integrate it with a layer mapping file of gds and then adding setup and boundaries. .. GENERATED FROM PYTHON SOURCE LINES 38-42 .. code-block:: default c = ControlFile(c_file_in, layer_map=c_map) .. GENERATED FROM PYTHON SOURCE LINES 43-46 Simulation setup ~~~~~~~~~~~~~~~~ Here we setup simulation with HFSS and add a frequency sweep. .. GENERATED FROM PYTHON SOURCE LINES 46-49 .. code-block:: default setup = c.setups.add_setup("Setup1", "1GHz") setup.add_sweep("Sweep1", "0.01GHz", "5GHz", "0.1GHz") .. rst-class:: sphx-glr-script-out .. code-block:: none .. GENERATED FROM PYTHON SOURCE LINES 50-53 Additional stackup settings ~~~~~~~~~~~~~~~~~~~~~~~~~~~ After import user can change stackup settings and add/remove layers or materials. .. GENERATED FROM PYTHON SOURCE LINES 53-61 .. code-block:: default c.stackup.units = "um" c.stackup.dielectrics_base_elevation = -100 c.stackup.metal_layer_snapping_tolerance = "10nm" for via in c.stackup.vias: via.create_via_group = True via.snap_via_group = True .. GENERATED FROM PYTHON SOURCE LINES 62-65 Boundaries settings ~~~~~~~~~~~~~~~~~~~ Boundaries can include ports, components and boundary extent. .. GENERATED FROM PYTHON SOURCE LINES 65-77 .. code-block:: default c.boundaries.units = "um" c.boundaries.add_port("P1", x1=223.7, y1=222.6, layer1="Metal6", x2=223.7, y2=100, layer2="Metal6") c.boundaries.add_extent() comp = c.components.add_component("B1", "BGA", "IC", "Flip chip", "Cylinder") comp.solder_diameter = "65um" comp.add_pin("1", "81.28", "84.6", "met2") comp.add_pin("2", "211.28", "84.6", "met2") comp.add_pin("3", "211.28", "214.6", "met2") comp.add_pin("4", "81.28", "214.6", "met2") c.import_options.import_dummy_nets = True .. GENERATED FROM PYTHON SOURCE LINES 78-81 Write xml ~~~~~~~~~ After all settings are ready we can write xml. .. GENERATED FROM PYTHON SOURCE LINES 81-84 .. code-block:: default c.write_xml(os.path.join(temppath, "output.xml")) .. rst-class:: sphx-glr-script-out .. code-block:: none True .. GENERATED FROM PYTHON SOURCE LINES 85-88 Open Edb ~~~~~~~~~ Import the gds and open the edb. .. GENERATED FROM PYTHON SOURCE LINES 88-93 .. code-block:: default from pyaedt import Edb edb = Edb(gds_out, edbversion="2023.2", technology_file=os.path.join(temppath, "output.xml")) .. GENERATED FROM PYTHON SOURCE LINES 94-97 Plot Stackup ~~~~~~~~~~~~ Stackup plot. .. GENERATED FROM PYTHON SOURCE LINES 97-99 .. code-block:: default edb.stackup.plot(first_layer="met1") .. image-sg:: /examples/00-EDB/images/sphx_glr_10_GDS_workflow_001.png :alt: Stackup :srcset: /examples/00-EDB/images/sphx_glr_10_GDS_workflow_001.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none .. GENERATED FROM PYTHON SOURCE LINES 100-103 Close Edb ~~~~~~~~~ Close the project. .. GENERATED FROM PYTHON SOURCE LINES 103-104 .. code-block:: default edb.close_edb() .. rst-class:: sphx-glr-script-out .. code-block:: none True .. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 7.119 seconds) .. _sphx_glr_download_examples_00-EDB_10_GDS_workflow.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: 10_GDS_workflow.py <10_GDS_workflow.py>` .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: 10_GDS_workflow.ipynb <10_GDS_workflow.ipynb>` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_