Programmable Devices
CPLDs, FPGAs, SoC FPGAs, Configuration, and Transceivers
20873 Discussions

Arria 10 Variable Precision DSP Blocks Floating Point Exception Handling

FvM
Valued Contributor III
295 Views

Hi,
Arria 10 documents seem not to specify behaviour of DSP Blocks in floating point modes with infinity or NaN input. In contrast, Stratix 10 DSP exception behaviour is specified in detail in "Variable Precision DSP Blocks User Guide".

A possible guess is that DSP block has the same behaviour as FP IP (see Floating-Point IP Cores User Guide, paragraph 1.5) "Input support for not-a-number (NaN), infinity, zero, and normal numbers". ModelSim simulation also suggests that DSP block is processing inf input as expected.

 

Please clarify.

Regards
Frank

Labels (1)
0 Kudos
5 Replies
Shuo_Zhang
Employee
213 Views

The DSP on Arria® 10 devices do not support denormal number input, it does not contain any exception flag signals.


And the notification: "If the input is a denormal value, the IP core forces the value to zero and treats the value as a zero before going through any operation." under Floating-Point IP Cores User Guide - 1.5. Floating-Point IP Cores General Features is suitable for the Arria 10 devices, because this document is included in the Intel® Arria® 10 FPGAs Support Collection.


0 Kudos
FvM
Valued Contributor III
192 Views

Hi,
thanks for answering. I was specifically asking for propagation of NaN and +/-inf input to Arria FP DSP blocks. It's a valid assumption that hardware DSP implements the same behaviour as FP software IP, but in my view it's still a guess. The behaviour is clearly specified in respective DSP block user manual for other devices like Stratix 10, so why not for Arria 10?

I presume Intel support has more substantial sources to answer the question than conclusions.

 

Regards
Frank

0 Kudos
Shuo_Zhang
Employee
155 Views

Hi,

The Floating-Point IP Cores are always implemented on the Variable Precision DSP Blocks. The description in Floating-Point IP says that the input not-a-number (NaN), infinity, zero, and normal numbers are supported, means when using the DSP blocks as a Floating-Point IP, these kind of inputs are supported. But other situations are not included, for example when implementing an Fixed-Point IP on DSP blocks.

The Variable Precision DSP Blocks on Stratix® 10 device are not the same as Variable Precision DSP Blocks on Arria® 10 device, the Stratix® 10 device supports the exception handling features for the floating-point arithmetic , so the document Intel® Stratix® 10 Variable Precision DSP Blocks User Guide introduces this feature in detail. It describes the handling of the input Quiet Not A Number (qNaN) , and do not contain descriptions on the input NaN.


Thanks.


Best Regards,

Shuo Zhang


0 Kudos
FvM
Valued Contributor III
128 Views

Hi,
you are referring to  the difference between qNaN (quiet NaN) and NaN in Intel documents. In my view, this is just a clarification, not a difference. When FP user manual talks about NaN results, it should write qNaN, because qNaN (NaN with mantissa MSB, respectively bit 22 set) is the required response of illegal arithmetic operations according to IEEE 754.

See also: floating point - What is the difference between quiet NaN and signaling NaN? - Stack Overflow

 

I guess, most FPGA users don't know the difference between NaN codes, interestingly even ModelSim and QuestaSim are confusing the different NaN codes. They are displaying qNaN (bit 22 set) as "NAN" and sNaN (signalling NaN, bit 22 cleared) as "QNAN", I just tried out of curiosity. Reading Stratix DSP user manual strictly, it doesn't tell how sNaN input is propagated, but I assume that the hardware follows IEEE 754 also in this point and outputs qNaN (vulgo NaN).

I believe that the shown subtile differences are another reason why we should have an explicite specification of Arria 10 DSP block exception behaviour. For my part, the issue can be closed in expectation of a complete Arria 10 DSP block specification.

Best regards
Frank

0 Kudos
Shuo_Zhang
Employee
85 Views

Hi,

The point I want to clarify is not to figure out the difference between the qNaN and the NaN.

I mean that the description which includes the qNaN in the documentation Intel® Stratix® 10 Variable Precision DSP Blocks User Guide mainly talks about the Exception Handling feature. And this feature is not supported by the Arria® 10 device, so the part Variable Precision DSP Blocks in Arria® 10 Devices in documentation does not contain any information on this.

And the handling of the NaN or other special case numbers is described in the documentation Floating-Point IP Cores User Guide, this User Guide focus on the Floating-Point IP Cores, so the description in it is suitable for all the devices which can support the FP IPs, including the Arria® 10 devices.


Thanks.


Best Regards,

Shuo


0 Kudos
Reply