Learn how to design and optimize a phased array of grating antennas for LIDAR applications.
Overview
Understand the simulation workflow and key results
LIDAR, short for light detection and ranging, has drawn great attention in recent years due to fast-emerging applications in robotics, autonomous vehicles, high-precision mapping, and more. Current state-of-the-art LIDAR implementations are capable of ranging millions of points per second, thanks to the high angular resolutions and fast steering speeds. The mechanisms of beam steering in existing LIDAR architectures typically fall into two categories: mechanical, such as rotation- or MEMS-based implementations, and non-mechanical, most commonly optical phased arrays. Optical phased arrays based on silicon photonics are considered a promising solution to low-cost, high-speed, robust solid-state LIDAR with large optical apertures yet compact footprints. In this example, we show how to design the integrated optical phased array antenna which can be used for both transmitting and receiving functions, from the design of each individual antenna element to the optimization of the phased array. Finally, we show how a compact model of the phased array antenna can be built in INTERCONNECT to enable larger-scale simulation of the LIDAR system.
To understand how this entire LIDAR system works, please see The integrated LIDAR system overview .
Much of this example was developed as part of a more comprehensive LIDAR workshop in collaboration with Cadence Design Systems and MathWorks and we gratefully acknowledge their contributions, particularly Rick Gentile from MathWorks who developed most of Step 3: Design optimization with MATLAB.
We use the FDE solver of MODE to create an initial antenna design, verify the design with 3D FDTD and extract antenna parameters to optimize the phased array using MATLAB’s antenna array and global optimization toolboxes. Finally, we create a compact model for INTERCONNECT.
Step 1: Initial design with the FDE solver
Use the FDE solver to calculate the waveguide effective index (neff) as a function of waveguide width. Select a grating width and duty cycle. Determine the average effective index of the grating waveguide and use this to select a pitch based on choosing a desired operating point for near-normal emission that avoids the waveguide grating bandgap. Estimate the minimum waveguide spacing that can be used by considering evanescent coupling between straight waveguides.
Step 2: Design verification and parameter extraction with 3D FDTD
Simulate with 3D FDTD and verify that the bandgap and operating point are as expected. Determine the decay length of the grating. Verify that the minimum antenna spacing estimated in Step 1 is correct. Extract the far-field radiation pattern as a function of wavelength, and other parameters, for subsequent use in MATLAB and INTERCONNECT. Calculate the beam far-field assuming uniform antenna weighting.
Step 3: Design optimization with MATLAB
Use MATLAB to load the angular distribution calculated in Step 2 and visualize the beams. Optimize the antenna weights and antenna spacing. Analyze the effects of perturbations due to manufacturing imperfections on the antenna performance.
Step 4: Phased array compact model in INTERCONNECT
Use the parameters determined in Steps 2 and 3 to update an antenna array compact model in INTERCONNECT. Run a test simulation and plot the beam polar and azimuthal angles as a function of time.
Run and results
Instructions for running the model and discussion of key results
Step 1: Initial design with the FDE solver
Initial simulation
- Open LIDAR1.lms in MODE.
- Run the eigenmode solver by pressing the Run button.
This will bring up the Eigensolver Analysis Window (you may want to undock this window to enlarge it) where you can press the Calculate Modes button. You will see a list of modes and corresponding mode profiles in the Eigensolver analysis window that looks like this:
Determine effective index (n eff ) vs waveguide width
- Switch back to Layout mode. The layout button is located where the Run button originally was:
- Open the Optimization and Sweeps window, right-click on the sweep called neff_vs_width and choose to Run. This will launch 8 calculations that are run in a separate process to calculate neff as a function of width. (If you can’t find the Optimization and Sweeps window, right-click with the mouse on the upper menu bar and make sure this window is checked.)
When the simulations are complete, right-click again on neff_vs_width and choose to visualize neff. You should see this curve:
The above curve can be used for advanced design, for example, to adjust the grating period over the length of the grating to ensure uniform emission over the antenna length at a fixed angle, as Poulton et al.
Determine the average n eff for the grating
We will assume that we will use a grating with a 50% duty cycle that varies between a width of 500nm and 800nm. This allows us to estimate that the average neff over each unit cell is:
$$\langle n_{eff} \rangle=\frac{n_{eff}(500nm) + n_{eff}(800nm)}{2} = \frac{2.44605 + 2.68956}{2} = 2.5678$$
Estimate the minimum antenna spacing
We can estimate the minimum antenna spacing using the eigenmode solver and verify the result later with FDTD.
- Switch to Layout mode
- Edit the waveguide_antenna and choose Ny = 2
- In the Optimization and sweeps window, run both the proximity_thin sweep and proximity_thick sweep.
The power coupling between two straight waveguides can be determined by the difference in the effective index of the symmetric and anti-symmetric hybrid modes, which we will call Δneff. If the initial power, P0, is in waveguide 1, after a length, L, the power in waveguide 2 is given by:
$$P_2 (L) = P_0 sin^2(\frac{\pi L \Delta n_{eff}}{\lambda_0}) $$
The FDE::data object is configured to calculate both Δn eff and L 10 which is the length required for 10% of the power to couple from waveguide 1 to waveguide 2.
In this estimate, we can see that at 1.5 microns, there needs to be at least 6mm of propagation length before 10% of the light is coupled into the waveguide. This is clearly an oversimplification because the grating is designed to scatter light which can increase coupling between the waveguides, but nonetheless gives us a good idea of the minimum antenna spacing which can be verified with 3D FDTD. At this point, we will assume that the antennas can be as close as 1.5 microns, which is approximately one free-space wavelength.
Choose the desired angle of emission
It may seem desirable to target a normal incidence emission angle. However, this is not ideal because both forward AND backward propagating light will emit at normal incidence. Indeed, when the emission is near normal, the grating creates a strong coupling of both forward and backward propagating light, creating a bandgap of forbidden light frequencies, and therefore behaves as a mirror as well as a grating coupler. This creates design challenges: the penetration of the light into the grating changes rapidly with wavelength. This can be understood by the band diagram below, which explains the different regimes of periodically patterned waveguides. However, it is desirable to operate near (but not in) the bandgap because we achieve near-normal emission and the change in angle with wavelength is the largest.
While the band structure can be calculated with FDTD, we will instead make some simple assumptions to calculate the pitch. We will target an operation wavelength of 1500nm to 1600nm. We will therefore attempt to place the bandgap (where θ = 0, m = 1) at λ 0 = 1700nm. This gives us
$$a=\frac{\lambda_0}{\langle n_{eff} \rangle} = \frac{1700nm}{2.5678} = 660nm$$
This is an approximation, in part because we used neff calculated at 1550nm. To be self-consistent, we should recalculate neff at 1700nm, but we can verify with FDTD the location of the bandgap.
Step 2: Design verification and parameter extraction with 3D FDTD
Bandgap location
- Open FDTD and the file LIDAR2.fsp. Edit the source properties and ensure that the wavelength range is 1500nm to 1700nm. Run the simulation.
Right-click on waveguide_analysis::T1 and plot the transmission at the output side. We can see the following, which shows that the bandgap is at about 1640nm, outside our target range of 1500 to 1600nm.
Right-click on the monitor above and choose to plot the far-field. Calculate all wavelengths. See how the beam shifts with wavelength.
Plot the electric field intensity in the above monitor, you can see that the field has not completely decayed by the end of the simulation region (this is why the transmission is still above about 40%):
Normally, to perform a far-field projection we need the field to be fully decayed by the edges of the simulation region (or the edge of the monitor where the field was recorded), otherwise, we will obtain an unphysical ripple in the far-field results. To avoid this, we can use a method called far-field apodization by setting the “ far-field filter ” to a non-zero value. When used in this way the near fields are filtered via multiplication with a raised cosine windowing function.
The table below shows some of the result differences. We will use a far-field filter setting of 0.1 for the final analysis.
Display the far-field intensity as a function of angle (in the x-z plane) and wavelength
The script file plot_farfield1.lsf will plot the far-field as a function of angle in the x-z plane. Note the low emission in the bandgap (zero degrees), and the high transmission near the band edge (near zero degrees). However, we will operate from 1500nm to 1600nm, where the angle of emission (in glass) varies between approximately 4 to 13 degrees. In the air, as calculated by Snell’s law, this corresponds to about 5.8 to 20.4 degrees.
Minimum antenna spacing and decay length
We can verify the minimum antenna spacing of 1.5 microns previously estimated using the eigenmode solver. In addition, we can calculate the decay length.
- Switch to layout mode
- Edit the source and reset the wavelength to range from 1500nm to 1600nm
- Rerun the simulation
Plot the transmission from monitor waveguide_analysis::T1 and waveguide_analysis::T2 on the same curve (select both and right-click to Visualize). You will see
Plot the decay length and the power coupled to waveguide 2 (P2) which are calculated in the analysis group waveguide_analysis
There is a stronger coupling between the waveguides separated by 1.5 microns than was predicted by the eigenmode solver, as expected. However, the decay length is quite short (less than 40 microns) and we can see in the image of P2 that we never couple more than 2% of the initial power into the neighboring antenna so we can clearly use spacing as small as 1.5 microns.
Consider where all the power is going and verify that net power is ~1. Use the transmission box called trans_box to look at where the power is flowing. Also, verify by plotting the result trans_box::T that the total power is close to 1 at all wavelengths. Note that there is some ripple, which increases towards the bandgap wavelength – this is because the light slows down near the bandgap and there is still some trapped in the simulation when it ends(left figure). If higher accuracy is desired, the simulation runtime must be increased. For example, with a maximum simulation time of 1000fs instead of 600fs, the trans_box::T result will show a considerable decrease in the dip at longer wavelengths(right figure).
Extract angular distribution vs wavelength data for Matlab optimization and INTERCONNECT compact model
- Open and run the script file [[LIDAR2_analysis.lsf]].
The script will generate a number of results. It will calculate and plot the normalized transmission to the glass substrate through the monitor above:
It will apply Snell’s law to the far-field projection to calculate the angular emission in the air. It then plots the emission angle in the x-z plane vs wavelength:
It extracts the data from the above curve to determine the sine of the peak emission angle in the x-z plane, called ux_peak. It then fits this to a 2nd order polynomial to create a script command that can be used to quickly calculate the peak emission angle (and width) as a function of wavelength in an INTERCONNECT compact model. It also plots this curve:
It creates a visualizer with 2 data sets representing the electric field intensity in the air, as calculated, and the far-field intensity corrected for the finite simulation length. This involves multiplying the far-field by a Lorentzian that accounts for the decay length. This results in a narrower range of emission angles than is seen in the raw FDTD result.
The script file creates unstructured data sets for visualization of the data in a 3D view that also allow for radiation plots:
The angular distribution of radiation data is saved into a file called [[antenna_array_lumerical.ldf]] for subsequent phased array analysis, and for use later in the INTERCONNECT compact model. Finally, the script interpolates the data onto spherical coordinates (polar angle theta, azimuthal phi) for subsequent work in MATLAB. The data is saved directly into a *.mat file called antenna_data.mat
Initial phased array analysis
- Open the script file [[phased_array_analysis.lsf]].
- modify the parameter values, if necessary.
- Run the script.
It will load the angular distribution data of the single antenna created in the previous step. It allows the user to set a target polar angle (theta) and azimuthal angle (phi) and will then adjust the linear phase across the antenna array to target that direction for the 0 th order emitted by the array. You can specify the number of antenna elements and an amplitude weight function. For simplicity, the angular data is normalized to have a maximum intensity of 1 when plotted on a linear scale. For dB scale images, you can specify the dB range which determines the maximum dB value while all values below 0 will be truncated for easier viewing of the images. The dB range setting should be positive. With the default settings (theta_target=10, phi_target=0) and a gaussian amplitude weight function, the script will generate the following figures:
By changing the last to a Radiation plot, and viewing the dB result, we can see the following figure:
If we rerun with target_theta=20 and target_phi=30, we see the following figures:
Step 3: Design optimization with MATLAB
Here we will use MATLAB to optimize the spacing of the antenna array and the amplitude weighting of each element. Furthermore, we perform a sensitivity analysis. This example was developed with MATLAB R2018b and also requires the Phased Array System Toolbox and the Optimization Toolbox. We gratefully acknowledge the assistance of Rick Gentile of MathWorks to develop this portion of the application example.
View and manipulate the phased array with the Sensor Array Analyzer App
- Open MATLAB and launch the Sensor Array Analyzer App by typing sensorArrayAnalyzer at the MATLAB command prompt. See www.mathworks.com/help/phased/ref/sensorarrayanalyzer.html for more information on the Sensor Array Analyzer. Ensure your working directory is set to the same directory where the antenna_data.mat file was saved.
- Load the data with load(‘antenna_data.mat’) at the command prompt. When this executes, you should see the following data in the MATLAB Workspace window:
- With this data in the workspace, you can return to the Sensor Array Analyzer. You will now set up a linear array design with 48 equally spaced elements. The spacing between each element should be manually set to be 1 wavelength. Enter the following settings into the App.
Note the data set contains azimuth and elevation patterns for 50 frequency vectors. Each pattern that is evaluated and visualized in the App represents one of the 50 frequency vectors. In this example, using vector 25 will show results for the middle frequency vector. After you hit “Apply”, you should see the following array structure, which is the 48-element linear array.
- Now set the view to “3D Array Directivity” and “Polar” and select “Apply”. You should see the following:
From the toolstrip, you can zoom in and out of the figure. You can also rotate the pattern. Try setting the “Taper” to “Hamming” to reduce the side-lobe levels. Note what happens to the shape of the main beam. You can see the main beam in the x-z plane. The other 2 beams are due to the element spacing of 1 wavelength.
- In the App Visualization Settings, select the “2D Array Directivity” option:
Note the shape of the pattern between +/- 50 degrees:
You can try to enter steering values in the App by clicking on:
Remember to steer in azimuth. For example, to steer +20 degrees, enter [20;0] in the “Steering Angles” box.
Again, for any of the plots you generate in the App, you can generate MATLAB code to recreate the design in other models:
- Now you can close the Sensor Array Analyzer.
- Also, at the MATLAB command line, type
>> clear all >> close all
Visualize the antenna data directly from the script
Now we will take a look at how different frequency vectors provide steering in the elevation direction of the beam pattern. Once the plots are generated, you can rotate and zoom each to get a better idea of what the pattern looks like.
- Type the following at the MATLAB command line:
>>EX1_viewPattern
The plots for frequency vectors 1, 25, and 50 are shown. With each frequency, you can see how the main beam (in the x-z plane) is steered in elevation.
In each of these Figure plots that are generated, you can zoom and rotate the pattern to get a better sense of the pattern. The main difference with each frequency vector is the change in steering in the elevation plan (x-z).
Optimize the antenna array
Now you will see how you can derive the element spacing and weights to generate the desired pattern. Our starting point will be the elevation cut of the Lumerical pattern. The goal of the optimization is to derive spacing and magnitude weights to ensure the pattern we see in the azimuth matches that of the elevation pattern as closely as possible. One constraint is that we will focus the match to +/- 40 degrees in azimuth knowing that the beam will be steered between +/-20 degrees (in azimuth) in the end system. We also set the starting point for the element spacing to be 1.1 * lambda. The figure below shows how the example works:
Note in the code,
N = 48; % 48 elements in array azimuth = -40:40; % Match pattern within +/- 40 degrees
We also use the pattern from frequency vector 25 as the basis of the optimization.
- Type the following at the MATLAB command line:
>> EX2_arraysynthesis
We can see in the MATLAB Command Window; the result of the synthesis is:
Spacing = 1.0598 * λ
Look at the plot below between the angles of +/- 40 degrees. The match of the main beams is very close.
Because the spacing and magnitude values will be fixed during the implementation portion of your design, the only degree of programmable steering is via linear phase shifts to steer in the azimuthal direction.
Before we move on, it is important to check to see what happens at the outer frequency vectors as we steer the beam to 20 degrees.
For the plot below, we use the spacing derived from the frequency vector 25 pattern to generate an azimuth pattern for frequency vectors 1 and 50. Additionally, the beam is steered to +20 degrees in azimuth. Take note of the pattern between +/- 20 degrees. Because the optimization was set to cover +/- 40 degrees, no grating lobes appear between our desired range of +/- 20 degrees.
The results show a good match in the +/- 20 degree range. The grating lobes don’t alias into the desired range.
Finally, you can observe the plots for the resulting antenna weights and coupling lengths from the optimization. These are both shown below. The coupling lengths are determined from the desired weights assuming the design described at The integrated LIDAR system overview and with a knowledge of how the coupling coefficients must be translated into coupling lengths for the directional couplers used in that example.
These values, along with the element spacing are written to csv files for later use in the example and could be used to perform layout. These files are called optimization_results_antenna_spacing.csv and optimization_results_coupling_length.csv.
Consider the effect of manufacturing imperfections
Now that you have derived the spacing and weights, let’s take a look at ways you can model amplitude and phase perturbations in your array. These types of perturbations can impact the beam pattern if they are severe.
-
Type the following at the MATLAB command line:
>> EX3_SensorArrayPerturbationExample
Look at each of the plots that are generated (Amplitude Perturbations). You can add gain or amplitude perturbations on the uniform linear array (ULA) of 48 elements. For this example, we consider the perturbations to be statistically independent zero-mean Gaussian random variables with a standard deviation of 0.1. Look at the plot below to compare the response of the perturbed with the ideal array:
When phase perturbations are present in the ULA antenna, similar impacts can occur. In the plot below, you see the comparison of the response of the perturbed to the ideal array.
You can see that the large array does provide immunity to perturbations in the amplitude and phase. The beam pattern is very close to the desired pattern. You will see these types of perturbations in your real system, so it is good to have a framework to evaluate beam pattern performance.
Step 4: Phased array compact model in INTERCONNECT
- Open the file [[LIDAR_example.icp]] with INTERCONNECT. This file contains a LIDAR transmission system similar to the one described in the Appendix (The integrated LIDAR system overview). The layout of this system can be modified with the script file [[build_array.lsf]] if desired. This script also updates all the coupling coefficients and antenna spacing with the results from the MATLAB optimization.
This file contains a compact model of the phased array created using a scripted element . This compact model has 48 optical inputs. Based on the center frequency of the simulation band and the amplitude and phase at each of the 48 input ports, it will calculate the current beam direction given by a unit vector with x,y components ux and uy as a function of time. It will also determine a beam width ux_width and uy_width. These unit direction values can then be converted into polar and azimuthal angles theta and phi. These values, including frequency, will be output as electrical signals which is useful if this compact model is used in a larger system simulation, for example with Spectre AMS Designer by Cadence.
- Setup Script: This script can reserve memory by declaring variables and initialize settings. If beam_snapshots > 0, then this script tries to load the FDTD results pre-saved in [[antenna_data_lumerical.ldf]] to create full snapshots of the angular distribution of the radiation as a function of time.
- Ready Script: This script determines when the element should run. For this compact model, we are ready to run when all 48 input ports have valid data.
- Go Script: This script reads all the data on each input port as a complex quantity. It then Fourier transforms this result to determine the effect of the phased array and finds the value of uy corresponding to the beam peak. It also calculates the width of the beam with an integral. This is done in a given window of uy values that is determined in the setup script (approximately |uy| < 0.42 which would correspond to angles of +/-25 degrees in the y-z plane). It is necessary to restrict the value of uy to a certain band since the phased array supports more than one order. If uy_width becomes very large, it is an indication that there is more than one order in the range of acceptable uy. The value of ux is determined based on the center frequency of the simulation band using results calculated with FDTD. The ux_width is determined based on the decay length of the device calculated with FDTD. The beam width is estimated from the maximum of ux_width and uy_width.
- If the user has specified beam_snapshots > 0, this script will create a dataset of beam_snapshot views of the angular distribution.
- Wrap-up Script: This script creates results for ux, uy, wx_width, uy_width, angle_width, theta and phi as a function of time. If the user set beam_snapshots > 0, it also creates a dataset of the angular distribution as a function of time which is saved to file beam_snapshots.mat and can be loaded and visualized with
- matlabload(“beam_snapshots.mat”);l
- visualize(E2_vs_time);
- Run the simulation. After completion, select the phased_array element and look at the Result View window. Select ux, uy, ux_width and uy_width and right click to Visualize them all. After adjusting the time units you should see this:
We can see that as the voltage is swept, the value of uy changes linearly. Initially, uy_width is very large, indicating that we either have not formed a beam or that there is more than one beam in the range of uy that we are tracking (approximation -0.42 to +0.42).
To see what is happening in terms of polar and azimuthal angles, visualize theta, phi and angle_width. You should see
We can sweep the azimuthal angle phi between about 60 to -60 degrees The value of theta changes as well.
- Consider the angular distribution as a function of time. Run the following script commands:
matlabload("beam_snapshots.mat"); visualize(E2_vs_time);
You should see the following visualizer, and you can click through the time steps to animate as shown.
This type of animation can be automated easily in MATLAB, for example by methods similar to making a CW movie .
Important model settings
Description of important objects and settings used in this model
FDE::data analysis script
The file LIDAR1.lms uses an analysis script inside of the FDE::data group. This script calculates neff_max (simply the real part of neff for mode1), delta_n (the difference in real parts of neff between mode1 and mode2) and L10 which is the length required for 10% of the light to couple between waveguide 1 and waveguide2. The value of neff_max is used when there is a single waveguide while delta_n and L10 have meaning when there are 2 waveguides in the simulation region.
Symmetry in the FDE solver
For the FDE solver in LIDAR1.lms, a symmetric boundary condition (BC) is used at z-min. This is possible because we ignore the substrate silicon in the simulation. We do not use anti-symmetric BCs at y-min because we want to study the coupling between 2 waveguides which requires knowledge of both the symmetric and anti-symmetric modes.
Symmetry in the FDTD solver: For the FDTD solver in LIDAR2.fsp, an anti-symmetric boundary condition (BC) is used at y-min. This is possible because we are simulating the middle of 3 antennas and are only interested in the TE-like mode. We cannot use a plane of symmetry at z-min because we must include the silicon substrate. This is necessary because the silicon substrate will have a significant impact on the amount of radiation outcoupled upwards by the grating.
Waveguide_analysis script
For the FDTD solver in LIDAR2.fsp, we use an analysis group called waveguide_analysis to calculate Ldecay (the decay length) and P2 (the power in the neighboring waveguide 2 as a function of wavelength and length of propagation).
FDTD simulation x span
The waveguide_antenna structure group in LIDAR2.fsp has a “target length” property of 20 microns. The structure uses an integer number of periods of pitch 660nm so the length will not be exactly 20 microns. The FDTD solver has an “x span” of 21.5 microns while the waveguide_analysis group has a length of 21 microns, to be sure that it covers all the periods of the grating that are present. The decay length calculated by the waveguide_analysis group is therefore slightly ill-defined because it assumes a length of 21 microns, while the true length is something slightly different (20.46 microns). However, this results in an error of only a few percent on the decay length.
FDTD simulation time
The simulation time in LIDAR2.fsp is set to 600fs instead of the default 1000fs. This is simply to make this example run faster. For more accurate results, the simulation time should be increased to 1000fs or even longer to allow the auto-shutoff to trigger. Since we inject light in and near the bandgap, it can take a long time for the slow light to exit the simulation.
FDTD source wavelength range
Please note that this example uses results with the mode source in LIDAR2.fsp set from 1500-1700nm initially and we then reduce that to 1500-1600nm for the final analysis of the antenna angular distribution of radiation. If you forget to reduce the range you will see some different results from those shown in this example.
Updating the model with your parameters
Instructions for updating the model based on your device parameters
- You can make different design choices based on your needs. The waveguide_antenna structure group and the waveguide_analysis group are parameterized so you can adjust the waveguide width, pitch, grating width, antenna separation and the number of elements. If you reduce the grating width, which will result in a longer decay length, you may want to increase the x span of the FDTD simulation region, as well as the length of the waveguide_antenna and waveguide_analysis group.
- If you want to create a more complex design, where the grating width and pitch is adjusted at each period, for example, to try and optimize the emission beam shape, then you will need to write your own waveguide_antenna structure group, but otherwise, the analysis can be almost the same.
- If your design results in a very narrow beam in the far-field, you may need to increase the farfield_resolution setting in [[LIDAR2_analysis.lsf]] which is currently set to 401.
Taking the model further
Information and tips for users that want to further customize the model
- A more sophisticated design would adjust the antenna grating pitch and width at each unit cell of the grating to try and create a target beam profile. This design can be accomplished with the information calculated by the FDE solver in Step 1. This would then require some work to rewrite the waveguide_antenna structure group, but most of the analysis would be the same. This might also require an increase in the x span of the FDTD simulation region because we could no longer use the calculation of the decay length to adjust the far-field angular distribution. Alternatively, the far-field could be adjusted with knowledge of the type of beam profile that was attempted.
- MATLAB has numerous toolboxes and capabilities advanced LIDAR analysis, such as Point Cloud processing. For more information on the Computer Vision System Toolbox, please visit this link: www.mathworks.com/help/vision/examples.html .
Additional resources
Additional documentation, examples and training material
Related publications
- Christopher V. Poulton, Ami Yaacobi, David B. Cole, Matthew J. Byrd, Manan Raval, Diedrik Vermeulen, and Michael R. Watts, “Coherent solid-state LIDAR with silicon photonic optical phased arrays,” Opt. Lett. 42, 4091-4094 (2017).
See also
Related Ansys Innovation Courses
Appendix
Additional background information and theory
The integrated LIDAR system overview
This example is based on the previously published work:
Christopher V. Poulton, Ami Yaacobi, David B. Cole, Matthew J. Byrd, Manan Raval, Diedrik Vermeulen, and Michael R. Watts, “Coherent solid-state LIDAR with silicon photonic optical phased arrays,” Opt. Lett. 42, 4091-4094 (2017). Here we provide an overview of how this LIDAR system works and how Cadence, Lumerical and MathWorks tools can be used to design and optimize the entire system.
The LIDAR operating wavelength is one of key design parameters. LIDAR operating at 905 nm and 1550 nm have both been reported in industry products as well as research labs. Products with 905 nm lasers are the first to hit the market, mainly due to the inexpensive laser diodes and photodetectors, and a relatively good transmission through the atmosphere. Recently, products operating at 1550 nm also gain great momentum due to the availability of high-performance photonic components that were originally designed for telecom applications. The maturing of silicon photonics, which leverages traditional CMOS manufacturing processes, provides a low-cost solution for designing 1550 nm LIDAR with high performance photonic components. Another technical advantage of using 1550 nm wavelength is that a larger half-wavelength can result in a wider field-of-view without side lobes, if the same antenna pitch is used. Lightwaves at 1550 nm is also eye-safe, which allows the usage of higher optical power to scan a farther range. Based on the aforementioned reasons, this workshop features an optical phased array LiDAR that operates around 1550 nm. Users are always welcome to utilize the techniques covered in this workshop to do their own explorations afterwards.
The transmitting side (TX) of an optical phased array LiDAR typically consists of a single light source (laser diode) to ensure coherency, a power splitting structure to split the light into multiple waveguides, a phase control mechanism to actively tune the phase of each lightwave, and an array of antennas that emits the light into free space. Through careful phase control, interference among the emitted lightwaves results in a narrow main beam pointing in a direction that can be dynamically steered. In this workshop, we use the power splitter and phase shifter designs that were experimentally demonstrated in Poulton et al. As shown in Fig. 1, the power splitters and phase shifters have a cascaded architecture, which consists of a bus waveguide with alternating directional coupler taps and phase shifters. In such an architecture, changing the phase of one phase shifter will change the phase of all antennas after it. By applying the same phase, φ, to all phase shifters, linearly increasing phase shifts can be achieved at the antenna outputs, and thus, physically steer a beam to one direction. In this LiDAR design, phase tuning is applied by using thermo-optic phase shifters (see Poulton et al.). The basics of antenna design, antenna array optimization, and parameterized antenna array layout will be featured in Module 2 of this workshop. The transmitter simulation will be demonstrated in Module 3 of this workshop.
A schematic diagram of an optical phased array LIDAR design:
The receiving side of the LiDAR featured in this workshop utilizes the same antenna array design as the transmitting side. As illustrated in Fig. 2, the signal detection of such a LiDAR receiver is based on coherent detection (Poulton et al.), where the received light is combined with a small portion of the light coupled out from the laser source, i.e., local oscillator (LO). Since the laser frequency is linearly swept in time, there is a frequency difference between the LO and the received light, which generates a beat signal. The beat frequency can be used to compute the Time-of-Flight (ToF) for the received light, and thus compute the distance of the object being scanned. The receiver simulation will be featured in Module 3 of this workshop.
An illustration of the LIDAR coherent detection method:
While this example focusses only on the antenna design and optimization, as well as the compact model for INTERCONNECT. Cadence tools can be used to design the system at a schematic level, perform electronic-photonic co-simulation with Spectre AMS Designer and INTERCONNECT, and layout the device using the new CurvyCore feature of the Virtuoso Design Environment. Some example figures are shown below.
A schematic view of the system:
A view of the phase shifters and directional couplers in the Virtuoso layout editor:
Co-simulation results between Spectre AMS Designer and INTERCONNECT showing the beat frequency detection on the receiver: