FPGA / ASIC 設計を加速するモデルベースデザイン (2)

  1. はじめに なぜモデルベースデザインが役に立つのか?
    1. 本記事の目的
  2. 信号処理の例:正弦波から安定した矩形波を生成する
    1. 信号処理の目的と全体概要
    2. 出力精度の劣化につながる次の要因を想定
    3. 本例題における要求仕様と前提条件
  3. 機能モデルでアルゴリズムを固める(シミュレーションで精度目標を先行確認)
    1. 早期の妥当性確認:「要求達成できる処理方式/パラメータ」を決める
    2. テスト入力の作成: 2kHz 正弦波+ノイズ+低周波変動(トレンド)
    3. 矩形波生成のアルゴリズム:ステートマシンによるヒステリシス付きコンパレーター
    4. 出力精度の定量評価:On/Off 継続時間の統計(平均・標準偏差 → Duty 比誤差)
    5. ノイズ対策:平滑化 FIR ローパスの設計と比較
    6. ノイズ対策の採用:実装コスト×精度改善のバランスから低次数のFIR設計案(15次)で十分と判断
    7. 外乱対策:DCオフセット除去(IIRハイパス=DCブロッカー設計)
    8. 最終検証:ノイズ+DCオフセット込みで Duty 比誤差 ±2.4% を確認
    9. 境界条件での抜け漏れ検出:Valid 切替時の処理内容の不備
  4. 実装モデル作成― 固定小数点化とハードウェア実装に向けた精度検証 ―
    1. なぜ固定小数点化が必要か(機能モデルから実装モデルへの移行)
    2. 固定小数点化の難所:IIR フィルターのダイナミックレンジ問題
    3. FPT アプリによる語長・小数点位置の自動最適化
    4. IIR フィルターの固定小数点設定結果と誤差評価
    5. 対応が必要なその他の内容
  5. コード生成と最適化― HDL コード生成とタイミング成立に向けた調整 ―
    1. 実装モデルから HDL コードを生成し、リソース量とタイミング要求達成を事前評価する
    2. クリティカルパスの原因特定とパイプライン最適化によるタイミング改善
  6. 等価性検証:モデル・生成 HDL コード間で振る舞いの一致を確認する検証ステップ
    1. コ・シミュレーション:モデルと生成 HDL コードの動作を直接比較する等価性検証手法
  7. この先のワークフロー:実機検証フェーズへ続く MBD ワークフローの展開
  8. MBD ワークフローが FPGA 開発の手戻りと TAT を削減する理由

はじめに なぜモデルベースデザインが役に立つのか?

シリーズ第1回では、FPGA 開発にモデルベースデザインモデルベース開発 / MBD、以下 MBD)を取り入れることで設計検証を効率化できることを解説しました。MBD の最も重要なコンセプトは、「システム全体をモデルで検証し、プロセスの上流段階で設計エラーを削減することで、後工程での手戻りリスクを低減する」という点にあります。

第2回となる本記事ではこのコンセプトを「信号処理」のアプリケーション事例に当てはめ、さらに具体的に MBD 活用による FPGA 開発効率化がどのように実現されるのか解説していきます。

本記事の目的

この記事では次のような MBD ワークフローを活用して FPGA / ASIC開発を加速できることを解説します。

  1. コードを作成して実機で動かす前に「アルゴリズムの妥当性」と「精度目標の達成」を先行して確認することができます。
  2. 自動コード生成と最適化オプションにより、モデルと実装の等価性を維持しながら効率的に開発を進めることができます。

信号処理の例:正弦波から安定した矩形波を生成する

信号処理の目的と全体概要

ここでは、信号処理の具体例として、正弦波信号から周期に同期して安定した矩形波を生成する処理を取り上げます。

例えば、周期的に振動するアクチュエーターの変位を検出するセンサー信号があるとします。そのアクチュエーターの周期に同期したタイミングパルスを生成したい場合、センサー信号の周期波形を矩形波に変換する回路が用いられます。

