cocotb_benches.dau_stride_distributor_tb¶
Positional wide-beat distribution onto narrow stateful lanes.
Attributes¶
Functions¶
|
|
|
|
|
|
|
|
|
|
|
A real shell gives every lane a record writer whose done waits on |
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.