test_registers_and_capabilities

Functions

test_register_contract_uses_dau_magic_and_aligned_offsets()

test_handle_table_aperture_is_word_aligned_and_shares_no_address()

The handle aperture the composed scan shell decodes. Its offsets are

test_handle_table_aperture_matches_the_generator_that_emits_it()

The register contract lives here, but the ADDRESSES are decoded by

test_register_block_snapshot_reads_identity_status_and_counters_as_u32_words()

test_register_block_snapshot_models_reset_write_side_effects_only()

test_stream_job_register_contract_names_host_trigger_status_and_result_addresses()

test_packaged_identity_register_hdl_exposes_reset_write_pulse_ports()

test_packaged_identity_register_hdl_advertises_the_current_register_map()

The SV default and decode stay pinned to the Python contract: the

test_device_capabilities_report_supported_operations_and_dma_constraints()

test_device_capabilities_keep_host_computed_operators_apart_from_hardware()

AVERAGE is a protocol-level host divide over SUM/COUNT results — it

test_the_addresses_of_the_deleted_registers_are_unmapped() → None

0x0010 and 0x0024 carried SHELL_VERSION and DMA_CONSTRAINTS, which no

test_each_word_group_arrives_no_later_than_the_current_map() → None

The gates a reader checks a resident shell against: capability words

Module Contents

test_registers_and_capabilities.test_register_contract_uses_dau_magic_and_aligned_offsets()
test_registers_and_capabilities.test_handle_table_aperture_is_word_aligned_and_shares_no_address()

The handle aperture the composed scan shell decodes. Its offsets are the generator’s, and they sit in free window space: above the capability block, below the lane block, overlapping nothing the base register map defines. An aperture laid over the static pipeline block would decode correctly (a shell is one personality or the other) but would leave every address in it meaning two things, which is a thing to remember rather than a property to rely on.

test_registers_and_capabilities.test_handle_table_aperture_matches_the_generator_that_emits_it()

The register contract lives here, but the ADDRESSES are decoded by what dau-build emits: a disagreement is not a crash, it is a host writing a length into a generation. Pin them against the generator’s layout.

Imported outright rather than skipped around: a guard that skips when the other side of the contract is missing reports the same green as one that checked, which is how this ran for exactly nobody while the aperture was being placed. The develop extra installs the dau-build this is written against, so a missing generator is a broken environment, not a reason to pass.

test_registers_and_capabilities.test_register_block_snapshot_reads_identity_status_and_counters_as_u32_words()
test_registers_and_capabilities.test_register_block_snapshot_models_reset_write_side_effects_only()
test_registers_and_capabilities.test_stream_job_register_contract_names_host_trigger_status_and_result_addresses()
test_registers_and_capabilities.test_packaged_identity_register_hdl_exposes_reset_write_pulse_ports()
test_registers_and_capabilities.test_packaged_identity_register_hdl_advertises_the_current_register_map()

The SV default and decode stay pinned to the Python contract: the 0.2 bump adds the composed-capability words at 0x00c0..0x00c8.

test_registers_and_capabilities.test_device_capabilities_report_supported_operations_and_dma_constraints()
test_registers_and_capabilities.test_device_capabilities_keep_host_computed_operators_apart_from_hardware()

AVERAGE is a protocol-level host divide over SUM/COUNT results — it is advertised in host_operators, never as a hardware operator.

test_registers_and_capabilities.test_the_addresses_of_the_deleted_registers_are_unmapped() → None

0x0010 and 0x0024 carried SHELL_VERSION and DMA_CONSTRAINTS, which no generator ever stamped, so every host read returned zero. A register nothing writes is not a capability. They are gone from the offsets, and the identity block falls through to all-ones there – which the driver already reads as ‘not advertised’ rather than as a value.

test_registers_and_capabilities.test_each_word_group_arrives_no_later_than_the_current_map() → None

The gates a reader checks a resident shell against: capability words before job capacity, and neither newer than the map this package writes.