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コアのブラックボックスライブラリ化)
日本語で手順をまとめると、
- ISEで新規プロジェクト作成。たとえばSDRAMコントローラをライブラリとして配布したいなら、SDRAMController等のプロジェクト名とする。
- Hierarchyサブウインドウで右クリック→Add Fileを選んで、NGCにしたいVHDLファイルをプロジェクトに追加。
- ProcessサブウインドウでSynthesisを右クリック→Properties→Xilinx Specific Optionsを開く。
- Add I/O Buffersのチェックを外す。
- Number of Clock Buffersを0にする。
- Pack I/O Registers into IOBsをNoにする。
- OKをクリックして設定を反映。
- Synthesisを実行(ダブルクリック)。
- プロジェクトフォルダ内に、NGCファイルが生成される。
以下はSynthesis Optionの画面の例。
NGCファイル(ブラックボックスライブラリ)の使用方法
- entity情報を、テキストファイルとして配布。
- プロジェクトにAdd。
- 使用するソースコード内で、component宣言、instance化を実施(これで、Hierarchy内でxxx.ngcがloadされる)。
- 普通にコンパイル。