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.