The corner analysis utility in INTERCONNECT allows users to perform corner sweeps based on process design kit (PDK) libraries. These sweeps can be used to automatically adjust the parameters of all circuit elements to obtain simulation results for the various process corners of your PDK and determine the range of values that can be expected for your circuit with a given foundry process.
A .lib.x file that defines the process corners is required to use the corner analysis utility. Such a file should be included within the Compact Model Library (CML).
This page will discuss how to use the corner analysis utility using the INTERCONNECT GUI as well as with script commands. The files used in the example are included as attachments to this page.
Corner analysis properties
- NAME: Corner sweep name.
- NAME: A user specified name for the library.
- LIBRARY: The .lib.x file that defines the corners.
- CORNERS: The corners to be included in the sweep. Available corners are automatically detected from the .lib.x file.
- ADD: Add another library to the table.
- REMOVE: Remove a library from the table.
- NAME: A user specified name for the result. Will appear in results dataset.
- RESULT: Result to collect.
- OPERATION: Optionally, apply a simple mathematical operation to the results. Supported operations are Sum, Mean, Integrate.
- ADD: Add another result to the table.
- REMOVE: Remove a result from the table.
- RESAVE FILES AFTER ANALYSIS: Optionally, resave the project files after the analysis scripts have been run. This can be helpful when the analysis scripts are slow to run.
Corner analysis using the GUI
Here creating, running, and analyzing the results of the corner analysis utility using the INTERCONNECT GUI will be discussed.
Creating the corner sweep project
In this section the steps required to create a new corner sweep analysis will be demonstrated. The corner sweep described on this page will use the circuit below including optical network analyzer (ONA), multimode interferometer (MMI) and waveguide elements from the Lumfoundry_template CML. The CML is included in the attached files.
To create a new corner sweep, click the “Create Corner Sweep” button in the “Optimizations and Sweeps” window, then use the Edit button to set its properties.
Through the dialog window, users can give the corner sweep a new name. Then, add the library by specifying the path to the .lib.x file (the .lib.x file included in the installed CML will be automatically selected by default), give the library a name, and select the corners to include in the sweep using the check boxes. In this case, the “fast”, “slow” and “nominal” corners are included in the sweep.
Next, select the results of the simulation to record for each corner, give the result a name, and specify any operations to perform on these results. For this sweep the transmission result of the ONA is recorded. Note that the simulation must be in analysis mode to select the results.
Click OK to accept the settings and return to the main Optimizations and Sweeps window.
Running the corner analysis
To run the corner analysis sweep, select the sweep in the Optimizations and Sweeps window and click the “Run” button, or right-click the sweep and select “Run” from the context menu.
While the sweep is running, a screen will appear with a progress bar and a log detailing the progress of the sweep.
The corner analysis runs in UI non-updating mode by default. The user can change this setting in the INTERCONNECT Options/Preferences window by unchecking the "Disable UI updates when running sweeps" option in the Preferences section.
Viewing the results
Once the sweep has completed, the red box on the corner sweep icon indicates the sweep has results.
The results of the sweep can be viewed by right clicking on the sweep and selecting the result to view under “Visualize”.
Users can also access the sweep results in the Results View window while the corner sweep is selected. By right clicking on the results users can view them in the Visualizer or send them to the script workspace.
Corner analysis using script
The corner analysis utility is also fully script supported and users can use a script to perform the steps described above. Here is an example of using a script to create and run a corner analysis, and visualize the result at the end. Further details on these script commands are available on their individual documentation pages.
project_name = "corner_analysis.icp";
installdesignkit("lumfoundry_template.cml", "./", true);
analysis_name = "corner_analysis";
# define corner analysis
setsweep("Corner sweep", "name", analysis_name);
setsweep(analysis_name, "resave files after analysis", 0);
# define corner
corners_L = struct;
corners_L.name = "MMI";
corners_L.Library = "./lumfoundry_template/lumfoundry_template.lib.x";
corners_L.Corners = "fast; slow; nominal";
# define result
results_L = struct;
results_L.name = "transmission";
results_L.result = "::Root Element::ONA_1::input 1/mode 1/transmission";
# run corner analysis
# visualize results
result = getsweepresult(analysis_name, results_L.name );