This PCell strip waveguide model is built by using the primitive Straight Waveguide element and the simulation data that is generated from MODE Solutions.
Example Test File
strip_waveguide_pcell.icp (185.1 KB)
LCML: strip waveguide PCell.
|Name||Default value||Default unit||Range|
1.In MODE Solutions, add two rectangles and set their names to “Si” and “Oxide”, then set their geometry and properties according to the following table.
|x span (μm)||0.5||8|
|y span (μm)||0.22||3|
|z span (μm)||0.6||0.6|
|Material||Si (Silicon) - Palik||SiO2 (Glass) - Palik|
2.Add an FDE solver of “2D Z normal” with the follow geometry and set all of the boundaries to be “metal” boundary condition.
3.Open the script file
strip_waveguide_pcell.lsf in this MODE project file and run. The script file can be found in the LCML_resource folder in the download page.
4.The script commands will sweep through the width of the waveguide and record the corresponding detailed simulation results to a .ldf file.
1.In INTERCONNECT, create a compound element.
2.Add two bidirectional optical ports to the compound element, and add two new properties “wg_length” and “wg_width” both with “Type” of “Distance” and “Kind” of “Number”. Set the “model” of the compound element to be “lcml_wg_strip_1550_pcell” and the “prefix” of it to be “wgs”.
3.Expand the compound element, drag and drop a Straight Waveguide element to it and connect the corresponding ports and relays.
4.Copy the following script commands to the setup script of the compound element.
setnamed("WGD_1","length",wg_length); # load data from the ldf file filename = %local path%+"/lib_data/waveguide_strip/strip_waveguide_pcell.ldf"; loaddata(filename); NN = length(WG_WIDTH); neff_TE = interp(NEFF(1:NN,1), WG_WIDTH, wg_width); neff_TM = interp(NEFF(1:NN,2), WG_WIDTH, wg_width); ng_TE = interp(NG(1:NN,1), WG_WIDTH, wg_width); ng_TM = interp(NG(1:NN,2), WG_WIDTH, wg_width); disp_TE = interp(DISP(1:NN,1), WG_WIDTH, wg_width); disp_TM = interp(DISP(1:NN,2), WG_WIDTH, wg_width); # The waveguide loss values are only valid for 0.5 um and 3 um wide waveguides (i.e., the only two waveguides that we have experimentally measured). # For the loss of other waveguide widths, we simply take linear interpolations based on the two experimental data points. temp_width = [0.5e-6, 3e-6]; measured_loss_TE = [300, 10]; measured_loss_TM = [200, 10]; loss_TE = interp(measured_loss_TE, temp_width, wg_width); loss_TM = interp(measured_loss_TM, temp_width, wg_width); setnamed('WGD_1','frequency', central_f); setnamed('WGD_1','orthogonal identifier 1', 1); setnamed('WGD_1','label 1', 'TE'); setnamed('WGD_1','loss 1', loss_TE); setnamed('WGD_1','effective index 1',neff_TE); setnamed('WGD_1','group index 1',ng_TE); setnamed('WGD_1','dispersion 1',disp_TE); setnamed('WGD_1','orthogonal identifier 2', 2); setnamed('WGD_1','label 2', 'TM'); setnamed('WGD_1','loss 2', loss_TM); setnamed('WGD_1','effective index 2',neff_TM); setnamed('WGD_1','group index 2',ng_TM); setnamed('WGD_1','dispersion 2',disp_TM);
The group index and effective index versus waveguide width plots are shown below.
5.Set icon for the compound element.
Download the simulation file
strip_waveguide_pcell.icp from the top of this page. In this simulation file, the compact model of the PCell strip waveguide is connected to and measured by an Optical Network Analyzer (ONA). Click on the “run” button and the ONA will be populated with measurement data. To view the simulation results, user can right click on the results and select “Visualize”.