clash-lang / clash-lang/clash-protocols
`roundrobinCollect Parallel` is not a round-robin arbiter, but a priority arbiter.
- 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