1.0 Problem Analysis
This document addresses the technical query regarding the procedure for performing custom firmware development on the Cisco Nexus K3P-S SmartNIC. The primary goal is to leverage the card’s Field-Programmable Gate Array (FPGA) for ultra-low-latency, hardware-accelerated applications, which requires access to and use of the ExaNIC Firmware Development Kit (FDK).
The Nexus K3P-S SmartNIC is an advanced network adapter engineered for high-performance computing and low-latency financial trading environments. It is architecturally based on the Exablaze ExaNIC X25 platform, which incorporates a powerful Xilinx FPGA. While standard Cisco-provided drivers enable high-performance kernel and userspace networking functions, they do not provide the tools necessary for direct modification of the FPGA logic. Unlocking this capability for bespoke application development is the specific function of the ExaNIC FDK.
2.0 Solution Framework
The solution involves a two-phase approach: first, the official process for acquiring the FDK, and second, a technical overview of the development workflow and its prerequisites.
2.1 Phase 1: Acquisition of the ExaNIC FDK
The ExaNIC FDK is specialized, proprietary software and is not available for public download from the Cisco Software Central portal. Access is managed to ensure that customers have the appropriate technical expertise and support agreements in place for such advanced development.
The designated procedure is as follows:
- Engage the Cisco Account Team: The customer must formally contact their designated Cisco Account Manager and Systems Engineer.
- Justify the Business and Technical Need: Clearly articulate the use case for FPGA-level customization. This typically involves applications where software-based solutions cannot meet latency or performance requirements.
- Licensing and Entitlement: The Cisco Account Team will facilitate the necessary contractual and licensing arrangements. Access to the FDK is a controlled entitlement and may be subject to specific commercial terms.
Upon successful completion of this process, the customer will be provided with the appropriate FDK software package and associated documentation.
2.2 Phase 2: Technical Prerequisites and Development Workflow
Once the FDK is obtained, a specific development environment must be established. The following components are critical for successful firmware development.
Prerequisites:
- Development Host: A high-performance workstation running a supported Linux distribution (e.g., Red Hat Enterprise Linux, CentOS).
- Xilinx Vivado Design Suite: A licensed installation of the specific version of Xilinx Vivado required by the FDK version. This is the core toolchain for synthesizing, placing, and routing the RTL (Register-Transfer Level) code to generate the FPGA bitstream.
- ExaNIC FDK Package: The software bundle acquired through the Cisco sales channel. This includes Makefiles, example designs, shell logic, and IP cores for interfacing with the card’s physical components (e.g., PCIe interface, Ethernet MAC/PCS, memory controllers).
- Standard System Drivers: The base driver package for the Nexus K3P-S SmartNIC must be installed on the development host for device interaction and firmware loading.
High-Level Development Workflow:
- Environment Setup: Install the required Xilinx Vivado version, the ExaNIC base drivers, and the FDK package on the development workstation.
- Project Initialization: Begin with one of the reference designs provided within the FDK. These examples provide a stable foundation, handling the complexities of the PCIe interface and basic packet I/O, allowing developers to focus on their custom application logic.
- RTL Customization: Implement the custom logic using a hardware description language (Verilog or VHDL). This logic is integrated into the framework provided by the FDK shell.
- Synthesis and Bitstream Generation: Utilize the provided Makefiles and scripts, which invoke the Xilinx Vivado toolchain in the background. This process compiles the RTL code and generates a firmware bitstream file (e.g.,
firmware.bit
).
- Firmware Deployment: Use the
exanic-fwupdate
utility, included with the standard driver package, to load the newly generated custom bitstream onto the Nexus K3P-S SmartNIC’s FPGA.
- Validation and Testing: After loading the new firmware, conduct rigorous testing to validate the functionality and stability of the custom application logic.
3.0 Critical Support Considerations
It is imperative to understand the support implications of custom firmware development:
- Unsupported by Cisco TAC: Any firmware image created or modified using the FDK is considered custom code. It is not supported by the Cisco Technical Assistance Center (TAC). The customer assumes full responsibility for debugging, maintaining, and ensuring the stability of their custom firmware.
- Firmware Recovery: The Nexus K3P-S SmartNIC includes a “golden” factory recovery image. If a custom firmware load fails or causes instability, it is generally possible to revert the card to a Cisco-supported factory firmware version using the provided utilities.
- Version Coherency: Maintain strict alignment between the FDK version, the Xilinx Vivado toolchain version, and the host device driver version. Mismatches are a common source of compilation errors and runtime instability.