[enhancement] Add user-controlled "target throughput"
- Dominant language
- C++
- Stars
- 1.9k
- Forks
- 283
- Avg merge
- 2d 10h
- Merged PRs (30d)
- 135
Description
### What's hard to do? (limit 100 words)
Automatically reuse resources between pipeline stages (with appropriate guards) if the user wants to design a target that does not need to achieve full throughput. For example, if the user wants an II=2 circuit (best-case throughput = worst-case throughput = 2), we should be able to share resources (e.g., pipeline registers) between adjacent stages.
### Current best alternative workaround (limit 100 words)
The user can implement a manual finite-state machine, overriding XLS's normal pipelining to various degrees in order to force more sharing.
### Your view of the "best case XLS enhancement" (limit 100 words)
Add a `--target_throughput` flag to XLS scheduling, much like the current `--worst_case_throughput` flag. Once this is in place, we can start adding logic allowing adjacent stages to share common resources.
Contributor guide
Assessment
This issue has not been assessed yet.