Implementation of Circuit Simulations - SiEPIC/SiEPIC-Tools GitHub Wiki
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.