Giter VIP home page Giter VIP logo

jevillegasd / siepic-tools Goto Github PK

View Code? Open in Web Editor NEW

This project forked from siepic/siepic-tools

0.0 1.0 0.0 375.82 MB

Package for KLayout to add integrated optics / silicon photonics functionality (waveguides, netlist extraction, circuit simulations, etc)

License: Other

Shell 0.04% Python 86.47% MATLAB 0.08% Jupyter Notebook 7.09% Makefile 0.18% C 2.36% Cython 3.72% CSS 0.05% HTML 0.01%

siepic-tools's Introduction

SiEPIC-Tools

Download and Installation instructions:

Objectives:

  • Use an open-source layout tool (KLayout) to implement a sophisticated layout design environment for silicon photonics
  • Support for both GUI and Python script-based layout, or combinations of both.
  • KLayout-INTERCONNECT integration offers a layout-first design methodology. Inspired by Layout Versus Schematic tools, this includes netlist extraction routines to generate a schematic from the layout. This allows the user to directly simulate from the layout, without needing to create the schematic first. This approach is appealing to photonics designers who are accustomed to designing physical layouts, rather than schematics. A library of components (layout and compact models) is included in the SiEPIC-EBeam-PDK Process Design Kit, specifically for silicon photonics fabrication via Electron Beam Lithography.
  • Whereas a typical schematic-driven design flow includes a schematic, circuit simulation, layout, and verification (see Chapter 10 of the textbook), the approach taken here is Layout-driven, followed by verification, then a schematic (via a netlist extraction) and simulations.

Video of a layout and simulation of a ring resonator circuit:

Layout and simulation of a ring resonator circuit

Monte Carlo simulations of a ring resonator circuit, showing fabrication variations:

Monte Carlo simulations of a ring resonator circuit

Layout of a Mach-Zehnder Interferometer:

Layout of a Mach-Zehnder Interferometer

Simulations for the MZI:

Lumerical INTERCONNECT simulations

Package includes:

  • Generic Silicon Photonics (GSiP) Process Design Kit (PDK): this package, including fabrication documentation, scripts, etc.

  • PCells: ring modulator

  • GDS Library: grating coupler, detector, edge coupler.

  • Verification:

    • Scanning the layout. Finding waveguides, devices, pins.
    • Verification: Identifying if there are missing connections, mismatched waveguides, too few points in a bend, etc.
    • Example layouts using the library for verification (EBeam_LukasChrostowski_E_LVS.gds, SiEPIC_EBeam_PDK_Verification_Check.gds).
    • Verification for automated measurements
  • Circuit simulations:

    • Netlist generation
    • Creating a Spice netlist suitable for for circuit simulations. This includes extracting the waveguide length (wg_length) for all waveguides.
    • Menu item "Lumerical INTERCONNECT" will automatically: generate the netlist, launch Lumerical INTERCONNECT to perform the circuit simulations, and pop-up a plot of the transmission spectrum.
    • Monte Carlo simulations, including waveguides, ring resonators built using directional couplers, y-branches, grating couplers.
  • Waveguide functionality:

    • Hot Key "W": selected paths are first snapped to the nearest pins, then converted to waveguides.
    • Hot Key "Shift-W": selected waveguides are converted back to paths.
    • Hot Key "Ctrl-Shift-W": measure the length of the selected waveguides.
    • Hot Key "Ctrl-Shift-R": resize the waveguides, for a given target length.
  • Layout object snapping

  • Hot Key "Shift-O": Snaps the selected object to the one where the mouse is hovering over.

  • Helper functions from Python-scripted layouts

    • snapping components
    • adding waveguides between components
    • layout primitives (arcs, bezier curves, waveguides, tapers, rings, etc)

Contributing to this project:

You can download the latest development version (master) of the PDK: Zip file download of the PDK

It is posted on GitHub for 1) revision control, 2) so that others can contribute to it, find bugs, 3) easy download of the latest version.

To contribute to the PDK:

  • On the GitHub web page, Fork a copy of the project into your own account.
  • Clone to your Desktop
  • Make edits/contributions. You can use the KLayout IDE to write Python (or Ruby) scripts; KLayout Python IDE for writing/debugging PCells/scripts/macros.
  • "Commit to master" (your own master)
  • Create a Pull Request -- this will notify me of your contribution, which I can merge into the main project

You can use GitHub desktop to synchronize files. Then create symbolic links to your .klayout folder to point to the local copy of this repository. This is useful to automatically update the local KLayout installation (e.g., multiple computers), as changes are made in GitHub by others.

Screenshots:

Screenshot1 Screenshot2 Screenshot3

siepic-tools's People

Contributors

lukasc-ubc avatar jaspreetj avatar mustafacc avatar thomaslima avatar bruxillensis avatar jevillegasd avatar atait avatar maddy561 avatar seanlam97 avatar stefanpreble avatar jinwallner avatar yechima avatar luzeqin avatar stratomaster31 avatar jfluecki avatar rounaksingh avatar 121comeon avatar clalarco avatar sqt-sfu avatar asinomad-gh avatar raptor avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.