シグリードがストレージ デバイス向けの FPGA/ASIC 信号処理システムの開発期間を短縮

「設計を実行可能な仕様としてシミュレーション、デバッグ、検証し、その後、初期 HDL を非常に短時間で生成できるため、MATLAB、Simulink、および HDL Coder は当社にとって必要不可欠なツールです」

課題

マス ストレージ デバイス用 FPGA/ASIC 信号処理コンポーネントの開発を加速すること

ソリューション

MATLAB、Simulink、HDL Coder を使用して、アルゴリズムの開発、設計選択肢の評価、HDL コードの自動生成を実行

結果

  • 開発期間を約 75% 短縮
  • 設計の修正を数時間で完了
  • エンジニアリングの生産性を向上

シグリードの SSD コントローラーの最初のエンジニアリング サンプル

ソリッド ステート ドライブ (SSD) や ハード ディスク ドライブ (HDD) など、現在のストレージ デバイスは高速のデータ暗号化と誤り訂正機能を備えた高度な信号処理サブシステムを必要とします。多くの企業では、これらのサブシステムのために C や C++ 言語で初期アルゴリズムを開発しています。その後これらのアルゴリズムは、FPGA または ASIC 実装のための HDL コードの作成と検証の際に、リファレンス モデルとして使用されます。リファレンス用の C アルゴリズムを HDL に変換するには、エンジニアが C 言語の逐次処理的な動作をハードウェアの並列的動作にマッピングしなければならず、時間がかかる上に間違いも多くなります。このプロセスが、設計の繰り返し作業を非常に困難にしています。

株式会社シグリードでは、MATLAB® と Simulink® でモデルベース デザインを使用することで、アルゴリズム開発と HDL 実装の間のギャップを埋めています。同社の社長兼 CEO である江角淳氏は次のように述べています。「アルゴリズム担当エンジニアが設計したリファレンス モデルから、ハードウェア担当エンジニアがHDL や RTLを設計し、その実装に移行するのは、それぞれのエンジニアが非常に異なるバックグラウンドをもっているため、困難な場合があります。しかし MATLAB と Simulink を利用すれば、アルゴリズム担当エンジニアが自分で HDL を生成することができます。これによって開発が加速され、ハードウェア担当エンジニアは速度や面積の最適化などの他のより重要な設計作業に集中することができます」

課題

シグリードでは、FPGA実装のためのHDD 用誤り訂正IP および SSD 用 AES スクランブリング ASIC という、中核となる 2 つの信号処理システムの開発期間を短縮したいと考えていました。

HDD プロジェクトでは、FPGA の実装が可能な限りコンパクトなものであることを確認するために、複数の設計を評価する必要がありました。一方、SSD プロジェクトでは、6.4 Gbps というコンポーネントの要求仕様を満たすために、リアルタイムのパフォーマンスとタイミングが非常に重要でした。

C 言語でリファレンス モデルを開発してから HDL コードを手書きで作成するという従来のシグリードの開発方式では、どちらのプロジェクトも非常に困難なものでした。江角氏は次のように述べています。「当社のシステムには複雑な信号フローとフィードバック ループが含まれており、C 言語で記述するのは困難です。エンジニアを増員したとしても、人数が増えるとコミュニケーションが複雑になりますから、プロジェクトを予定通りに終えることはできなかったでしょう」

以前のプロジェクトでは、リファレンス モデルの結果と HDL の結果の違いの原因を突き止めるのは困難でした。また、ビット誤り率のようなシステムレベルの性能指標によって検証するのも難題でした。

ソリューション

シグリードでは、エンジニアが MATLAB、 Simulink、および HDL Coder™ を活用して、モデリング、シミュレーション、および検証を行い、SSD や HDD システムの信号処理コンポーネントのための合成可能な HDL コードを自動生成しました。

HDD 用の信号処理コンポーネントでは、エンジニアが Simulink を利用して複数の設計のモデリングを行いました。モデリングされた設計の中には、ドライブ ヘッドからサンプルされた信号をデータに組み立てる、並列アーキテクチャも含まれていました。

Simulink モデルはプロジェクトを通じて実行可能な仕様として機能しました。また同モデルによって、シミュレーションによる初期設計の機能性を検証することができました。

次に Fixed-Point Designer™ を使用して、設計が浮動小数点から固定小数点に変換されました。その後、固定小数点データ型が最適化されて、サイクルアキュレートなモデルが完成されました。

さらに HDL Coder を使用して固定小数点の Simulink モデルからビットトルゥーで合成可能な VHDL® コードが生成され、Xilinx® Spartan®-6 FPGA に実装されました。この FPGA 実装の出力をサイクルアキュレートな Simulink モデルからの出力と比較して、FPGA 実装が検証されました。

SSD コントローラーに対しては、主要な暗号化アルゴリズムがMATLABによって開発され、テストされました。次に、このアルゴリズムはMATLAB Function ブロックを使用してSimulink システム モデルに組み込まれました。

その後は、HDD のプロジェクトと同様のワークフローで作業が進められました。HDL Coder により HDL コードが生成され、シグリードの HDL シミュレーターでコードのシミュレーションが行われました。

シグリードでは両方のプロジェクトをスケジュール通りに完了しました。SSD コントローラー用のASIC設計 は、エンジニアリング サンプルの製造のためにファウンドリーに提出されました。HDD 用の FPGA 向けIPはすでに量産製品に適用されています。

結果

  • 開発期間を約 75% 短縮. 江角氏は次のように述べています。「検証済みのサイクルアキュレートな Simulink モデルから HDL コードを自動生成することで、HDL を手書きで作成してから機能性を検証するのに要する時間を省くことができました。HDD プロジェクトは最長 4 か月かかるだろうと見積もっていたのですが、1 か月以内で完了できました。また、以前のやり方では 2 か月はかかっていたであろう SSD のプロジェクトも、1 週間で完了しました」
  • 設計の修正を数時間で完了. 江角氏は次のように述べています。「MATLAB、 Simulink、 HDL Coder を利用することで、設計の繰り返し作業を大幅に加速できました。SSD のプロジェクトで、並列化によってパフォーマンスを向上するように設計を修正した際に要した時間は、わずか 3 時間でした。以前の方法では、3 日間はかかっていたでしょう」
  • エンジニアリングの生産性を向上. 江角氏は次のように述べています。「MATLAB と Simulink のおかげで、アルゴリズムの開発や設計選択肢の検討など、生産的なエンジニアリングの作業により多くの時間を割くことができました。SSD の複雑な信号処理アルゴリズムはわずか 2 名のエンジニアで開発され、設計はHDL Coder を使用して彼ら自身により RTL に実装されました」