Klayout-INTERCONNECT Ring resonator simulation

I am using the SiEPIC EBeam PDK:

I followed the layout driven approach introduced in this conference paper:

Since 3D FDTD simulation of ring resonators requires long simulation time, it is quite useful to model the ring resonator as 2 directional couplers connected to each other. In the paper above, the ports of the ring resonators are connected to grating couplers to couple the light in and out.

Instead of manually creating the layout as described above, an easier way is to use Python scripting in Klayout. This requires minimal effort since there’s a ready made Macro for this. After following the installation steps here, open Klayout and create a new layout. Click Macros>>Macro Development. On the left panel, double click on python script named “Layout_DoubleBus_RingResonator”. Basically, this script generates ring resonators of predetermined radii and gaps. To try this, I clicked on the green run button at the top. However, I wanted to study a ring resonator of 4 um radius and 50 nm gap. So, I changed this in the script as highlighted below.

To test the behavior of the circuit, I clicked on the INTERCONNECT icon in Klayout as in the video above.
INTERCONNECT opens and I got this message:

The drop list has 2 options either to choose the closest S-parameters or generate S-parameters. I noticed that this didn’t occur when I ran the circuit simulation for radii of 3 and 5 um. In these cases, I directly got the results shown below:

So, what do you think is the problem with the 4 um radius case?


Hi @aya_zaki,

Thank you for showing the whole simulation steps, it is a very cool application example.

You got the problem at the end simply because the s-parameter file for the 4 micron radius is not included in the look-up table (it is not pre-simulated). You then have the options to use the nearest available s-parameter file or use the interpolation of two available files or simulate for the exact value (the options may update/vary based on different versions).

I hope this could help :slight_smile:

Hi aya_zaki
Open INTERCONNECT and add two directional couplers . For each directional coupler change the radius and the gap. Radius=4µm and Gap=50nm and press enter. Then you will see a window like the second image you have posted. S parameters file exactly matching input parameters does not exist.
How do you want to proceed?
Simulation types and options:
Click on : (Regular )Find the nearest S parameters file.
But don’t select that.
You have to select the second choice.
(Regular)Generate S parameters using FDTD

Click : Go
Then FDTD Solutions will be launched automatically in order to calculate the new S parameters. I would recommend you that you should not use Python and KLayout.If you want to extract only the S parameters just use INTERCONNECT .

I hope it helps.

1 Like

Hi @konslekk,
Yes, this works. I found that the generated S parameters (.dat files) are automatically added to this directory:


I have a question, why do you recommend using INTERCONNECT directly without KLayout?
Well, I agree with you that the compact model library is enough for circuit simulations. But what if you need to run Monte Carlo analysis to study the process variations? I would like to do this on INTERCONNECT only. I am actually trying to do it but I haven’t studied the MC script carefully yet. So, what do you think?

1 Like

Ηι @aya_zaki
If you want to study the fabrication variabilities you have to do the followings :
1)You have to install “SiEPIC_EBeam_PDK” in KLayout.
2)Open Klayout and open the SiEPIC tab
3)Go “Simulation” and click on “Monte Carlo Simulations”
Then a window “Monte-Carlo Simulation” will open
4)Type of MC Simulation select Wafer to Wafer Simulation
Number of Simulations :for example 5
5)Within Wafer Thickness variations
Sigma RMS for width : for example 4
Sigma RMS for thickness: for example 1.5
6) Finally click on Run Monte Carlo Simulation

I hope it helps