Skip to the content
16 layers302 × 188.1 mmDacboard, the printed circuit board in 3D

Unified control architecture for spin qubits in quantum dot devices

Size
302 × 188.1 mm
Copper layers
16
Thickness
1.6 mm
Parts
481
Nets
1,161
Pads
2,928
Tracks, vias
5,071, 5,191
Pours
11
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
29 Sep 2025
Updated
18 Aug 2026

Overview

Dacboard is an open-source printed circuit board by ShizeChe, from the ShizeChe/unispin repository on GitHub. It is a 16-layer board of 302 × 188.1 mm with 481 parts on 1,161 nets, routed with 5,071 tracks and 5,191 vias.

It is built around the AD5791BRUZ, AD8675ARZ and ISO6761FQDWRQ1, with the RFPC-SMA28-F, ASP-184330-01 and DLS3XS6AK44X among its other parts. Its parts include 213 capacitors, 105 ICs, 88 resistors and 71 connectors.

Main components

6

README

README.md

Unispin

A unified quantum control platform for quantum dot spin qubits

boards

Overview

Unispin is a unified quantum control platform designed specifically for quantum dot spin qubits. Its goal is to reduce control stack complexity and cost while improving performance by integrating all the requried control resources onto a single FPGA. With the two custom PCBs (FMC breakout board and low-noise DAC board), the current configuration has:

  • 24x bias DC channels (AD5791BRUZ)
  • 6x RF IQ pairs for further analog upconversion
  • 2x singled-ended RF channels and 2x ADC channels for lockin-in measurement
  • 2x singled-ended fast DC channels

Each signal and measurement channel has its own dedicated, fully-pipelined control core. Each core can be programmed to iteratively executes a sequence of custom assembly instructions with cycle-precise timing. The annotated pulse experiment assembly program and waveform below demonstrates this execution model.

text
.program rf0                 # program for RF channel 0
.fnco 10MHz                  # NCO is 10MHz
.repeat 100                  # repeats 100 times
    idl t=19us (arm)         # idle for 19us
    ply phs=0 t=12ns (t+8ns) # play the NCO tone for 12ns (increment the pulse duration by 8ns every iteration)
    idl t=12us               # idle for 12us

.program dc0                 # program for DC channel 0
.repeat 100                  # this program repeats 100 times
    lvl v=0 t=2us (arm)      # output 0V for 2us
    lvl v=1 t=15us           # output 1V for 15us
    lvl v=2 t=2us            # output 2V for 2us
    idl t=12ns (t+8ns)       # idle for 12ns (increment the idle duration by 8ns every iteration)
    lvl v=1 t=10us           # output 1V for 10us
    lvl v=0 t=2us            # output 0V for 2us

.program li0                 # program for LI (lock-in) channel 0
.repeat 100                  # this program repeats 100 times
    idl t=19us (arm)         # idle for 19us
    idl t=12ns (t+8ns)       # idle for 12ns (increment the idle duration by 8ns every iteration)
    sam n=1000 t=10us        # sample 1000 samples spanning 10us
    idl t=2us                # idle for 2us

.launch rf0 dc0 li0          # launch RF channel 0, DC channel 0, LI channel 0 

rabi example

Project Status

The project currently has three parts:

  • RTL design, along with testbenches and some formal properties used for verification (under rtl)
  • PCB design for the 24 bias DC channels, along with assembly instrctions (under pcb)
  • Assembler for compiling and executing the custom assembly programs (under asm)

This project is currently under active development. The RTL design, PCB design, and assembler may continue to evolve as functionality is validated experimentally and the system is further refined. More detailed documentation and user guides will be added after real-device experiments.

Building the rtl design project and bistream in Vivado

bash
# clone repo
git clone "repo-url"

# go to the synthesis folder
cd unispin/rtl/synth

# build in vivado
vivado -script proj.tcl &

Note that proj.tcl only builds the project. Click generate bitstream in vivado to build the bitstream.

Building the simulator (requires VCS+Verdi)

This simulator is our go-to method to visualize the full-system waveforms. It incorporates all the channels and cores and have simulated DAC and ADC modules for directly visualizing analog waveforms. It simulates AXI memory operations by accepting address and data through a socket interface, the received address and data are then written to the sequencer through its AXI interface.

Build the simulator.

bash
# assume we are in the top level of the cloned repo

