Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

KLayout to FDTD to INTERCONNECT integration #151

Open
lukasc-ubc opened this issue Mar 28, 2017 · 0 comments
Open

KLayout to FDTD to INTERCONNECT integration #151

lukasc-ubc opened this issue Mar 28, 2017 · 0 comments

Comments

@lukasc-ubc
Copy link
Member

lukasc-ubc commented Mar 28, 2017

Objective: run a 3D-FDTD simulation for a KLayout component to generate the S-Parameters; automatically import them into INTERCONNECT to enable circuit simulations.

Concept based on 2014 UBC-Mentor Graphics project by Shiyu Stephen Liang, Trammy Nguyen, and Phuong Tran.

Approach:

  • User defines a cell in KLayout (fixed or parameterized PCell), including DevRec and PinRec
    • Lumerical_INTERCONNECT_component=gds2fdtd: KLayout will treat this as regular component, with a Spice command that will ask INTERCONNECT to load the simulated S-parameters
    • Configuration for the FDTD simulation in KLayout (text label within the cell; alternatives: a global GUI - how do you save settings?, hardcoded):
      • wavelength range
      • polarization
      • FDTD mesh accuracy
      • PCell parameters
      • example: Spice_param:"load from file"=true "s parameters filename"="wraparoundDC_1550nm_100nm_TE_mesh3_PCellParam1_1e-6_PCellParam2_50e-9.dat" (for an example component called "wraparoundDC") (no equal signs allowed in the Spice file parameters)
  • Menu for SiEPIC - Simulation - Simulate component using FDTD:
    • if one component selected, simulate only that one; if none selected, find all gds2fdtd components which don't have an S-Param file on disk and simulate them all.
    • determine a cell name from the cell text (including simulation parameters and PCell parameters); use this for the GDS export, the S-parameter file to be created, and for INTERCONNECT to load the S-param file.
    • export the cell as a GDS, saved in the project folder
    • FDTD script (.lsf) embedded within KLayout Python macro. Call FDTD with LSF script to: load GDS, solver configuration, Ports (using Lumerical's new S-param ports), save S-Param file in the same project folder using the above filename
  • SiEPIC - Verification:
    • extra functionality to error-check that the S-Param file for the gds2fdtd component exists.
  • KLayout-INTERCONNECT: run circuit simulations.
    • create netlist as usual, with a special function to deal with the gds2fdtd component. (unless we can just use the component name = SPAR, and the Spice_param parameters used to pass the filename to load)
    • Implement as an N-port SPAR import with a specified file

Double-check if this will work / figure out:

  • check that a netlist can include an N-port SPAR import with a specified file.

    • doesn't work on the SPAR built-in, but created a component gds2fdtd which is a copy of the SPAR. Successfully loads S-Params and changes the number of ports via the syntax:
      spar N100 N101 gds2fdtd library="Custom/ebeam_v1.2" sch_x=50 sch_y=10 "load from file"=true "s parameters filename"="/Users/lukasc/SiEPIC_EBeam_PDK/Lumerical_EBeam_CML/ebeam_v1.2/source_data/bdc_TE_source/EBeam_1550_TE_BDC.sparam"
    • added gds2fdtd component to CML: lukasc-ubc@41a45ef
  • Figure out the port ordering, and make sure KLayout/FDTD/INTERCONNECT are consistent.

    • changing the name of the ports in the S-Param.dat file (e.g,. from "port 1" to "port A") doesn't change the name of the ports in the INTERCONNECT component. (added a question on Lumerical: https://kx.lumerical.com/t/optical-ports-extracting-s-parameters/3773/2)
    • maybe just do what already do for the other components: sort the KLayout pins in alphabetical order, and export these into FDTD in order where FDTD/INTERCONNECT will use the default "port 1", "port 2" and so on. Then they will be correctly connected.
  • FDTD settings:

    • material model: configure to fit Silicon - Palik over a range of 1.2 to 1.7 (hard coded)
    • use PMLs with reduced reflections (say -50 dB)
    • use metal for z-min z-max

Also, stop using /tmp for the spice & ICP files? Instead, put the in the folder where the GDS is saved, which will make it easier to keep track of all the project files (including the new S-parameters, which should be permanently saved for future simulations).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants
@lukasc-ubc and others