pub enum NodeProvenance {
BlockComponent {
members: Vec<SourceBlockRef>,
},
TemporalPipe {
pipe: TemporalPipeRef,
},
SpatialPortSubstitution {
source: IVec3,
role: PortRole,
},
MemoryPadding {
pipe: TemporalPipeRef,
rounds: u32,
},
Generator {
ordinal: u32,
},
Action {
ordinal: u32,
},
BranchSelector {
name: String,
},
OutputFrame {
port: IVec3,
basis: Basis,
},
None,
}Expand description
What source-level construct an IR node realizes.
Variants§
BlockComponent
A quantum node realizing one connected component of source blocks (its
members), fused because they share physical qubits on a layer.
Fields
members: Vec<SourceBlockRef>Source blocks in the component.
TemporalPipe
A quantum node realizing one temporal pipe: the seam layer between two block layers. Normally a temporal pipe will not compile to real quantum circuits, the currently only use case if for temporal hadamard pipe which includes a realignment layer.
Fields
pipe: TemporalPipeRefRealized temporal pipe.
SpatialPortSubstitution
Compiler-only replacement of a source spatial Port. The virtual
temporal-Port node has no lattice cell of its own; role places it just
before or after source on the doubled-z schedule.
MemoryPadding
Memory-round padding inserted at a Quantum seam or region terminal
post-compile (crate::Bloq::insert_memory_rounds). Like
Self::TemporalPipe it lives on the pipe’s layer, but it carries the
wait duration so consumers can find padding nodes and read
their round count without inspecting the template’s repeat structure.
Generator
A classical node realizing stabilizer generator ordinal’s readout
recipe: its complete Observable, any shared fragments, and the
corrected-value Computes derived from them.
Action
A classical node lowered from the source action at ordinal (program
action order): a named readout’s complete Observable, a
condition/selector Compute, or a Discard sink.
BranchSelector
A source branch’s resolved selector, shared by every assembly stage.
OutputFrame
A frame-sign Compute: the basis-frame correction bit for source
output port port. The stamp is the frame
table: crate::Bloq::output_frames derives its crate::FramePairs from
these stamps, so there is no side table to drift. Validation enforces
that a stamp sits on a top-level Compute and that each output carries
exactly one X and one Z stamp.
None
No provenance: hand-built or synthetic (e.g. a constant producer).
Trait Implementations§
Source§impl Clone for NodeProvenance
impl Clone for NodeProvenance
Source§fn clone(&self) -> NodeProvenance
fn clone(&self) -> NodeProvenance
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for NodeProvenance
impl Debug for NodeProvenance
Source§impl<'de> Deserialize<'de> for NodeProvenance
impl<'de> Deserialize<'de> for NodeProvenance
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl Display for NodeProvenance
Human-readable one-line description, e.g. blocks (0,0,0) (1,0,0) or
pipe (0,0,0)>(0,0,1). Coordinate/pipe spelling matches the .bloq text
format so the two read alike; consumers are the program view and the Stim
backend’s per-node provenance comments.
impl Display for NodeProvenance
Human-readable one-line description, e.g. blocks (0,0,0) (1,0,0) or
pipe (0,0,0)>(0,0,1). Coordinate/pipe spelling matches the .bloq text
format so the two read alike; consumers are the program view and the Stim
backend’s per-node provenance comments.