cocotb_benches.dau_row_unpack_tb

Attributes

_MASK32

_INT32_MIN

_INT32_MAX

_BYTE_SPECS

_Q6_SPECS

_Q1_SPECS

_Q6_ROWS

Functions

byte_lane_unpack_matches_golden(dut)

sustained_ingest_meets_registry_floor(dut)

sign_versus_zero_extend(dut)

fields_crossing_bit_boundaries(dut)

boundary_widths_one_and_thirtytwo(dut)

width32_unsigned_reads_back_signed(dut)

q6_like_packing(dut)

q1_like_packing(dut)

single_row_batch(dut)

output_backpressure_holds_stable(dut)

repeated_batches_back_to_back(dut)

bad_config_zero_width_drains_then_config_error(dut)

bad_config_width_over_32_reports_config_error(dut)

bad_config_offset_plus_width_over_64_reports_config_error(dut)

error_status_survives_backpressure(dut)

error_close_out_waits_for_backpressured_tail(dut)

idle_after_reset_is_quiescent(dut)

constrained_random_batches_match_golden(dut)

bypass_passes_quad_rows_through_byte_identical(dut)

bypass_is_zero_added_latency(dut)

bypass_mode_is_batch_latched(dut)

bypass_backpressure_holds_stable(dut)

mode_switches_between_batches_on_one_dut(dut)

bypass_waits_for_backpressured_unpack_tail(dut)

bypass_torn_row_reports_stream_error(dut)

bypass_torn_row_reports_error_under_backpressure(dut)

_signed32(value) → int

_int_in_width(width) → int

_pack(specs, fields) → int

_expand(word, specs) → list[int]

The two output words the tile emits for one packed word.

_quad_words(row) → list[int]