要求される精度によって PLL を利用するなどの様々な方式が考えられますが、今回は比較的簡単な信号処理アルゴリズムの例題として、入力される正弦波信号をコンパレーターで2値化し、その周期に同期した矩形波を生成する処理システムを題材としてみます。入力としては周波数 2kHz の正弦波を想定し、出力する矩形波の duty 比は 50% に近いほど望ましいとします。この信号にはノイズや DC オフセットなど、出力精度に悪影響をもたらす外乱が含まれているものとします。

すると、単純にコンパレーターの On/Off を出力するだけでは、その切り替わりタイミングがばらつき、出力矩形波の安定性や精度が低下してしまいます。この処理システムの要求として、それらの影響を低減する対策も一緒に検討していきます。今回は、この入力がサンプリングレート 1MSPS で取り込まれたものとして、矩形波生成の処理を FPGA で実現してみましょう。

出力精度の劣化につながる次の要因を想定

この処理システムの検討を複雑にする要因として次のようなものを考慮し、この影響を低減できる対策を講じるものとします。

  • ホワイトノイズによる矩形波出力のバタつき(バウンス)
  • 直流(DC)成分のオフセットやその時間変動トレンドによる Duty 比の不均衡

本例題における要求仕様と前提条件

検討を始める前に出力の大まかな目標精度と必要機能を次のように設定しておきます。

出力の目標精度:

  • 劣化要因を含む入力に対して、duty 比 50 ± 5% で安定であること
  • Valid 信号の On/Off で、矩形波出力の有効と停止を制御できること

なお、入力信号とその処理は基本的に 1MHz の処理レートとしますが、FPGA の動作クロックは 100MHz とします。また、この記事では、ポイントをワークフローとアルゴリズムの検討に絞った解説となるよう、主要なものを除き信号やノイズの各特性値の正確な設定までは踏み込まないことにします。

機能モデルでアルゴリズムを固める(シミュレーションで精度目標を先行確認)

早期の妥当性確認:「要求達成できる処理方式/パラメータ」を決める

MBD の最初のステップは機能モデルの作成です。機能モデルの役目は、コーディングや実機評価に進む前の早期の段階で、要求を実現できるアルゴリズムやパラメータをシミュレーションで決定することです。これにより、開発フェーズの後半になって処理方式を根本から見直す必要が生ずるといった後戻りを防ぐことができます。モデルの構成やパラメータを変更しながら、適切な処理構成を効率的に検証することができます。それでは具体的にアルゴリズムの検討を行っていきましょう。最初はシンプルなテスト入力条件と処理構成から始め、次第に複雑な悪影響の低減を盛り込んだ構成に拡張していきます。

テスト入力の作成: 2kHz 正弦波+ノイズ+低周波変動(トレンド)

最初のステップとして、入力となるテスト信号を生成するモデルを作成します。Simulink には正弦波や乱数信号などを発生するブロックが豊富に用意されています。今回は 2kHz の正弦波をセンサー信号入力として、そこにノイズを模擬するランダムノイズと、時間変動する DC オフセットを模擬する 3Hz の微小振幅正弦波を重畳してテスト信号とします。

矩形波生成のアルゴリズム:ステートマシンによるヒステリシス付きコンパレーター

Simulink には、入力を定数値と大小比較して 1 / 0 を出力するコンパレーターを模擬するブロックがありますが、ノイズを含むテスト信号をそのまま比較するだけでは、しきい値近辺の振幅の揺らぎにより、矩形波の On と Off の切り替えにバタつき(バウンス)が生じます。バウンスの発生を抑えるには、コンパレーターの Off → On 判定と、その逆の判定で適用するしきい値に差をつけて、ヒステリシス特性を持たせる方法があります。

