GTS AXI Streaming IP for PCI Express* User Guide: Agilex™ 5 and Agilex™ 3 FPGAs and SoCs

ID 813754
Date 8/04/2025
Public
Document Table of Contents

5.2.2.4.10.1. Implementing Device Serial Number (DSN) with Runtime Update Support

The Device Serial Number (DSN) is a 64-bit read-only identifier that uniquely identifies a PCI Express device. While a static DSN can be configured via the IP Parameter Editor, certain applications such as those requiring synchronization with a value stored in EEPROM accessible via a Board Management Controller (BMC) require the DSN to be updated dynamically at runtime.

The following steps outline the procedure to enable and update the DSN during runtime:
  1. Enable DSN Capability: In the IP Parameter Editor, enable the Enable Device Serial Number Capability option to activate DSN support.
  2. Enable Write Access to DSN: In the IP Parameter Editor, enable the Enable Device Serial Number Write Access option to allow runtime updates to the DSN register.
  3. Configure Default DSN Values: In the IP Parameter Editor, set the initial values for the DSN using the following fields:
    • Device Serial Number (DW1)
    • Device Serial Number (DW2)
  4. Enable Write Access to Read-Only PCIe Registers: Use the Control and Status Register Responder Interface, to read the current value of the 32-bit control register at address 0x8BC, and set bit[0] to 1 while preserving the other bits (read-modify-write).
    Note: This step enables write access to normally read-only PCIe* capability registers. It is strongly recommended to disable this access immediately after the update to maintain register integrity.
  5. Update DSN Register Values: Use the Control and Status Register Responder Interface, to write the new DSN values to the following addresses:
    • Device Serial Number (DW1): 0x168
    • Device Serial Number (DW2): 0x16C
  6. Revoke Write Access to Read-Only PCIe Registers: Use the Control and Status Register Responder Interface, to read the current value of the control register at address 0x8BC, and clear bit[0] to 0 while preserving the other bits (read-modify-write).