[enhancement] add non-blocking send
- 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)
I'd like to be able to create a proc that unconditionally receives input on a channel and incorporate it into a next state update without blocking on a send() in the same proc.
I.e. I would like to advance to the next state whether or not the send() can take place in the current iteration of next.
send_non_blocking would need to return an indication of whether or not the send took place that could be incorporated into the next state calculation.
Additionally, if the user wants to retain the data being passed to the non-blocking send (in case the send fails). User would need to explicitly stash it in the next state somewhere (otherwise it would be lost).
### Current best alternative workaround (limit 100 words)
I can kind of get behavior I want by tying off the output valid signal in verilog and writing the XLS code as if the send always succeeds (perhaps in combination w/ some other channels similarly abused to pass info in the other direction). Not super practical beyond a simple block.
### Your view of the "best case XLS enhancement" (limit 100 words)
Find a way to add send_non_blocking that doesn't interfere w/ normal operation.
Contributor guide
Assessment
This issue has not been assessed yet.