Xilinx FPGA用のIPコアをNGCファイルとして(ブラックボックスとして)配布できるようにする

XilinxのISEでは、NGCという形式のIPコアを取り込むことができます。IPコアをNGCファイルとして配布すると、C言語やC++言語の.o、Javaの.jarのような感覚でライブラリとして配布できます。ソースコードは配布できないが、IPコアの機能はみなさんのコードに取り込んで使ってもらいたい場合には、自分で記述したVHDL/VerilogをNGCにコンパイルして渡すとよいでしょう。

で、このNGCファイルですが、検索しても作成方法が全然出てこなくて困っていたら、Eli Billauerさんが自身のページで説明してくれていました (thank you for very nice summary of the NGC create procedure!!)

NGCファイルの作成方法(IPコアのブラックボックスライブラリ化)

日本語で手順をまとめると、

  1. ISEで新規プロジェクト作成。たとえばSDRAMコントローラをライブラリとして配布したいなら、SDRAMController等のプロジェクト名とする。
  2. Hierarchyサブウインドウで右クリック→Add Fileを選んで、NGCにしたいVHDLファイルをプロジェクトに追加。
  3. ProcessサブウインドウでSynthesisを右クリック→Properties→Xilinx Specific Optionsを開く。
  4. Add I/O Buffersのチェックを外す。
  5. Number of Clock Buffersを0にする。
  6. Pack I/O Registers into IOBsをNoにする。
  7. OKをクリックして設定を反映。
  8. Synthesisを実行(ダブルクリック)。
  9. プロジェクトフォルダ内に、NGCファイルが生成される。

以下はSynthesis Optionの画面の例。


NGCファイル(ブラックボックスライブラリ)の使用方法

  1. entity情報を、テキストファイルとして配布。
  2. プロジェクトにAdd。
  3. 使用するソースコード内で、component宣言、instance化を実施(これで、Hierarchy内でxxx.ngcがloadされる)。
  4. 普通にコンパイル。