# go to the rtl folder
cd unispin/rtl

# build the simulator (requires VCS)
make

This will create a simulator executable under rtl.

Execute the simulator in Verdi.

bash
./simulator -gui -do sim/wv.tcl &

This will open up Verdi and load the waveforms. It will listen for connections and read address and data once running. Verdi can stop it at anytime to examine waveforms.

Building the assembler

bash
# assume we are in the top level of the cloned repo

# go to the asm folder
cd asm

# build the assmebler
make

This will create an executable named "squish" under asm.

Example assembling a .asm file and send to the simulator to visualize exection (with simulator running).

bash
./squish -s -f ../exp/hahn_echo.asm

Petalinux

A Petalinux OS can be built to interface with the cores in FPGA. os/petalinux-steps.md describes the steps we took to build a bootable image with an uio driver for each core.

Parts

481
QtyValueFootprintReferences
96CCapacitor_SMD:C_0402_1005Metric_Pad0.74x0.62mm_HandSolderC120, C121, C122, C123, C124, C125, C126, C127, C128, C129, C130, C131, C132, C133, C134, C135 +80
560.1uFCapacitor_SMD:C_0402_1005Metric_Pad0.74x0.62mm_HandSolderC1, C11, C100, C101, C102, C103, C104, C105, C106, C107, C108, C109, C110, C111, C112, C113 +40
4810KResistor_SMD:R_0402_1005Metric_Pad0.72x0.64mm_HandSolderR42, R43, R44, R45, R46, R47, R48, R49, R50, R51, R52, R53, R54, R55, R56, R57 +32
3210uFCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC2, C10, C12, C14, C16, C22, C23, C24, C25, C26, C27, C28, C29, C30, C31, C32 +16
28R_USResistor_SMD:R_0805_2012MetricR11, R12, R13, R14, R16, R17, R18, R19, R20, R21, R22, R23, R24, R25, R26, R27 +12
26RFPC-SMA28-Fdacboard-new:RFPC-SMA28-FJ10, J11, J12, J13, J14, J15, J16, J17, J18, J19, J20, J21, J22, J32, J33, J34 +10
25AD8676xRPackage_SO:SOIC-8_3.9x4.9mm_P1.27mmU11, U12, U14, U16, U18, U20, U22, U23, U24, U25, U30, U31, U34, U35, U36, U37 +9
2410pFCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC47, C48, C49, C50, C51, C52, C53, C54, C55, C56, C57, C58, C59, C60, C61, C62 +8
24AD5791BRUZPackage_SO:TSSOP-20_4.4x6.5mm_P0.65mmU10, U13, U15, U17, U19, U21, U26, U27, U28, U29, U32, U33, U38, U39, U40, U41 +8
24AD8675ARZPackage_SO:SOIC-8_3.9x4.9mm_P1.27mmU59, U60, U61, U62, U63, U64, U65, U66, U67, U68, U69, U70, U71, U72, U73, U74 +8
24ISO6761FQDWRQ1Package_SO:SOIC-16W_7.5x10.3mm_P1.27mmU58, U83, U84, U85, U86, U87, U88, U89, U90, U91, U100, U101, U102, U103, U104, U105 +8
12Conn_01x02Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ25, J44, J45, J48, J59, J60, J61, J62, J66, J67, J68, J69
12Conn_CoaxialConnector_Coaxial:MMCX_Molex_73415-1471_VerticalJ29, J31, J49, J50, J51, J52, J53, J54, J55, J56, J57, J58
832.4ohmResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR1, R2, R3, R4, R5, R6, R7, R8
8LTC6655CHMS8-2.5_PBFPackage_LCC:Analog_LCC-8_5x5mm_P1.27mmU1, U2, U3, U4, U5, U6, U7, U8
5CCapacitor_SMD:C_0805_2012MetricC17, C18, C19, C20, C21
4Conn_01x03Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ24, J42, J43, J47
4Conn_01x05Connector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_VerticalJ23, J40, J41, J46
4Conn_02x12_Odd_EvenConnector_PinHeader_2.54mm:PinHeader_2x12_P2.54mm_VerticalJ28, J30, J64, J65
4MountingHole_3.5mm_Pad_ViaMountingHole:MountingHole_3.5mm_Pad_ViaUnconnected, Unconnected, Unconnected, Unconnected
4Screw_Terminal_01x02TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-2-5.08_1x02_P5.08mm_HorizontalJ2, J38, J39, J63
3Screw_Terminal_01x03TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-3-5.08_1x03_P5.08mm_HorizontalJ1, J26, J37
2LT5400BCMS8E-7_PBFPackage_SO:MSOP-8-1EP_3x3mm_P0.65mm_EP1.68x1.88mmR9, R10
2R_USResistor_THT:R_Axial_DIN0309_L9.0mm_D3.2mm_P12.70mm_HorizontalR15, R40
1ASP-184330-01ASP-184330-01:SAMTEC_ASP-184330-01J27
1DLS3XS6AK44Xdacboard-new:DLS3XS6AK44XJ3

