Intel® FPGA SDK for OpenCL™: Stratix® V Network Reference Platform Porting Guide

ID 683645
Date 11/06/2017
Document Table of Contents

3.9.2. Describe the s5_net Hardware to the Intel® FPGA SDK for OpenCL™

The Stratix® V Network Reference Platform includes a board_spec.xml file that describes the hardware to the Intel® FPGA SDK for OpenCL™ in the contexts described below.


The version attribute of the board element must match the Intel® Quartus® Prime software version you use to develop the Custom Platform.


The device section contains the name of the device model file available in the INTELFPGAOCLSDKROOT/share/models/dm directory of the SDK and in the board spec.xml file. The used_resources element accounts for all logic outside of the kernel. The value of used_resources equals the difference between the number of adaptive logic modules (ALMs) used in final placement and the number of ALMs used for registers. You can derive this value from the Partition Statistic section of the Fitter report. Consider the following ALM categories within an example Fitter report:

; Statistic                                               ;
; Logic utilization (ALMs needed/total ALMs on device)    ;
; ALMs needed [=A-B+C]                                    ;
;   [A] ALMs used in final placement [=a+b+c+d]           ;
;     [a] ALMs used for LUT logic and registers           ;
;     [b] ALMs used for LUT logic                         ;
;     [c] ALMs used for registers                         ;
;     [d] ALMs used for memory (up to half of total ALMs) ;
;   [B] Estimate of ALMs recoverable by dense packing     ;
;   [C] Estimate of ALMs unavailable [=a+b+c+d]           ;
;     [a] Due to location constrained logic               ;
;     [b] Due to LAB-wide signal conflicts                ;
;     [c] Due to LAB input limits                         ;
;     [d] Due to virtual I/Os                             ;

The value of used_resources equals ALMs used in final placement minus ALMs used for registers (that is, [A] - [c]).

Global Memory

In the board_spec.xml file, there are separate global_mem sections for DDR and QDR memory, namely DDR and QDR, respectively. Assign DDR and QDR to the name attribute of the global_mem element. The board instance in Platform Designer (Standard) provides all of these interfaces; therefore, board is specified in the name attribute of all the interface elements within global_mem.

  • DDR

    Because DDR memory serves as the default memory for the board that s5_net targets, its address attribute begins at zero. Its config_ddr is 0x018 to match the memorg conduit used to connect to the corresponding Memory Bank Divider for DDR.

    Attention: The width and burst sizes must match the parameters in the Memory Bank Divider for DDR (memory_bank_divider_0).

  • QDR

    The QDR section begins its address attribute directly after the DDR address space stops, and its config_addr is 0x100, as indicated in the name of its memorg conduit. Because QDR provides separate read and write ports, each port is described to the Intel® FPGA SDK for OpenCL™ Offline Compiler in a separate port attribute.

    As discussed in the Pipelining section, the addpipe option is necessary because the QDR kernel interfaces are at the top of the FPGA and the rest of the kernel interface signals are along the bottom of the device.

    Attention: The width and burst sizes must match the parameters in the Memory Bank Divider for QDR (memory_bank_divider_1).


The channels section describes the send and receive Avalon®-ST channels for each of the UDP cores, for a total of four 256-bit Intel® FPGA SDK for OpenCL™ Offline Compiler channels. These channel interfaces originate in the hardware from the udp_0 instance. Therefore, udp_0 is specified in all the name attributes. The port attribute identifies the name of the Platform Designer (Standard) interface to which a channel connects. The chan_id attribute is the identifier with which the SDK user declares the channel.


The interfaces section describes kernel clocks, reset, CRA, and snoop interfaces. The Memory Bank Divider for the default memory (in this case, memory_bank_divider_0) exports the snoop interface described in the interfaces section. The width of the snoop interface should match the width of the corresponding streaming interface.


The compile section describes your Intel® Quartus® Prime project and provides the commands necessary to generate and synthesize the RTL in your design. In addition, it explicitly registers itself with the Automigration platform. If you derive your Custom Platform design from s5_net, set the platform_type parameter of the auto_migrate attribute to s5_net.