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

Clock propagation story #1352

Closed
litghost opened this issue Feb 27, 2020 · 4 comments
Closed

Clock propagation story #1352

litghost opened this issue Feb 27, 2020 · 4 comments
Assignees

Comments

@litghost
Copy link
Contributor

litghost commented Feb 27, 2020

Problem Statement

The currently way we define SDC files is fairly error prone and fragile. When IOBUF inference was enabled, the SDC file for mini_ddr stopped worked.

The fundimental issue is that the SDC files we define use net names that get modified at multiple places in the flow. There is also the need to manually propagate clocks through PLL's and MMCM's, which is less than convenient.

Some fixes should belong to the tools that modify nets, e.g. yosys and VPR. But some of this needs to live outside of the tools, specifically propigation through PLL's and MMCM's.

Proposed Solution

Create clock should only be required on input pins to the design. Propagation through IBUF's, BUFG's, PLL's and MMCM's should be handled gracefully, generating additional constraints as needed.

  1. User should specific the input clocks via create_clock (maybe in the XDC)?
  2. Post-synthesis, the clocks should directly propagate through known clock buffers:
  • BUFR
  • BUFG
  • IBUF
  • etc
  1. Clocks that pass through PLL's / MMCM's should be relationships established.
  2. Output should be SDC suitable for input to VPR that matches blif.
@acomodi
Copy link
Contributor

acomodi commented Feb 27, 2020

So the basic idea is not to modify how VPR handles clocks, but rather automatically generate the SDC (maybe with a yosys plugin)?

@litghost
Copy link
Contributor Author

So the basic idea is not to modify how VPR handles clocks, but rather automatically generate the SDC (maybe with a yosys plugin)?

I think both is needed (modifying VPR) and propigated.

@litghost
Copy link
Contributor Author

@tmichalak Once the SDC stuff is finished, please close this issue, thanks.

@tmichalak
Copy link
Contributor

Clocks are propagated through Yosys with this SDC plugin PR and a fix.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants