|
CIRCT 24.0.0git
|
Static Protected Member Functions | |
| None | _check_contiguity (AcceleratorConnection conn, str dut_name, set[int] expected_src) |
| None | _check_throughput (AcceleratorConnection conn, str dut_name) |
Definition at line 94 of file test_channel_arbiter.py.
|
staticprotected |
Definition at line 172 of file test_channel_arbiter.py.
Referenced by tests.integration.test_channel_arbiter.TestChannelArbiterCosim.test_list_contiguity(), tests.integration.test_channel_arbiter.TestChannelArbiterCosim.test_list_contiguity_scheduled(), tests.integration.test_channel_arbiter.TestChannelArbiterCosim.test_list_contiguity_wide_fanin(), and tests.integration.test_channel_arbiter.TestChannelArbiterCosim.test_list_contiguity_wide_fanin_scheduled().
|
staticprotected |
Definition at line 226 of file test_channel_arbiter.py.
Referenced by tests.integration.test_channel_arbiter.TestChannelArbiterCosim.test_throughput_flat(), and tests.integration.test_channel_arbiter.TestChannelArbiterCosim.test_throughput_scheduled().
| None tests.integration.test_channel_arbiter.TestChannelArbiterCosim.test_list_contiguity | ( | self, | |
| AcceleratorConnection | conn | ||
| ) |
Contending multi-flit list messages are never interleaved.
Definition at line 152 of file test_channel_arbiter.py.
References tests.integration.test_channel_arbiter.TestChannelArbiterCosim._check_contiguity().
| None tests.integration.test_channel_arbiter.TestChannelArbiterCosim.test_list_contiguity_scheduled | ( | self, | |
| AcceleratorConnection | conn | ||
| ) |
Message atomicity under the decoupled grant-queue scheduler, with more contending producers than the grant queue is deep.
Definition at line 156 of file test_channel_arbiter.py.
References tests.integration.test_channel_arbiter.TestChannelArbiterCosim._check_contiguity().
| None tests.integration.test_channel_arbiter.TestChannelArbiterCosim.test_list_contiguity_wide_fanin | ( | self, | |
| AcceleratorConnection | conn | ||
| ) |
Contiguity with `wide_fanin` forced on.
Definition at line 161 of file test_channel_arbiter.py.
References tests.integration.test_channel_arbiter.TestChannelArbiterCosim._check_contiguity().
| None tests.integration.test_channel_arbiter.TestChannelArbiterCosim.test_list_contiguity_wide_fanin_scheduled | ( | self, | |
| AcceleratorConnection | conn | ||
| ) |
As above, under the grant-queue scheduler.
Definition at line 166 of file test_channel_arbiter.py.
References tests.integration.test_channel_arbiter.TestChannelArbiterCosim._check_contiguity().
| None tests.integration.test_channel_arbiter.TestChannelArbiterCosim.test_mux_correctness | ( | self, | |
| AcceleratorConnection | conn | ||
| ) |
Balanced (power-of-two) input count: every value appears once.
Definition at line 96 of file test_channel_arbiter.py.
References tests.integration.test_channel_arbiter._check_mux().
| None tests.integration.test_channel_arbiter.TestChannelArbiterCosim.test_mux_correctness_pipelined | ( | self, | |
| AcceleratorConnection | conn | ||
| ) |
Pipelined selection mux tree: the multi-cycle mux latency (absorbed by a deeper output FIFO + credit counter) must still deliver every value exactly once.
Definition at line 107 of file test_channel_arbiter.py.
References tests.integration.test_channel_arbiter._check_mux().
| None tests.integration.test_channel_arbiter.TestChannelArbiterCosim.test_mux_correctness_scheduled | ( | self, | |
| AcceleratorConnection | conn | ||
| ) |
Decoupled grant-queue scheduler at wide fan-in: grants are chosen ahead of time and buffered, so this exercises the queue, the sweep reload and the stale-entry skip. Delivery must still be exactly-once and every input served.
Definition at line 119 of file test_channel_arbiter.py.
References tests.integration.test_channel_arbiter._check_mux().
| None tests.integration.test_channel_arbiter.TestChannelArbiterCosim.test_mux_correctness_scheduled_unbalanced | ( | self, | |
| AcceleratorConnection | conn | ||
| ) |
The scheduler with a non-power-of-two input count: the one-hot->index encode and the sweep must not produce an out-of-range grant.
Definition at line 126 of file test_channel_arbiter.py.
References tests.integration.test_channel_arbiter._check_mux().
| None tests.integration.test_channel_arbiter.TestChannelArbiterCosim.test_mux_correctness_unbalanced | ( | self, | |
| AcceleratorConnection | conn | ||
| ) |
Unbalanced (non-power-of-two) input count: the array-indexed mux over N < 2**clog2(N) elements and the round-robin wrap still deliver every value exactly once.
Definition at line 100 of file test_channel_arbiter.py.
References tests.integration.test_channel_arbiter._check_mux().
| None tests.integration.test_channel_arbiter.TestChannelArbiterCosim.test_mux_correctness_wide | ( | self, | |
| AcceleratorConnection | conn | ||
| ) |
Wide fan-in: the BSP instantiates arbiters with ~31 inputs, a regime the small counts above never reach. Every value must still be delivered exactly once and every input served.
Definition at line 113 of file test_channel_arbiter.py.
References tests.integration.test_channel_arbiter._check_mux().
| None tests.integration.test_channel_arbiter.TestChannelArbiterCosim.test_mux_correctness_wide_fanin | ( | self, | |
| AcceleratorConnection | conn | ||
| ) |
`wide_fanin` structures, with a throttled output so credits run out.
Definition at line 132 of file test_channel_arbiter.py.
References tests.integration.test_channel_arbiter._check_mux().
| None tests.integration.test_channel_arbiter.TestChannelArbiterCosim.test_mux_correctness_wide_fanin_forced_off | ( | self, | |
| AcceleratorConnection | conn | ||
| ) |
`wide_fanin=False` above the threshold.
Definition at line 147 of file test_channel_arbiter.py.
References tests.integration.test_channel_arbiter._check_mux().
| None tests.integration.test_channel_arbiter.TestChannelArbiterCosim.test_mux_correctness_wide_fanin_forced_on | ( | self, | |
| AcceleratorConnection | conn | ||
| ) |
`wide_fanin=True` below the threshold.
Definition at line 142 of file test_channel_arbiter.py.
References tests.integration.test_channel_arbiter._check_mux().
| None tests.integration.test_channel_arbiter.TestChannelArbiterCosim.test_mux_correctness_wide_fanin_scheduled | ( | self, | |
| AcceleratorConnection | conn | ||
| ) |
As above, under the grant-queue scheduler.
Definition at line 137 of file test_channel_arbiter.py.
References tests.integration.test_channel_arbiter._check_mux().
| None tests.integration.test_channel_arbiter.TestChannelArbiterCosim.test_throughput_flat | ( | self, | |
| AcceleratorConnection | conn | ||
| ) |
The flat round-robin arbiter sustains ~one beat per cycle.
Definition at line 209 of file test_channel_arbiter.py.
References tests.integration.test_channel_arbiter.TestChannelArbiterCosim._check_throughput().
| None tests.integration.test_channel_arbiter.TestChannelArbiterCosim.test_throughput_scheduled | ( | self, | |
| AcceleratorConnection | conn | ||
| ) |
The decoupled grant-queue scheduler must sustain ~one beat per cycle too. Regression test: reloading the sweep snapshot a cycle after it drains (rather than on the cycle the last entry is queued) costs one idle cycle per sweep, which caps throughput at `n/(n+1)` -- 0.8 here. Correctness tests do not notice that, only this one does. The producers emit **single-flit** messages deliberately: with multi-flit lists the datapath keeps streaming while the sweep refills, which hides the bubble entirely (measured: no loss at list length >= 2).
Definition at line 213 of file test_channel_arbiter.py.
References tests.integration.test_channel_arbiter.TestChannelArbiterCosim._check_throughput().
| None tests.integration.test_channel_arbiter.TestChannelArbiterCosim.test_token_conservation | ( | self, | |
| AcceleratorConnection | conn | ||
| ) |
Zero-width (`i0`) token payloads: the credit-counter-as-buffer path delivers every token exactly once (no loss/duplication/reorder) and serves every producer -- the total is only reachable if no producer is starved.
Definition at line 194 of file test_channel_arbiter.py.