More from ShizeChe/unispin

2
  • 14 layers273 × 186 mmDacboard, the printed circuit board in 3D

    Dacboard

    ShizeChe/unispin

    Unified control architecture for spin qubits in quantum dot devices

    388 parts18
  • 16 layers67 × 104.4 mmMezzanine2header, the printed circuit board in 3D

    Mezzanine2header

    ShizeChe/unispin

    Unified control architecture for spin qubits in quantum dot devices

    6 parts18

Similar boards

  • 10 layers40 × 160 mmPsc daughter brd, the printed circuit board in 3D

    Psc daughter brd

    NSLS2/zupsc-hw

    Zynq UltraScale Power Supply Controller hardware

    297 parts1BSD-3-Clause
  • 2 layers65 × 73.7 mmRascsi din, the printed circuit board in 3D

    Rascsi din

    nucleogenic/RASCSI

    Please check out the full story with much more detail on the wiki!

    43 partsBSD-3-Clause
  • 4 layers80 × 100 mmAD5791-Linearity Calibrator, the printed circuit board in 3D

    AD5791-Linearity Calibrator

    NNNILabs/AD5791-Linearity-Calibrator

    Power is supplied through the 3.5mm terminal block with the labels 'IN+' and 'IN-'. +/-18V is an ideal nominal supply. The DAC board is connected to a computer through the Raspberry Pi Pico controller's micro USB port.

    67 parts16MIT
  • 6 layers100.7 × 106.4 mmSignal processing unit, the printed circuit board in 3D

    Signal processing unit

    scalinq-lab/cryomagsens

    The sensor unit was designed in KiCad 10 and manufactured by JLCPCB. It is built in a flex PCB material to achieve a very small build height, in order to come very close to the device under test.

    178 parts2CERN-OHL-P-2.0
  • 4 layers95 × 95 mmTelemetryOnboard, the printed circuit board in 3D

    TelemetryOnboard

    Spaceflight-Rocketry-Giessen-e-V/Telemetry

    Open-Source Rocket Telemetry System Based On Radiocrafts RC232 Radio Modules

    143 parts27CERN-OHL-S-2.0
  • 2 layers90 × 90 mmPlasmaTransformer, the printed circuit board in 3D

    PlasmaTransformer

    inceptionev/PlasmaTransformer

    This project mainly focuses on creating a driver and 3D-printed support structure that allows for safe continuous operation of a plasma toroid.

    86 parts14
  • 4 layers25 × 67 mmTinkerNav V25, the printed circuit board in 3D

    TinkerNav V25

    Tinkerbug-Robotics/TinkerNav

    RTK Rover and Base Station Firmware for TinkerNav Boards

    54 parts6
  • 2 layers70 × 64.5 mmClockgen main board, the printed circuit board in 3D

    Clockgen main board

    GDH-Technologies/cx-clockgen

    Essentially a fork of Rene Wolf's `cxadc-clock-generator-audio-adc` gitlab project

    17 parts1

Questions

How big is the Dacboard PCB?

It measures 302 × 188.1 mm and has 16 copper layers, 1.6 mm thick.

What parts does the Dacboard use?

481 parts, built around the AD5791BRUZ, AD8675ARZ, ISO6761FQDWRQ1 and RFPC-SMA28-F. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Dacboard KiCad files?

From the ShizeChe/unispin repository on GitHub, at the commit this page was made from: the board is pcb/dacboard-new/dacboard.kicad_pcb and its schematic pcb/dacboard-new/alchitry_au_header.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Dacboard design in my own project?

Its repository states no licence, so its author keeps all rights: ask ShizeChe before reusing the design.