この機能を加えるために、コンパレーター部を On と Off の2つの別々の内部状態を持つステートマシンとしてモデル化してみます。状態遷移図やフローチャートをモデリングするオプション Stateflow を用いると、視覚的にも分かりやすく ”動くステートマシン” としてモデル化ができ、この後のステップで HDL コードを生成できて便利です。

遷移条件のしきい値に適切な差をつけることでヒステリシス特性を持たせ、バウンスの発生を抑制(デバウンス)できました。 また、残りの要求機能である Valid 制御で出力を停止できる機能も忘れずに加えておきます。DC オフセットの影響はここでは一旦除外して、まずはデバウンスによりノイズだけが混入した入力信号に対して、矩形波の出力精度がどこまで要求に近づいたか確認してみます。

出力精度の定量評価:On/Off 継続時間の統計(平均・標準偏差 → Duty 比誤差)

このステートマシン(更新周期 1 / 1MHz、1usec)で On 状態と Off 状態の継続期間をカウントすれば、それぞれの期間の平均と標準偏差を求めることができます。理想的な 2kHz の入力に対しては、それぞれ 250usec で duty 比 50% の矩形波となるはずです。現時点のモデルでシミュレーションすると、バウンスは抑制できていますが、判定しきい値の近辺のノイズ状況により On/Off 状態に移行するタイミングは安定しておらず、各期間の時間幅は毎回変動しています。

On/Off 継続期間の統計値を集計すると、平均は 250usec ですが標準偏差は約 9.2usec であり、duty 比に換算すると 50 ± 5.5% です。要求の 50 ± 5% 誤差に対して、DC オフセットの影響を排除しているにもかかわらず、現時点で既に未達です。DC オフセット影響も含めた時のマージンを確保するには、ノイズ影響は別の手段でさらに緩和しておかなければなりません。これに関してはノイズ平滑化フィルター処理をこの後で別に検討することにしましょう。

ノイズ対策:平滑化 FIR ローパスの設計と比較

コンパレーターの判定タイミングをノイズに対して安定化させる必要があることが分かりました。今回の例題ではホワイトノイズとしていますが、信号のサンプリングレート 1MHz に対して処理対象の正弦波は2kHzですから、ローパスフィルターで高帯域を制限する方法でも効果はありそうです。FPGAで実装する難易度にも配慮して、比較的低次の FIR フィルターで、出力精度を改善するフィルター仕様を検討してみます。1パターン目は次数 15、カットオフ周波数 25kHz として設計したフィルター(下の周波数特性の青ライン)、もう一つは次数 31 でカットオフ周波数 10kHz のフィルター(赤ライン)です。 

この平滑化フィルターを通過させて矩形波を生成し、先程と同様に矩形波の duty 比誤差を算出します。ノイズが低減したことで On/Off 期間の継続時間は安定するようになり、要求の誤差許容値 50 ± 5% に対してどちらのフィルターも誤差 2.5% 以下へと低減しています。31 次の方が出力精度の改善効果がわずかに大きいですが、今回の検証条件においては双方に大きな差はないことがわかります。

ノイズ対策の採用:実装コスト×精度改善のバランスから低次数のFIR設計案(15次)で十分と判断

そこで、今回は実装コストとノイズ低減効果のバランスを考慮して、次数 15 で設計したフィルター仕様を採用します。なお補足ですが、平滑化フィルターでノイズが大幅に軽減された分、コンパレーターのヒステリシスの判定差も縮小させました。なるべくゼロクロス近辺にしきい値を設定する方が判定の時間精度もより安定するためです。次はいよいよ 2 つ目の劣化要因とした DC オフセットの影響を加えて、これを低減する処理アルゴリズムを検討します。 

外乱対策:DCオフセット除去(IIRハイパス=DCブロッカー設計)

入力信号に含まれるもう一つの外乱要因である DC オフセットの対策アルゴリズムを考えます。処理対象の 2kHz 正弦波と比較して振幅が小さい、周波数 3Hz の信号を重畳してオフセットが時間変動(トレンド)を持つテスト信号としました。これにより出力矩形波の On 期間と Off 期間のバランスはオフセットのレベルにより不均等になり、矩形波 duty 比の精度が低下してしまいます。

