2011年11月
短期間・高品質・高効率のLSI設計サービス
「CtoRTLソリューション」で電子機器の組込みLSI開発をサポート
激しい開発競争が行われている電子機器の市場において、高機能の製品を早期に市場へ投入するためには、製品の中核をなすLSIをいかに短期間で開発するかということが重要なポイントになります。この短期開発を実現する手法として、電子システムレベル(ESL*1)設計が注目を集めています。ただし、ESL設計のメリットを最大限に引き出すには、LSIの開発実務をスムーズに行えるようにするために数々のノウハウが必要になります。
当社は、長年培った開発ノウハウを駆使して、ESL設計をより効率的に行う「CtoRTLソリューション」で、LSI開発の短期化を実現する各種の設計サービスを提供しています。LSIの短期開発という課題に直面されているお客さまは、ぜひ当社にお声がけください。

最先端の電子機器に搭載するLSIでは、「複雑化・大規模化への対応」と「短納期での開発」という相反する要求に応えなければなりません。そのためには、従来の設計手法が抱える問題点を解消し、革新を果たす必要があります。実際、従来からのLSIの設計手法については、3つの課題が指摘されています。
従来設計手法では、LSI設計の基になる仕様は、日本語や英語などの自然言語によって紙ベースで記述されています。 自然言語による記述は、その言語を理解できる人にとっては理解しやすいものです。しかしながら、LSIの仕様のように厳密さが要求される事柄を記述するためのものとしては、自然言語は必ずしも適切ではありません。厳密に記述しなくてもある程度意味がとれる半面、1つの記述が何通りにも解釈できるあいまいさがあることから、人によって異なる意味に理解されてしまうことがあるのです。また、条件の定義漏れなどの記述不足があっても、目視によるデザインレビューでは、それが見過ごされてしまったりすることもあります。
従来のLSI開発工程では、自然言語を用いて紙ベースで作成された仕様を基に機能の実装を行います。その際には、それぞれの機能の性質に応じ、ソフトウェアによって実装するものとハードウェアによって実装するものの2つに分けて作業が進められます。ソフトウェアはC言語で記述され、ハードウェアはHDL*2を用いてRTL*3で記述され、それぞれ別の環境で設計・検証が行われていきます。ハードウェアとソフトウェアには、紙ベースの仕様のあいまいさや定義の漏れが引き継がれているのですが、両者を一体化したシステムの総合検証は、実機の完成を待たなければ行えません(図1上段)。この段階で仕様上の不具合を原因とする問題が発覚すると、極めて大きな手戻りが生じ、時間とコストの大きな損失が発生してしまうことになるのです。

図1.従来の設計手法とESLによる設計手法
従来の設計手法では、ハードウェアの部分については、紙ベースの仕様書を基に、手作業でRTLコードを記述することになります。このRTLコードを検証する段階になって発覚する問題が非常に多いことが問題となるのです(図2)。ここで見つかる問題の多くは、仕様段階で作り込まれた問題と、RTL設計の段階で作り込まれた問題です。特に仕様段階で作り込まれた問題の場合、RTLコードの検証という下流の工程で発覚すると、非常に大きな手戻りが発生することになります。

図2.問題点が作り込まれる工程、発覚する工程
上述した課題を解決するために、従来、紙と自然言語で定義していた仕様を、C言語で記述しようという動きが進んでいます。この場合、出来上がった仕様書は、自然言語の記述よりも厳格で一義的なものとなり、従来の設計手法が抱える1つ目の課題が解決されます。
また、出来上がったものはC言語のプログラムですから、“動く仕様書”となります。言い換えれば、仕様の記述が機能の記述そのものとなります。この場合も、最終的なLSIの機能は、ソフトウェアで実現する部分とハードウェアで実現する部分に分かれますが、その設計工程は、従来のものとは大きく異なります(図1下段)。ソフトウェアの部分はC言語で記述し、ハードウェアの部分も、RTLではなく、C言語(C/C++/SystemC)で記述するので、両者を単一の環境で検証することが可能です。つまり、ソフトウェアとハードウェアの協調設計を実現することができ、設計の上流で検証が行えるので、従来の設計手法の2つ目の課題である大きな手戻りの発生を防ぐことができるのです。
さらに、この設計手法では、RTLのコードは、C言語で記述した仕様を基に高位合成によって自動生成します。すなわち、RTLコードを手作業で記述するわけではないので、RTLコードの記述段階で問題が作り込まれることがありません。すなわち、従来設計手法の3番目の課題を解決します。
このような設計手法は、一般にESL設計として知られています。仕様段階での問題点は、C言語による記述を検証することで早期に解決することができ、RTLコードについては、自動生成ツールを用いるので人的ミスを防止できることがポイントです。このような仕組みにより、LSIの開発期間を短縮することが可能になります。
ここまでに説明したとおり、ESL設計のコンセプトは非常に優れたものです。しかしながら、実際のLSI開発にこれを適用し、効率よく作業を進めるためには、さまざまなノウハウが必要になります。特に、仕様を記述したC言語のコードから、RTLのコードを生成する部分については注意が必要です。この部分については、単に必要な機能を実現できるC言語のコードを記述して、あとは高位合成ツールにすべてを任せておけばよいというわけではありません。機能、性能、品質、コスト、開発スピードといった面で、真に競争力のあるLSIを実現するには、RTL自動生成に適したC言語コードの記述方法をはじめ、さまざまな設計ノウハウが必要となるのです。
当社は、そうしたさまざまなノウハウを「CtoRTLソリューション」として提供しています。ここでは、数あるノウハウのうち、ポイントなるものをいくつかピックアップして紹介します。
図3は、CtoRTLソリューションを利用する場合の設計フローを示したものです。このフローにおいて、最も重要なポイントは、アルゴリズム設計と並列化設計を行う際に適用するプロファイリング技術・解析技術です(図4)。

図3.CtoRTLの設計フロー

図4.アルゴリズム設計と並列化設計
アルゴリズム設計のプロファイリングでは、CPUの処理時間やステップ数などを分析・解析して設計の見積もりを行います。
そして、要求仕様を満たすような適切なゲート数に落とし込めるように、実装時の論理をあらかじめ予想し、ある程度目処をつけてから作業を進めます。
このように、方針設計・問題点の早期抽出・修正を設計の上流工程で行うことにより、後工程での手戻りの発生を削減することができます。
また、C言語で記述されたプログラムは、高位合成を適用するために最適化されたものではない可能性があります。
例えば、C言語のプログラムには、無駄な変数の初期化の記述が含まれていたり、forループの中に、本来は含めるべきではないパラメータが含まれていたりすることがあります。
このような記述を高位合成ツールで処理した場合、無駄なオーバーヘッドが生じるハードウェアが生成され、パフォーマンスが低下してしまうことがあります。
あるいは、オブジェクト指向における継承のように、ソフトウェア開発の生産性を上げるための仕組みが、回路規模の増大という問題につながるケースもあります。
つまり、高位合成の対象となるC言語のプログラムは、ハードウェア化するのに適した記述となっていなければなりません。
このような問題を考慮しつつ、アルゴリズム設計のフェーズでは、ハードウェアによって実現しなければならない機能と性能の観点から最適なC言語のコードを開発します。
一方、並列化設計では、C言語で記述した機能を性能の観点からいくつかに分割し、ハードウェアで並列処理することで性能の向上を図ります。その際には、どの部分をいかに並列化することで処理性能を高めるかということについて検討し、C言語で記述したプログラムを分析して、複数の処理間やループ処理内でデータ依存を持つ部分を抽出するなどして並列化を実現していきます。また、C言語(SystemC)による記述にレイテンシやブロック間ディレイの見積もり値を追加してシミュレーションを実行し、性能要件を満足していることを確認します。このように各種解析ツールを駆使して効率的に分析・解析を行い、並列化に加えてパイプライン化を施すなどの工夫を凝らして設計を進めます。この解析技術により、要求仕様を満たす並列化処理を短期間で実現することができます。
こうしたアルゴリズムや並列化の分析は、紙ベースの仕様書ではほとんど行われていませんでした。C言語で仕様を記述することにより、このような解析が可能になります。また、このような解析を経ることで、高位合成に向けて最適化されたC言語のコードを設計することが可能になります。この作業は設計ノウハウに大きく依存するものであり、当社がCtoRTLソリューションで提供するサービスの大きな強みでもあります。
図3に示したように、C言語で記述したコードから、LSIのマスクレイアウトに至るまでには、設計データに段階的に変更を加えていくことになります。そのため、各段階で加える変更によって機能に影響が及んでいないことを確認する作業が重要になります。具体的には、各段階の設計データに対してテストデータを入力し、その出力が、C言語で記述したコードの出力(期待値)と等価であることを検証しなければなりません。
この機能等価性を検証する作業は、非常に煩雑なものです。したがって、開発期間を短縮するためには、前の工程で作成した検証用のデータを次の工程に流用できるようにして、検証の準備にかかる工数を削減したり、自動化ツールを活用した検証の仕組みを整えたりすることが重要になります。
当社のCtoRTLソリューションでは、検証データの次工程への利活用はもちろん、乱数利用テストデータ自動生成ツール「InRT(Intelligent Random Test Generator)」や、期待値自動照合ツールを活用することで、検証期間の短縮と検証品質の向上を実現できます。
映像信号処理のように非常に処理負荷の高い機能については、C言語やRTLによるシミュレーションにかかる時間が、開発期間を短縮する上での非常に大きなボトルネックとなります。特に、RTLの場合にはデバイスモデルを使用するため、シミュレーション時間は膨大なものとなります。
CtoRTLソリューションでは、FPGA*4を利用したハードウェア検証を導入することで、ソフトウェアベースのシミュレーションよりも高速に実行することが可能です。具体的には、RTLコード(C言語から高位合成によって得たRTLコードや既存のRTLコード)を、FPGAを搭載した検証用プラットフォーム「LogicBench」や「画像処理開発プラットフォーム」に実装し、ハードウェアによる検証を併用できるようにしています。
図5は、LogicBenchを利用してフルHD動画の処理時間を短縮した事例です。この例では、C言語では2520分(42時間)かかっていた処理を、LogicBenchを利用することで約50分に短縮することができました。

図5.ハードウェアを活用することで、検証時間を短縮
図6は、当社のCtoRTLソリューションを利用することで、開発期間をどのくらい短縮できるかを示した事例です。紙ベースの仕様書を基に手作業でRTLコードを作成する従来の手法(図6左側)と、CtoRTLを適用した手法(図6右側)とを比較しました。どちらの手法でも、FPGAに実装した回路規模にはほとんど差がありません。それに対し、設計工数は、従来の手法に比べてCtoRTLソリューションを利用した方が半分以下にまで削減できたことがわかります。

図6.CtoRTLによる開発期間の短縮
図7は、CtoRTLソリューションで提供する各種サービスの概要を表したものです。ここまでに説明した流れにより、LSIの設計受託サービスとして、RTLデータやマスクレイアウトデータなど、お客さまがご希望される形態で納品することが可能です。また、LSIのレベルにとどまらず、そのLSIを搭載するボードや装置の設計・製造まで、広範なサービスを提供しています。さらに、前述の「LogicBench」や「画像処理開発プラットフォーム」などの検証用プラットフォーム製品をご提供することも可能です。

図7.CtoRTLで提供する多様なサービス
また、開発期間の短縮という観点から当社のCtoRTLソリューションについて説明してきましたが、本ソリューションはソフトウェアで実現している処理の性能を向上するための手段としても活用できます。例えば、研究用途やプロトタイプ開発などにおいて、ソフトウェアで実現している処理を高速化したいといったケースがあります。そのような場合には、C言語で記述したアルゴリズム、あるいはシステム記述の一部またはすべてをRTLコードに書き換え、FPGAに実装することで高速化を図るといったことが行えます。
さらに、CtoRTLソリューションでは、設計実務を請け負うサービスだけでなく、お客さまのニーズに応じ、設計・検証環境の構築や、コンサルティング、教育などを提供するサービスも行っています。例えば、教育サービスとしては、以下のような教育講座を開設しています。
一方、伴走型設計受託サービスとしては、下記のような対応が可能です。

図8.パワーアップツールと当社保有技術
このように、CtoRTLソリューションでは、C言語ベースの設計におけるお客さまのあらゆるニーズにお応えします。ぜひ、本ソリューションの利用をご検討ください。