An Azure service that is used to provision Windows and Linux virtual machines.
The NP10s hypervisor will only accept an attested Azure xclbin, not a locally built “raw” xclbin, regardless of the shell UUID seen on the VM. The correct process is:
- Build a netlist xclbin with Vitis 2022.1
- Use the Xilinx/AMD recommended toolset Vitis 2022.1.
- Build against the supported platform
xilinx_u250_gen3x16_xdma_2_1_202010_1. - Ensure the v++ command includes:
so that the generated--advanced.param compiler.acceleratorBinaryContent=dcpxclbincontains a design checkpoint (netlist) rather than a bitstream.
- Upload the netlist xclbin to Azure Blob Storage
- Create a storage account and blob container.
- Upload the netlist xclbin (keep the
.xclbinextension) using Azure CLI, for example:az storage blob upload \ --account-name <storage-account> \ --container-name <container> \ --name <blob-name>.xclbin \ --file <local-netlist>.xclbin
- Submit the design to the FPGA attestation service
- Ensure the tenant and subscription are authorized for the FPGA attestation preview (via https://aka.ms/AzureFPGAAttestationPreview).
- Sign in with Azure CLI (
az loginandaz account set -s <subscription>). - Use the provided PowerShell or Bash scripts from the attestation documentation to submit the blob as an attestation request.
- Use the Azure-generated xclbin on NP10s
- After successful validation, the attestation service writes back to the same container:
-
design.bit.xclbin– bitstream xclbin -
design.azure.xclbin– Azure xclbin that points to the private bitstream location - Logs (
*-log.txt,*logPhaseX.txt)
-
- On NP10s, the only xclbin that the MPD daemon / hypervisor will accept is
design.azure.xclbin. The error"xclbin is invalid, please provide azure xclbin"occurs when attempting to load a non-attested xclbin (for example, the locally built netlist or bitstream xclbin). - The shell UUID on the VM is managed by Azure; there is no separate signing or manual embedding of the shell UUID. The attestation service produces an Azure xclbin that is compatible with the NP-series shell and passes the platform checks.
- After successful validation, the attestation service writes back to the same container:
In summary, the correct “platform/signing” path for a custom HLS kernel on NP10s is: build a netlist xclbin with Vitis 2022.1 and the supported U250 platform, submit it to the FPGA attestation service, and then load only the returned *.azure.xclbin on the NP10s VM.
References: