6.2.1. FPGA AI Suite IP Supported Layers and Hyperparameter Ranges
Each layer in the intermediate representation (IR) must be validated against the layer and primitive constraints. This step ensures that the design flow only progresses with operator dimensions and hyperparameters supported by the FPGA AI Suite hardware.
Validation at this stage prevents errors during architecture generation and guarantees that all layers can be synthesized into FPGA-ready IP without unsupported fallbacks.
The following table lists the hyperparameter ranges supported by key primitive layers in the FPGA AI Suite IP:
Layer / Primitive |
Hyperparameter |
Supported Range |
|---|---|---|
Fully connected |
None |
n/a |
2D Convolution |
Filter Size |
Width = [1..28] Height = [1..28] Height does not have to equal width. Default value for each is 14. |
Stride |
Maximum stride is 15 |
|
Pad |
Maximum pad is (216) - 1 |
|
| 3D Convolution | Filter Size | Width = [1..28] Height = [1..28] Depth = [1..14] Filter volume should fit into the filter cache size. |
| Stride | Maximum stride is 15. | |
| Pad | Maximum pad is (216) - 1 | |
Depthwise |
Filter Size |
Same as 2D Conv filter size Depth = 1 |
Stride |
Same as 2D Conv stride Depth = 1 |
|
Pad |
Same as 2D conv padding Depth = 1 |
|
Scale-Shift |
Scale factor |
FP16 float range |
Bias term |
FP16 float range |
|
Deconvolution / Transpose Convolution |
Filter Size |
Any – Same as convolution, and height/width can be different Depth = 1 |
Stride |
1, 2, 4, 8 (stride width == stride height) Depth = 1 |
|
Pad |
Restricted to filter_[height, width] - 1 Depth = 1 |
|
ReLU |
n/a |
n/a |
pReLU |
Scaling parameter (a) (1 per filter / conv output channel) |
float range Depth = 1 |
Leaky ReLU |
Scaling parameter (a) (1 per tensor) |
float range |
Clamp |
Limit parameters (a, b) (1 per tensor) |
float range |
| Round_Clamp | Limit parameters (a, b) (1 per tensor) | float range |
H-sigmoid |
n/a |
n/a |
H-swish |
n/a |
n/a |
| Sigmoid | n/a | FP16 float range |
| Swish | n/a | FP16 float range |
| Tanh | n/a | FP16 float range |
Max Pool |
Window Size |
up to 13x13x13 |
Pad |
1, 2 |
|
Stride |
1, 2, 3, 4 |
|
Average Pool |
Window Size |
Up to 27x27 (one less than the maximum 2D convolution size) Width == Height Depth = 1 or 2 |
Pad |
1, 2 |
|
Stride |
1, 2, 3, 4 |
|
Softmax |
Maximum Number of Channels |
4096 |
Elementwise Multiplication of feature * filter and feature * feature tensors.16 |
n/a |
Tensor sizes are expanded if necessary to support the multiplication. Depth = 1 |
| ChannelToSpace DepthToSpace PixelShuffle |
block_mode | blocks_first or blocks_last |
| block_size | 2, 4, 8 | |
| Upsampling Downsampling |
Interpolation Type | Bilinear (upsampling only) or Nearest Neighbor (upsampling and downsampling |
| Filter Size | Similar to 2D convolution except that width and height must be symmetrical for bilinear interpolation. Downsampling supports a sampling factor (ratio between an output dimension and input dimension) of only 2x or 4x. |