浮点运算存在运算精度问题,统一个算法,放在不同的实现环境,结果会不同。
在C++代码中, hls有两个头文件
<cmath> 这个放在testbench中
<hls_math.h> 这个文件放在 要编译成STL代码的cpp文件中
这样可以保证在simulation的时候, hls_math中的数学函数返回的结果与STL后返回的精度一致。
否者,如果都用cmath,会导致C-simulation的时候结果一致,但在co-simulation 的时候结果不一致 。
*2或/2 的幂次, 在hls中被优化为左移或右移操作, 因此 /2 比*0.5的电路更高校