Question:
Answer:
1.1 Introduction
Wavelength Division Multiplexing (WDM) is a common technique used in optical communication networks to increase the data capacity of a single optical fibre. By using different wavelengths, many optical communication channels can be transmitted simultaneously in an optical fibre.
In a WDM transmission system, a multiplexer is used at the transmitter to combine (multi-plex) several wavelength channels together. At the receiver, different wavelength channels are separated by a WDM demultiplexer.
A WDM demultiplexer can be constructed from cascaded add-drop ring resonators [1, 2] as illustrated in Fig. 1.
Figure 1. WDM demultiplexer based on cascaded add-drop ring resonators
The wavelength response of a WDM demultiplexer is illustrated in Fig. 2
Figure 2. WDM demultiplexer wavelength response
Some important characteristics of a WDM are: – Channel bandwidth(BW): 3 dB bandwidth of
a wavelength channel – Channel spacing (CS): wavelength spacing between adjacent channels –
Insertion loss (IL): IL = 10 log10 Pout at the center wavelength of a channel – Cross-talk (XT): XT =
Pin
10 log10 Pout,j+1 is the difference in the output power of the adjacent channel (channel j+1) and a
Pout,j
channel (channel j). – Free Spectral Range (FSR)
References:
- Xuezhe Zheng, Ivan Shubin, Guoliang Li, Thierry Pinguet, Attila Mekis, Jin Yao, Hiren Thacker, Ying Luo, Joey Costa, Kannan Raj, John E. Cunningham, and Ashok V. Krishnamoorthy, “A tunable 1×4 silicon CMOS photonic wavelength multiplexer/demultiplexer for dense optical interconnects,” Opt. Express 18, 5151-5160 (2010)
- Philippe P. Absil, Peter De Heyn, Pieter Dumon, Dries Van Thourhout, Peter Verheyen, Shankar Selvaraja, Guy Lepage, Marianna Pantouvaki, Michal Rakowski, Joris Van Campenhout, “Advances in silicon photonics WDM devices,” Proc. SPIE 9010, Next-Generation Optical Net-works for Data Centers and Short-Reach Links, 90100J (2014/02/19)
1.2 Project
In this project, you will design a WDM demultiplexer based on add-drop ring resonators. The specifications of your demultiplxer depend on your student number.
Run the below code cell and enter your student number to obtain the demultiplexer specifica-tions
In [ ]: student_number = raw_input(“Enter your student number, without s, eg 1234567, then press from eeet2392.wdm_specs import *
wdm_specs(student_number)
The designed WDM demultiplexer must also satisfy the following requirements: – All ring resonators must be critically coupled. – The gap between waveguides in the directional couplers must not be smaller than 200 nm – The FSR range of all ring resonators must be at least four times the channel spacing
Design a demultiplxer to meet the above requirements. You need to work out the length of all rings, the gap and length of all directional couplers. For this project, you can assume that the effect of the bend sections on the coupling ratios of the directional couplers is negilible.
You also must use ASP PDK in your design. You will learn about PDK in week 10. To use ASP PDK you need to import asp_silicon_photonics.technology instead to default silicon pho-tonic technology, ie import asp_silicon_photonics.technology instead of from technologies import silicon_photonics
Create a PCell for the demultiplexer. The PCell must contain the Layout view and other views required for circuit simulation.
Simulate the designed demultiplexer and plot the wavelength response of all channels and the through port. From the simulation results, determine the bandwidth, insersion loss, cross talk of each channel. Discuss what you can do to increase the bandwidth, reduce the insersion loss and reduce the cross-talk.
Attach grating couplers from the PDK to all input and output ports of the demultiplexer to form a completed demultiplexer device ready to be interfaced to optical fibres. All grating cou-plers must be spaced 50 mm apart horizontally. Generate the GDS file for your final device. Simu-late your demultiplexer with grating couplers.
Discuss the effect (if there is any) of the input and output grating couplers on the performance of the designed WDM demultiplexer.
Investigate the effects of the variation in the waveguide width on the performance of the de-signed WDM demultiplexer. Extra marks will be given if you can investigate the effect of silicon core layer thickness variation or temperature variation on the demultiplexer performance.
1.3 Project submission
You will need to submit: – This notebook – A report summarising your design process, the results and your discussion. Detailed instructions on the structure of the report will be provided later. The report will need to be submitted via the submission link on Blackboard.
The due date for the notebook and report submission is Thursday October 19 at 23:59 (Week 13). Late submission will be penalised at 5% of the total available marks per 6 hours for up to 48 hours. Submission more than 48 hours after the deadline will not be marked.
You are also required to demonstrate your design (ie running the notebook) to your course lecturer on Friday October 20. Time and location for project demonstration will be announced later.
1.4 Plagiarism
This is an individual project. Each student will have different set of specifications based on your student number. Do not copy designs or reports from other students. If two design notebooks or reports are found to be similar, mark penalty will be applied for both notebooks or reports.
2
Important: Plagiarism is academic misconduct and you will be penalised and reported to RMIT senior officer for academic misconduct
1.5 Your project design starts from here
Add new cells and enter code to work on your design. All of your calculation, design and simu-lation should be contained in this notebook.
Before each code cell you need include some explanation of what are you trying to achieve with that code cell. Use markdown cell to enter your text. You should use headings to organise your notebook into sections
In [ ]:
In [ ]:
By submitting this project I agree that all the work was done by me and that I have not copied anything from anyone else.
EEET2392 – Week 3 Home Exercise
Due date: Sunday August 6 at 23.59. Late submission will be penalized at 5% of the total available marks per 6 hours for up to 48 hours. Submission more than 48 hours after the dealine will not be marked.
In this home exercise you will define and simulate a silicon rib waveguide and layout the waveguide in IPKISS.
Remember to run the next cell first to make all plotting figures appear in this notebook.
In [ ]: # You need to run this cell to make all plotting figures appear in this notebook.
%matplotlib inline
Task 1 (6 points):
A rib waveguide is illustrated in the below picture.
Use the same technique as in the lecture, use REME to define and simulate a rib waveguide with the following parameters: – Silica substrate thickness: t_substrate = 0.5 mm – Silicon core thickness: t_core = 220 nm – Air cladding thickness: t_cladding = 0.5 mm – Etching depth: d_etch
- 70 nm – Rib core width: w_core = 0.6 mm You need to follow these steps:
- Import all required Python modules.
- Define five variables t_subtrate, t_core, t_cladding, d_depth and w_core with correct values.
- Define silicon, silica and air material variables.
- Define two slabs for the cladding and core regions. You need to make sure that two slabs have the same total thickness.
- ’Glue’ the slabs together to create an RWG. View the RWG to make sure that it is created correctly.
- Find the mode of the waveguide at the operating wavelength of 1.55 mm using FMMStraight mode solver. Use initial guess value for the mode effective index of 2.7.
- Print the mode effective index.
- Plot Ey, Ex and Ez components of the mode field. For Ez component you need to plot the imaginary part of the complex field (ie, passing data_format=’Imag’ to the plotting function.
Remember to remove all existing code and enter your code into the below cell
In [ ]: # YOUR CODE HERE
raise NotImplementedError()
2.1 Bonus task:
You will get bonus marks (up to 3 points) if you peform the following tasks.
- Using FMMBent solver to simulate the bending mode of the rib waveguide with bending radius of 20 mm then calculate the bending loss (in dB/cm) and plot the Ey component of the mode field.
In [ ]: # YOUR CODE HERE
raise NotImplementedError()
- Simulate the plot the bending loss versus the bending radius for radius from 100 mm to 20 mm
In [ ]: # YOUR CODE HERE
raise NotImplementedError()
- What should be the minimum bending radius of the rib waveguide to minimise the bending loss?
YOUR ANSWER HERE
- Task 2 (4 points):
Perform the following steps:
- Using IPKISS to define a rib waveguide template with 0.5 mm core with and 4 mm cladding width and visualize it.
- Using that waveguide template to create a rounded waveguide following the path[[(0, 0), (0, 30), (40, 30), (40, 60)] then visualize that waveguide.
Remember to import silicon_photonics technology and all required modules. Remember to remove all existing code and enter your code into the below cell
In [ ]: # YOUR CODE HERE
raise NotImplementedError()
- Feedback:
Do you have any feedbacks/comments for this week class?
YOUR ANSWER HERE
In this home exercise you will define and simulate a directional coupler based on silicon rib waveguides as illustrated in the below picture
Remember to run the next cell first to setup your simulation environment
In [ ]: # You need to run this cell first to setup the simulation environment
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
import reme
wavelength = 1.55e-6
reme.set_wavelength(wavelength)
reme.set_max_waveguide_modes(2)
- Task 1 (2 points):
Define a waveguide with two rib cores with the following parameters:
- Silica substrate thickness: t_substrate = 0.5 mm
- Silicon core thickness: t_core = 220 nm
- Air cladding thickness: t_cladding = 0.5 mm
- Etching depth: d_etch = 70 nm
- Rib core width: w_core = 0.6 mm
- Gap between two cores: w_gap = 0.4 mm
- Cladding width: w_clad = 1 mm
Then visualise the waveguide.
The waveguide needs to be enclosed within PEC boundaries (ie use set_left_boundary(rem.PEC)
and set_right_boundary(rem.PEC) methods, see the lecture notebook)
Remember to remove all existing code and enter your code into the below cell
In [ ]: # YOUR CODE HERE
raise NotImplementedError()
2.1 Task 2 (2 points)
Simulate the even and odd super modes of the coupler waveguide and plot the mode fields of the two supermodes.
Remember to remove all existing code and enter your code into the below cell
In [ ]: # YOUR CODE HERE
raise NotImplementedError()
2.2 Task 3 (2 points)
Calculate the coupling length of the coupler
Remember to remove all existing code and enter your code into the below cell
In [ ]: # YOUR CODE HERE
raise NotImplementedError()
2.3 Task 4 (4 points)
Define and simulate a coupler with the length of the coupler equal to half of the coupling length. The coupler device need to have two ports at the right to monitor the output power in each
waveguide. NOTE: Use 2.7 as the initial guess value when finding the mode of the port waveguide. The coupler is excited with the even and odd supermode equally, half power in each mode. At the end of the simulation:
- Print the output power in each monitor ports.
- Plot the field on the YZ plane at the middle of the silicon core layer
- Plot the field on the XY plane at the end of the coupler
In [ ]: # YOUR CODE HERE
raise NotImplementedError()
2.4 Bonus task:
You will get bonus marks (up to 3 points) if you peform the following tasks.
In the below example you will see how a directional coupler with two parallel straight waveg-uides are defined in IPKISS.
In [ ]: # Import technology and required modules
import technologies.silicon_photonics
import ipkiss3.all as i3
from picazzo3.traces.rib_wg import RibWaveguideTemplate
- Length of coupler is 20 um length = 20
- Define and visualize rib waveguide template rib_wg_t = RibWaveguideTemplate()
rib_wg_t_layout = rib_wg_t.Layout(core_width=w_core*1e6, cladding_width=4.0)
rib_wg_t_layout.cross_section().visualize()
# 2. Define two straight waveguides
rib_wg1 = i3.Waveguide(trace_template=rib_wg_t)
rib_wg1_layout = rib_wg1.Layout(shape=[(0, 0), (length, 0)])
rib_wg2 = i3.Waveguide(trace_template=rib_wg_t)
rib_wg2_layout = rib_wg2.Layout(shape=[(0, 0), (length, 0)])
- Put two waveguide together into a PCell (You will learn about PCell in week 6) coupler = i3.LayoutCell()
coupler_layout = coupler.Layout(elements=[i3.SRef(rib_wg1, position=(0, 0)),
i3.SRef(rib_wg2, position=(0, w_core*1e6 + w_g
coupler_layout.visualize_2d()
2.4.1 Your bonus task:
Can you define a coupler with input and output bend sections in IPKISS? Assuming that the separations between input and output waveguides are 3 mm and the lengths of the bend sections are 5 mm.
In [ ]: # YOUR CODE HERE
raise NotImplementedError()
- Feedback:
Do you have any feedbacks/comments for this week class?
YOUR ANSWER HERE
In this home exercise you will create a PCell for 2×2 MMI couplers with taperred input and output waveguides as illustrated below
Remember to run the next cell first to setup your simulation environment
Remember to delete “raise NotImplementedError()” in answering code cell before entering your code
In [ ]: # You need to run this cell first to setup the simulation environment
%matplotlib inline
%matplotlib inline
import matplotlib.pyplot as plt
# Increase the figure size
plt.rcParams[“figure.figsize”] = (12, 9)
from technologies import silicon_photonics import ipkiss3.all as i3 import reme
wavelength = 1.55e-6
reme.set_wavelength(wavelength)
reme.set_max_waveguide_index(2.9)
- Task 1 (7 points):
2.1 1. Create a PCell for the 2×2 MMI (5 points)
The PCell must have Layout View with the following properties: – width: Width of the MMI sec-
tion – length: Length of the MMI secion – waveguide_spacing: Spacing between the input/output
waveguides – taper_length: Length of the input/output tapers – taper_width: Width of the in-put/output tapers at the intefaces with the MMI – waveguide_width: Width of the input/output access waveguides
Use geometrical elements to define the layout
In [ ]: # YOUR CODE HERE
raise NotImplementedError()
2.2 2. Create an instance of the 2×2 MMI PCell, visualize it with annotate set to True and virtually fabricate it (ie use visualize_2d method) to verify that the PCell has been created correctly (2 points)
In [ ]: # YOUR CODE HERE
raise NotImplementedError()
- Task 2 (3 points):Simulate the 2×2 MMI device created in the previous step with REME. Excite the bottom input (in1), plot the field and check the output power on each output waveguide.
In order to excite the bottom waveguide and monitor the output waveguides, you need to add REME ports to the left and right of the REME device.
Hint: Refer to week 5 lecture to select device dimensions to give you good splitting ratio and low loss.
In [ ]: # YOUR CODE HERE
raise NotImplementedError()
- Bonus task (max 3 points)
Can you define a 2×2 MMI with taperred input/output waveguides PCell using waveguide tem-plates?
Hint: To define a taper you can use i3.LinearWindowWaveguideTransition to create a linear taper between two waveguide templates. See IPKISS online manual for more information on LinearWindowWaveguideTransition:
http://docs.lucedaphotonics.com/3.1/reference/traces/transition.html?highlight=linearwindowwaveguide
In [ ]: # YOUR CODE HERE
raise NotImplementedError()
4.1 Feedback
Do you have any comment/feedback for this week class?
- Task 1 (4 points):
1.1 Create a 2×2 MMI PCell [2 points]
The PCell must have the following views: – Layout view – Netlist view – CapheModel view You can copy the Layout view from week 6 home exercise solution
In [ ]: # YOUR CODE HERE
raise NotImplementedError()
1.2 Create an instance of the 2×2 MMI PCell, visualize it with annotate set to True and sim-ulate using CapheModel to verify that the PCell has been created correctly [2 points]
In [ ]: # YOUR CODE HERE
raise NotImplementedError()
- Task 2 (6 points):
2.1 Using PlaceAndAutoRoute to create a circuit to connect the inputs and outputs of the 2×2 MMI PCell defined in Task 1 to grating couplers as illustrated below. Visualise the Layout view of the circuit [3 points]
You should use the predefined grating coupler in IPKISS.
In [ ]: # YOUR CODE HERE
raise NotImplementedError()
2.2 Simulate the circuit using CapheModel, plot the transmission from each input grating coupler to two output grating couplers and the reflection back into the input grating coupler [2 points]
Modify the CapheModel of the grating coupler to have: – Center wavelength: 1.55 mm – 3dB
bandwidth: 0.08 mm – Peak power transmission: 50% – Power reflection: 1%
In [ ]: # YOUR CODE HERE
raise NotImplementedError()
2.3 Manually overwrite the waveguide routes of the two waveguides connecting the outout grating couplers so that the circuit look like the below picture [2 points]
Task 1 (3 points)
Write a function to calculate the refractive index of Silicon. Wavelength in mm is the function
argument.
Write a statement to print the refractive index of Silicon at 1.55 mm wavelength using the previously
define function
0.3 Task 2 (3 marks)
Write code to perform the followings:
- Create a Numpy array with 101 elements to store wavelength in mm from 1.4 m to 1.6 mm
- Create a Numpy empty array with 101 elements then use for loop to fill up this array with
refractive index of Silicon in the range 1.4 m to 1.6 mm. You need to use the function defined
in Task 1
- Plot the refractive index of Silicon versus wavelength for wavelength in the range 1.4 mm to
1.6 mm. Include labels for x and y axes.
0.4 Task 3 (4 points)
Write a class Material (ie the name of the class is Material) that has: – Two data members: name
and refractive_index – One method to print the material name and refractive index – One method to
calculate the propgation constant inside the material at a given wavelength (ie wavelength is the
argument of the method).
Then: – Create an object of the Material class. The name and refractive index are Silica and
1.44, respectively. – Print the material name, refractive index and propagation constant at 1.55 mm
wavelength using the member methods defined in the class.
Do you have any comment/feedback about the course so far?
In this home exercise you will create a PCell for 2×2 MMI couplers with taperred input and output waveguides as illustrated below
Remember to run the next cell first to setup your simulation environment
Remember to delete “raise NotImplementedError()” in answering code cell before entering your code
In [ ]: # You need to run this cell first to setup the simulation environment
%matplotlib inline
%matplotlib inline
import matplotlib.pyplot as plt
# Increase the figure size
plt.rcParams[“figure.figsize”] = (12, 9)
from technologies import silicon_photonics import ipkiss3.all as i3 import reme
wavelength = 1.55e-6
reme.set_wavelength(wavelength)
reme.set_max_waveguide_index(2.9)
- Task 1 (7 points):
2.1 1. Create a PCell for the 2×2 MMI (5 points)
The PCell must have Layout View with the following properties: – width: Width of the MMI sec-
tion – length: Length of the MMI secion – waveguide_spacing: Spacing between the input/output
waveguides – taper_length: Length of the input/output tapers – taper_width: Width of the in-put/output tapers at the intefaces with the MMI – waveguide_width: Width of the input/output access waveguides
Use geometrical elements to define the layout
()
2.2 2. Create an instance of the 2×2 MMI PCell, visualize it with annotate set to True and virtually fabricate it (ie use visualize_2d method) to verify that the PCell has been created correctly (2 points)
- Task 2 (3 points):
Simulate the 2×2 MMI device created in the previous step with REME. Excite the bottom input (in1), plot the field and check the output power on each output waveguide.
In order to excite the bottom waveguide and monitor the output waveguides, you need to add REME ports to the left and right of the REME device.
Hint: Refer to week 5 lecture to select device dimensions to give you good splitting ratio and low loss.
Bonus task (max 3 points)
Can you define a 2×2 MMI with taperred input/output waveguides PCell using waveguide tem-plates?
Hint: To define a taper you can use i3.LinearWindowWaveguideTransition to create a linear taper between two waveguide templates. See IPKISS online manual for more information on LinearWindowWaveguideTransition:
http://docs.lucedaphotonics.com/3.1/reference/traces/transition.html?highlight=linearwindowwaveguide
In [ ]: # YOUR CODE HERE
raise NotImplementedError()
4.1 Feedback
Do you have any comment/feedback for this week class?