This page describes how to set up the system environment for creating and using photonic Verilog-A CMLs
As compared to INTERCONNECT CMLs, Verilog-A CML creation and use have a different set of system requirements, as well as different environment variables that need to be set up. For a system which can handle both the creation and use of Verilog-A CMLs, ensure that it meets the requirements highlighted in this page.
For INTERCONNECT CMLs, follow the guide in System Requirements for INTERCONNECT CMLs.
System Requirements
The following operating systems are supported:
- RedHat® Enterprise Linux® 6, 7 (64-bit editions only)
License Requirements
The following licenses are required to create Verilog-A CMLs and/or run simulations:
From Ansys:
Options | License Name |
---|---|
Option 1 | Ansys Lumerical INTERCONNECT |
Option 2 | Ansys Enterprise |
From Cadence:
Options | License Name |
---|---|
Option 1 | Virtuoso Photonics Platform |
Spectre X Simulator |
|
Option 2 | Spectre X Simulator |
Virtuoso Photonics Option |
|
Virtuoso MultiTech |
Setup for Creating Verilog-A CMLs
Version Requirements
Following you can find the version requirements for Lumerical and Cadence Spectre to build Verilog-A CMLs using CML Compiler:
Options | Lumerical Suite Version | Cadence Spectre Version |
---|---|---|
1 |
2022 R1 to 2023 R1.2 |
Spectre201 (ISR13 or later) |
2 |
2023 R1.3 or later |
Spectre201 (ISR17) or Spectre211 (ISR16 or later) |
Environment Variable Setup
To create Verilog-A CMLs, CML Compiler needs to find paths to Cadence Spectre and Virtuoso tools. This may be configured in two ways:
Option 1: CML Compiler will look for the paths to Spectre and Virtuoso in the SHELL environment. If the Virtuoso and Spectre paths are defined in the $PATH environment variable, users can validate the Virtuoso and Spectre paths by using bash commands:
- which virtuoso
- which spectre
Option 2: If you do not want to use the paths set up in the environment, or these paths are not defined in the environment, you may define the paths in the ~/.config/Lumerical/cml-compiler.json file. The paths in this file must be configured as described below:
Entry Name | Value | Required/Optional | Note |
---|---|---|---|
spectre_home |
Path to SPECTRE installation directory |
Required |
The path should include the following binaries:
|
virtuoso_home |
Path to ICADVM installation directory |
Required |
Correct path should include the following binaries: <path to virtuoso home>/bin/virtuoso |
virtuoso_graphic_mode |
true |
Optional |
A flag to enable Virtuoso startup in graphical mode. This is required only if CML Compiler can not start Virtuoso in the non-graphic mode due to operation system limitations. |
Remember that all the entries in the cml-compiler.json file are separated by comma. Here is an example cml-compiler.json file:
{
"spectre_home": "/data/cadence/SPECTRE20.10.404/",
"virtuoso_home": "/data/cadence/ICADVM20.10.220/"
}
If “spectre_home” or “virtuoso_home” are not defined in the cml-compiler.json file and the paths are not found in the environment, users will be prompted to enter the paths in the terminal. The paths entered will be saved to the cml-compiler.json file.
Setup for Using Verilog-A CMLs
Version Requirements
Ansys Verilog-A models are encrypted by Cadence Spectre. While running these Verilog-A models, Spectre needs to decrypt both Verilog-A models (generated by CML compiler) and Verilog-A runtime library (included in the Lumerical product). Hence the Spectre version used for running Verilog-A models should be the same or newer than the spectre version used for encryption.
For Ansys Verilog-A runtime library, the Spectre version used for encryption is as below:
Lumerical Suite Version | Cadence Spectre Version |
---|---|
2022 R1 and later |
Spectre 20.10.534 |
For Verilog-A models generated by CML Compiler, the Spectre defined as per the 'Environment Variable Setup' section described above in 'Setups for Creating Verilog-A CMLs' is used for encryption. The Spectre version information for these models can be found in the “README” file found in the directory '/artifacts/veriloga/models/' after CML Compiler is finished running.
Environment Variables Setup
The following shell environment variables must be defined to use Verilog-A CMLs for simulations:
Variable Name |
Value |
Used by tool | Note |
---|---|---|---|
ANSYSLMD_LICENSE_FILE |
License server address |
Spectre |
Only include one license server address. For example: export ANSYSLMD_LICENSE_FILE =1055@localhost
|
LD_LIBRARY_PATH |
Add a path pointing to "photonic_veriloga" folder in the Lumerical Suite directory |
Lumerical |
For example:
export LD_LIBRARY_PATH = $LD_LIBRARY_PATH:/opt/lumerical/ v221/photonic_veriloga
|
Virtuoso_Photonics_Platform |
true |
Virtuoso |
Only define this variable if Cadence license Option 1 is used |
Virtuoso_Photonics_Option |
true |
Virtuoso |
Only define this variable if Cadence license Option 2 is used |
Virtuoso_MultiTech |
true |
Virtuoso |
Only define this variable if Cadence license Option 2 is used |
PATH |
Add paths to Virtuoso binary and Spectre binary |
Virtuoso and Spectre |
User can find the Virtuoso and Spectre paths by using bash commands:
|
EPDA environment setup (recommended)
Once Lumerical tools have been installed, and licenses and environment variables have been set up, users may add the EPDA working environment to user’s working directory. While this is not required to run photonic Verilog-A simulations, it is strongly recommended, as it provides multiple benefits when configuring simulation settings. This includes automatically configuring model library, channel wavelength, and simulation settings that are required to run photonic Verilog-A simulations. More information about the automatic setup can be found in the Running Verilog-A simulations page.
To install the EPDA environment to a working directory, please follow the instructions outlined in this link.
Troubleshooting Instructions
Issue 1: Can not decrypt and run Verilog-A CMLs
Decryption failure is typically due to incorrect Ansys license setup or unsupported tool version. User can use the following checklist to verify their environment settings. Please make sure all checks are performed in the same terminal session where user will launch Virtuoso. DO NOT load any other environment settings after checking.
- Check Spectre and Virtuoso versions according to section System Requirements for Verilog-A CMLs
- Valid Spectre path and Virtuoso path has been added to $PATH.
- Check environment variable ANSYSLMD_LICENSE_FILE, making sure that its return value is the license server that hosts either Ansys license Option 2 or Option 3. The return value can not include more than one license servers.
- Check environment variable LM_LICENSE_FILE, making sure that its return value is empty or invalid
- Check environment variable LD_LIBRARY_PATH, making sure that the returns include a path pointing “<Lumerical install>/photonic_veriloga” folder.
Issue 2: CML Compiler progress bar is not properly displayed when running CML Compiler to create Verilog-A CMLs
Set the following environment variables to resolve this issue:
Valuable Name | Value | Used by tool | Note |
---|---|---|---|
LC_ALL |
en_US.UTF-8 |
CML Compiler |
Only use for resolving CML Compiler progress bar issue |
LANG |
en_US.UTF-8 |
CML Compiler |
Only use for resolving CML Compiler progress bar issue |
LANGUAGE |
en_US.UTF-8 |
CML Compiler |
Only use for resolving CML Compiler progress bar issue |