# 1.1. Design folder structure¶

Before starting with the actual design of the multimode interferometer (MMI), it is important to set up a good structure for the design project. An organized design project ensures that your work will not get lost and that it can be reused endlessly without needing to start from scratch every time. You, and eventually your colleagues and fellow designers, will be able to rerun simulations and obtain new optimized layouts with minimal effort. Using Python, IPKISS parametric cells make it easy to design, document and automate the photonic design flow. Let’s see how.

Whether a new component is being designed to be added to a PDK or to your team library, the folder structure should be as follows:

mmi
├── data
├── doc
├── optimization
├── pcell
├── regeneration
├── simulation
└── __init__.py


As we are setting up our project to design an MMI, we call the main folder mmi and we organize all the information we need to store and document in the following sub-folders:

• data: It contains the simulated, or measured, S-matrix data that is used to model the designed component when running circuit simulations.
• doc: It contains a documentation of the component, together with example scripts on how to use it.
• optimization: It contains a script to run an optimization algorithm to obtain optimized parameters for the component. In the case of the MMI, this script varies the geometrical parameters of the MMI layout to maximize the transmission.
• pcell: This is the core of the component. It contains the PCell definition and, if needed, other utilities used to design the component.
• regeneration: It contains a regeneration script to regenerate simulation data of the optimized component. This is useful to ensure the S-matrix stored in the data folder is always up-to-date with the MMI layout.
• simulation: It contains the simulation recipe of the component. In this case, this recipe is run several times in the optimization algorithm to find the optimized parameters of the MMI.

With this folder structure, any member of your design team will be able to run new simulations and obtain a new optimized component by simply reusing the simulation and optimization algorithms that have already been defined.

Let’s now dive into the details, starting from the definition of the MMI PCell.