Traditionally, analog mixed signal (AMS) verification works by utilizing a connection between an RTL simulator, like Xcelium, and an analog simulator, like Spectre. Xcelium uses an R2E (real to electric) connect module to convert its input signals into an analog format that Spectre’s simulated model can understand, and then an E2R (electric to real) connect module interprets these outputs in a digital context that Xcelium can use.
Figure 1: The traditional AMS flow
That’s all well and good—but what if you’re an up-and-coming photonics company looking to revolutionize the way mixed-signal verification is done?
Lightmatter is a photonics company based in Boston seeking to use this technology to improve chip interconnect speeds. By integrating transistors and photonics into a new communications topology, Lightmatter can fit 40 data passage lines in the space of a single optical fiber—a huge improvement over existing interconnect technology.
At CadenceLIVE Boston 2023, Lightmatter shared their experience with a verification challenge. Spectre’s photonics support is implemented as “Structured Port”—that is, port types that are literally struct data types, accessible with the “.” operator—and the connect modules that allow Xcelium and Spectre to communicate couldn’t handle that kind of implementation.
Figure 2: An example struct port
Thus, Lightmatter needed a custom connect module. Lightmatter’s goal was to emulate the experience and functionality of traditional connect modules but using photonics signals. This would vastly improve the efficiency of their verification. Specifically, they wanted to be able to control and monitor photonic signals directly from SystemVerilog, use the Verilog netlist as a method of transport for photonics signals, and support replacing any analog block that has photonics signals with a SPICE view. This meant expanding the optical fields in SPICE, creating a user-defined nettype in SystemVerilog to handle optical signals, and using the “bind-to-SPICE” Xcelium Mixed-Signal feature to force the creation of connect modules between these new expanded optical fields and SystemVerliog wires. This last item needed to do some heavy lifting—it had to be able to regenerate optical signals that might be incomplete or damaged, as well as reverse a signal back into Spectre. Ideally, this would all be hidden from the user in the backend, too.
Step one was to expand the photonics port functionality. Each port was broken up into its constituent fields in hardware, using a 0-ohm resistor to make the connections between the signals that comprised the struct and the new ports. These new ports were then aliased for easy access.
Second, a user-defined nettype was created. Literally, it’s a new type that can be used as a net. It also has a custom resolution function that can calculate the final value of a net given a set of drivers.
The third step was where Lightmatter’s solution leveraged a critical Xcelium feature: Bind to Spice.
Figure 3: Bind to Spice
This Xcelium Mixed-Signal App lets you use a SystemVerilog bind inside a SPICE netlist, which allows a port on a SystemVerliog my_laser module to interface with SPICE’s laser port. All you need is a standard bind statement and some custom parameters for the autogenerated optical signals depending on your use case, and you’re good to go.
The my_laser module could then be used like any other block—optical signals were integrated right into the netlist, alongside any digital and analog signals. This allowed Lightmatter to describe a photonic signal in terms of its constituent elements, allowing them to use photonics to effectively replace traditional connect modules with a significantly faster, more efficient alternative.
Thus, Lightmatter was able to take its photonics-based verification strategy to the next level—all thanks to some engineering ingenuity and a little help from the neat Xcelium Mixed-Signal App.
If you’d like to learn more about Xcelium and the Xcelium Mixed-Signal App, check out the white paper detailing Xcelium's mixed-signal features.