Getting started with spinqick ============================= Instructions for installing and setting up spinQICK. Start by setting up your qick board with the `qick quickstart guide `__. Before you clone qick and copy it to the board, read the instructions below pertaining to the firmware. ======== Hardware ======== SpinQICK is designed to operate the Xilinx ZCU216 evaluation board. This kit provides access to 16 high speed differential DAC outputs with balance-to-unbalanced (baluns) conversion of differential pairs to single ended AC coupled outputs. This works well for RF signals, but for baseband pulses we need a high-bandwidth way to DC couple to the RFSoC outputs and remove the common-mode voltage offset. We use a DC-coupled differential amplifier to do this. Similarly, for the readout of a DC current through a dot charge sensor (DCS), we can employ a single-to-differential amplification to pass our signal into the ADCs with approppriate dynamic range. We can do this with a homemade setup, shown in Fig 1, or with the QICKBox. *Non-QICKBox usage* .. figure:: ../graphics/spinQICK_setup.png :alt: spinQICK Setup :align: center Figure 1: Standard measurement setup for spinQICK applications - `ZCU216 RFSoC `__ - `LMH5401 `__ DC Coupled Differential Amplifiers - `LMH6401 `__ DC Coupled Differential Variable Gain Amplifer (for ADC) - `THS3491 `__ DC Coupled Single-ended Amplifiers (needed if the LMH5401 does not provide enough gain for your setup) - `PMOD level shifter `__ to buffer the trigger pulses for improved stability - Precision DC bias (QDevil QDAC, Basel LNHR, etc) - Support hardware including DC supplies for amplifiers, control computer, etc. *QICKBox usage* RealDigital provides a modular RFSoC frontend and enclosure, called `QICKBox `__ for use with QICK and by extension spinQICK, which makes integration of frontend hardware simpler. A recommended QICKBox setup for spinQICK includes: - RF 216 Main board and Case (1x) - DC In (1x) for ADC inputs - DC Out (up to 4 if needed) for DC coupled DAC outputs - Balun out (1x) for RF outputs, if needed A complete kit can be customized and purchased `here `__ ============ Installation ============ You will need to clone both `spinqick `__ and `our fork of qick `__ from github. Navigate to your local spinqick repository and run :: conda env create -f environment.yml conda activate spinqick pip install . now navigate to the qick repository and run :: pip install . You will need to complete one additional step in order to run the user-facing methods in `spinqick.experiments`. This step is explained in `00_make_configs.ipynb` notebook within the demo notebooks folder of the repository. You'll need to set a few environment variables to tell spinqick where to look for your specific configuration files. In windows, this entails running these commands in command prompt: :: setx SPINQICK_DATA_DIRECTORY "your directory path" setx SPINQICK_HARDWARE_CONFIG "your hardware config path" setx SPINQICK_EXPERIMENT_CONFIG "your experiment config path" setx SPINQICK_FILTER_CONFIG "your filter config path" After these variables are set, you can run: :: from spinqick.make_config import make_default_configs make_default_configs() in an ipython terminal within your spinqick environment, which will copy a set of default config files to the file paths specified by `SPINQICK_HARDWARE_CONFIG`, `SPINQICK_EXPERIMENT_CONFIG` and `SPINQICK_FILTER_CONFIG`. You are now ready to run the rest of the demo notebooks, which will provide more information about the config files and how to set them up! ======== Firmware ======== The recommended firmware bit and hwh files can be found `here `__ . This firmware will enable you to use the exchange-only experiments that were recently added to spinqick. If you need more rf generators and not so many baseband pulsing channels, you can use the `standard tprocv2 firmware `__. You will need to copy the firmware and the fork of qick onto the board, as described in the qick quickstart guide. If using the crosstalk compensation firmware, you must initialize the XtalkSoc object in place of QickSoc. To start your pyro server, it will look something like this: :: from qick.pyro import start_server from qick.rfboard import XtalkSoc start_server(ns_host="localhost", ns_port=8888, proxy_name="myqick", soc_class=XtalkSoc, bitfile= )