この影響を低減するために、トレンドの変化周波数 3Hz から対象信号周波数 2kHz の間に遷移帯域をもつハイパスフィルターを設計し、DC ブロッカーとして適用してみましょう。しかしこのフィルターはサンプリング周波数 1MHz に対して非常に狭い遷移帯域幅の特性が必要となります。そこで、低次でもより急峻な振幅特性を持たせることができる IIR フィルターとして設計するのが現実的です。フィルターデザイナーアプリを使うと、様々なデジタルフィルターの設計法とパラメータを対話的に指定しながら、望ましい周波数特性となるフィルター仕様を探索できます。要求精度を満足するトレンド除去性能が得られつつ、フィルター次数が低い設計チューニングを模索した結果、次のような 2 次バタワースフィルターにより 3Hz で -40dB 以上の減衰効果が得られました。

フィルターデザイナーは、設計したフィルターを次の様にSimulinkのブロックとして生成することもできます。

最終検証:ノイズ+DCオフセット込みで Duty 比誤差 ±2.4% を確認

このハイパスフィルターを DC ブロッカーとしてモデルに組み込んで、これまでの検討要素をすべて含めた矩形波出力の duty 精度をシミュレーションで検証します。最終的に duty 比誤差は ±2.4% 程度に抑えられ、要求の 50 ± 5% 以内を達成することが確認できました。

境界条件での抜け漏れ検出:Valid 切替時の処理内容の不備

MBD を活用すると、従来であれば実機検証でしか発見できなかった誤動作や不具合、要求機能の未実装を早期に検出し、手戻りを大幅に低減できます。これは、モデルに対して多様なテスト条件や入力パターンを適用し、システムの応答を網羅的に評価することで、境界条件や異常系を含む想定外の挙動を早期に把握できるためです。今回の例題では、Valid による矩形波の有効・停止機能についてはここまでに詳細な検証をしていませんでした。そこでこの Valid の制御入力パターンに変化を加え、見落としていることがないか確認してみましょう。

Valid の ‘1’, ‘0’ の切り替えをランダムなタイミングのパターンで生成するようにモデルを変更します。Valid の値に応じて矩形波出力も想定通りに制御されているように見えます。しかし、Valid の値が切り替わるタイミングの振る舞いを詳細に見ると、中途半端なパルス幅の矩形波が出力されています。はたしてこれは問題ないでしょうか? この矩形波を受け取る後段回路の担当にレビューしてもらったところ、既定より短い時間幅のパルスが入ると誤動作するという事実がここで初めて共有されたとしましょう。文章で書かれた仕様は時としてこのような認識の齟齬が起こります。もし実機検証の段階でこれが発生していたら試作機の破損につながっていたかもしれません。今回はモデル検証の段階で早期にこの抜け漏れに気づくことができました。

とはいえ、Valid の変化時に中途半端なパルス幅の出力をしない処理に変更するのは、なかなか手間がかかる修正になりそうに思えます。しかしコンパレーター部はステートマシンのチャート図で分かりやすくモデル化しておいたので、これを俯瞰してみると案外簡単に解決できることに気づけます。具体的に行った変更は図中の①~③です。

① Valid の無効 → 有効時は必ず矩形波が Off 状態の遷移から開始・復帰させる

② On 状態で Valid が無効になっても、Off 遷移タイミングまで待ってから停止させる

③ 初期化後は内部状態が安定するまでの一定期間、矩形波出力の開始も待たせる

モデルを修正したら、シミュレーションで効果を確認します。Valid の切り替わりタイミングや、初期化直後の過渡状態で、中途半端な時間幅のパルスが出力されることは無くなりました。

以上で機能モデルを用いたアルゴリズム検証が完了しました。現時点でのモデルのブロック線図は次の様になっています。ここからはいよいよこの処理構成を FPGA に実装するための実装モデルへの変換とその検証に進めていきましょう。

