Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support for TDM sequencer and custom ops #168

Merged
merged 69 commits into from Jul 3, 2018
Merged

Conversation

dieris
Copy link
Collaborator

@dieris dieris commented Jun 15, 2018

Pending APS2 5.0/TDM 2.0 release.

Introducing:

  • MEASA
  • Invalidate
  • MajorityVote
  • MajorityMask
  • Decode
  • DecodeSetRounds

Todo:

  • improve documentation
  • add tests

Putting it out there looking for comments/suggestions

Daniel Ellard and others added 30 commits December 13, 2017 20:23
print a message when we see a measurement with a
non-default measurement address, just to show that
the information was available to the driver (even
though this driver doesn't, and SHOULDN'T do anything
with this info yet)
this still seems more or less incorrect, because
it's part of the control structure, not part of
the waveform...  but we don't have a separate way
to represent that info
store the memory address that should be used to
store the result of a measurement as part of the
measurement pulse
this is done in a hackish way for the first pass, while
I sort out the dependencies.  Eventually it should find
its way into a different module because the TDM is a
fundamentally different creature than the APS2.
differentiating between CUSTOM and WRITEADDR

still need to address changes to ordinary APS2 opcodes
avoiding breaking the APS2 in order to support
the TDM operations by creating a new driver for
the "APS2TDM".
this APS2 driver should be identical to master at this point
in my initial sketch, the TDM instructions were subclasses from
the ControlFlow instructions, which made them pretty easy to
slip into the driver.  Now that I've made them into a separate
hierarchy, all the isinstance tests for ControlFlow fail for the
TDM instructions, so new tests are needed.

Also added something equivalent to aps2_reader, since this was
linked to the APS2 driver, which I am trying to leave unaltered.
(all dependencies on aps2_reader could be removed at this point)
there are still some problems with this, mostly me
not knowing where things should go.  There's also
the problem of compiling for the measurement channel
vs the qubit channel: how do we know which one the
TDM should follow?
this removes the extra NOPs, but I'm not sure whether
the labels are correct, and doesn't work for multiple
qubits, and is an awful hack
also fixed the mask of the payload in flatten,
which was lopping off the top 8 bits.
(The TDM instructions are defined in the APS2TDM
generator, not anywhere else)
The "TdmLoadCmp" instruction is actually available to the AWG;
it really refers to the Vram.

There may still be instructions not handled correctly
by the TDM generator, but there are enough to show
the basic process
Try to combine again drivers for APS2 and TDM. The compiler functions are separate. Some instructions (like Invalidate and LoadCmpVRam) work differently for APS2 and TDM. Explicit calls to LoadVRam can only be made on the APS2 for now.
Todo: add crossbar, fix StoreMeas
Diego Ristè added 18 commits June 8, 2018 09:13
Temporary fix for tests. Maybe it makes more sense to change all to EXT, for better distinction with RAM
Previously, Pulse*PulseBlock was different from PulseBlock*Pulse
Including the new LoadCmpVramInstruction for APS2
There should already be a WAIT before compiling to TDM. It shouldn't be necessary to move it after the initial invalidate, set_mask etc., but to be tested
Carry label over to next sequence
create_seq_instructions returns new instructions and label
@coveralls
Copy link

coveralls commented Jun 15, 2018

Coverage Status

Coverage decreased (-2.03%) to 67.963% when pulling b0b1ebb on 142.annotated-measurement into c2f63d4 on master.

Diego Ristè added 3 commits June 18, 2018 14:57
@dieris dieris mentioned this pull request Jul 3, 2018
@dieris
Copy link
Collaborator Author

dieris commented Jul 3, 2018

@dieris dieris merged commit d799908 into master Jul 3, 2018
@dieris dieris deleted the 142.annotated-measurement branch July 24, 2018 14:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants