Conditional execution checks#
Before triggering events at a due time point, the TCU evaluates their conditions
and asks ControlElectronics to validate the selected events. All checks finish
before any event starts.
Connections#
Input: all events at the due time point, previously committed
ExecutionFlags, and existing device reservations.Output: a
TriggeredEvents, cancellation records, or a typed fault.Caller: the TCU edge transition, before it removes the due time point from its queues.
Conditions and event validation#
A gate or pulse mapping selects an execution condition. always is
unconditional; the other conditions read the target qubit’s execution flags
before the TCU commits results received on this edge. A false condition
suppresses the event and emits ConditionCancelled.
ControlElectronics::preflight() checks the selected events for resource
conflicts, backend support, acquisition and arm pairing, and a gate
starting on the same target and tick as a measurement sample. The checks
include future intervals introduced by output delays.
The TCU also validates the enqueue request and incoming results before committing any changes. A failure cancels the whole transition; events are not moved to a later cycle.
Objects and state#
Object or member |
Representation |
Role |
|---|---|---|
|
TCU-owned registers |
Per-qubit flags updated by earlier measurement results. |
|
temporary candidate |
Due label and the events whose conditions are true. |
|
device-owned reservations |
Checks same-batch and future interval conflicts. |
Reset and errors#
Conflicting resources or invalid events raise a typed fault and suppress the transition’s output. Conditional acquisition is unsupported.
Reset clears the execution flags and device reservations.
Implementation and tests#
Source: tcu.cpp and device.hpp.
CTest: control.fast, protocol.resources, protocol.sample_collision.
Tests check trigger-time flag selection and same-edge result arrival. Resource conflicts and sampling collisions fail before device state changes.