cocotb_benches.dau_stride_distributor_tb

Positional wide-beat distribution onto narrow stateful lanes.

Attributes

_PAD_ROW_BITS

Functions

_rows_per_beat(dut) → int

_pack_beat(rows, rows_per_beat) → int

_send_rows(dut, rows, *[, trailing_pad_beat]) → None

_run(dut, rows, *[, ready_pattern, trailing_pad_beat])

random_rows_match_static_slot_golden(dut)

ragged_tail_pads_are_dropped_under_per_lane_backpressure(dut)

trailing_all_pad_last_beat_flushes_every_lane(dut)

a_batch_smaller_than_the_lane_count_still_closes_every_lane(dut)

A real shell gives every lane a record writer whose done waits on

load_is_even_by_construction_no_lane_runs_hot(dut)

The stride distributor's reason to exist: routing by SLOT POSITION

Module Contents

cocotb_benches.dau_stride_distributor_tb._PAD_ROW_BITS = 340282366920938463463374607431768211455
cocotb_benches.dau_stride_distributor_tb._rows_per_beat(dut) → int
cocotb_benches.dau_stride_distributor_tb._pack_beat(rows, rows_per_beat: int) → int
async cocotb_benches.dau_stride_distributor_tb._send_rows(dut, rows, *, trailing_pad_beat: bool = False) → None
async cocotb_benches.dau_stride_distributor_tb._run(dut, rows, *, ready_pattern=(1,), trailing_pad_beat: bool = False)
async cocotb_benches.dau_stride_distributor_tb.random_rows_match_static_slot_golden(dut)
async cocotb_benches.dau_stride_distributor_tb.ragged_tail_pads_are_dropped_under_per_lane_backpressure(dut)
async cocotb_benches.dau_stride_distributor_tb.trailing_all_pad_last_beat_flushes_every_lane(dut)
async cocotb_benches.dau_stride_distributor_tb.a_batch_smaller_than_the_lane_count_still_closes_every_lane(dut)

A real shell gives every lane a record writer whose done waits on the batch closing, so lanes that receive ZERO rows must still see the batch end — the single-row batch is the extreme case (one lane gets the row, all the others get nothing).

async cocotb_benches.dau_stride_distributor_tb.load_is_even_by_construction_no_lane_runs_hot(dut)

The stride distributor’s reason to exist: routing by SLOT POSITION rather than by key means no key distribution can make one lane hot. The key-mask dispatcher loses ~20% to exactly that (same-lane key runs); here an adversarial all-equal-key stream still spreads evenly.