google / google/xls

Enhance codegen to be able to separate flow control logic from the pipeline.

Open
#923 0 comments 0 reactions 0 assignees View on GitHub
codegen stitching
Dominant language
C++
Stars
1.9k
Forks
283
Avg merge
2d 10h
Merged PRs (30d)
135

Description

For pipeline function generation, one use case is to have a set of pipelines with the same latency all in parallel. If these are then fed with the same valid signal, then one optimization may be to factor out the pipeline flow control into a separate module.

Consider
```
pipeline pipe0(.in(in0), ,.in_valid(in_valid), .out(out0), .out_valid(out0_valid);
pipeline pipe1(.in(in1), ,.in_valid(in_valid), .out(out1), .out_valid(out1_valid);
wire out_valid = out0_valid && out1_valid;
```

to

```
wire[N:0] flow_control;
pipeline_flow_control pipe_flow_control(.in_valid(in_valid), .out_flow_control(flow_control), .out_valid(out_valid);
pipeline pipe0(.in(in0), .out(out0), .external_flow_control(flow_control));
pipeline pipe1(.in(in1), .out(out1), .external_flow_control(flow_control));
```

where the flow control logic is factored out into the module pipeline_flow_control which then drives the stages for pipe0 and pipe1.

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.