IPコア(あいぴーコア、: intellectual property core)とは、LSIを構成するための部分的な回路情報で、特に機能単位でまとめられているものを指す。単にIPと呼ぶ場合もある。

ASIC開発やプログラマブルロジックデバイスを用いた開発の際に利用する。

1990年代以降、LSIの開発手法としてハードウェア記述言語による開発が盛んになり、開発効率の向上が求められた。 そこで、既存開発製品の回路を、機能ブロック単位で再利用可能な形にまとめ、他の製品でも利用可な部分はそれを流用する方法が用いられた。 更に、この再利用可能な機能ブロックは、その開発者だけでなく、他の開発者や他の会社との間でもやり取りが行われるようになり、 新しいビジネスモデルが発達した。 IPコアベンダは、LSIを開発するためのIPコアを提供し、LSI開発側はIPコアベンダに使用料を支払う契約を結ぶのが一般的である。

IPとは元々は知的財産という意味だが、半導体業界において回路情報は重要な技術製品であり、形のない商品としてIPと呼ばれるようになった。

IPコアの形態での分類

編集

LSIの集積規模が飛躍的に向上したことを背景に、大規模なIPコアも開発されるようになった。 またプログラマブルロジックも、規模、速度ともに実用レベルに達すると、FPGAをメインのターゲットにしたIPコアも登場した。

  • ハードマクロ
    マスクに相当する画像データとして提供される。シミュレーション用に等価なゲートモデルや、ビヘイビアモデルも同時に提供されることが多い。
    半導体プロセス技術に依存する。
    ソフトマクロに比べ、性能、面積の面で優れる。
    スタンダードセルでは実現できない回路(アナログ回路など)も含むことができる。
    プログラマブルロジックデバイスでは、利用できない。ただし、FPGA等にあらかじめ埋め込まれているハードマクロが存在する場合もある。
    ストラクチャードASICでは、あらかじめ埋め込まれているハードマクロが存在する場合もある。
    実チップになった実績があるものが多く、十分検証されている可能性が高い。
  • ソフトマクロ
    • RTLの形で提供されるもの。
      利用者の手元でターゲットのプロセス用に論理合成すればよく、半導体プロセス技術に依存しない。
      回路の構成がわかるため、トラブル発生時に解析が容易になる。
      RTLレベルでカスタマイズすることが可能(商用IPコアの場合、サポートが受けられなくなる可能性もある)。
    • ゲートレベルに論理合成されたネットリストの形のもの。
      提供側がオリジナルのRTLを公開したくない場合に、ブラックボックスとして提供される。
      IPコア内部の変更は基本的にできない。
    • RTLより上位のビヘイビア記述の形で提供されるものもある。
  • プロセッサコアの場合をソフトプロセッサという

また、IPコアベンダとして、商用のもの以外に、フリーで配布されているものもある[1]

IPコアを利用する長所・短所

編集

長所

  • IPコアを利用することで、全てを始めから開発するより開発期間を短縮できる。
  • 半導体プロセス技術に依存しない。(RTLで提供されるソフトマクロの場合)

短所

  • 品質/信頼性 IPコアによっては詳細な設計仕様/検証結果がついていない場合もある。詳細な仕様や、どこまで正確に検証されているかを、よく確認する必要がある。
  • 接続性 既存の回路にIPコアを組み合わせる場合、仕様の確認ミスから接続部分で問題が起こりやすい。
  • ハードマクロのIPコアの場合、ターゲットの半導体プロセス技術以外では利用できない。
  • 高額なライセンスフィ IPコアを購入してライセンス契約をする際は、導入時に契約金を払う場合と、量産製品ひとつ毎に契約金を払う場合とがある。契約形態によってはそれら両方の場合もある。トラブル時のサポート体制なども含め、かえってコストがかかる場合もありうるため、商用IPコアを利用する場合はよく検討する必要がある。

IPコアとして提供されている機能の例

編集

デジタル回路のIPコアが一般的であるが、アナログ回路のIPコアも存在する。

  • アナログ回路
    基本的に半導体プロセス技術依存
    • ADDA変換
    • オペアンプ
    • PLLクロック、タイミング
    • 電源
    • 大電力ドライバ (モータドライバ)
    • センサ (加速度、圧力、光/画像、温度、磁気、電流/電圧、他)

主な用途

編集
  • ASIC
  • FPGACPLDなどのプログラマブルロジックデバイス

関連項目

編集

脚注

編集
  1. ^ Home :: OpenCores”. 2012年4月2日閲覧。