DiCarloLab-Delft / PycQED_py3

Python3 version of PycQED using QCoDeS as backend
MIT License
67 stars 40 forks source link

Martinr/shfqa driver #690

Closed martinr-zi closed 2 years ago

martinr-zi commented 2 years ago

First draft of an SHFQA driver reproducing as best as possible the existing interface of UHFQA_core + UHFQC

Changes proposed in this pull request:

WARNING:

@tonyp-zi

tonyp-zi commented 2 years ago

Good job!

tonyp-zi commented 2 years ago

It is not clear to me, but we might be missing a complex conjugation somewhere. I think we want to make sure that the integration is (I_w - i Q_w) (I_s + i Q_s). Maybe we should check with Michele.

codecov[bot] commented 2 years ago

Codecov Report

Merging #690 (fbe6c23) into develop (e238290) will decrease coverage by 0.07%. The diff coverage is 32.47%.

:exclamation: Current head fbe6c23 differs from pull request most recent head c0170e9. Consider uploading reports for the commit c0170e9 to get more accurate results

@@             Coverage Diff             @@
##           develop     #690      +/-   ##
===========================================
- Coverage    35.76%   35.68%   -0.08%     
===========================================
  Files          297      302       +5     
  Lines        64787    65987    +1200     
===========================================
+ Hits         23168    23548     +380     
- Misses       41619    42439     +820     
Impacted Files Coverage Δ
...trument_drivers/physical_instruments/test_SHFQA.py 23.01% <23.01%> (ø)
...rs/physical_instruments/ZurichInstruments/shfqa.py 25.00% <25.00%> (ø)
...l_instruments/ZurichInstruments/internal/_shfqa.py 41.60% <41.60%> (ø)
...l_instruments/ZurichInstruments/shfqa_codewords.py 54.83% <54.83%> (ø)
...nts/ZurichInstruments/shfqa_uhfqc_compatibility.py 56.60% <56.60%> (ø)
...nstruments/ZurichInstruments/ZI_base_instrument.py 73.64% <100.00%> (+0.29%) :arrow_up:
pycqed/analysis/analysis_toolbox.py 42.51% <0.00%> (-0.46%) :arrow_down:

Continue to review full report at Codecov.

Legend - Click here to learn more Δ = absolute <relative> (impact), ø = not affected, ? = missing data Powered by Codecov. Last update e238290...c0170e9. Read the comment docs.

martinr-zi commented 2 years ago

@MiguelSMoreira thanks for the feedback!

As of now, the resonator frequencies must be set in two steps: the RF center frequency is set through a dedicated device node as follows:

driver.set("qachannels_{ch}_centerfreq", value)

The IF offset of the maximum 7 Qubits or slots attached to a certain channel is then set through the waveform samples uploaded to the device (readout pulse and integration weights). For the readout pulses, its the codeword waveforms, for the integration weights, this is done either through manually uploading a complex waveform through

driver.set(f"qachannels_{ch}_readout_integration_weights_{slot}_wave", weight)

or by using the helper function ported from the UHFQC, prepare_SSB_weight_and_rotation(), which is more restrictive in what it allows you to have as integration weights.

Does that answer your question?

MiguelSMoreira commented 2 years ago

@martinr-zi, yes, it does. Thank you for clarifying!