はい。Quartus® II ソフトウェアでログ機能とフロア機能を同時に使用する際に、math_real VHDL パッケージを使用する際に問題が生じています。状況によっては、丸めエラーにより、不正なフロア値の計算につながる場合があります。
例えば、math_realパッケージ関数を使用して log2(8.0) を計算する場合、正しい答えは 3.0 でなければなりませんが、Quartus® II ソフトウェアの実際の計算値は 2.9999999999999999996 です。この結果がフロア化されると、結果は 3.0 ではなく 2.0 になります。
例
floor(log2(real(8))) = 2.0
インテル® Quartus® II ソフトウェアでこの問題を回避するには、次のいずれかのオプションを使用します。
- ログ計算にフロア機能が適用されている場合は、マージンのエラーを追加します。
- 例:
floor(0.000001 log2(real(8))) = 3.0
- フロア関数の代わりに整数変換関数を使用する
- 例:
integer (log2(real(8))) = 3.0
この問題は、Quartus® II ソフトウェアの今後のリリースで修正される予定です。