Schematic Driven layout with Lumerical

Schematic Driven layout with Lumerical#

The Schematic driven layout uses a schematic based on our *.pic.yml.

You will need a supported PDK. Make sure your foundry has a CML for interconnect and that you have a gdsfactory to CML YAML mapping file.

Steps:

  • export SPICE netlist from interconnect.

  • Convert the SPICE netlist to gdsfactory YAML *.pic.yml, using the mapping from gdsfactory to interconnect.

  • Iterate over the pic.yml until you are happy with the final placements in your layout.

from gdsfactory.config import GDSDIR_TEMP

from gplugins import PATH
from gplugins.spice.spice_to_yaml import spice_to_yaml
from gplugins.spice.tests.test_interconnect import spice_netlist_interconnect

netlist_path = GDSDIR_TEMP / "test_interconnect.sp"
netlist_path.write_text(spice_netlist_interconnect)
picyaml_path = GDSDIR_TEMP / "test_interconnect.sp"
mapping_path = PATH.module / "lumerical" / "mapping_ubcpdk.yml"
spice_to_yaml(
    netlist_path=netlist_path,
    picyaml_path=picyaml_path,
    mapping_path=mapping_path,
    pdk="ubcpdk",
)
LOG: Non-PDK elements detected! Removing instances {X_dc_1, X_dc_2, X_dc_3, X_ebeam_y_1550_1, X_ebeam_y_1550_2} from netlist.
LOG: 0 electrical pads were added.
LOG: Non-PDK elements detected! Removing instances {(i.e.,, X_ebeam_y_1550_1, X_ebeam_y_1550_2, X_TE1550_SubGC_neg31_oxide_1, X_TE1550_SubGC_neg31_oxide_2, X_ebeam_y_1550_3, X_ebeam_y_1550_4, X_wg_heater_1, X_wg_heater_2, X_TE1550_SubGC_neg31_oxide_3, X_TE1550_SubGC_neg31_oxide_4} from netlist.
LOG: 0 electrical pads were added.
LOG: Overwrote /tmp/gdsfactory/test_interconnect.sp.
LOG: Overwrote /tmp/gdsfactory/test_interconnect.sp.