Skip to content

Latest commit

 

History

History
70 lines (61 loc) · 2.97 KB

status.md

File metadata and controls

70 lines (61 loc) · 2.97 KB

Packet Badger Status / Progress

  • 2018-11-02: Input scanner (scanner.v) can properly detect Ethernet, ARP, IP, ICMP, and UDP. Makefile includes useful regression tests.
  • 2018-11-13: Simulation constructs working ARP and ICMP echo (ping) replies, verified with Linux tap interface.
  • 2018-11-15: Simulation (Linux tap) also gives UDP echo.
  • 2018-11-18: Hardware (SP605) responds to ARP and ICMP echo.
  • 2018-11-20: ARP, ICMP echo, and UDP all work reliably with tap using either Icarus or Verilator, and on SP605.
  • 2018-11-23: Responds only to configured set of UDP ports
  • 2018-11-24: Multiplexes between (trivial) UDP port sources
  • 2018-11-28: Documented, tested, and used client interface
  • 2018-12-05: Working mem_gateway, with regression test, confirmed on SP605
  • 2018-12-10: Fixed dropped-packets problem, tested with > 10^8 packets
  • 2018-12-20: Demonstrated functional on AC701/RGMII, synthesizing with XST
  • 2018-12-21: Demonstrated functional on AC701 when synthesizing with Vivado
  • 2019-01-15: Merged into bedrock
  • 2019-03-26: Refactored udp-vpi.c to enable Verilator test of mem_gateway.v
  • 2019-04-29: Demonstrated Tx MAC working on hardware
  • 2019-05-31: MAC supporting TFTP works in simulation

Synthesized by XST 14.7 for Spartan-6:

module LUTs RAMB16
scanner.v 275
construct.v 192
xformer.v 93
ethernet_crc_add.v 94
udp_port_cam_v 31
rtefi_blob.v 1024 2
gmii_hw_test.v 1242 4

This Verilog code is intentionally portable and standards-based. It has been tested using:

  • verilator 3.900 (stock Debian stretch)
  • verilator 4.008 (git from December 2018)
  • iverilog 10.1 (stock Debian stretch)
  • iverilog 11.0 (git from December 2018)
  • Xilinx XST 14.7
  • Xilinx Vivado 2015.3, 2017.4, 2018.1

All the .eps files here are created with and editable by xcircuit.

Files in tests/sp605/, tests/ac701/, and tests/kc705/ are only here temporarily; eventually they should be constructed by the LBNL/ATG project infrastructure.

Next steps, pretty much unordered:

  • Rename modules, signals, and project
  • Create an instantiation template along with rtefi_blob.v
  • Update documentation
  • Analyze, test, and document limits on p_offset
  • Better force or test that all GMII signals are latched in IOBs
  • Do something with GMII_RX_ER, test
  • Decrement TTL as part of echo loop mitigation strategy?
  • Consider dropping UDP packets with zero data length
  • UDP Rx checksum?
  • Add SPI clients
  • Find help to exercise this on an Altera board
  • Increase minimum number of 0x55 in Tx preamble
  • Hook to allow use of TAP device other than tap0
  • Add monitoring hooks, like packet, byte, and error counts
  • Add authentication option
  • Refactor and rewrite for clarity and reduced LUT count
  • Attach Tx and Rx MAC to a soft core
  • Add IEEE-1588 (PTP) feature to MAC
  • Make optional based on parameters: ARP and ICMP echo