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
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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
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
fix address
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
Count from 0, not in powers of 2
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Pending APS2 5.0/TDM 2.0 release.
Introducing:
Todo:
Putting it out there looking for comments/suggestions