メインコンテンツ

ネイティブ浮動小数点から生成されたコードの検証

HDL Coder™ のネイティブ浮動小数点テクノロジーによって、ターゲットに依存しない HDL コードを浮動小数点設計から生成できます。汎用 FPGA または ASIC で浮動小数点設計を合成できます。浮動小数点設計では、固定小数点設計に比べて、精度が向上し、ダイナミック レンジが高くなり、開発サイクルが短縮されます。設計に複雑な算術演算および三角関数演算がある場合は、ネイティブ浮動小数点テクノロジーを使用します。

有限ビット数で無限実数を表現すると、IEEE-754 標準で指定されている正しい値の丸め範囲で丸め誤差が生じることがあります。丸め誤差を測定するには、[relative error] または [ulp error] に基づいて浮動小数点許容誤差チェックを指定できます。これらの丸め誤差の詳細については、相対精度と ULP の考慮事項を参照してください。

許容誤差手法の指定

テストベンチを生成する前に、生成されたコードを検証する浮動小数点許容誤差チェックを指定します。

[コンフィギュレーション パラメーター] ダイアログ ボックスで許容誤差チェックを指定するには、次の手順に従います。

  1. [アプリ] タブで、[HDL Coder] を選択します。[HDL コード] タブが表示されます。

  2. [設定] をクリックします。[HDL コード生成][テストベンチ] ペインの [浮動小数点許容誤差チェックの基準] で、[相対誤差] または [ULP 誤差] を指定します。

    In model settings, in HDL Code Generation, in the Testbench pane, set Floating point tolerance check based on to ulp or relative error.

  3. [許容誤差の値] を入力し、[適用] をクリックします。[relative error] を選択すると、既定は 1e-07 の許容誤差の値になります。[ulp error] を選択すると、既定の許容誤差の値は 0 になります。詳細については、ネイティブ浮動小数点の数値に関する考慮事項を参照してください。

コマンド ラインで許容誤差手法を指定するには、次の手順を使用します。

  1. FPToleranceStrategy を使用して浮動小数点許容誤差チェック設定を指定します。

    % check for floating-point tolerance based on relative error 
    hdlset_param('sfir_single', 'FPToleranceStrategy', 'Relative'); 
    
    % check for floating-point tolerance based on the ULP error
    hdlset_param('sfir_single', 'FPToleranceStrategy', 'ULP'); 
  2. FPToleranceStrategy 設定に基づいて、FPToleranceValue を使用して許容誤差の値を入力します。

     % if using relative error, enter custom tolerance value
    hdlset_param('FP_test_16a', 'FPToleranceValue', 1e-06); 
    
    % if using ULP error, enter tolerance value greater 
    % than or equal to 1
    hdlset_param('FP_test_16a', 'FPToleranceValue', 1); 

HDL テスト ベンチを使用した生成されたコードの検証

生成されたコードを検証するために HDL テスト ベンチを生成するには、次の手順に従います。

  1. [コンフィギュレーション パラメーター] ダイアログ ボックスの [HDL コード生成][テスト ベンチ]ペインの [テスト ベンチ生成出力] で [HDL テスト ベンチ] を選択します。

  2. [構成] セクションで、[ファイル I/O を使用してテスト ベンチ データの読み取り/書き込みを行います] が有効であるか確認します。ファイル I/O ではなく定数を使用するテスト ベンチを生成するには、[ファイル I/O を使用してテスト ベンチ データの読み取り/書き込みを行います] をクリアします。

  3. [適用] をクリックし、[テスト ベンチを生成] をクリックします。

HDL テスト ベンチ生成方法の詳細については、テスト ベンチ生成を参照してください。

コシミュレーションによる生成されたコードの検証

生成されたコードを検証するコシミュレーション モデルを生成するには、次の手順に従います。

  1. [コンフィギュレーション パラメーター] ダイアログ ボックスの [HDL コード生成][テスト ベンチ] ペインの [使用するコシミュレーション モデル] で、コシミュレーション ツールを選択します。

  2. [適用] をクリックし、[テスト ベンチを生成] をクリックします。

  3. テスト ベンチの生成後、コシミュレーション モデルを保存します。モデルで、Compare サブシステムをダブルクリックします。

    Compare subsystem with Assert_Out1 block with inputs cosim and dut. Double‑click to turn off assertions and toggle scopes.

  4. Assert_Out1 ブロックをダブルクリックすると、ブロック パラメーターに、指定した [許容誤差の値] が示されます。

  5. Assert_Out1 ブロック内を確認するには、マスクをクリックします。[ulp error] に基づいて浮動小数点許容誤差チェックを指定すると、モデルに ULPChecker ブロックが表示されます。

    Cosim and dut inputs branch to the ULPChecker block. The ULPChecker output is routed to AssertEq, compared to zero, and displayed.

    ULPChecker には、数値の精度をチェックするときに HDL Coder で ULP 誤差をどのように考慮するかを示す MATLAB Function ブロックがあります。

    [relative error] に基づいて浮動小数点許容誤差チェックを指定すると、モデルには RelErrCheck ブロックが示されます。

    Cosim and dut inputs branch to the RelErrCheck block. The RelErrCheck output is routed to AssertEq, compared to zero, and displayed.

    RelerrCheck には、数値の精度をチェックするときに HDL Coder で相対誤差をどのように考慮するかを示す MATLAB Function ブロックがあります。

  6. モデルの Simulink® エディター内でシミュレーションを開始します。コシミュレーションの終わりに、compare: Out1 のスコープをチェックします。

    このスコープでは、コシミュレーション ブロックからの結果の信号と DUT からの基準信号の差が比較されます。

コシミュレーション モデルの生成も参照してください。

制限

生成されたコードを検証する場合、VHDL-2008 よりも前の IEEE® 標準を使用する構造はネイティブ浮動小数点でサポートされません。

参考

モデリング ガイドライン

関数

トピック