Interface Pragma Options - 2020.1 English

Vitis HLS Messaging (UG1448)

Document ID
UG1448
Release Date
2020-06-03
Version
2020.1 English

Description

The tool is informing the user of incorrect usage of the interface latency/depth options.

Explanation

HLS interface pragma has option "bundle" which tells the compiler to either create a port for each unique bundle name or use a single maxi adapter for all the arguments specified with the same bundle name.

In the following code sample, the function arguments, pixel, out are mapped to the same MAXI.

void cnn( int *pixel, // Input pixel
  int *weights, // Input Weight Matrix
  int *out, // Output pixel
  ... // Other input or Output ports
            
#pragma HLS INTERFACE m_axi port=pixel offset=slave bundle=gmem
#pragma HLS INTERFACE m_axi port=weights offset=slave bundle=gmem1
#pragma HLS INTERFACE m_axi port=out offset=slave bundle=gmem

The compiler expects the kernel arguments mapped to the same bundle has the same interface options such as latency, depth, max_outstanding_request. If different the compiler won't be able to figure out and will ignore the user-specified and resort to the default interface settings.

For the complete list take a look at this link. Here is an example where the kernel arguments "pixel" and "out" have different interface options.

void cnn( int *pixel, // Input pixel
  int *weights, // Input Weight Matrix
  int *out, // Output pixel
  ... // Other input or Output ports
            
#pragma HLS INTERFACE m_axi port=pixel offset=slave bundle=gmem latency = 8
#pragma HLS INTERFACE m_axi port=weights offset=slave bundle=gmem1
#pragma HLS INTERFACE m_axi port=out offset=slave bundle=gmem latency = 3

Solution

The compiler expects all the kernel arguments mapped to the same bundle to have the same interface options as shown below. For the warning message either have the same interface options or map the kernel arguments to different bundle.


void cnn( int *pixel, // Input pixel
  int *weights, // Input Weight Matrix
  int *out, // Output pixel
  ... // Other input or Output ports
            
#pragma HLS INTERFACE m_axi port=pixel offset=slave bundle=gmem latency = 8
#pragma HLS INTERFACE m_axi port=weights offset=slave bundle=gmem1
#pragma HLS INTERFACE m_axi port=out offset=slave bundle=gmem latency = 8