Skip to content

Implementation of Circuit Simulations

Lukas Chrostowski edited this page Feb 16, 2018 · 1 revision

This page describes how circuit simulations are performed from KLayout using Lumerical INTERCONNECT.

SiEPIC.lumerical.interconnect.Setup_Lumerical_KLayoutPython_integration()

  • Configures the user environment to find Lumerical tools; configures the Lumerical Python integration; runs Lumerical INTERCONNECT (INTC) to check that it is working
  • Install the compact model library (CML) distributed with the active technology in INTC
  • read the CML elements, so we can check that all models exist prior to running simulations

SiEPIC.lumerical.interconnect.circuit_simulation()

  • Get the netlist, using SiEPIC.extend: cell.spice_netlist_export()
  • Create a Lumerical script file (LSF)
  • [Optional] Load the measurement data and send to INTC to plot together with simulation data
  • Run the simulation using either Python integration to INTC, or a system call to INTC.

SiEPIC.lumerical.interconnect.circuit_simulation_update_netlist()

  • update netlist and run simulation

SiEPIC.lumerical.interconnect.circuit_simulation_monte_carlo()

  • read the Monte Carlo parameters for the selected technology from MONTECARLO.xml
  • present a GUI to allow the user to choose the number of wafers and chips to run.
  • the INTC script code that implements the Monte Carlo simulation is embedded in the Python code

SiEPIC.lumerical.interconnect.component_simulation()

This function is used to characterize individual components. Steps are:

  • Identify which component(s) is selected in the layout
  • Create a Netlist and a circuit simulation where the laser is connected to one of the component pins (user selected), and the detectors are connected to all other component pins.