bloqade.lanes.analysis.placement.strategy.PalindromePlacementStrategy
classPalindromePlacementStrategy¶source
bloqade.lanes.analysis.placement.strategy.PalindromePlacementStrategy
Bases: PlacementStrategyABC
Wraps any PlacementStrategyABC to emit ExecuteCZReturn for every CZ.
class PalindromePlacementStrategy(*, inner: PlacementStrategyABC)On cz_placements: unwraps ExecuteCZReturn input to the home
ConcreteState (via initial_layout), delegates to inner, then
wraps the resulting ExecuteCZ in ExecuteCZReturn.
On sq_placements and measure_placements: unwraps
ExecuteCZReturn to the home ConcreteState before delegating, so
the inner strategy always sees a plain ConcreteState.
This replaces the insert_return_moves flag: choosing this strategy
enables palindrome moves; using the bare inner strategy disables them.
Parameters
| Name | Type | Description |
|---|---|---|
inner | PlacementStrategyABC |
Attributes
| Name | Type | Default | Description |
|---|---|---|---|
inner | — | inner |
propertyarch_spec¶source
bloqade.lanes.analysis.placement.strategy.PalindromePlacementStrategy.arch_spec
arch_spec: ArchSpecmethodvalidate_initial_layout¶source
bloqade.lanes.analysis.placement.strategy.PalindromePlacementStrategy.validate_initial_layout
Signature
def validate_initial_layout(initial_layout: tuple[LocationAddress, ...]) -> NoneParameters
| Name | Type | Description |
|---|---|---|
initial_layout | tuple[LocationAddress, ...] |
methodcz_placements¶source
bloqade.lanes.analysis.placement.strategy.PalindromePlacementStrategy.cz_placements
Signature
def cz_placements(state: AtomState, controls: tuple[int, ...], targets: tuple[int, ...], lookahead_cz_layers: tuple[tuple[tuple[int, ...], tuple[int, ...]], ...] = ()) -> AtomStateParameters
| Name | Type | Default | Description |
|---|---|---|---|
state | AtomState | required | |
controls | tuple[int, ...] | required | |
targets | tuple[int, ...] | required | |
lookahead_cz_layers | tuple[tuple[tuple[int, ...], tuple[int, ...]], ...] | () |
Returns
AtomState
methodsq_placements¶source
bloqade.lanes.analysis.placement.strategy.PalindromePlacementStrategy.sq_placements
Signature
def sq_placements(state: AtomState, qubits: tuple[int, ...]) -> AtomStateParameters
| Name | Type | Description |
|---|---|---|
state | AtomState | |
qubits | tuple[int, ...] |
Returns
AtomState
methodmeasure_placements¶source
bloqade.lanes.analysis.placement.strategy.PalindromePlacementStrategy.measure_placements
Signature
def measure_placements(state: AtomState, qubits: tuple[int, ...]) -> AtomStateParameters
| Name | Type | Description |
|---|---|---|
state | AtomState | |
qubits | tuple[int, ...] |
Returns
AtomState