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

Better Express Timing Dependencies #185

Closed
kalzoo opened this issue Apr 10, 2023 · 0 comments · Fixed by #186
Closed

Better Express Timing Dependencies #185

kalzoo opened this issue Apr 10, 2023 · 0 comments · Fixed by #186

Comments

@kalzoo
Copy link
Contributor

kalzoo commented Apr 10, 2023

Currently, any two instructions with InstructionRole::RFControl are presumed to operate on a frame and thus incur an ExecutionDependency::Frame between them during ScheduledProgram construction. However, that misses the point of this graph.

Each edge should express some condition to be satisfied in the scheduling of the program on a backend. In this case, what Frame means is ambiguous. A PULSE which follows a DELAY should follow it immediately; a SET-FREQUENCY which follows a PULSE can be executed at any time, subject to other constraints in the program. However, today, those two pairs are expressed the same way, with an ExecutionDependency::Frame.

Frame should be replaced with a combination of the existing StableOrdering and a new Timing:

  • Timing between two instructions whose timing within the pulse program is governed by the Quil-T specification. That is, an instruction must start immediately following the end of the latest preceding instruction with which it shares a Timing edge in the graph.
  • StableOrdering for all other cases, such as between a SET-FREQUENCY and PULSE.
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 a pull request may close this issue.

1 participant