-
Notifications
You must be signed in to change notification settings - Fork 86
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
Add hooks and features for 10/25G implementation #21
Conversation
Fix all remaining indentation issues in python code
pythonize CRC calculation
Alternative is to create a wrapper around the rgmii_if from Xilinx as it's done in opsis-soc
# Conflicts: # liteeth/core/arp.py # liteeth/core/ip.py # liteeth/core/udp.py
Add a BufferizeEndpoint in the IPFragmenter stream endpoint. To meet timing when etherbone is in. test/test_xgmii.py: Test etherbone via TUN/TAP
What's the status of this? I really would like to use the ColorLight 5A-7B ethernet. |
There are some work planned in the next months on this, if you want to use Ethernet with the ColorLight, it should already be possible with the MAC + CPU using: |
@enjoy-digital @rowanG077 FyI, I have seen some timing errors while synthesizing for the 25G core. However none for the 10G core at standard 156.25MHz. I'm curious to know more about the usage with the ColorLight boaRd though! |
@jersey99: thanks for the infos, the Colorlight is an in-expensive ECP5 board (15$: https://www.google.com/search?q=colorlight+7a+75b) that is supported by LiteX: https://github.com/litex-hub/litex-boards/blob/master/litex_boards/targets/colorlight_5a_75x.py, the timings are currently not met with the 1Gbps/8-bit/UDP-IP stack and i was thinking 32-bit data-width to lower the clock freq. |
@enjoy-digital Thanks for the clarification, makes sense. That board is pretty sweet! |
10Gbps Ethernet has been tested successfully in both TX/RX on a KC705/SFP with 32-bit and 64-bit data-path. This PR has been used as an initial step and various changes have been done to fix issue and improve timings. This will be integrated in LiteEth in the next weeks. |
Adds support for 64-bit wide XGMII PHYs in LiteEth. A 64-bit wide XGMII data path is a common method to interconnect multi-gigabit Ethernet inside FPGAs. This module expects a 64-bit MAC data path, which is to be added later. It has been tested locally using a rewritten XGMII module for the LiteX simulator as well as on a KCU116 board. This work has been inspired by enjoy-digital#21 but is entirely rewritten using Migen FSMs and with respect to IEEE802.3-2018. Thanks to Florent Kermarrec (@enjoy-digital) and Vamsi Vytla (@jersey99) for providing the base implementation. This implementation does not yet support proper 32-bit (DDR) XGMII PHYs, although support can be easily added by an additional module which performs the DDR encoding / decoding of the data respectively. Signed-off-by: Leon Schuermann <leon@is.currently.online>
Adds support for 64-bit wide XGMII PHYs in LiteEth. A 64-bit wide XGMII data path is a common method to interconnect multi-gigabit Ethernet inside FPGAs. This module expects a 64-bit MAC data path, which is to be added later. It has been tested locally using a rewritten XGMII module for the LiteX simulator as well as on a KCU116 board. This work has been inspired by enjoy-digital#21 but is entirely rewritten using Migen FSMs and with respect to IEEE802.3-2018. Thanks to Florent Kermarrec (@enjoy-digital) and Vamsi Vytla (@jersey99) for providing the base implementation. This implementation does not yet support proper 32-bit (DDR) XGMII PHYs, although support can be easily added by an additional module which performs the DDR encoding / decoding of the data respectively. Signed-off-by: Leon Schuermann <leon@is.currently.online>
Adds support for 64-bit wide XGMII PHYs in LiteEth. A 64-bit wide XGMII data path is a common method to interconnect multi-gigabit Ethernet inside FPGAs. This module expects a 64-bit MAC data path, which is to be added later. It has been tested locally using a rewritten XGMII module for the LiteX simulator as well as on a KCU116 board. This work has been inspired by enjoy-digital#21 but is entirely rewritten using Migen FSMs and with respect to IEEE802.3-2018. Thanks to Florent Kermarrec (@enjoy-digital) and Vamsi Vytla (@jersey99) for providing the base implementation. This implementation does not yet support proper 32-bit (DDR) XGMII PHYs, although support can be easily added by an additional module which performs the DDR encoding / decoding of the data respectively. Signed-off-by: Leon Schuermann <leon@is.currently.online>
Adds support for 64-bit wide XGMII PHYs in LiteEth. A 64-bit wide XGMII data path is a common method to interconnect multi-gigabit Ethernet inside FPGAs. This module expects a 64-bit MAC data path, which is to be added later. It has been tested locally using a rewritten XGMII module for the LiteX simulator as well as on a KCU116 board. This work has been inspired by enjoy-digital#21 but is entirely rewritten using Migen FSMs and with respect to IEEE802.3-2018. Thanks to Florent Kermarrec (@enjoy-digital) and Vamsi Vytla (@jersey99) for providing the base implementation. This implementation does not yet support proper 32-bit (DDR) XGMII PHYs, although support can be easily added by an additional module which performs the DDR encoding / decoding of the data respectively. Signed-off-by: Leon Schuermann <leon@is.currently.online>
Adds support for 64-bit wide XGMII PHYs in LiteEth. A 64-bit wide XGMII data path is a common method to interconnect multi-gigabit Ethernet inside FPGAs. This module expects a 64-bit MAC data path, which is to be added later. It has been tested locally using a rewritten XGMII module for the LiteX simulator as well as on a KCU116 board. This work has been inspired by enjoy-digital#21 but is entirely rewritten using Migen FSMs and with respect to IEEE802.3-2018. Thanks to Florent Kermarrec (@enjoy-digital) and Vamsi Vytla (@jersey99) for providing the base implementation. This implementation does not yet support proper 32-bit (DDR) XGMII PHYs, although support can be easily added by an additional module which performs the DDR encoding / decoding of the data respectively. Signed-off-by: Leon Schuermann <leon@is.currently.online>
For everyone interested in this: An initial 64/32 bit MAC as well as a XGMII PHY implementation have been added to liteeth. The surrounding code and the UDP/IP stack hast't changed yet to take advantage of this. This means a gigabit connection with a wider MAC or a XGMII PHY can currently only work with the softcore, which limits bandwith severely. |
We can probably close this thanks to @lschuermann and @david-sawatzke who finished the 10Gbps support last year. |
Liteeth is very feature rich. However, lacking >1G functionality. Following modifications have made a simple working 10G liteth core that can be tested on hardware.
For motivation
Liteeth lacked a MAC implementation of datawidth > 8bits. So, in order to facilitate wider lanes for XGMII, extended the datawidths of all the modules (PHY, MAC, ARP, IP, and all their supporting modules etc have been modified.
Both 1G and 10G use the same codepath.
IP Fragmentation:
Typical ethernet MTU is 1530 bytes, from the motivation section above, one can imagine bumping up the MTU to 9000 on more controlled networks running scientific experiments.
IP Fragmentation is also a useful feature when it comes to pushing the maximum packet size to the fully available 65536 (IP maximum packet size). This is now implemented inside ip.py
TODO