Author: Francesco Virga
This repository contains 3 main modules which make up the Silicon Photonic Neuromorphic software simulation package
-
Lumerical: This module contains all resources related to Lumerical simulations. Cached simulation files are also stored here. interface.py implements the Lumerical Automation API to control simulations.
-
CLI: This module collects input from a user using an intuitive command-line interface. It prompts the user for required information, making suggestions and aggregating the information for Lumerical.
-
API: This module acts as the middleman between the CLI and Lumerical. It receives inputs from the CLI module and decides how to use them with the Lumerical module. It also decides which simulation files can be used from the cache and which need to be re-simulated based on the user's inputs.
Note: Default simulation resources are provided at the root level of the Lumerical module (the same resources that are stored in the cache). These have been heavily tested, so if any strange behaviour occurs with cached simulation data, try running the same simulation manually using the default files (as long as you haven't saved any changes to weight_bank.icp these should be setup to be used by default only when opening & running the simulation manually, not through the CLI)
-
Extras: This folder is not part of the software but has various code files and data I used to experiment, test and build this project. Most of the files are not setup to be used out of the box but could provide some solid resources to better understand Lumerical, INTERCONNECT and the Automation API.
-
In Lumerical/interface.py, set the Lumerical version and Lumerical installation path. For more information on how to find this information, see the Automation API documentation.
-
Install dependencies
pip install -r requirements.txt
- Run simulation platform
python main.py
- The application will walk you through setting up a simulation and give you an opportunity to download results.
I tried to aggregate a few resources I found useful while building this application. Note that this is not a complete list.
- INTERCONNECT Product Reference Manual - Contains all information about INTERCONNECT
- Lumerical Scripting Language - All Lumerical scripting commands. Note that these are all of the same commands for the Automation API
- Parameter sweeps, Optimization and Monte Carlo analysis overview - Information on sweeps, scripting and some solid examples
- Ring modulator - Ring modulator simulation set
- Electro-optical modulator based on a graphene-coated waveguide - I was not able to get to this simulation example but it looks promising
- Thermally tuned waveguide (FDE) - Thermally tuned waveguide simulation set