PCI-Express コアを作成すると生成される “ICM” というフォルダは何に使用するのでしょうか? ユーザ・アプリケーション層とトランザクション層との間にできるインタフェースという認識ですが、Avalon-ST インタフェースとの違いは何でしょうか
PCI Express
ICM (Incremental Compile Module) は PCIe コアを "Descriptor/Data" で構成した場合、このインタフェースを Avalon-ST インタフェースに置き換える際に使用します。
下記 URL リンクのアルテラ資料 PCI Express Compiler User Guide の p.330 "Figure C-2 ICM Block Diagram" をご参照ください。
https://www.altera.co.jp/ja_JP/pdfs/literature/ug/ug_pci_express.pdf
このブロック・ダイアグラムでは、ユーザ・アプリケーションのインタフェースは Streaming インタフェースとなっています。 この間に ICM ブロックを挿入することで、PCIe トランザクション・レイヤとのインタフェースを Descriptor/Data インタフェースに変換しています。 しかし、ICM はあくまでも下位互換のためだけに使用されますので、新規のデザインでは、PCIe Core は Avalon-ST で構成することをアルテラ社は推奨しています。
また各信号の意味、タイミング・ダイアグラムについてはリンク先の資料の "C. Incremental Compile Module for Descriptor/Data Examples" をご参照ください。