The Cadence Virtuoso layout integration allows the import of fixed or parameterized P-cell geometries defined in Virtuoso Layout Suite into Ansys Lumerical Multiphysics solvers (FDTD, MODE, CHARGE, etc.), and annotate back geometries from Lumerical solvers to Virtuoso Layout Suite. This feature can be useful for ensuring consistency in the geometries in your layout and simulation, or for parameter sweeps and optimizations in Multiphysics solvers with geometries parameterized in Virtuoso.
For importing layout from Cadence Virtuoso to Lumerical solvers, the layout geometry wizards available in either Lumerical multiphysics solvers or Cadence Virtuoso automate the import process and allow for easy review and update of the parameter configuration.
For annotating layout back from Lumerical solvers to Cadence Virtuoso, a script-based UI is provided to automate the back annotation process and allow freedoms for users to choose the destination library, cell name and view name.
The associated example files attached at the top right of this page include: files for the Virtuoso elements in an example library (lumfoundry), a Cadence layermap file and a Lumerical process file, as well as the .lsf file for geometry back annotation.
Note: The Cadence Virtuoso Layout integration feature only works in Linux systems. |
Requirements
Files
A Layer Builder process file describing the vertical layer information and materials for the manufacturing process as well as a CAD layer mapping file is required to import layouts to Lumerical solvers. Both of these files are typically provided in a foundry PDK. To create a custom PDK, please refer to Create Photonic PDK Through Virtuoso SKILL.
Licenses
Licenses for the following software is required for this feature:
- Virtuoso® Photonics Platform/Option.
- Lumerical multiphysics solvers.
Support Matrix for Software
Geometry import to Lumerical solvers | Virtuoso Version | Lumerical Suite Version |
---|---|---|
option 1 |
ICADVM20.1.500.2100 ~ ICADVM20.1.500.2400 |
2021 (R2.4), 2022 (R1, R1.1, R1.2, R1.3, R1.4) |
option 2 | ICADVM20.1.500.2500 ~ ICADVM20.1.500.3000 |
2022 (R2, R2.1, R2.2, R2.3, R2.4), 2023 (R1, R1.1, R1.2) |
option 3 | ICADVM20.1.500.3100 ~ ICADVM20.1.500.3400 |
2023 (R1.3, R2, R2.1, R2.2) |
option 4 | IC23.10.020 ISR2 or later |
2023 (R2.3 or later) |
Geometry back annotation | Virtuoso Version | Lumerical Suite Version |
option 1 | IC23.10.020 ISR2 or later |
2025 (R1.3 or later) |
Environment Setup
To set up your environment to use the Virtuoso layout integration feature, enter the following shell commands to set the necessary environment variables:
setenv Virtuoso_Photonics_Platform setenv cds_root /path to Virtuoso installation/
In addition, if you want to use the Layout Geometry Wizard in Virtuoso (see below), you need to install the EPDA environment in your working directory as explained here.
Import Layout from Virtuoso to Lumerical
Layout Geometry Wizard (in Lumerical)
This wizard available Multiphysics solvers, provides a GUI for selecting the Cadence cds.lib file, along with the Lumerical process file and Cadence layer map file. You can choose from the available libraries and cells, and review the layer mapping and the parameters defined in Virtuoso.
Once the wizard is finished, an analysis/model group with the geometry and parameters from the Virtuoso P-Cell will be added to the simulation. The setup script of the analysis/model group is automatically configured to query the layout information from Virtuoso whenever the values of the parameters of the group are changed. The following example provides more detail about how the wizard can be used:
- Download and extract layout_integration.zip folder. Then open FDTD. Start the layout geometry wizard. The wizard is located in the Main toolbar under the Build section.
- Browse and select the Cadence library file “cds.lib” and click on Next.
- Choose the geometry to import. In the Virtuoso section keep the library name as “lumfoundry” and select “pd_pcell_c” for the cell name and “layout” for the view name. A layout view is needed for the geometry to be created.
- Select the layer sources. For this browse and select the layer map file “lumfoundry.layermap”, and the process file “lumerical_foundry_process_file.lbr”. Then select Next.
- Here the list of input parameters and layer mappings are made available for review. You can go back in the wizard if you need to change something. In the parameter list you can disable parameters that you want to remain fixed at the default value.
- You can also enable the “Initialize FDTD region and ports (BETA)” option to add the simulation region and FDTD ports. Note that this option is only available in FDTD and MODE solvers. Click on Finish, once you are done with this step.
Below you can see how the wizard will look like after each step (1-3):
Once the wizard is finished, the layout information is combined with the process file and layer map information to create and add the 3D geometry to the simulation as a layer builder object inside the analysis/model group. Note that if you enabled the “Initialize FDTD region and ports (BETA)” option in step 6, there is also an FDTD region with ports under the analysis group.
The communication with the Virtuoso P-Cell to update the objects under the analysis group is handled in the setup script of the group (Setup > Script tab) using the commands described in the section Importing Component Layout Through Script.
For example, we may decide to change the width of the created objects. Once applied the changes will take effect immediately.
Script Commands for Accessing Virtuoso Layout
There are three script commands used to access the Virtuoso layout integration feature:
- itkdbgetparams: Returns a list of the parameters for the chosen device with their names, default values, and types.
- itkdbgetgeometry: Returns the geometry and pins for the chosen device as a struct with layer and polygon vertices data.
- cadtostreamlayer: Maps the Virtuoso CAD layers returned by itkdbgetgeometry to the manufacturing layers in the process file.
Details about the syntax of these commands are given on their respective documentation pages.
The use of these commands can be found in the imported object’s setup script. The outline of how the setup script is constructed to import and update Multiphysics solver geometries is given below.
- Use itkdbgetgeometry with the updated parameter values to get the device’s shape and layer information from Virtuoso.
- Load the process file information into the Layer Builder object with the loadprocessfile command.
- Use cadtostreamlayer to convert the CAD layer information returned by itkdbgetgeometry to the manufacturing layers.
- Set the geometries of the Layer Builder layers with the polygons returned by itkdbgetgeometry to the layers returned by cadtostreamlayer. See the Layer Builder page for details on how to apply polygons to the Layer Builder.
Note: The “Initialize FDTD region and ports (BETA)” uses the photonic pins in the Virtuoso P-Cell to identify the location and orientation of the FDTD ports. This is still a BETA feature with limited support and so it is important to verify the setup before running your simulation. The Layout Geometry Wizard leverages different objects in Finite Difference IDE (FDTD, MODE, etc.) and Finite Element IDE (CHARGE, etc.) for configuring the layout integration. It generates a new analysis group in the Finite Difference IDE but it leverages the model object in the Finite Element IDE. |
Layout Geometry Wizard (in Cadence)
- Download and extract layout_integration.zip folder. Open Virtuoso in the same working directory. Make sure the EPDA environment has been installed in the working directory as explained here.
- Open Library Manager from the Tools section. In the new window select the Library and Cell. Here we select the lumfoundrylLibrary and pd_pcell_c Cell. Then double click on layout in the view section to open/create the P-Cell.
- Open the Layout Geometry Wizard. For this click on “Lumerical” in the Main toolbar and select “Import design into Multiphysics Suite”.
- Choose the Lumerical solver where the layout will be imported. Browse and select the Cadence layer map file, and the Lumerical process file. For FDTD solver, to add the simulation region and ports as well, enable the “Add FDTD region and ports” option. Then click on OK.
Once finished, the layout information is combined with the process file and layer map information to create and add the 3D geometry to the simulation in the same way as with the Lumerical wizard. As mentioned in the previous section, the associated analysis group/ model object is also created which allows you to change the parameters of your structure (for example rotation) immediately.
Back Annotate Layout from Lumerical to Virtuoso
The back annotation feature is available in 2025 R1.3 or later releases. This is a script-based integration. Once users find the optimized P-cell geometry in Lumerical Multiphysics solvers they can back annotate the exact layout design to Cadence Virtuoso.
Note:
|
- Open the script file “back_annotation_driver.lsf” in Script File Editor in the Lumerical Multiphysics solver where the geometry has been imported from the previous session.
- Uncheck the “safe-mode” box in Lumerical Multiphysics solver.
- Select the object to be back annotated, i.e., “analysis group” or “model”.
- Run the script and the back annotation wizard will open to prompt user input.
- Follow the wizard prompt to “Browse” and select “cds.lib” file then click on “Next” button.
- Choose the library name “empty_lib” from the drop-down list to create a new cell for the back annotated layout. Click on the “Next” button to go to the next step. Note: The selected library must have the same process definition as the source library.
- Provide a new cell name to the cell (check the “create a new cell” box and provide a new cell name if a cell is in the current library). The cell name “wg_bend_new” is used for the demo. Then click on the “Next” button.
- Provide a new view name to the view (check the “create a new view” box and provide a new view name if a view is in the current cell). The default view name can be “layout”, and if users want to enable Schematic-Driven Layout (SDL) and Layout Versus Schematic (LVS) in Virtuoso, the view name must be “layout”. Then click on the “Next” button. A message will pop up to indicate the back annotation is successful (or unsuccessful if the process fails). Click on the “OK” button to exit the wizard.
- Go back to Cadence Virtuoso and select the “empty_lib” in the library. A new cell named “wg_bend_new” is created with the “layout” view. Users can then use the new layout to create instances in their designs.
Below you can see how the wizard will look like after each step (4-7):
Once the layout is back annotated to Cadence Virtuoso users can use the layout in layout designs.
Note: If the layout is back annotated to an existing cell, users need to open a new Virtuoso session to see the updated parameters. |