実装モデル作成― 固定小数点化とハードウェア実装に向けた精度検証 ―

なぜ固定小数点化が必要か(機能モデルから実装モデルへの移行)

機能モデルで動作と性能を確認した後は、HDL 実装が可能な実装モデルへと発展させます。その際に行うモデル変更内容のひとつに、モデルの固定小数点化があります。これは、FPGA などの回路をローコストかつ高速に動作させるためには演算の固定小数点化が好ましく、これを完全等価にシミュレーションするには、モデルも固定小数点化する必要があるからです。ここまで浮動小数点で行っていた演算を固定小数点にすると、それらの演算結果には誤差が生じるので、それが許容範囲に収まる語長と小数点桁の長さを検討しなければなりません。

固定小数点化の難所:IIR フィルターのダイナミックレンジ問題

この検討の難易度はアルゴリズムの内容によって変わりますが、今回の例題システムの中では、特に、IIR フィルターの検討が難しいことが知られています。これは出力がフィードバックされて内部状態に蓄積される構造のため、各箇所で必要となるダイナミックレンジの予測が付けにくいためです。この問題に対しては、固定小数点化をサポートするアプリ(FPT アプリ)を活用することで、浮動小数点モデルとの誤差を許容範囲内に収める最適な語長や小数点桁数を自動算出できます。ここではその IIR フィルター部に対する精度検討の様子を紹介します。

FPT アプリによる語長・小数点位置の自動最適化

FPT アプリは、設計対象の出力に許容誤差範囲を指定すると、シミュレーションを繰り返しながら、オーバーフローを回避しつつ許容誤差を達成する語長、小数部の長さの推奨設定を各部位ごとに提示します。図はその解析画面で、たとえば緑色のゲインブロックには非常に大きな整数値のレンジが必要となる一方、黄色の加算ブロックでは整数部は ±2 の範囲しか必要なく、むしろ小数部のごく小さな値のレンジの方が重要であることが分かります。最終的にこの IIR フィルターの入出力については 語長 21 桁、小数部 19 桁、内部の信号はそれぞれで異なる最適設定に変更されました。FPT アプリはそのワークフローの最後に、この固定小数点モデルが元の浮動小数点モデルに対して許容誤差に収まっているかの判定結果を表示してくれます。

IIR フィルターの固定小数点設定結果と誤差評価

モデルの他の平滑化フィルターやコンパレーター部分は、IIR フィルター部に比べ演算処理構成がシンプルなため誤差検討も容易です。今回はこれらの固定小数点検討の解説は割愛しますが、このようなケースではシミュレーション出力波形を double 型と比較しながら、固定小数点の語長、小数点桁数を決定できます。

このようにしてモデル全体に固定小数点を設定した実装モデルを完成させます。この時点での出力精度を最後にもう一度確認しておきましょう。同じテスト信号を入力した浮動小数点モデルと比較するとごくわずかな差はありますが、固定小数点化したモデルも要求精度(矩形波 Duty 50 ± 5%)を達成できることが確認できました。 

対応が必要なその他の内容

機能モデルから実装モデルへ変換するための対応内容として IIR フィルターの固定小数点化を取りあげましたが、FIR やコンパレーターについても同様に固定小数点化の検討が必要です。

また、固定小数点化以外にも、デバイスで効率的に処理するためのリファクタリングも必要に応じて行う場合があります。例えば同様の処理機能を行うブロックでも HDL 実装に最適化されたブロックへの置き換えや、設定パラメータの見直しなどがあります。いずれも機能モデルとの振る舞いの等価性や誤差を検証しながら実施することが大切です。

コード生成と最適化― HDL コード生成とタイミング成立に向けた調整 ―

実装モデルから HDL コードを生成し、リソース量とタイミング要求達成を事前評価する