A 16-byte quad row as its two 64-bit stream words (w0 = {value, key},

_bypass_words(rows) → list[int]

The bypass-mode input stream for a batch of quad rows: two words each.

_run_bypass(dut, words, *[, ready_pattern]) → list[int]

Drive a bypass batch (cfg_bypass must already be 1) and collect the

_drive_config(dut, specs) → None

_drive_raw_config(dut, descriptors) → None

_random_specs(rng)

_random_field(rng, spec) → int

_start(dut) → None

_run(dut, words, specs, *[, ready_pattern])

_send_words(dut, words) → None

_send_bypass_flip(dut, words) → None

_send_unpack_then_bypass(dut, a_word, b_words) → None

_send_a_then_bad_b(dut, a_word) → None

_collect_output(dut, ready_pattern, *, expect_words) → list[int]

_assert_quiescent(dut) → None

Nothing may appear on the output or status streams even with ready held

_expect_status(dut, *, error[, code]) → None

Module Contents

cocotb_benches.dau_row_unpack_tb._MASK32 = 4294967295
cocotb_benches.dau_row_unpack_tb._INT32_MIN = -2147483648
cocotb_benches.dau_row_unpack_tb._INT32_MAX = 2147483647
cocotb_benches.dau_row_unpack_tb._BYTE_SPECS
cocotb_benches.dau_row_unpack_tb._Q6_SPECS
cocotb_benches.dau_row_unpack_tb._Q1_SPECS
cocotb_benches.dau_row_unpack_tb._Q6_ROWS
async cocotb_benches.dau_row_unpack_tb.byte_lane_unpack_matches_golden(dut)
async cocotb_benches.dau_row_unpack_tb.sustained_ingest_meets_registry_floor(dut)
async cocotb_benches.dau_row_unpack_tb.sign_versus_zero_extend(dut)
async cocotb_benches.dau_row_unpack_tb.fields_crossing_bit_boundaries(dut)
async cocotb_benches.dau_row_unpack_tb.boundary_widths_one_and_thirtytwo(dut)
async cocotb_benches.dau_row_unpack_tb.width32_unsigned_reads_back_signed(dut)
async cocotb_benches.dau_row_unpack_tb.q6_like_packing(dut)
async cocotb_benches.dau_row_unpack_tb.q1_like_packing(dut)
async cocotb_benches.dau_row_unpack_tb.single_row_batch(dut)
async cocotb_benches.dau_row_unpack_tb.output_backpressure_holds_stable(dut)
async cocotb_benches.dau_row_unpack_tb.repeated_batches_back_to_back(dut)
async cocotb_benches.dau_row_unpack_tb.bad_config_zero_width_drains_then_config_error(dut)
async cocotb_benches.dau_row_unpack_tb.bad_config_width_over_32_reports_config_error(dut)
async cocotb_benches.dau_row_unpack_tb.bad_config_offset_plus_width_over_64_reports_config_error(dut)
async cocotb_benches.dau_row_unpack_tb.error_status_survives_backpressure(dut)
async cocotb_benches.dau_row_unpack_tb.error_close_out_waits_for_backpressured_tail(dut)
async cocotb_benches.dau_row_unpack_tb.idle_after_reset_is_quiescent(dut)
async cocotb_benches.dau_row_unpack_tb.constrained_random_batches_match_golden(dut)
async cocotb_benches.dau_row_unpack_tb.bypass_passes_quad_rows_through_byte_identical(dut)
async cocotb_benches.dau_row_unpack_tb.bypass_is_zero_added_latency(dut)
async cocotb_benches.dau_row_unpack_tb.bypass_mode_is_batch_latched(dut)
async cocotb_benches.dau_row_unpack_tb.bypass_backpressure_holds_stable(dut)
async cocotb_benches.dau_row_unpack_tb.mode_switches_between_batches_on_one_dut(dut)
async cocotb_benches.dau_row_unpack_tb.bypass_waits_for_backpressured_unpack_tail(dut)
async cocotb_benches.dau_row_unpack_tb.bypass_torn_row_reports_stream_error(dut)
async cocotb_benches.dau_row_unpack_tb.bypass_torn_row_reports_error_under_backpressure(dut)
cocotb_benches.dau_row_unpack_tb._signed32(value: int) → int
cocotb_benches.dau_row_unpack_tb._int_in_width(width: int) → int
cocotb_benches.dau_row_unpack_tb._pack(specs, fields) → int
cocotb_benches.dau_row_unpack_tb._expand(word: int, specs) → list[int]

The two output words the tile emits for one packed word.

cocotb_benches.dau_row_unpack_tb._quad_words(row) → list[int]

A 16-byte quad row as its two 64-bit stream words (w0 = {value, key}, w1 = {aux1, aux0}) — the bypass-mode input framing (two words per row).

cocotb_benches.dau_row_unpack_tb._bypass_words(rows) → list[int]

The bypass-mode input stream for a batch of quad rows: two words each.

async cocotb_benches.dau_row_unpack_tb._run_bypass(dut, words, *, ready_pattern=(1,)) → list[int]

Drive a bypass batch (cfg_bypass must already be 1) and collect the forwarded stream. Bypass is 1:1 word-for-word (no widening), so the output is exactly len(words) words; _send_words/_collect_output already assert hold-stability, last placement, and silent-success quiescence.

cocotb_benches.dau_row_unpack_tb._drive_config(dut, specs) → None
cocotb_benches.dau_row_unpack_tb._drive_raw_config(dut, descriptors) → None
cocotb_benches.dau_row_unpack_tb._random_specs(rng)
cocotb_benches.dau_row_unpack_tb._random_field(rng, spec: dau_core.operators.UnpackFieldSpec) → int
async cocotb_benches.dau_row_unpack_tb._start(dut) → None
async cocotb_benches.dau_row_unpack_tb._run(dut, words, specs, *, ready_pattern=(1,))
async cocotb_benches.dau_row_unpack_tb._send_words(dut, words) → None
async cocotb_benches.dau_row_unpack_tb._send_bypass_flip(dut, words) → None
async cocotb_benches.dau_row_unpack_tb._send_unpack_then_bypass(dut, a_word, b_words) → None
async cocotb_benches.dau_row_unpack_tb._send_a_then_bad_b(dut, a_word) → None
async cocotb_benches.dau_row_unpack_tb._collect_output(dut, ready_pattern, *, expect_words: int) → list[int]
async cocotb_benches.dau_row_unpack_tb._assert_quiescent(dut) → None

Nothing may appear on the output or status streams even with ready held high (silent-success contract).

async cocotb_benches.dau_row_unpack_tb._expect_status(dut, *, error: bool, code: int = 0) → None