The repository was public at the time this page was posted, but Erik could make it private at any time. For any use other than assessing this resource site and the repository, contact Erik.
The code comprises ngspice simulation scripts. The scripts originated during R&D of Q2LAL and cryogenic reversible logic circuits for quantum computer control. The scripts evolved into a “library” or framework file named saa.cir (for “shift register adiabatic analysis”) and files for specific circuit types (named s2.cir, q2.cir, sNR.cir, and nn.cir — last for the “note note” test circuit).
“Adiabatic analysis” is a structuring method for ngspice scripts that allows a user to create an adiabatic circuit simulation file. This version of the adiabatic analysis software supports shift registers.
Files will have the following sections:
A command line
A netlist with the circuit under test
A line that includes a fairly large software framework or test harness: .include saa.cir
The file saa.cir can be used for multiple circuits. The features of the test harness include:
DC supply voltages GND and Vp on 70 and 71
8-phase clocks on 110-117, responsive to parameters for frequency and fine control of waveform shape
A power measurement subsystem that creates plots 1 and 2
Waveform plots 3 and 4, plotting signals wv3_nn and wv4_nn, nn = 00..23 generated by the circuit under test
A an ability to perform parameter sweeps
Setup Instructions
The following files must be present in the working directory:
saa.cir (this file): The main file, yet just containing a “test harness”; the user will run one of the main programs below:
sS2.cir: Static 2-Level Adiabatic Logic (S2LAL) shift register circuit, with .include saa.cir at the end
sQ2.cir: Quiet 2-Level Adiabatic Logic (Q2LAL) shift register circuit, with .include saa.cir at the end
snR.cir: nMOS Reversible Energy Recovery Logic (nRERL) shift register circuit, with .include saa.cir at the end
nn.cir: Note note prototype quantum computer control circuit, with .include saa.cir at the end
The following must be available:
The working directory must have a gp subdirectory. The software deposits output files in the subdirectory to reduce clutter
An ngspice installation. This file was tested with version 36. A gnuplot installation allows more sophisticated plots [ngspice 36, section 18.7.1].
modelcard.nmos and modelcard.pmos: device models for BSIM4 from ngspice distribution (optional)
ps_nsoi1_uni.58.scs and ps_psoi1_uni.58.scs: device models for the undisclosed SOI transistor undisclosed SOI
Note-note is a prototype circuit for a reversible logic quantum computer controller test circuit.
Description
Some qubit types are controlled by exposing them to microwave waveforms, such as specific waveforms for X, Y, Z, and CNOT operations. If repetitions of these waveforms is created at room temperature as one or more prime line waveforms in the figure below (6 — single numerals in parenthesis will be explained below), a qubit can be controlled by the address line (AL) bus switching a waveform on an off at appropriate times (7), as shown.
Note note circuit
The behavior is like a piano. The prime line waveform is like a piano string, always giving the same tone. The circuit that drives the AL bus is the pianist, digitally enabling the analog tone created by the string. The quantum computer program would be equivalent to the sheet music.
The reversible circuit contains three shift registers, each holding a measure of music. They are loaded with note note, rest note, and note rest in the test circuit.
The black graphics in the figure above are a flowchart, and the reversible circuit’s behavior follows the flowchart. The clock on each shift register is stopped except when it is the active box in the flowchart (4). When a box is active it shifts is contents, which is music, to the AL bus, gating the prime line and causing an operation on the qubit (5).
When the measure of music is fully transmitted, a control signal (2) goes through a diamond to another measure of music. Only one diamond can be active at once, so the two diamonds are controlled by a single decision signal (blue) (1) from the room temperature control computer. The decision might be based on whether or not a quantum error has occurred or not.
Circuit output
The simulation code produces several plots, one of which is very similar to the images in the pdf file below. The purple circled numerals correspond to single digits in parenthesis in the text above, such as (1) to (7).
[REFERENCE TBD] This text to be a reminder to EPD to put a link to a document with a more detailed description. This could be Classical Reversible Logic Circuits for Quantum Computer Control, Zettaflops, LLC Technical Report ZF010, once I get around to posting the doc.
nRERL is from a South Korean project in the 1999-2005 range [Lim 00] [Kim 05]. The original circuit is based on a 6-phase clock, uses only nFETs, and uses bootstrapping to increase voltage swing. By the time the project matured, there was an 8-phase version that had the ability to “skip” stages [Kim 05]. While 8 clock phases are 1/3 more resource intensive than 6 clock phases, the number of transistors could be reduced by a factor of three.
[Lim 00] Lim, Joonho, Dong-Gyu Kim, and Soo-Ik Chae. “nMOS reversible energy recovery logic for ultra-low-energy applications.” IEEE Journal of Solid-State Circuits 35.6 (2000): 865-875.
[Kim 05] Kim, Seokkee, and Soo-Ik Chae. “Complexity reduction in an nRERL microprocessor.” Proceedings of the 2005 international symposium on Low power electronics and design. 2005.
Q2LAL was developed by Erik DeBenedictis as an enhancement on S2LAL that has advantages in some circumstances. Quiet 2-Level Adiabatic Logic (Q2LAL) is like S2LAL but signals with positive-going pulses for A and -A, i.e. A^ and -A^ in S2LAL notation. The advantage is equal power draw for A=0 and A=1, if engineered correctly, leading to less noise or the circuit being “quiet.”
The adiabatic amplifier circuit (i.e. unlatched) is shown below.
The circuit requires a clamp signal či-1, which can be generated by two transmission gates (four transistors) from clocks. The clamp signal is not dependent on data, so it can be generated once and used in several places.
Connections
Note connection 4 is an optional additional output. If the Extra_buffer parameter is nonzero, the circuit will generate a second adiabatic amplifier with output connected to parameter 4. If Extra_buffer is zero, no transistors are generated and parameter 4 will be a wire that does not go anywhere. The extra buffer is useful for suppressing suppress fault propagation. For example, short circuiting parameter 4 to ground will not affect the output voltage of parameter 3.
AT input signal true rail: Ai-1^
AC input signal complement rail: -Ai-1^
T output signal true rail: Qi^
T2 additional buffered copy of the output signal, with controlled drive, true rail: buf Qi^
C output signal complement rail: Qiv
pT one of the power-clock phases: phii^
Cl clamp signal či-1: Clmpi-1v
GND DC power supply ground voltage: GND
nsub nFET substrate bias: nsub
psub pFET substrate bias: psub
Parameters
ini initial state as a voltage, either gg or vv: parameter
Global parameters
PW: width multiplier for drivers on the true rail only
Long_Register: Deprecated debugging flag that removes the clamp on signal AT. Set to 0.
Extra_buffer: If nonzero, causes an additional driver to be created on the true rail with transistor width Clock_Drive. The output of this buffer drives output T2, which is otherwise not connected.
.SUBCKT QAAmp AT AC T T2 C pT Cl GND nsub psub ini='gg' PW=1.002 $ Q2LAL two-rail adiabatic amplifier. Args: AT/C T(2)/C clock clamp GND substrate supplies
.ic V(T)='ini' V(C)='vv-ini' $ .ic V(a)={gg} V(a2)=ini
xM0 pT AT T nsub nFET n=1 m=PW $ pass gate
xM1 pT AC T psub pFET n=1 m=PW
xM2 pT AC C nsub nFET n=1 m=1 $ pass gate
xM3 pT AT C psub pFET n=1 m=1
xM4 GND AC T nsub nFET n=1 m=1 $ clamp
xM5 GND AT C nsub nFET n=1 m=1
xM6 GND Cl T nsub nFET n=1 m=1 $ clamp
.if (Long_Register=0)
xM7 GND Cl C nsub nFET n=1 m=1
.endif
.if (Extra_Buffer=0)
.else
xM8 pT AT T2 nsub nFET n=1 m='Clock_Drive*PW' $ pass gate
xM9 pT AC T2 psub pFET n=1 m='Clock_Drive*PW'
xM10 GND AC T2 nsub nFET n=1 m='Clock_Drive' $ clamp
xM11 GND Cl T2 nsub nFET n=1 m='Clock_Drive' $ clamp
.endif
.ENDS QAAmp
Typesetting Test Area
The following uses cut-and-paste from EPD’s Word 2003 figures. Render –Ai-1^: -Âi-1 (so the circumflex diacritical mark works from cut-and-paste). Likewise for cups (caron) či-1 (but doesn’t the cee look a little skinny?)
The following is an attempt to render phi3^ by cut-and-paste: f̂3 (renders as an eff not a phi), but with special character plugin, we get φ3 (which is correct but not the glyph style we are familiar with).
References
[DeBenedictis 21a] DeBenedictis, Erik P. “Cryogenic Adiabatic Transistor Circuits for Quantum Computer Control.” 2021 IEEE 14th Workshop on Low Temperature Electronics (WOLTE). IEEE, 2021. https://ar.zettaflops.org/CATC/CATC4QCtl-WOLTE.pdf.
The zip files below comprise the AA (Adiabatic Analysis) ngspice software. The software is licensed under Apache 2.0. There is no repository for changes at this time.
Version of 3:05 PM 3/13/2022
This release comprises eight .cir files. Installation instructions are in comments towards the end of aa.cir.
Supports multiple devices:
(MD=2) Compatibility check with e.cir, which uses the built-in BSIM3 model with default parameters.
(MD=3) Built-in BSIM3 model with default parameters.
(MD=4) BSIM4 test modelcards from the ngspice distribution. You must manually move the modelcard files; see comments in aa.cir.
(MD=5) Sky130. You must install the Sky130 PDK and “uncomment” some lines.
(MD=6) [undisclosed SOI]. Not for general use at this time.
Supports the following circuits:
Q2LAL shift registers
S2LAL shift registers
Two versions of a quantum computer controller based on Q2LAL
A CMOS work alike for one of the quantum computer controllers
Learning about the code and regression testing:
Running aa.cir with no modifications will produce the same output as running e.cir. This is a regression test.
The top of aa.cir contains a series of control lines of similar format. For purposes of identification, they start with *.param or .param. All but one of these lines should be commented out, meaning the one that is not commented out will control the run.
Each run will produce some plots and append a summary line to Adia.csv and CMOS.csv. (The current version of this software also appends a second line with the simulation run time.) You can open .csv files with Excel.
Summary lines have been incorporated into aa.cir immediately following the .param line that controlled run, forming another type of regression test. The summary lines include the energy dissipated during initialization and the remainder of the simulation run. If your run’s dissipation is the same (to five decimal places) as the one incorporated in aa.cir, the software is probably running correctly.
The summary lines in aa.cir have been manually edited so the last field contains the time and date of the run, the run time in seconds, and the name of the computer in the developer’s office that executed the run.
The scripts in this software are intended to be changed by the user. Some friendly advice is to run regression tests frequently and keep a lot of backup files because ngspice scripts are hard to debug.
The following zip file contains password-protected files for the convenience of the developer. You should not need these files because they are available on the Internet.