Skip to content

bloqade.lanes.arch.build.imperative.ArchBuilder

← Module overview

classArchBuildersource

bloqade.lanes.arch.build.imperative.ArchBuilder

Compose ``ZoneBuilder``s into a complete ``ArchSpec``.

class ArchBuilder

All zones share ONE word template: word_id is zone-local (0..Nw-1) and reused identically by every zone, disambiguated by zone_id (the LocationAddress convention). Inter-zone connections go into zone_buses. Calls Rust validation on build().

methodadd_zonesource

bloqade.lanes.arch.build.imperative.ArchBuilder.add_zone

def add_zone(zone: ZoneBuilder) -> int

Add a zone. Returns zone_id.

Validates that sites_per_word matches across all zones. The word template itself is validated for cross-zone identity at build time.

Parameters

NameTypeDescription
zoneZoneBuilder

Returns

int

source

methodconnectsource

bloqade.lanes.arch.build.imperative.ArchBuilder.connect

Signature
def connect(src: tuple[str, Sequence[int]], dst: tuple[str, Sequence[int]]) -> None

Add an inter-zone bus (zone_buses).

Validates AOD Cartesian product across the two zone grids.

Parameters

NameTypeDescription
srctuple[str, Sequence[int]]``(zone_name, zone_local_word_indices)`` — typically from ``zone[...]`` (indexing the zone itself, which returns a name-qualified tuple).
dsttuple[str, Sequence[int]]``(zone_name, zone_local_word_indices)`` — same format.
source

methodadd_modesource

bloqade.lanes.arch.build.imperative.ArchBuilder.add_mode

def add_mode(name: str, zones: Sequence[str]) -> None

Add an operational mode.

Parameters

NameTypeDescription
namestrMode name (e.g. "all", "gate", "measure").
zonesSequence[str]Zone names to include in this mode.
source

methodset_blockade_radiussource

bloqade.lanes.arch.build.imperative.ArchBuilder.set_blockade_radius

def set_blockade_radius(radius: float) -> None

Apply radius to every zone by calling ZoneBuilder.set_blockade_radius on each.

Overwrites every zone’s entangling pairs with the scan result. The radius is stored on the builder and flows to ArchSpec.blockade_radius at build time.

The radius is validated up-front (positive, finite, nm-precise) before any zone is touched, and the scan is run two-phase: every zone is scanned before any pair list is overwritten, so a layout error in a later zone cannot leave earlier zones in a partially-updated state.

Parameters

NameTypeDescription
radiusfloatRydberg blockade radius in micrometers.

Raises

TypeDescription
ValueErrorif ``radius`` itself is invalid (non-positive, non-finite, sub-nm), or if any zone's layout is inconsistent with the radius. The error message includes the zone name and offending word IDs.
source

propertyblockade_radiussource

bloqade.lanes.arch.build.imperative.ArchBuilder.blockade_radius

blockade_radius: float | None

Rydberg blockade radius (µm) applied to all zones, or None.

source

methodbuildsource

bloqade.lanes.arch.build.imperative.ArchBuilder.build

Signature
def build(feed_forward: bool = False, atom_reloading: bool = False, blockade_radius: float | None = None) -> ArchSpec

Assemble the ArchSpec and validate via Rust.

Parameters

NameTypeDefaultDescription
feed_forwardboolFalseWhether the device supports feed-forward.
atom_reloadingboolFalseWhether the device supports atom reloading.
blockade_radiusfloat | NoneNoneExplicit blockade radius (µm). If provided, overrides both builder-level and zone-level radii.

Returns

ArchSpec

Raises

TypeDescription
ValueErrorIf Rust validation fails.
source