As i am exploring the many PCIe accelerator card features and design aspects, in few design I could find the Block called as 'MAC ID PROM'. And in the design they have provided the EEPROM circuit. In A10PL4 FPGA acclerator card it explains that PROM provide access to boards MAC ID, please let me know what does this MAC ID means in PCIe card? Someone please brief me the actual requirement of EEPROM in the PCIe accelerator card. Note: attached the block diagram of few accelerator card Regards Balkis

  • 6
    \$\begingroup\$ do you know what a MAC address is? \$\endgroup\$ Sep 21, 2020 at 18:21
  • \$\begingroup\$ Just like an Ethernet card, it has a unique address because some aspect of the boards actual or anticipated usage could need one. Possibly an actual Ethernet or related interface, possibly something else. Underpecified questions about existing projects aren't really on topic questions for this site. \$\endgroup\$ Sep 21, 2020 at 18:26

1 Answer 1


tl; dr version: the MAC address EEPROM is a means to supply a field-programmable network ID for the card. It is used only by the network hardware the card supports (Ethernet, wireless, Bluetooth, etc.) and has nothing to do with PCIe.

Using EEPROM is a time-honored way of handling this which balances having the the MAC address be non-volatile, yet allowing customization as needed during production and deployment.

The MAC address has a specific format that includes a vendor ID (OUI) and the device address.

More about MAC addresses here: https://www.pcmag.com/encyclopedia/term/mac-address

Separate and distinct from the MAC address, PCIe supports unique device serial numbers (DSNs) for each card as part of the Card Information Structure (CIS). DSNs are optional. The main use for DSN is for asset tracking of devices installed in boxes.

More about DSNs here: https://docs.microsoft.com/en-us/windows-hardware/drivers/ddi/wdm/ns-wdm-_pci_express_serial_number_capability

The MAC address would not be the same value or the same format as the DSN. The card could nevertheless use the same EEPROM to store the DSN and MAC values if the hardware allowed it, with DSN copied to the PCIe CIS, while the MAC address is copied to the networking hardware.

  • \$\begingroup\$ It's also possible that the card comes with actual MAC addresses (not just space to store them) depending on the card. \$\endgroup\$ Sep 21, 2020 at 21:34
  • \$\begingroup\$ This card has SFP+ connectors on it for multiple 10-40G connections. The MAC layer itself is implemented in FPGA logic. So, yeah, it needs places to store MAC addresses. There’s multiple ways to do that, but grabbing them from EEPROM or some other nonvolatile memory is the typical way for the reasons I stated. Hard coding MAC into the bitstream would be painful. \$\endgroup\$ Sep 21, 2020 at 22:23
  • \$\begingroup\$ Then it probably has one MAC address per port (included). The EEPROM should be already programmed with the addresses, at least the first one (increment it to get the other ones). And it exists for the reasons you explained. And the documentation should say this. \$\endgroup\$ Sep 21, 2020 at 22:27
  • \$\begingroup\$ A MAC address is used for Ethernet and is 48 bits. IPv6 may derive a local address from the MAC, but this concept is entirely unrelated to Ethernet at layer 2. \$\endgroup\$
    – David
    Sep 22, 2020 at 0:40

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.