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

ECP5: Missing IMIPI primitive #1400

Open
tomek-szczesny opened this issue Dec 1, 2024 · 2 comments
Open

ECP5: Missing IMIPI primitive #1400

tomek-szczesny opened this issue Dec 1, 2024 · 2 comments

Comments

@tomek-szczesny
Copy link

Hi,

I'm designing a hobby board with DSI input. I intend to implement the logic myself. Unfortunately I do not meet the legal criteria to obtain a license of Lattice Diamond, so I cannot use it for reference in any way.

Since I cannot find any up-to-date docs about the state of ECP5 support (even though I have never had any problems with icestorm), I checked out the code and there is no mention of IMIPI primitive, that is recommended in the ECP5 sysI/O Usage Guide (citation below).

My question is whether this is going to make it to the toolchain, or is IMIPI a macro consisting of ILVDS and two single-ended inputs?
If the latter is true, then how can I switch the DIFFRESISTOR on and off through logic? I can't think of Verilog code that could describe such behavior to be infered by yosys.

4.11.12. MIPI D-PHY Receiver IMIPI Interface
The MIPI D-PHY receiver IMIPI Interface is used only in input mode and only on the C/D pad pair. The differential C/D pad pair high-speed and pad C single-ended low-power inputs are handled through the pad C I/O logic. The pad D single-ended low-power inputs are handled through the pad D I/O logic.
• HS mode: 100 Ω differential termination is enabled with a differential receiver.
• LP mode: HS mode is disabled and ratio receiver is enabled on pad C.

@gatecat
Copy link
Member

gatecat commented Dec 17, 2024

This is definitely something that should be supported as a primitive in its own right. I will see if I get a chance to have a look some time.

@tomek-szczesny
Copy link
Author

Thank you!
I have designed my board and it's already in production. Just to stay on the safe side, each DSI pair is routed to two pin pairs, so each can act as high speed and low speed receivers respectively. Still it doesn't solve my problem completely because I have no way of turning off the differential resistor.

Please let me know if I can help in any way. Other than testing..

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

2 participants