ソフトウェアでは当たり前となっているCI/CD (継続的インテグレーション)ですが、FPGAやASICの開発現場ではまだまだ浸透していないのが実態です。FPGA / ASIC開発にも継続的インテグレーションを導入することで、ビルドからテスト・デプロイまでを自動化し、また設計や検証の一貫性ロスを無くし、開発のスピードと効率性を高めることができます。

 

LSI開発におけるCIの必要性

LSI開発には、ソフトウェア開発よりもCIによって受けられる恩恵が大きい要素がいくつかあります。
一つは、ソフトウェアよりも設計と検証(テスト)の視点を分離することの重要性が高い点。もう一つは、シミュレーション時間や論理合成が非常に長くなるケースがある点。そして、設計行為から得られる結果(論理合成後のタイミングやリソース使用量)を、設計者が予測しづらく、元来トレーサビリティが低い点などです。
右図で示すように、コード(検証コード)更新後のシミュレーションから実機テストまで全て自動化することで、確実なリグレッションテストを実施し、設計や検証の漏れを無くします。また同時に論理合成結果やパフォーマンス結果などを蓄積することで、例えばコードの修正前後で生成された回路の比較を取ることで合成後の回路への影響を読み取ることを容易にしたり、不具合時に過去に生成された回路を再実行することで、デバッグを容易にします。

 
 

CIの構成例

CIを実行するサーバーにアクセラレータ型のFPGAを設置し、常時稼働させます。
RTL Simulationには、Verilatorといったライセンス不要のオープンソースを利用することも可能です。

 
 

CI/CD環境の構築

Gitリポジトリ、RunnerといったGit環境から、FPGAビルド環境、FPGAビルドスクリプト、そして、EthernetもしくはPCI-Expressを経由してテストベクトルをテスト対象回路に入出力するモジュールなど、必要なコンポーネントの提供を含め、CIの立ち上げを支援いたします。
CDに関しては、ホストサーバーにFPGAをアドオンするタイプのシステム運用時に適用します。