いよいよ実装モデルから HDL コードを生成し、そのレポートを見て実際にデバイス実装が可能かどうか確認してみます。HDL Coder では具体的なターゲット FPGA デバイスを設定すると、FPGA ベンダーの合成ツールで配置配線する前にクリティカルパス遅延のおおまかな推測値を確認することもできます。今回は使用デバイスを AMD 社 Artix7 (XC7A50T, CSG325, speed -2) として、動作クロックは要求で指定された 100MHz とします。HDL コードの生成が完了すると、コード生成レポートが生成されます(このレポートで確認できる項目に関してはシリーズ第1回で解説しています)。 

使用リソースについてはボトルネックとなりやすい乗算器も 11 個のみと余裕がありそうです。一方でクリティカルパス遅延についてはタイミング要求 10ns に対して 22.78ns と 2 倍近くオーバーしています。そこで、クリティカルパス推定値を短縮できるモデル設定の見直しを行ってみましょう。

クリティカルパスの原因特定とパイプライン最適化によるタイミング改善

レポートではクリティカルパスの開始から終点までの経由ブロックのリストや、モデル内でその該当箇所をハイライト表示して確認することができます。これによると平滑化フィルター出力を開始点に、DC ブロッカーの IIR フィルターを通過してコンパレーターの入力レジスタに至るまでリタイミングすることなくデータ転送しており、レジスタ間のパスが長すぎることが分かります。

クリティカルパスを短縮するための基本的な対策は、パスの途中にリタイミング用のパイプラインレジスタを挿入していくことです。パイプラインは、モデル内に手動で Delay ブロックを挿入する方法もありますが、HDL Coder にはパイプライン最適化のオプション機能が複数用意されており、今回はこちらを活用した対策例を紹介します。 

Input/Output パイプラインは、指定したブロック/サブシステムの入力・出力に位置を固定したパイプライン挿入を行うオプションで、図中の橙色部に設定しました。別の最適化オプションである分散パイプラインは、指定したブロック/サブシステム内部の既存の Delay や、Input/Output パイプラインをその内部で移動して、クリティカルパスを低減するよう最適化します。図中の青破線矢印はその様子を模式的に表しています。(処理アルゴリズムの等価性が担保できる位置にのみ移動します)。これらのパイプライン最適化オプションでレジスタを挿入すると、モデル内の他の平行パスにも遅延が均等になるようレジスタが自動で追加されます。図中の橙破線が遅延の均等化で挿入されたレジスタを表しています。

これらのパイプライン設定後、再度、HDL コード生成するとクリティカルパス遅延は 9.6ns 程度まで短縮し、要求の 10ns を達成できる目途が立ちました。

ところで、今回のシステムは 1MHz の周期で処理するアルゴリズムですが、FPGA の動作クロックには 100MHz を指定しています。このケースでは FPGA 動作クロックの 100 回に1 回の間欠的な処理となる HDL コードを生成する必要があります。このように実際のデータ処理レートと FPGA 動作クロックレートに差がある場合、モデルの「オーバーサンプリング係数」にそのレート比を設定すると、その設計意図を反映した HDL コードを生成できます。このオーバーサンプリング係数も含め、異なる複数の処理レートをモデリングする方法については、HDLモデリングガイドラインで詳しく解説しています。今回の記事ではその詳細については省略します。

最後に、実際に FPGA 開発ツールで生成した HDL コードの論理合成と配置配線を実行し、デバイス書き込みが可能なプログラムが作成できるか確認してみましょう。Vivado 実行結果のタイミングサマリーは次の様になりました。クリティカルパスは 9.3ns となり、100MHz のクロック制約で動作可能なデザインを作成できました。

等価性検証:モデル・生成 HDL コード間で振る舞いの一致を確認する検証ステップ

