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

SDC: Improve clock propigation and clock object handling #53

Closed
tmichalak opened this issue Nov 3, 2020 · 1 comment
Closed

SDC: Improve clock propigation and clock object handling #53

tmichalak opened this issue Nov 3, 2020 · 1 comment

Comments

@tmichalak
Copy link
Collaborator

tmichalak commented Nov 3, 2020

I think we may have a conceptual mismatch with how Vivado treats clock objects. The clock object on both sides of a IBUF and BUFG are the same clock object. So for example, there should really just be 1 clock clk, which has multiple netss that are on that clock. PLL's / MMCM's and BUFGCTRL's do split clock definitions because the underlying properties of the clock change across the elements.

Clock objects have properties (e.g. waveform, period, is generated)
Clocks can have relationships to each other (e.g. false path, jitter, https://docs.verilogtorouting.org/en/latest/vpr/sdc_commands/#set-max-delay-set-min-delay)
Nets may have a clock object they are associated with. The propagation step should associate nets with their clocks as needed (e.g. propagate through IBUF/BUFG).
Some cells (PLL/MMCM) define generated clocks using a relationship between the source clock and output clock. The propagate through PLL/MMCM should generate these related clocks.

The propagation that occurs should probably be something akin too:

  • Does this element change the clock -> No:

    • If the output net has no explicit clock membership, mark the net as being part of the same clock
  • Does this element change the clock -> Yes:

    • If the output net has an explicit clock definition, do nothing
    • If the output net has no explicit clock definition, create a new generated clock with the new properties based on the elements configuration (e.g. PLL creates a new clock with period X, waveform Y Z).
@tmichalak
Copy link
Collaborator Author

Solved by #54

mglb pushed a commit to antmicro/yosys-f4pga-plugins that referenced this issue Apr 3, 2023
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

1 participant