SatCat5
SatCat5 Change Log

This log will be updated for each new release, but may not reflect the latest development branch(es).

v2.9.0 (2026 March)

  • Added a ConfigBus emulator for the eth::SwitchConfig driver.
  • Added an IGMP software client and server, with tweaks to gateware IGMP multicast handling.
  • Added GitHub Copilot Agent file to help onboard new developers to C++ software stack.
  • Added PCAP support to the Python APIs for CCSDS, Ethernet, and SLIP.
  • Added port::BufferAdapter is a drop-in replacement for NullAdapter, but with VLAN support.
  • Added support for SGMII rate auto-negotitation via TX_CFG_REG for PHYs as an alternative to auto-detection.
  • Fixed a bug in cfg::Hdlc that could deadlock data_rcvd() notifications.
  • Fixed an illegal use of IDELAYE3 on clock input signals.
  • Fixed issues with SGMII repetition (10M/100M modes).
  • Fixed GPS epoch conversion in PTP software stack.
  • Fixed MAC learning issue after switch reset.
  • Fixed NTP header leap-seconds value preventing usage by some client implementations.
  • Fixed Polarfire DDR I/O IP core generation.
  • Fixed software switch control when priority ethertypes are disabled.
  • Improved Polarfire SGMII clock distributed via shared-clock chaining mechanism.
  • Improved PTP ANNOUNCE message handling with log-variance estimation and clockIdentify fix.

v2.8.0 (2025 October)

  • Added coarse options for PTP clock-crossing (less precise, more robust).
  • Added gateware and software support for Constant Overhead Byte Stuffing (COBS).
  • Added Python support for CCSDS-AOS and CCSDS-SPP.
  • Fixed formatting of NTP-related UDP headers.
  • Fixed handling of certain CCSDS-AOS edge cases.
  • Fixed statistics reporting for Ethernet ports with a stopped clock.
  • Fixed unsafe handling of destructors when "SATCAT5_ALLOW_DELETION=0". (Replaces undefined behavior with an intentional deadlock/halt.)
  • Fixed various bugs in the SAM V71 hardware abstraction layer.
  • Improved control over PTP message rates and UTC offset.
  • Improved logging functions, including log-forwarding.
  • Improved PTP-locked synthesizers with runtime-adjustable frequency (e.g., PPS, 10 MHz).
  • Split net::Socket class into Rx-only and Tx-only variants.
  • Update included QCBOR to v1.5.2, bug-fixes for associated SatCat5 wrappers.

v2.7.0 (2025 August)

  • Added support for CoAP reverse-proxy.
  • Added support for HDLC (physical layer only).
  • Added support for RTTTL (legacy ringtone format).
  • Completed Doxygen rollout to 100% of C++ files.
  • Fixed edge-cases in CCSDS-AOS and CCSDS-SPP decoders.
  • Fixed standards-compliance of UART flow-control signals.
  • Improved support for complex CBOR data structures.
  • Improved support for FreeRTOS and the SAM V71 microcontroller.
  • New diagnostics for switches and routers, including reason why a given frame was dropped.
  • New multi-mode UART toggles between raw, CCSDS-AOS, CCSDS-SPP, and SLIP mode.
  • Software packet capture now supports multiple interfaces.
  • Software router now supports basic network address translation (NAT).
  • Split the ALLOW_RUNT parameter into separate parameters ALLOW_RUNT_IN, ALLOW_RUNT_OUT.

