wait 2 in compiler-written bundles means that for this and the next cycle there aren't gates to start execution of; any gates started in earlier cycles and with a duration past the current and next cycle execute in parallel to this and the next cycle; it instructs the backend to generate instructions to the controller to not fetch/issue gates for 2 cycles
wait 2 in the OpenQL API and in cqasm means that a barrier is inserted for all qubits, i.e. wait for the completion of the execution of all gates executing in all qubits, then wait 2 additional cycles,
and then allow subsequent gates to start execution; it instructs the scheduler to schedule subsequent gates as described
It is the objective to be able to read (as cqasm) any sequence of gates written as bundles, and without further optimization write those as bundles again, scheduled identically, i.e. the input cqasm is the same language as the output cqasm.
It is proposed:
to replace the wait n in OpenQL compiler-written bundles by a new directive: skip n, with n an integer with value 1 or more
to extend cqasm with skip n; it is semantically meaningless; only when it is desired to recreate the schedule (make the gates' cycle attribute valid), it means that the cycle attribute of the gates in the next bundle will be n+1 higher than the cycle attribute of the gates of the last bundle; a first version of the cqasm reader need not do that so it must be updated to ignore a line with a skip n
libqasm must be updated to accept skip and represent it in its AST
since the OpenQL API doesn't support setting the cycle attribute, it need not be extended to support skip n
this means updating libqasm, the cqasm reader and the OpenQL bundle writer
wait 2 in compiler-written bundles means that for this and the next cycle there aren't gates to start execution of; any gates started in earlier cycles and with a duration past the current and next cycle execute in parallel to this and the next cycle; it instructs the backend to generate instructions to the controller to not fetch/issue gates for 2 cycles
wait 2 in the OpenQL API and in cqasm means that a barrier is inserted for all qubits, i.e. wait for the completion of the execution of all gates executing in all qubits, then wait 2 additional cycles, and then allow subsequent gates to start execution; it instructs the scheduler to schedule subsequent gates as described
It is the objective to be able to read (as cqasm) any sequence of gates written as bundles, and without further optimization write those as bundles again, scheduled identically, i.e. the input cqasm is the same language as the output cqasm.
It is proposed: