clash-lang / clash-lang/clash-protocols

`roundrobinCollect Parallel` is not a round-robin arbiter, but a priority arbiter.

Open
#129 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
Haskell
Stars
25
Forks
12
PR merge metrics
No merged PRs in 30d

Description

Looking at: https://github.com/clash-lang/clash-protocols/blob/ec001d4a3d553ed92d0bee125cb9c86e9e47ba99/clash-protocols/src/Protocols/Df.hs#L857-L870

it doesn't actually have the roundrobin properties that I would expect from an roundrobin arbiter: that regardless of the conditions, all inputs will get a chance to propagate. Instead, it's a priority arbiter which, from left-to-right, gives right the highest priority. I think the functions should be renamed to `arbiter` and highlight how the different scheduling "collect" strategies affect the arbitration.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start in clash-protocols/src/Protocols/Df.hs at lines 857-870 and inspect the related roundrobinCollect functions and their references. Rename the functions to reflect priority arbitration, document how the different scheduling "collect" strategies affect arbitration, and verify that the project still builds with updated references.

Written by the indexing model from the issue text.

Assessment

Tech stack
haskell
Domain
tooling
Issue type
Refactor
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.