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

build: io: add multibit/bus variants of SDR and DDR #2105

Open
wants to merge 4 commits into
base: master
Choose a base branch
from

Conversation

maass-hamburg
Copy link
Contributor

add bus variants of SDR and DDR, which
support more than one pin.

@enjoy-digital
Copy link
Owner

Thanks @maass-hamburg for the different PRs! Would you mind explaining the use-cases in the PR to be able to review the PR having the use-cases in mind?

@maass-hamburg
Copy link
Contributor Author

@enjoy-digital
for example in the sdr phy in litespi this:

            for i in range(len(pads.dq)):
                self.specials += SDRTristate(
                    io = pads.dq[i],
                    o  = dq_o[i],
                    oe = dq_oe[i],
                    i  = dq_i[i],
                )

could be replaced with:

            self.specials += SDRTristateBus(
                    io = pads.dq,
                    o  = dq_o,
                    oe = dq_oe,
                    i  = dq_i,
                )

@maass-hamburg
Copy link
Contributor Author

@enjoy-digital IMO the prefered way to go instead of this would be to have the regular SDR/DDR variants support longer lengths than 1, just like the migen Tristate, but that would need changes to all vendor-specific implementations. But I also don't know, if that's the way litex should go.

@enjoy-digital
Copy link
Owner

@maass-hamburg: That's indeed what I also tought when having a first look at the PR. If it's too much work to do it for all vendor initially, we could also just have assert in implementations to only build for the supported cases.

@maass-hamburg
Copy link
Contributor Author

@enjoy-digital I implemented this now also for all of the other vendors, but in a generic way, which should function, but might not be the most efficient way for that platform.

expand variants of SDR and DDR to
support more than one pin.

Signed-off-by: Fin Maaß <[email protected]>
implement bus variants of SDR/DDR IO for
efinix.

Signed-off-by: Fin Maaß <[email protected]>
extend SDR/DDR variants to support
Signals longer than 1.

Signed-off-by: Fin Maaß <[email protected]>
check len after wrap, because len won't work on int and bool.

Signed-off-by: Fin Maaß <[email protected]>
@maass-hamburg
Copy link
Contributor Author

@enjoy-digital rebased it, due to conflicts

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.

2 participants