MBD のワークフローでは、モデルで機能検証を行った後に、コード生成、コードや実機の検証へと進めていきます。ここで重要なのが、設計の各フェーズの間で、振る舞いの等価性を維持できているかを検証する「等価性検証」です。等価性検証の中にもそれを実施する段階や検証対象(例えば、生成したコードなのか、実機での動作なのか)によりそれぞれ異なる手法がありますが、今回はモデルと生成された HDL コードの間の振る舞いの等価性を検証する「コ・シミュレーション」についてその実施例を解説します。

コ・シミュレーション:モデルと生成 HDL コードの動作を直接比較する等価性検証手法

HDL コードのシミュレーションは、HDL シミュレーターを用いて行います。HDL Verifier が提供する「コ・シミュレーション」は、HDL シミュレーターと Simulink 間の通信をリンクし、双方の協調シミュレーションや出力波形の比較により等価性検証を効率的に行うことができる検証機能です。

図は、コ・シミュレーションの仕組みを表しており、ここでのモデル A は今回の例題システムのことです。モデルのシミュレーションと同一のテスト入力を HDL シミュレーターにも転送し、HDL シミュレーターはモデル A から生成した HDL コードに対してシミュレーションを実行します。その結果を再び Simulink へ戻し、元モデル A と HDL シミュレーターの出力結果が一致するか比較検証します。

このようなソフトウェア間の検証データ連携の枠組みを手動で構築するのは手間がかかりますが、コ・シミュレーションは、この図にある等価性検証モデルの作成、実行から一致検証までわずか数回のクリック操作で行うことができる非常に便利な機能です。実際にこれを実行してみると、コード生成用のモデルと HDL シミュレーターの双方のシミュレーション結果は完全に一致し、モデルと生成された HDL コード間での振る舞いが等価性を保っていることが確認できました。

この先のワークフロー:実機検証フェーズへ続く MBD ワークフローの展開

ここまでに、今回記事の目的であった、MBD 活用による「要求を達成するアルゴリズムの早期検証」、および「モデルと実装の等価性を維持しながらの効率的開発」について一通り確認することができました。FPGA 設計フローはこれ以降もデバイス実装、ボード書き込み・実機デバッグといった後段のプロセスを進めていきますが、ここから先の各ステップでも、これまで記事で解説してきた様な MBD ワークフローや、それをサポートするツール機能を活用して効率的に検証を進めていくことができます。例えばモデルとデバイス実装した FPGA 動作の間での等価性検証を行う「FPGA in the Loop」などが有効ですが、これらに関しては次回以降の記事で詳しく紹介する予定です。

MBD ワークフローが FPGA 開発の手戻りと TAT を削減する理由

今回は信号処理のアルゴリズム例を題材に、FPGA 設計検証に MBD ワークフローを適用するとなぜ効率向上できるのかを具体的に、実践場面がイメージできるように示してみました。通常の FPGA 開発フローでは、処理アルゴリズムのアイデアを思いついても HDL コード作成と RTL シミュレーションをしてみないとその妥当性の判断は難しいところがあります。また、入力信号や動作設定の検証パターンを幅広く確認するのが実機検証のフェーズになりがちのため、開発プロセスの後半で大きな手戻りが発生することも少なくありません。これに対して、MBD でポイントとなるコンセプトは次のようなものでした。

  • モデルを活用して設計の上流段階で要求精度を達成できるアルゴリズムを検討する
  • 同じくモデルを活用して、設計エラーや仕様の見落としを早期に検出する
  • モデルと生成した HDL コードや実機動作の間の等価性を常に維持できるようにする

このワークフロー実践により大きな手戻り発生を阻止しつつ、各ステップでの検証を効率的に実行できる数々の手法、機能を活用して開発のリードタイム(TAT)を大きく短縮することができます。

ここまで長い文章をお読みいただきありがとうございました。次回以降では画像処理やディープラーニングへの適用例も予定しております。皆様のアイデアが FPGA で動作実現するまでの期間短縮や、より付加価値の高い機能の実現にお役に立てることを願っております。

MathWorks Japan 松本 充史

タイトルとURLをコピーしました