google / google/xls

[enhancement] add non-blocking send

Open
#1,453 15 comments 0 reactions 0 assignees View on GitHub
enhancement
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.