-
Notifications
You must be signed in to change notification settings - Fork 88
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 / RGMII doesn't meet timing closure #27
Comments
There are multiple culprits (at least when using lattice toolchain and LFE5UM-45F(non-5G) Versa, which is what I've been doing) causing timing problems.
This is normal default behavior on my board as well. The link seems fine, perhaps Lattice have designed the board in a strange way (it wouldn't be the first part... :) ). Indeed the versa user guide schematic around PHY1_LED seems a bit strange... |
Another hacky way I'm using to make timing closure easier is to disable icmp ( |
The examples has been removed. The current issue is already tracked here: litex-hub/litex-boards#40, we'll try to improve this soon. |
@enjoy-digital This can be closed. With the 32-bit + buffered CDC there are no timing issues anymore. |
I still saw this issue with $glbnet$eth_clocks_rx$TRELLIS_IO_IN failing well below 100 MHz after all those improvements and even on a Butterstick board using ECP5 with speed grade 8. anyway, thank you all for fixing this! |
@ozel Which version and config are you using? I get pretty stable timing closure with the current liteeth with this config:
The CDC parameters are important to get better timing |
@rowanG077 I meant the test bench folder projects, for example https://github.com/enjoy-digital/liteeth/blob/master/bench/butterstick.py |
I see. Configuration on that level is not supported for the benchcore it seems. You could copy paste the And change the config there so it passes timing. |
32-bit data width can be changed from the 8-bit default, this works:
I just wanted to highlight that current ECP5 test bench examples still report timing violations unless modified. There might be good reasons for that of course, but newcomers to LiteX might wonder what's going on... |
I'm having trouble reaching 125 MHz even with this config on a butterstick (LFE5UM5G-85F), best I can get to is about 104 MHz |
Are you sure you have the most recent liteeth? What is your system clock frequency? I'm using liteeth on a ECP5 part that is the lowest speed grade. The ECP5 on the butterstuck has the highest speed grade. It should have no trouble reaching 125Mhz. I just looked at just the logic timing between the two. Your part is almost twice faster. Are you using 125Mhz for your system clock? |
I'm on liteeth downloaded today, so that should be no problem, but I probably misunderstood the clocking. Since I set |
|
Excellent, thanks for the quick reply! |
The README file mentions the following:
I've tested the example in
examples/targets/udp_loopback
by performing the following steps:$ ./versa_ecp5.py
Full output: timing.txt
Note that timing closure is not met for
crg_clkout
.Versions:
yosys: 3c41599ee1f62e4d77ba630fa1a245ef3fe236fa
nextpnr: 247e18cf027334d5201be00735aa607250e6253d
trellis: e2e10bfdfaa29fed5d19e83dc7460be9880f5af4
$ ./versa_ecp5.py load
This gives no response.
(Note: when the UDP example was added in Versa ecp5 udp loopback example #23 the
listener.py
andsender.py
have had their IP addresses switched from the original example, the current version is the wrong way around)This also gives no response from the FPGA.
See the following wireshark trace:
On a final note, both PHY status indicators of the Ethernet interface on the FPGA turn off as soon as I connect the network cable (the orange link state is turned on when the cable is unconnected).
The text was updated successfully, but these errors were encountered: