開発期間短縮の有効な手法の1つとして、高位な抽象度によるESL(Electronics System Level)設計メソドロジが実用化に向かっているようです。今後、ESLツールベンダ各社からFPGAをターゲットにした提案やサポートが出てくることも期待されます。ESL設計手法についての紹介は別の機会に譲り、本稿ではFPGAデバイスレベルにおける開発期間の短縮化について述べたいと思います。しかし、ESLにもFPGAデバイスレベルにも共通の重要なキーワードがあります。
それは、「モジュラー開発」です。
モジュラー開発手法は、機能を複数のモジュールとして分割し、それぞれを個別に設計、テストして、最終的に組み上げる開発の手法です。ソフトウェア開発では、当然の手法といえるでしょう。一方、ハードウェア開発の方でも、例えばASIC開発においては集積度が大きくなり、ゲートアレイからセルベースへと物理構造の変化が顕著になった15年ほど前から必須の考え方になってきたといえます。FPGAの場合、従来はASICと比較すると主に集積度や機能の複雑度が小さかったため、今日でもモジュラー開発の手法が浸透し切れているとはいえないかもしれません。
モジュラー開発の手法では、各モジュールができるだけ独立性を高くすることが、そのメリットを最大化するために有効です。つまり、モジュールの内部(実装)とインターフェイスを分離することです。これにより、開発期間の短縮に対してさまざまな恩恵を受けることができます。
ここで、開発環境・開発ソフトウェアにおける、2つの重要な要素があります。
1つは“インターフェイスの共通化”です。モジュールに分けた設計を行っている設計者の方々であっても、インターフェイスを共通化するところまではなかなか実践できないのではないでしょうか。もし、個人的にそのような手法を取り入れているとしても、グループ全体、会社全体にまで展開するのはチャレンジが多いと思います。このような部分にも開発ソフトウェアツールによる支援が必要です。アルテラのQuartus IIでは、バス標準化&IP再利用のために「SOPC Builder」というソフトウェアツールを提供しています。
もう1つの重要な要素は、“インクリメンタルな設計フロー”です。モジュールごとに独立して設計・検証・変更を行った場合に、トップレベル(全体)ですべてを再コンパイルしなければならないと、、結局は大変長いコンパイル時間を費やさなければなりません。モジュールごとにタイミング設計が収束していても、トップレベルの実装の際にそれを維持することができなければ、全体でタイミング検証をやり直さなければなりません。このような問題を排除するためにインクリメンタル・コンパイルという機能が必要になります。
図3は「トップダウン・アプローチ」を示しています。トップレベルのデザインを進めながら、変更が必要になったモジュール(パーティション)のみを再コンパイルすることにより、コンパイル時間を短縮します。
一方、図4は「ボトムアップ・アプローチ」です。最初の段階からモジュールごとに独立してデザインを進め、各モジュールのデザインが終了した後、トップレベルにインポート(統合)する設計フローです。これは「チームベース・デザイン」と呼ばれるものです。チームベースでデザインすることにより、リソースの負荷分散ができ、開発期間を短縮することが可能になります。
アルテラのQuartus IIではシンセシス(RTL合成)、配置配線の両方に対してインクリメンタル・コンパイル機能を利用できます。また、前述したトップダウン・アプローチ、ボトムアップ・アプローチの両方を取ることができます。興味のある方は、こちらで具体的な手法も紹介しています。
前回と今回の2回にわたって、現在のFPGA開発環境を紹介してきました。FPGAデザインを容易にしてくれる機能、失敗のないデザイン完了を助ける機能など、この場ではすべてを紹介し切れないほど機能がたくさんあります。本稿をきっかけに「いま」のFPGAを知っていただければ幸いです。(次回に続く)
Copyright © ITmedia, Inc. All Rights Reserved.