Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

comb-localize: Inlining combinational continuous assignments into groups #870

Open
rachitnigam opened this issue Jan 13, 2022 · 0 comments
Labels
C: calyx-opt Optimization or analysis pass S: Available Can be worked upon

Comments

@rachitnigam
Copy link
Contributor

rachitnigam commented Jan 13, 2022

In similar spirit to #869. Inline combinational continuous assignments into the groups that use them (along with the entire dataflow graph that drives them). By doing this kind of inlining, we can hopefully eliminate continuous assignments and speed up/simplify simulation because it has to consider fewer active assignments at any given time.

The following program continuously assigns to the add.left signal but only uses the value of add.out in group g:

group g {
  add.right = 1'd1;
  r.in = add.out;
  ..
}
sub.left = k.out;
sub.right = 32'd1;
add.left = sub.out;

We can localize the combinational dataflow graph for add.out to the groups that use it:

group g {
  add.right = 1'd1;
  r.in = add.out;
  sub.left = k.out;
  sub.right = 32'd1;
  add.left = sub.out;
  ..
}
@rachitnigam rachitnigam changed the title Inlining combinational continuous assignments into groups comb-localize: Inlining combinational continuous assignments into groups Jan 17, 2022
@rachitnigam rachitnigam added C: Calyx Extension or change to the Calyx IL S: Available Can be worked upon labels Jan 17, 2022
@rachitnigam rachitnigam added C: calyx-opt Optimization or analysis pass and removed C: Calyx Extension or change to the Calyx IL labels Dec 24, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C: calyx-opt Optimization or analysis pass S: Available Can be worked upon
Projects
None yet
Development

No branches or pull requests

1 participant