Developer Guide

Intel oneAPI DPC++/C++ Compiler Handbook for Intel FPGAs

ID 785441
Date 5/08/2024
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

FPGA Memory Attributes

The following table summarizes memory attributes:

FPGA Memory Attributes

Attribute

Description

Example

bank_bits

Specifies that the local memory addresses should use bits for bank selection.

// Array is implemented with 4 banks where // bits 6 and 5 of the memory word address // are used to select between the banks [[intel::bank_bits(6,5)]] int array[128];
bankwidth

Specifies that the memory implementing the variable or array must have memory banks of a defined width.

// Each memory bank is 8 bytes (64-bits) wide [[intel::bankwidth(8)]] int array[128];
doublepump

Specifies that the memory implementing the variable, or an array must be clocked at twice the rate as the kernel accessing it.

// Array is implemented in a memory that operates at // twice the clock frequency of the kernel [[intel::doublepump, bankwidth(128)]] int array[128];
force_pow2_depth

Specifies that the memory implementing the variable or array has a power-of-2 depth.

// array1 is implemented in a memory with depth 1536 [[intel::force_pow2_depth(0)]] int array1[1536];
max_replicates

Specifies that the memory implementing the variable, or an array has no more than the specified number of replicates to enable simultaneous accesses from the datapath.

// Array is implemented in a memory with maximum four // replicates [[intel::max_replicates(4)]] int array[128];