Coder Social home page Coder Social logo

bbn-q / qlab Goto Github PK

View Code? Open in Web Editor NEW
37.0 37.0 15.0 13.27 MB

Measurement and control software for superconducting qubits.

License: Apache License 2.0

MATLAB 89.77% Python 3.52% C 1.42% M 1.69% Processing 2.73% Objective-C 0.02% C++ 0.85%

qlab's People

Contributors

adcorcol avatar blakejohnson avatar caryan avatar fongkc avatar gribeill avatar matthewware avatar oliverdial avatar rmcgurrin avatar scheng0256 avatar taohki avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

qlab's Issues

Disable un-used AWGs in PulseCalibration

The problem is that if you have AWGs enabled that aren't used when calibrating a particular qubit, then you will either get an error in PulseCalibration.loadSequence() or you will have bad/dummy data coming out of an AWG. We should disable those AWGs not used in calibrating a particular qubit.

TimeDomain won't start if TimeDomain.cfg is missing

These parameters need to be inserted into the settings structure by default:

prevSettings.ExpParams = struct('digitalHomodyne', [], 'filter', [], 'softAvgs', 1);
prevSettings.deviceName = '';
prevSettings.exptName = '';
prevSettings.data_path = '';

Also, the experiment quickpicker has the same issue.

Refactor expManager hierarchy

An experiment class should be composed of

  • an instrument manager
  • a data file handler
  • a looping manager
  • add a measure method

Generally it should be much easier to create new experiments.

marker delays

The analog channels are significantly delayed compared to the marker channels (I've seen a ~52 ns delay = 62 samples). To fix this we could put marker data into a FIFO buffer before it is output. Ideally, this buffer would have a size which is configurable with a register.

APS PLL chip loses lock

As reported by IBM and Colm, occasionally the PLL chip on the APS seems to lose lock with the reference. Symptoms include SSB frequencies and pulse widths being incorrect.

Next time this happens, we should check the status bits on the PLL chip. Does it think it is still locked up? If not, we can expose these bits to the driver and check them in init().

Larger APS memory

Before version 1 we should max out the block RAM on the FPGA and push SSB off to a later version.

Estimated experiment time remaining

There are a couple ways to do this:

  1. Previously I've run a updating estimate based on how long things are taking.
  2. If we control the experiment rep rate then it is mostly calculable. The trouble with this is that the AWG load/start/stop times are harder to include.

BNC driver clean-up

The BNC driver has few loose ends that need tidying up:

  • setting reference source
  • setting external reference frequency
  • setting reference out frequency
  • setting reference out on/off
  • checking reference lock state
  • cleanup workaround for no output after toggling pulse mode issue after BNC fixes issue

Labeled pulse functions

Convert pulse functions into pulse objects. Overload the disp operator to show humanized labels.

APS marker definition

There is no current method for specifying the outputs on the marker channels of the APS. We would like to support two modes:

  • Buffer pulse - trigger at edges of buffer pulse
  • Single trigger with start and width

CalibratePulses not working

I've tried running calibratepulses and after it compiles the first 8- sequences and takes that data if fails with this error message:

Attempted to access data(0); index must be a positive integer or logical.

Error in PulseCalibration.analyzeRabiAmp (line 20)
if data(end/2) > offset

Error in PulseCalibration/PulseCalibrationDo (line 46)
[piAmpGuesses(1), offsetPhases(1)] = obj.analyzeRabiAmp(data(1:end/2));

Error in PulseCalibration/Do (line 207)
obj.PulseCalibrationDo();

Error in calibratePulses (line 32)
pulseCal.Do();

So it looks like it just isn't taking any data. I changed the ExpParams.measurements from M1 to the new M1_KernalIntegrator that we are using. Not sure if this is correct though.

Any Ideas?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.