Skip to content

spi2: Put register to I/O block for the 7-series interface #168

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

Draft
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

occheung
Copy link
Contributor

Ideally, this patch should only involve adding "iob" attributes.

However, IOB inference requires a direct connection from the register to the I/O pad (there are no logic in between).

  • The internal sdo reaches the I/O pad directly.
    Requiring users to supply an appropriate sdo keeps it as a direct connection.
  • Tristate signals are either shared or derived via a LUT
    Instead of having user to supply a variable length control signals that are identical, it now takes the tristate control signals 1 cycle in prior.

Require migen PR that adds IOB attribute.

@occheung
Copy link
Contributor Author

The reset_less was removed to make IOB work.

I suspect the way vivado apply IOBs in the same OLOGIC is by naively check if the flip-flops have identical controls.
i.e. resets are the same.

But given the reset is synchronous, it can always be moved into the LUTs prior to the FF. vivado seems to not attempt this transformation for IOB FFs.

One solution is to instruct vivado manually by inserting extract_reset = "yes|no" along with specifying the reset signal itself using direct_reset.

But, do we need the reset_less in the first place?

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

Successfully merging this pull request may close these issues.

1 participant