IP コアの生成

IP コアの生成とは?

IPコア(Intellectual Property Core)とは、FPGA、IC、LSIなどの半導体を構成する再利用可能な回路コンポーネントの設計情報です。ソフトウェア開発においてはその設計情報を「ライブラリ」と呼ぶのに対して、半導体設計では「IPコア」や省略して「IP」と呼びます。IPコアには回路の種類、有償無償、ファイルフォーマットなどにおいて様々な種類が存在します。

IPコアが利用されるようになった背景

1959年にIC(集積回路)が発明されてから、その集積度は飛躍的に拡大してきました。集積度が拡大するに伴って、設計規模も拡大するため、設計を効率化する必要があります。そのために、設計抽象度の向上(トランジスタレベル⇒ゲートレベル⇒RTL⇒C言語やブロック線図)、設計自動化などと共に、設計資産の再利用が進みました。IPコアは機能ブロックごとに設計情報をまとめておくことで、様々な製品開発で利用できます。IPコアは、開発された会社や組織内、IPコアベンダの販売網、インターネットなどを通じて流通しています。

IPコアを使用するメリット・デメリット

全ての機能を一から自社開発しようとすると開発コストは大きくなり、開発期間も増大します。IPコアを利用することでこれらを抑えることができます。また、一度自社で開発した設計データを再利用できるようにしておくと、次回以降の設計において、IPコアとしてそれを利用して開発コストと開発期間を抑えることができます。しかし、IPコアにバグがあった場合、内部を把握していないため修正が困難になったり、隠蔽化されている場合はユーザーが修正することができなかったりするデメリットがあります。

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

  • 通信とそのインターフェース(OFDM、Wireless LAN、WiMAX、UART、Ethernet、CAN、HDMI、USBなど)
  • バスとそのインターフェース(PCI、AXIなど)
  • CPU(ARM、MIPS、PowerPC、MicroBlaze、NIOSIIなど)
  • 信号処理(FIR/IIRフィルタ、FFT、暗号化/複合化、誤り訂正符号、音声画像用CODECなど)

IPコアのファイルフォーマット

  • ハードマクロ:LSIを設計するためのマスクデータ(画像データ)で提供されるため、半導体製造プロセスに依存する。これはFPGAには利用できない。標準的なファイルフォーマットにはGDSIIがある。
  • RTL:VHDLやVerilog HDLなどの設計言語で記述されているものは内部を解読してカスタマイズや、シミュレーションすることが可能。ファイル形式はASCIIファイルで、拡張子は*.vhdまたは*.v。内部を解読できないよう暗号化されたバイナリ形式のファイルもある。
  • ネットリスト:ブラックボックス化のために論理合成後のネットリストで提供されるものはカスタマイズが困難。ファイル形式がASCII形式でメーカー問わず共通化されているEDIFと、バイナリ形式でメーカー独自フォーマットのNGO、NGC、VQMなどがある。

IPコアの課金方法

  • FPGAベンダが自社のFPGA設計用に有償・無償で提供するもの
  • EDAベンダがLSI設計用に提供し、量産チップ単位で課金するもの
  • EDAベンダがLSI設計用に提供し、開発プロジェクト数に応じて課金するもの
  • 無償で提供されるもの(OpenCoresのようなフリーのIPコア掲載サイトもある)

IPコア設計用ライブラリを提供するSimulink

汎用のブロック線図シミュレータSimulinkは様々な機能をブロックライブラリとして提供しています。それらブロックライブラリを使用してユーザーが設計した「モデル」からはVHDL/Verilogコードを生成してLSIやFPGAに実装することができるため、そのライブラリはIPコアの基本構成要素とみなすこともできます。Simulinkが提供するVHDL/Verilog生成可能なライブラリには以下のようなものがあります。(一部)

  • 四則演算、三角関数、FIFO、Serializer/Deserializerなどの基本機能
  • PID Controller、Saturationなどのコントローラや不連続処理
  • FIR/IIRフィルタ、FFT/IFFTなどの信号処理機能
  • RS Encoder/Decoder、CRC Generator/Detector、Viterbi Decoderなどの誤り訂正符号
  • QAM、QPSKなどの変復調
  • 2D FIR/Medianフィルタ、Gamma Corrector、モルフォロジなどの画像処理機能

HDL CoderのIPコア生成機能

Simulinkモデルからは、オプションHDL Coderを利用して、機能ブロックにAXI4-Lite, AXI4, AXI4-Streamなどのバスインターフェースを自動的に付加したIPコアとIPコア定義ファイルを生成することができます。生成したIPコアはLSIやFPGA設計において、AXI4バスに接続される機能コンポーネントとして利用できます。これらの機能は特にAMD Zynq®、Intel® SoC FPGA用のIPコアの設計に利用されています。

参考: FPGA design and SoC codesign, Embedded Coder, HDL Coder, motor control design with Simulink, AMD Zynq support from Simulink, Intel SoC FPGA support from HDL Coder