bloqade.lanes.arch.build.imperative.ArchBuilder
classArchBuilder¶source
bloqade.lanes.arch.build.imperative.ArchBuilder
Compose ``ZoneBuilder``s into a complete ``ArchSpec``.
class ArchBuilderEach zone added gets assigned global word IDs. Inter-zone connections
go into zone_buses. Calls Rust validation on build().
methodadd_zone¶source
bloqade.lanes.arch.build.imperative.ArchBuilder.add_zone
def add_zone(zone: ZoneBuilder) -> intAdd a zone. Returns zone_id. Assigns global word IDs.
Validates that sites_per_word matches across all zones.
Parameters
| Name | Type | Description |
|---|---|---|
zone | ZoneBuilder |
Returns
int
methodconnect¶source
bloqade.lanes.arch.build.imperative.ArchBuilder.connect
Signature
def connect(src: tuple[str, Sequence[int]], dst: tuple[str, Sequence[int]]) -> NoneAdd an inter-zone bus (zone_buses).
Validates AOD Cartesian product across the two zone grids.
Parameters
| Name | Type | Description |
|---|---|---|
src | tuple[str, Sequence[int]] | ``(zone_name, zone_local_word_indices)`` — typically from ``zone[...]`` (indexing the zone itself, which returns a name-qualified tuple). |
dst | tuple[str, Sequence[int]] | ``(zone_name, zone_local_word_indices)`` — same format. |
methodadd_mode¶source
bloqade.lanes.arch.build.imperative.ArchBuilder.add_mode
def add_mode(name: str, zones: Sequence[str]) -> NoneAdd an operational mode.
Parameters
| Name | Type | Description |
|---|---|---|
name | str | Mode name (e.g. "all", "gate", "measure"). |
zones | Sequence[str] | Zone names to include in this mode. |
methodset_blockade_radius¶source
bloqade.lanes.arch.build.imperative.ArchBuilder.set_blockade_radius
def set_blockade_radius(radius: float) -> NoneApply 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
| Name | Type | Description |
|---|---|---|
radius | float | Rydberg blockade radius in micrometers. |
Raises
| Type | Description |
|---|---|
ValueError | if ``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. |
propertyblockade_radius¶source
bloqade.lanes.arch.build.imperative.ArchBuilder.blockade_radius
methodbuild¶source
bloqade.lanes.arch.build.imperative.ArchBuilder.build
Signature
def build(feed_forward: bool = False, atom_reloading: bool = False, blockade_radius: float | None = None) -> ArchSpecAssemble the ArchSpec and validate via Rust.
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
feed_forward | bool | False | Whether the device supports feed-forward. |
atom_reloading | bool | False | Whether the device supports atom reloading. |
blockade_radius | float | None | None | Explicit blockade radius (µm). If provided, overrides both builder-level and zone-level radii. |
Returns
ArchSpec
Raises
| Type | Description |
|---|---|
ValueError | If Rust validation fails. |