v2.6.0 (2025 January)

  • Added client/server for the Constrained Applications Protocol (CoAP)
  • Added client/server for the Network Time Protocol (NTP)
  • Added support for Doppler-PTP (an experimental extension to PTP)
  • Added support for Simple-PTP (Meta's client-initiated PTP variant)
  • Create a gateware-defined CIDR-capable IPv4 router supporting multiple gigabit-rate ports.
  • Create a software-defined Ethernet switch, to augment or replace the FPGA-defined switch.
  • Create a software-defined IPv4 router, for support/offload or low-rate standalone applications.
  • Improved support for the Microchip Polarfire-FPGA and Polarfire-SoC platforms.
  • Initial integration of Doxygen documentation. Limited coverage for now.
  • More options for PTP filtering and control logic.
  • More options for Readable and Writeable formats (s24, s48, u24, u48).
  • New hardware abstraction layers for FreeRTOS and the Microchip SAM V71.
  • Replace "GenericTimer" with the new and improved "TimeRef" API.
  • Virtual PCAP mode for improved unit test diagnostics.

v2.5.0 (2024 February)

  • License changed to CERN-OHL-W v2 or later.
  • Added a software-based PTP client and clock-tuning interfaces.
  • Added a software-based TFTP client and server.
  • Added diagnostic tools for working with PCAP and PCAPNG files.
  • Added support for many additional CRC16 and CRC32 formats.
  • Improved log-message filtering for many unit tests.
  • Improved status telemetry for managed switch diagnostics.
  • New example design "vc707_ptp_client".

v2.4.0 (2023 August)

  • Added per-VLAN rate-limiting and associated device drivers.
  • Added Slingshot interface control documents (ICDs).
  • Added software-based DHCP client and server.
  • Fixed "bidir_io" support on Lattice FPGAs.
  • Fixed "mac_lookup" threshold for instantiating a second TCAM unit.
  • Performance and tracking-filter improvements for PTP.
  • Software support for 10-bit I2C addresses.
  • Software support for various CBOR-encoded messages.

v2.3.0 (2023 February)

  • New zcu208_clksynth example design and associated device drivers.
  • New sgmii_lvds IP-core.
  • Port mode (port_serial_auto) is now CPU-configurable.
  • Refactor C++ test utilities for better code-reuse.
  • Update cfg::NetworkStats driver to allow remote access.
  • Update poll::OnDemand main loop to prevent orphaned tasks.
  • Update documenation and TCL scripts.

v2.2.0 (2022 December)

  • Added Vernier-PLL system for timestamps with sub-nanosecond precision.
  • Defined API for ingress and egress timestamps and integrated with all SatCat5 port types.
  • More formatting options for the satcat5::log API, including signed decimal numbers.
  • New all-in-one IP/UDP network stack for simplified software networking.
  • New log_viewer diagnostic tool for display of messages from the satcat5::log API.
  • Reworked TCAM and MAC-lookup blocks to allow runtime read/write of MAC-address tables.
  • Tooltips for all IP-core configuration parameters.
  • Bug-fixes for router_inline and MDIO device-driver.

v2.1.0 (2021 December)

  • Added Virtual-LAN support (IEEE 802.1Q) to the Ethernet switch and the software network stack.
  • Defined API for 10-gigabit Ethernet ports.
  • Bug-fixes for eth_preamble_rx and port_inline_status.

v2.0.1 (2021 October)

  • Added read/write functions for s8, s16, s32, and s64.
  • Hotfix for UART-16550 driver and Arty-Managed example design.

v2.0.0 (2021 September)

  • Added a large number of auxiliary ConfigBus peripherals, with cross-platform software drivers.
  • Added I2C peripherals and Ethernet-over-I2C ports.
  • Added the "MailMap" port, a higher-performance analogue to original MailBox port.
  • Created an embedded cross-platform C++ driver framework, including a IP and UDP network stack.
  • Replaced all prior MAC-lookup systems with a flexible high-performance TCAM.
  • Replaced various ad-hoc control and configuration functions with "ConfigBus".
  • Reworked switch-core to allow higher maximum throughput, max one full packet per clock.
  • Reworked switch-core to allow rudimentary IGMP snooping.
  • Reworked switch-core to allow traffic prioritization based on EtherType.

v1.4.0 (2021 March)

  • Added diagnostic status flags to the internal Ethernet port definition.
  • Compatibility improvements for SGMII startup handshake.
  • Timing improvements for traffic statistic counters.

v1.3.1 (2021 February)

  • Hotfix for inoperable router_config_axi block.

v1.3.0 (2021 January)

  • Add support for 802.3D pause-frames.
  • Improved error-handling and error-recovery on SGMII ports.
  • Improved performance of Python/ScaPy interfaces by using L2Socket objects.
  • Update eth_frame_check to block frames where the source MAC is the broadcast address.

v1.2.2 (2020 October)

  • Fixed AXI4-Lite compliance issues the port_axi_mailbox block.

v1.2.0 (2020 September)

  • Added contribution guidelines, issue templates, and pull-request templates to encourage outside contributions.
  • Added IPv4 router block.
  • New switch management features including traffic counters and per-port promiscuous-mode.
  • Xilinx platform: Added block-diagram IP-core wrappers for many functional blocks.

v1.1.0 (2020 June)

  • Added platform support for the Microsemi Polarfire.
  • New features including improved MAC-address lookup, a virtual port (AXI-mailbox), SPI ports with an output clock, and improved build scripting.

v1.0.0 (2019 December)

  • Initial release of the SatCat5 mixed-media Ethernet switch.
  • Supported FPGA platforms: Lattice iCE40, Xilinx 7-Series
  • Supported Ethernet interfaces: RMII, RGMII, SGMII, SPI, UART
  • Example designs for the Arty A7 and a custom FMC board.
  • PiWire mixed-media Ethernet bridge.
  • Python chatroom demo for mixed-media Ethernet.

Copyright Notice

Copyright 2019-2025 The Aerospace Corporation

This file is a part of SatCat5, licensed under CERN-OHL-W v2 or later.

You may redistribute and modify SatCat5 and make products using it under the weakly reciprocal variant of the CERN Open Hardware License, version 2 or (at your option) any later weakly reciprocal version.

SatCat5 is distributed WITHOUT ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING OF MERCHANTABILITY, SATISFACTORY QUALITY, AND FITNESS FOR A PARTICULAR PURPOSE. Please see (https:/cern.ch/cern-ohl) for applicable conditions.