CIRCT 24.0.0git
Loading...
Searching...
No Matches
Public Member Functions | Static Protected Member Functions | List of all members
tests.integration.test_channel_arbiter.TestChannelArbiterCosim Class Reference

Public Member Functions

None test_mux_correctness (self, AcceleratorConnection conn)
 
None test_mux_correctness_unbalanced (self, AcceleratorConnection conn)
 
None test_mux_correctness_pipelined (self, AcceleratorConnection conn)
 
None test_mux_correctness_wide (self, AcceleratorConnection conn)
 
None test_mux_correctness_scheduled (self, AcceleratorConnection conn)
 
None test_mux_correctness_scheduled_unbalanced (self, AcceleratorConnection conn)
 
None test_list_contiguity (self, AcceleratorConnection conn)
 
None test_list_contiguity_scheduled (self, AcceleratorConnection conn)
 
None test_token_conservation (self, AcceleratorConnection conn)
 
None test_throughput_flat (self, AcceleratorConnection conn)
 
None test_throughput_scheduled (self, AcceleratorConnection conn)
 

Static Protected Member Functions

None _check_contiguity (AcceleratorConnection conn, str dut_name, set[int] expected_src)
 
None _check_throughput (AcceleratorConnection conn, str dut_name)
 

Detailed Description

Definition at line 92 of file test_channel_arbiter.py.

Member Function Documentation

◆ _check_contiguity()

None tests.integration.test_channel_arbiter.TestChannelArbiterCosim._check_contiguity ( AcceleratorConnection  conn,
str  dut_name,
set[int]  expected_src 
)
staticprotected

◆ _check_throughput()

None tests.integration.test_channel_arbiter.TestChannelArbiterCosim._check_throughput ( AcceleratorConnection  conn,
str  dut_name 
)
staticprotected

◆ test_list_contiguity()

None tests.integration.test_channel_arbiter.TestChannelArbiterCosim.test_list_contiguity (   self,
AcceleratorConnection  conn 
)
Contending multi-flit list messages are never interleaved.

Definition at line 130 of file test_channel_arbiter.py.

References tests.integration.test_channel_arbiter.TestChannelArbiterCosim._check_contiguity().

◆ test_list_contiguity_scheduled()

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 134 of file test_channel_arbiter.py.

References tests.integration.test_channel_arbiter.TestChannelArbiterCosim._check_contiguity().

◆ test_mux_correctness()

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 94 of file test_channel_arbiter.py.

References tests.integration.test_channel_arbiter._check_mux().

◆ test_mux_correctness_pipelined()

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 105 of file test_channel_arbiter.py.

References tests.integration.test_channel_arbiter._check_mux().

◆ test_mux_correctness_scheduled()

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 117 of file test_channel_arbiter.py.

References tests.integration.test_channel_arbiter._check_mux().

◆ test_mux_correctness_scheduled_unbalanced()

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 124 of file test_channel_arbiter.py.

References tests.integration.test_channel_arbiter._check_mux().

◆ test_mux_correctness_unbalanced()

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 98 of file test_channel_arbiter.py.

References tests.integration.test_channel_arbiter._check_mux().

◆ test_mux_correctness_wide()

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 111 of file test_channel_arbiter.py.

References tests.integration.test_channel_arbiter._check_mux().

◆ test_throughput_flat()

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 177 of file test_channel_arbiter.py.

References tests.integration.test_channel_arbiter.TestChannelArbiterCosim._check_throughput().

◆ test_throughput_scheduled()

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 181 of file test_channel_arbiter.py.

References tests.integration.test_channel_arbiter.TestChannelArbiterCosim._check_throughput().

◆ test_token_conservation()

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 162 of file test_channel_arbiter.py.


The documentation for this class was generated from the following file: