FPGAやLSIなどの回路設計において、重要なアイテムとして注目されているIP。このIPを活用する際に知っておきたいポイントとは?
日本の半導体業界が隆盛を誇っていった80年代の後半から90年代の頭までは、IP(Intellectual Property:知的所有権)を使って設計するということはほとんどなかったと思います。当時、メーカーは自分たちの技術力に対してどこか“誇り”のようなものを持っていましたし、設計するうえで他メーカーの回路方式の特許なども絡み、“他人の作ったものを再利用する”ということに考えも及ばなかったのです(また、そのようなことに慣れていなかった気がします)。
また、当時は“大量生産”を前提にさまざまな半導体製品がアプリケーションとしては“かなり絞った(画像用LSI、音声処理用LSI、通信処理用LSIなど)形”で開発されていました。それが証拠に、その当時の電気製品の中身(基板上)の大部分は日本の半導体メーカーのチップが採用されていました(諸外国のチップを見つけたとしてもCPU(Central Processing Unit:中央演算処理装置)くらいなものでした)。
当時のシステムは、大量生産を前提に設計されていたため、画像処理、音声処理、通信処理などを得意とする半導体メーカーからチップ(いわゆるハードウェア)を購入して、それをボード上に配置して組み上げる手法が取られてきました(図1)。
その後、ボード上にディスクリート(図1のようなチップとして別々に)に組み上げられていたものが、システムLSIやSoC(System on Chip)の登場でシステムそのものをチップ内部に収められるようになりました。これにより、メーカー側はハードウェア(最終的なチップ)としてこれまで提供していればよかった物をシステムLSIやSoCに対応するために、ハードウェア部分に相当する設計データを“柔らかいソフトウェア的なデータ”として供給する必要が出てきました。
これが“IPを提供する走り”になったと思われます。
筆者は、いまから10年以上前にマイクロプロセッサやその周辺、ペリフェラルのIPを作成したことがあります。そのときのIPはすでに世の中に存在しているマイクロプロセッサやペリフェラルでした(いわゆる機能的にコンパチブルなもの)。何故すでに世の中に存在しているマイクロプロセッサなどのIPを作成したかというと、このようなIPを前述したシステムLSIやSoCの作成に利用してもらうことで、筆者が提供するIPを数多く世の中に流通させることができると考えたからです。
ところが、いざそのIPを作成して世の中に出してみるといろいろ大変なことが分かりました。
以下に、その“大変なこと”の例をいくつか紹介します。
既存のチップの中には、同じチップでもいろいろなシリーズが存在する場合があります。また、そのシリーズによっては微妙に機能が違っていたりすることもあります。このような場合、どのシリーズに合わせてIPを作ったらよいか迷いますし、それらシリーズのすべてに対応させるとなると膨大な設計量になってしまいます……。この点には非常に悩まされました。
また、既存のチップからIPを作成する際、そのチップのドキュメント(仕様書)を参考にしますが、ドキュメントに書かれていない部分を使ってシステム(システムLSIやSoCにしたい部分)が動作している場合も実際にありました。具体的には、「割り込みが掛かって割り込みルーチンに飛び、本来処理の終わりで割り込み用のreturn命令でメインルーチンに戻らなければならないのをノン・マスカブル用のreturn命令で戻っていた……」などです。
さらに、チップ自身が持つ機能的なバグをそのまま使ってシステムを作り上げていた、ということもありました……。
そして何より、前述したこれらの“バグ”や“トリッキーな使い方”を見抜くのにも非常に苦労させられました。同じチップを入手して、実機でその現象が起きるよう動作をさせて観測する必要があり、1つの現象を突き止めるだけでもものすごく大変な作業でした。
このように、“実際に作ってみないと分からない”というのが、IPを作成する難しさです。
もし、初めてIPを使う場合は、慎重に、疑い深く利用した方がよいでしょう。また、実際にIPを使用してみて意図していない動作が発生したり、うまく動作しなかったりした場合には「動かないなら私がそのバグをつぶして、IPベンダを助けてあげよう」というくらいの気概が必要だと筆者は思います。
ユーザー側の意図していない動作が発生し、IPベンダにクレームをつけたところ、IPベンダから「そちらのデータを見ないと分からないので、データをください」と切り返された、というのはよくある話です。しかし、このようにいわれてもユーザー側は機密保持の問題があるので簡単にはデータを出せません。ほとんどの場合「データは出せない。そちらで何とかしろ」とIPベンダ側に突き返すしかありません。こうなると、いつまでたっても問題は解決できません……。
では、どうしたらよいのか?
このような問題を解決するためには、IPベンダとユーザー側の“歩み寄り”が必要不可欠です。お互い「IPを良くしていこう!」というスタンスが大事なのです。
また、使用するIPに対して“どのように対価を払うのか”というIPベンダとの契約内容も重要な要素です。
一般的に、ユーザーがIPベンダへロイヤリティを支払う場合、開発したチップが売れれば売れるほどロイヤリティがIPベンダに入ります。そのため、IPベンダとしてもユーザーのサポートをしっかりと行ってくれます。しかし、売り切り契約の場合はそうもいきません。“値段は安いがサポートがほとんどない”ということも十分に考えられます。
実際どのくらい費用を掛けられるのか、プロジェクトによってさまざまだと思いますが、契約内容によってユーザーが受けられるサポートの内容も大きく変わってきますので十分に注意が必要です。
Copyright © ITmedia, Inc. All Rights Reserved.