PUPL の AXI コンポーネントが非常に有益なので、AIに頼んでどういうコンポーネントが含まれているのかサマライズしておく。
AXIコンポーネント カテゴリ別一覧表
1. 基本定義・インターフェース
| ファイル名 | 主要モジュール名 | 簡単な説明 |
|---|---|---|
| axi_pkg.sv | axi_pkg |
AXIプロトコルに必要な型定義、定数、関数を含むSystemVerilogパッケージ。バーストタイプ、応答タイプ、アドレス計算関数などを定義 |
| axi_intf.sv | AXI_BUS, AXI_LITE |
AXI4およびAXI4-LiteインターフェースのSystemVerilogインターフェース定義 |
| axi_join.sv | axi_join_intf |
2つのAXIインターフェースを結合するコネクタ |
| axi_lite_join.sv | axi_lite_join_intf |
2つのAXI-Liteインターフェースを結合 |
2. プロトコル変換
| ファイル名 | 主要モジュール名 | 簡単な説明 |
|---|---|---|
| axi_to_axi_lite.sv | axi_to_axi_lite |
AXI4+ATOPからAXI4-Liteへのコンバータ。アトミック操作とバーストをサポート |
| axi_lite_to_axi.sv | axi_lite_to_axi |
AXI4-LiteからAXI4へのアダプタ |
| axi_lite_to_apb.sv | axi_lite_to_apb |
AXI4-LiteからAPB4へのブリッジ |
3. データ幅変換
| ファイル名 | 主要モジュール名 | 簡単な説明 |
|---|---|---|
| axi_dw_converter.sv | axi_dw_converter |
AXIバスのデータ幅を変換。アップサイザーまたはダウンサイザーをインスタンス化 |
| axi_dw_downsizer.sv | axi_dw_downsizer |
データ幅ダウンサイズ変換モジュール。広いマスタを狭いスレーブに接続 |
| axi_dw_upsizer.sv | axi_dw_upsizer |
データ幅アップサイズ変換モジュール。狭いマスタを広いスレーブに接続 |
| axi_lite_dw_converter.sv | axi_lite_dw_converter |
AXI4-Liteデータ幅変換モジュール |
4. ID管理
| ファイル名 | 主要モジュール名 | 簡単な説明 |
|---|---|---|
| axi_id_prepend.sv | axi_id_prepend |
AXI IDのMSBをプレペンド/ストリップするモジュール |
| axi_id_remap.sv | axi_id_remap |
AXI IDをリマップ。広いID空間を狭いID空間にマッピング |
| axi_id_serialize.sv | axi_id_serialize |
トランザクションをシリアライズしてAXI IDを削減 |
| axi_serializer.sv | axi_serializer |
全てのAXIトランザクションを単一ID(ゼロ)にシリアライズ |
5. バースト処理
| ファイル名 | 主要モジュール名 | 簡単な説明 |
|---|---|---|
| axi_burst_splitter.sv | axi_burst_splitter |
AXI4バーストをシングルビートトランザクションに分割。ラッピングバーストとATOPsはサポートせず |
| axi_burst_splitter_gran.sv | axi_burst_splitter_gran |
AXI4バーストをより細かい粒度で分割する内部モジュール |
| axi_burst_unwrap.sv | axi_burst_unwrap |
ラッピングAXI4バーストをインクリメンティングバーストに分割 |
6. クロスバー・マルチプレクサ
| ファイル名 | 主要モジュール名 | 簡単な説明 |
|---|---|---|
| axi_xbar.sv | axi_xbar |
AXI4+ATOP完全結合クロスバー。任意の数のスレーブおよびマスタポートをサポート |
| axi_xbar_unmuxed.sv | axi_xbar_unmuxed |
AXI4+ATOPクロスバーの非多重化版。マルチプレクサなしの内部実装 |
| axi_interleaved_xbar.sv | axi_interleaved_xbar |
AXIクロスバーのインターリーブバージョン(実験的) |
| axi_lite_xbar.sv | axi_lite_xbar |
AXI4-Lite完全結合クロスバー |
| axi_xp.sv | axi_xp |
AXIクロスポイント(XP)。同型スレーブおよびマスタポートを持つクロスバー |
| axi_mux.sv | axi_mux |
AXI4マルチプレクサ。複数のスレーブポートを1つのマスタポートに多重化 |
| axi_lite_mux.sv | axi_lite_mux |
複数のAXI4-Liteスレーブポートを1つのマスタポートに多重化 |
7. デマルチプレクサ
| ファイル名 | 主要モジュール名 | 簡単な説明 |
|---|---|---|
| axi_demux.sv | axi_demux |
1つのAXI4+ATOPスレーブポートを複数のマスタポートにデマルチプレクス |
| axi_demux_simple.sv | axi_demux_simple |
axi_demuxの内部モジュールで、デマルチプレクスロジックのコアを実装 |
| axi_lite_demux.sv | axi_lite_demux |
1つのAXI4-Liteスレーブポートを複数のマスタポートにデマルチプレクス |
8. メモリインターフェース
| ファイル名 | 主要モジュール名 | 簡単な説明 |
|---|---|---|
| axi_to_mem.sv | axi_to_mem |
AXI4+ATOPスレーブモジュール。AXIバーストをメモリストリームに変換 |
| axi_to_detailed_mem.sv | axi_to_detailed_mem |
AXI4+ATOPスレーブモジュール。AXIバーストを詳細なメモリストリームに変換 |
| axi_to_mem_banked.sv | axi_to_mem_banked |
AXI4+ATOPからバンクドSRAMメモリスレーブへの変換。並列読み書きをサポート |
| axi_to_mem_interleaved.sv | axi_to_mem_interleaved |
AXI4+ATOPからSRAMメモリへの変換。読み書きの並列処理とリードバイパス機能を提供 |
| axi_to_mem_split.sv | axi_to_mem_split |
AXI4+ATOPからメモリプロトコルへの変換。リードとライトチャネルを完全に分離 |
| axi_from_mem.sv | axi_from_mem |
メモリリクエストをAXI4プロトコルに変換するプロトコルアダプタ |
| axi_lite_from_mem.sv | axi_lite_from_mem |
メモリリクエストをAXI4-Liteプロトコルに変換 |
| axi_sim_mem.sv | axi_sim_mem |
AXIスレーブポートを持つシミュレーション専用の無限メモリ |
| axi_zero_mem.sv | axi_zero_mem |
AXI4+ATOPスレーブモジュール。ゼロデータのみを返し、書き込みは無視 |
9. タイミング調整・バッファリング
| ファイル名 | 主要モジュール名 | 簡単な説明 |
|---|---|---|
| axi_cut.sv | axi_cut |
AXI4カットモジュール。入出力間の全組み合わせパスを遮断してタイミングを緩和 |
| axi_multicut.sv | axi_multicut |
複数のAXI4カットをインスタンス化。長いAXIバスのタイミングプレッシャーを緩和 |
| axi_fifo.sv | axi_fifo |
AXI4 FIFOモジュール。各チャネルにFIFOをインスタンス化してバッファリング |
| axi_fifo_delay_dyn.sv | axi_fifo_delay_dyn |
AXIバスを動的に遅延およびバッファリングするモジュール |
| axi_delayer.sv | axi_delayer |
AXIチャネルをランダムに遅延させる合成可能なモジュール |
10. クロックドメインクロッシング (CDC)
| ファイル名 | 主要モジュール名 | 簡単な説明 |
|---|---|---|
| axi_cdc.sv | axi_cdc |
AXIインターフェースのクロックドメインクロッシング(CDC)モジュール。5つのチャネルそれぞれにCDC FIFOをインスタンス化 |
| axi_cdc_dst.sv | axi_cdc_dst |
AXI CDCのデスティネーションクロックドメイン側モジュール |
| axi_cdc_src.sv | axi_cdc_src |
AXI CDCのソースクロックドメイン側モジュール |
11. トラフィック制御・フィルタリング
| ファイル名 | 主要モジュール名 | 簡単な説明 |
|---|---|---|
| axi_throttle.sv | axi_throttle |
AXI4+ATOPバスをスロットル。未処理トランザクション数を制限 |
| axi_atop_filter.sv | axi_atop_filter |
アトミック操作(ATOPs)をフィルタリングし、ATOPをサポートしないスレーブに対してSLVERRで応答 |
| axi_inval_filter.sv | axi_inval_filter |
AXI4 AWチャネルを監視し、シングルキャッシュラインの無効化リクエストを発行 |
12. チャネル分離・結合
| ファイル名 | 主要モジュール名 | 簡単な説明 |
|---|---|---|
| axi_rw_join.sv | axi_rw_join |
1つのリードスレーブと1つのライトスレーブを1つのリード/ライトマスタに結合 |
| axi_rw_split.sv | axi_rw_split |
1つのリード/ライトスレーブを1つのリードマスタと1つのライトマスタに分割 |
13. 検証・テスト
| ファイル名 | 主要モジュール名 | 簡単な説明 |
|---|---|---|
| axi_bus_compare.sv | axi_bus_compare |
2つのAXIバスチャネルを比較する合成可能なテストモジュール。FPGAベースの検証で使用 |
| axi_chan_compare.sv | axi_chan_compare |
2つのAXIチャネルを比較する非合成可能なモジュール。シミュレーション専用 |
| axi_slave_compare.sv | axi_slave_compare |
2つのAXIスレーブを比較する合成可能なテストモジュール |
| axi_test.sv | 複数のテストモジュール | AXI検証用の各種テストモジュール集(ドライバ、モニタ、ランダムマスタなど) |
| axi_dumper.sv | axi_dumper |
AXIトランザクションをログファイルに書き込むシミュレーション専用モジュール |
14. その他のユーティリティ
| ファイル名 | 主要モジュール名 | 簡単な説明 |
|---|---|---|
| axi_modify_address.sv | axi_modify_address |
AXI4バスのアドレスを変更するモジュール |
| axi_err_slv.sv | axi_err_slv |
AXIエラー応答スレーブ。常にDECERRまたはSLVERRで応答 |
| axi_lfsr.sv | axi_lfsr |
AXI4 LFSRスレーブデバイス。擬似乱数応答を生成 |
| axi_lite_lfsr.sv | axi_lite_lfsr |
AXI4-Lite LFSRスレーブデバイス。擬似乱数応答を生成 |
| axi_lite_mailbox.sv | axi_lite_mailbox |
2つのAXI4-Liteスレーブポートと割り込みを持つメールボックス |
| axi_lite_regs.sv | axi_lite_regs |
読み取り専用および保護機能を備えたAXI4-Liteレジスタ |