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.