bloqade.lanes.analysis.placement.strategy.PalindromePlacementStrategy
classPalindromePlacementStrategy¶source
bloqade.lanes.analysis.placement.strategy.PalindromePlacementStrategy
Bases: MoveToPlacementStrategyABC
Wraps any PlacementStrategyABC to emit ExecuteCZReturn for every CZ.
Signature
class PalindromePlacementStrategy(*, inner: PlacementStrategyABC, lookahead: int = 1)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 | Default | Description |
|---|---|---|---|
inner | PlacementStrategyABC | required | |
lookahead | int | 1 |
Attributes
| Name | Type | Default | Description |
|---|---|---|---|
inner | — | inner | |
lookahead | — | lookahead |
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
methodcompute_moves¶source
bloqade.lanes.analysis.placement.strategy.PalindromePlacementStrategy.compute_moves
Signature
def compute_moves(state_before: ConcreteState, state_after: ConcreteState) -> tuple[tuple[LaneAddress, ...], ...]Parameters
| Name | Type | Description |
|---|---|---|
state_before | ConcreteState | |
state_after | ConcreteState |
Returns
tuple[tuple[LaneAddress, ...], ...]
methodmove_to_placements¶source
bloqade.lanes.analysis.placement.strategy.PalindromePlacementStrategy.move_to_placements
Signature
def move_to_placements(state: AtomState, qubits: tuple[int, ...], locations: tuple[LocationAddress, ...]) -> AtomStateParameters
| Name | Type | Description |
|---|---|---|
state | AtomState | |
qubits | tuple[int, ...] | |
locations | tuple[LocationAddress, ...] |
Returns
AtomState
methodpermute_placements¶source
bloqade.lanes.analysis.placement.strategy.PalindromePlacementStrategy.permute_placements
Signature
def permute_placements(state: AtomState, qubits: tuple[int, ...], permutation: tuple[int, ...], insert_moves: bool = False) -> AtomStateParameters
| Name | Type | Default | Description |
|---|---|---|---|
state | AtomState | required | |
qubits | tuple[int, ...] | required | |
permutation | tuple[int, ...] | required | |
insert_moves | bool | False |
Returns
AtomState