Skip to content

Porting verilog-ethernet to KR260 #146

Closed
@vmayoral

Description

@vmayoral

(This first comment will be updated as the porting efforts evolve and will summarize results so that others can benefit from it.)

Hi @alexforencich and all,

First off, congrats for an impresive piece. The project is not only well maintained but has grown a significant community around it. Very impressive. Congrats and kudos to @alexforencich. I'm currently involved into a project considering to port Corundum into the AMD KR260. This board leverages an AMD Zynq UltraScale+ SoC and exposes various Ethernet (Gb RGMII PL and PS) interfaces and an SFP+ connector which makes it a pretty target for benchmarking.

For now, our endeavour aims to bring ethernet-verilog up to speed into the KR260 and produce some latency performance benchmarking comparisons by leveraging a low overhead and real-time capable tracer (we'll be using LTTng on the PS side, and Vitis Profiler on the PL side).

By doing so, we hope to contribute to this project by 1) bringing a usable port of ethernet-verilog (Corundum) for a popular FPGA SoC SOM, 2) provide a fair and reproducible latency benchmark that compares UDP/IP networking performance (L1-L2-L3-L4) across various setups.

                                               Media Access
      Transport (UDP)      Network  (IP)       Control (MAC)                   Physical layer (PHY)        Media Dependent Interface (MDI)

   +----------------+  +----------------+   +------------------+  +---------------------------------------+   +-------------------+
   |                |  |                |   |                  |  |     PCS: Physical      PMA: Physical  |   |                   |
   |                |  |                |   |                  |  |     Coding             Medium         |   |    +---------+    |
   |                |  |                |   |                  |  |     Sublayer           Attachment     |   |    |         |    |
   |                |  |                |   |                  |  |    +--------------+    +-----------+  |   |    |         |    |
   |                |  |                |   |                  |  |    |              |    |           |  |   |    |         |    |
<---+              <----+              <-----+                 <----------+encoder<---------+serializer<-----------+         |    |    +---------+
   |                |  |                |   |                  |  |    |              |    |           |  |   |    |   SFP+  +<-------->  cable  |
   |                |  |                |   |                  |  |    |              |    |           |  |   |    |  trans. |    |    +---------+
   |                |  |                |   |                  |  |    |              |    |           |  |   |    |         |    |
+--->             +----->              +----->                 +---------->decoder+--------->clk+->des+------------>         |    |
   |                |  |                |   |                  |  |    |              |    |           |  |   |    |         |    |
   |                |  |                |   |                  |  |    |              |    |           |  |   |    |         |    |
   |                |  |                |   |                  |  |    +--------------+    +-----------+  |   |    +---------+    |
   |                |  |                |   |                  |  |                                       |   |                   |
   +----------------+  +----------------+   +------------------+  +---------------------------------------+   +-------------------+

After reading through 1, it appears that creating example designs for verilog-ethernet is the first recommended step. This ticket will thereby track progress on this regard, porting verilog-ethernet to KR260. The list below aims to lay out some of the milestones neccessary to achieve the porting goals.

Sources considered
Related issues and past experiences

Environment used

  • Vitis/Vivado release: 2022.1
  • branch of repo used: master

Contributions

Hardware used

Milestones:

  • verilog-ethernet in ZCU102 (link to example)
    • inspect source code of 10G BASE-R PHY IP example
    • Understand build system setup and hooks to Vivado
    • Build ethernet-verilog for ZCU102 (10G BASE-R PHY IP core)
    • Test 10G BASE-R PHY
  • verilog-ethernet in KR260
  • Latency performance benchmarking
    • Produce CPU baseline by using Ethernet PHYs connected to the PS and the Linux Networking Stack (LNS)
    • Benchmark 10G BASE-R PHY example to the SFP+ connector
    • Benchmark 1G PHY example to the SFP+ connector (skipped, focusing instead on the RGMII PHYs)
    • Benchmark 1G MAC example into one of the PL Ethernet PHYs

Footnotes

  1. Corundum porting guide https://docs.corundum.io/en/latest/porting.html

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions