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

Infer static timing extensions #310

Closed
tedbauer opened this issue Dec 15, 2020 · 1 comment
Closed

Infer static timing extensions #310

tedbauer opened this issue Dec 15, 2020 · 1 comment
Assignees
Labels
S: Needs Triage Issue needs some thinking Type: Pass Proposal to implement a pass

Comments

@tedbauer
Copy link
Contributor

Our infer-static-timing pass tries to statically infer the number of cycles a group will take to execute, and if it succeeds, it annotates the group with that number with a "static" attribute. It currently only works when every done signal in the group is written to by single go signals. For example, this group will be annotated with "static"=2:

// r0 and r1 are registers
group a {
  r0.in = 1'd1;
  r0.write_en = 1'd1;
  r1.in = d'1;
  r1.write_end = r0.done;
  a[done] = r1.done;
}

The pass conservatively gives up and leaves no annotation if there are more complex expressions that write to a done port, like this program, even if we could still statically infer the latency:

// r0 and r1 are registers
group a {
  r0.in = 1'd1;
  r0.write_en = 1'd1;
  r1.in = d'1;
  r1.write_end = r0.done;
  a[done] = r1.done ? 1'd1;
}

This issue is for identifying more cases where we can statically infer the latency, and implementing support for those cases.

@tedbauer tedbauer changed the title Infer static timing: support some multi-writes Infer static timing extensions Dec 15, 2020
@rachitnigam rachitnigam added Type: Pass Proposal to implement a pass S: Needs Triage Issue needs some thinking labels Dec 26, 2020
@rachitnigam
Copy link
Contributor

Once #311 is done, this pass should also add "static" annotations on components and use that information during static-timing.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
S: Needs Triage Issue needs some thinking Type: Pass Proposal to implement a pass
Projects
None yet
Development

No branches or pull requests

3 participants