In this schematic-driven electro-optical co-simulation example, we simulate a pulse-amplitude modulation-4 (PAM4) transceiver (optional: with nonlinear fiber) in transient domain using the Spectre-INTERCONNECT interop environment. The electrical circuit of the PAM-4 transceiver is simulated in Cadence Spectre and the optical circuit of the PAM-4 transceiver is simulated in INTERCONNECT. In every time step, Spectre and INTERCONNECT communicate data bidirectionally between electrical domain and optical domain. For this time domain simulation, the spectrum response and the eye diagram results are studied. Virtuoso interop installation instructions and resources
Overview
Understand the simulation workflow and key results
We are considering a schematic-driven workflow where the circuit schematic is designed in Virtuoso schematic editor and the circuit is simulated in Spectre (electrical part) and INTERCONNECT (optical part).
The circuit is a PAM4 transceiver, composed of a continuous-wave laser, an optical ring modulator, a grating coupler, a couple of optical waveguides, a photodetector and an electrical circuit for the modulator driving signals.
Note:
|
Step 1: Schematic design
The circuit schematic is designed in Cadence Virtuoso using the PAM4_transceiver_CML PDK, a generic photonic PDK. The design also requires analogLib, basic and opticalLib libraries which are shipped with Cadence Virtuoso.
Step 2: Configure ADE Explorer
We define the Design variables, monitored output ports and analyses arguments in the Analog Design Environment (ADE) Explorer window. An analysis result “EyeDiagram” is defined by Expression while two other results are monitored from the ports in the schematic.
Step 3: Netlist and run co-simulation
We then can generate the electrical and optical netlists and run the co-simulation. The co-simulation runs with INTERCONNECT and Cadence Spectre bidirectionally communicate simulation data between optical domain and electrical domain. Please refer to the Appendix for more information on the data exchange.
Step 4: Display results
The transmission waveform and the eye diagram of the PAM4 received signal will be generated at the end and users can choose the results of interest to display.
Optional step: Add nonlinear fiber
We can add the nonlinear fiber to the PAM4 transceiver to study the effect of it. The simulation steps for the PAM4 transceiver with the nonlinear fiber are the same as the above steps 1 to 4 where in step 2 schematic design, we add the nonlinear fiber to the circuit.
Run and results
Instructions for running the model and discussion of key results
Step 0: Install CML
Please install the CML "PAM4_transceiver_CML.cml" which comes with the example files into INTERCONNECT before build up and run the example. Please refer to the Install Compact Model Library page for detailed steps of the CML installation.
Step 1: Load libraries and schematic design
- Launch Virtuoso
- Open the Virtuoso Library Mananger (…/Tools/Library Manager).
-
Add the “PAM4_transceiver_design”, "nonlinearFiber", “analogLib”, “basic” and “opticalLib” libraries (Edit/Library Path). The “basic” and “opticalLib” libraries can be found in:
<virtuoso installation directory>/tools.lnx86/dfII/etc/cdslib
And the “analogLib” can be found in:
<virtuoso installation directory>/tools.lnx86/dfII/etc/cdslib/artist
The “PAM4_transceiver_design” and "nonlinearFiber" libraries are available for download in this app gallery example. - In the “PAM4_transceiver_design” library and “TestBench” cell, double click on the “schematic” view to visualize the schematic design.
This example is a PAM4 transceiver with the following schematic design:
where the PAM4_transceiver component can be expanded to the following:
Step 2: Configure ADE Explorer
- Double click on the “maestro” to open up the ADE Explorer configuration session.
The ADE Explorer session should configure as below:
Step 3: Netlist and run co-simulation
- In the ADE Explorer session, check for the Co-simulation setup by Setup/INTERCONNECT/Co-simulation Setup. Make sure the "INTERCONNECT primitive view name(s)" is auto set to "INTERCONNECT".
- Under the "Simulation" tab, select Netlist/Create to create netlists.
- Click the run button. The running status will be updated and an INTERCONNECT session will be brought up for the optical simulation (if not hidden).
- Results are plotted automatically when the simulation completes.
The eye diagram result will be generated by the above example files. The eye diagram resulting from the time domain simulation is wide open and the 4-level signal can be clearly seen. As mentioned above, the PAM4_transceiver_CML is intended for demonstration purposes only. In a foundry CML, the ring modulator model would be calibrated to the intended implementation.
Optional: Nonlinear Fiber in PAM transceiver
Step 1: Addition of nonlinear fiber
- Close the ADE window and return to the Library Manager. In the “PAM4_transceiver_design” library and “TestBench_nonlinearFiber” cell, double click on the “schematic” view to visualize the schematic design.
The transceiver now contains a nonlinear fiber between the transmitter and the photodetector:
The nonlinear fiber is defined with the following settings based on the Corning SMF28 fiber. Please see the Optical Fiber page for more information on each fiber setting.
- Double click on the “maestro” to open up the ADE Explorer configuration session.
The ADE Explorer session should configure as below. Note that the simulation time is twice that of the previous example to accommodate special simulation considerations of the fiber.
Repeat Step 3 with the new schematic. Results are plotted when the simulation is complete.
The nonlinear fiber component will delay the signal by half of the simulation time. As such, the first half of the simulation will have a signal of zero and the second half is used to create the eye diagram.
Note that the addition of the fiber has distorted the eye diagram. As the nonlinear effects or the length of the fiber is increased, the signal will become more distorted, and the eye will eventually close.
Step 2: Parametric analysis
- In the ADE Explorer session, find the Design Variable "Length" in the Setup window on the left.
- Double click on the variable "Value" tab and click on the three dots button to bring up the "Parameterize" window.
- Select "Add specification" from the drop down list on the up right corner.
- Select "From/To" from the main drop down list and select "LinearStepCount" as the "Step Type". Set the From and To values for the fiber length to be 1K to 10K with a step count of 4.
- Regenerate the netlists and rerun the simulation.
- Results are plotted automatically when the simulation finishes running. The results will be plotted over each other, but can be dragged to new windows to view. The results show the eye distortion for different fiber lengths.
Important model settings
Description of important objects and settings used in this model
CML
This example requires the PAM4_transceiver_CML Compact Model Library (CML) to be installed before running the example files. This example is provided with the CML file “PAM4_transceiver_CML .cml”.
See the Install Compact Model Library page on the Knowledge Base for more information on how to install the CML.
Ring modulator equivalent circuit
The ring modulator is seen as a loading circuit by the electrical driver circuit. The effect of this loading circuit needs to be considered in the electrical driver design. Thus we need to include the electrical equivalent circuit for the ring modulator in the design circuit.
Updating the model with your parameters
Instructions for updating the model based on your device parameters
Electrical driver design
The electrical driver is defined by Verilog-A behavioral models in this example. Users can update the design parameters of the behavioral models for updating modulation bit rate and voltage swing.
Optical circuit design
User can update the time domain simulation with the following parameters:
- Set the wavelength of interest in the Laser Source.
- Set the laser power
- Set nonlinear fiber effects
Using the nonlinear fiber component in other circuits
Users can integrate a nonlinear fiber into their own circuits by using the “nonlinearFiber_cellview” component provided in the “nonlinearFiber” library, as provided in this example. Note that this component will return no signal for half the simulation time, due to the transient Sample/Block mode solver physics (refer to this introduction for more information). Therefore, users will need to set the simulation time to twice of their required value.
In this example, the nonlinear effects in the fiber are quite small, and most of the perturbations come from linear effects. The nonlinear properties will need to be increased in order to see the power dependent effects.
Additional resources
Additional documentation, examples and training material
See also
Related Ansys Innovation Courses
Appendix
Additional background information and theory
Co-simulation data exchange for Spectre-INTERCONNECT interop
The co-simulation is done using interpolation buffers for the input (push) and output (pull) signals. When setup co-simulation in the integration environment, INTERCONNECT has its own sample rate and it will NOT adjust itself automatically. Every time Spectre pushes data to INTERCONNECT the signal will be stored in the input buffer. Every time Spectre requests for a signal, it will be interpolated from the output buffer. If the signal is not yet available in the output buffer, the last calculated value will be provided.
The co-simulation push-pull process has the following two steps:
Spectre pushes data to INTERCONNECT input buffers:
INTERCONNECT will check if there are enough samples in the input buffer to feed the circuit/simulation for one or more time steps. If yes, the simulation is performed until the input signals are consumed; otherwise the simulation will not run.
Spectre pulls data from INTERCONNECT output buffers:
INTERCONNECT will provide the signal available at the output buffer at the time instant provided in the Pull function. The value is interpolated from the available signals in the buffer - if there are not enough signals, the last value is provided. (down-sampling)
OData
The OData function can be used in ONA/OTRAN simulation and co-simulation. It can:
- Automatically find and load the optical simulation data
- Plot the optical data with a proper unit (e.g. power, phase, etc.)
The syntax of the OData function is:
OData(InputPortName AnalysisType [?plottype])
With the Arguments:
- InputPortName: hierarchical port name
- AnalysisType: “ona” or “otran”
-
?plottype (optional):
- For “ona” type, “gain” is the default option. Other available options include “gainDB” and “phase”
- For “otran” type, “power” is the default option. Other available options include “phase” ans “dbm”