はじめに
このドキュメントはAIに読み込ませてコードを自動生成することを目標としています。
AXIバスの設計に必要なパイプライン動作の基本的な設計手法について複数回に分けてご紹介します。
2025年7月現在ではパイプライン動作する回路の設計ルールを説明した指南書やAIが学習するための適切な教師データが少なく、パイプライン動作するはずのAXIバスの回路をデバッグさせると逐次動作に変換されてしまいます。これはパイプラインの回路の基本原理と解析の仕方を解説した適切な教師データが無いということに起因しています。設計の仕方を解説してAIにAXIバスに接続可能なコンポーネントを設計させる試みを紹介していきます。
ドキュメント一覧
第1回:パイプラインの動作原理
- 基本的なパイプライン動作とReady/Validハンドシェイクの仕組み
- 帰納法的設計によるパイプライン回路の設計手法
第2回:Ready信号とデータにFFを1段挿入する回路
- パイプラインのデータとReadyの基本ルールを守りながらReady信号とデータにFFを1段挿入する回路
- 総当たり探索法によるパイプライン挿入の最適化
第3回:パイプライン動作を確認するテストベンチ
- パイプライン回路の動作を確実に検証するためのテストベンチ
- デルタ遅延問題の回避とパイプライン動作の検証
第4回:ペイロードがN倍に増えるパイプラインAXIリードアドレスチャネルの模擬
- ペイロード増幅パイプラインの設計と実装
- バーストリードパイプラインモジュールとテストベンチの実装
第5回:Payloadが合流するパイプラインAXIライトデータチャネルの模擬
- ペイロードが合流するパイプラインの設計と実装
- バーストライトパイプラインモジュールとテストベンチの実装
- 本質要素抽象化によるパイプライン設計の簡素化
第6回:統合ステート管理によるリードライトパイプラインの実装
- リード・ライト統合制御パイプラインの設計と実装
- 共通ステートマシンによる優先度制御
- バーストリードライトパイプラインモジュールとテストベンチの実装
- 条件網羅法と条件刈込法によるステート遷移の最適化
第7回:AXI4仕様のシンプルデュアルポートRAM
- AXI4準拠シンプルデュアルポートRAMの設計と実装
- リード・ライト独立パイプラインによる並列処理
- 3種類のバーストモード(FIXED、INCR、WRAP)のサポート
- ハルシネーション・ポチョムキン理解・認知バイアス除去
- マイクロデバッグ・スパゲティコード化
- 御破算やりなおし法
第8回:AXI4バス・テストベンチの本質要素抽象化設計
- AXI4バス・テストベンチの本質要素の抽象化と体系化
- 6つの基本要素(パラメータ設定系、ハードウェア制御系、テストデータ生成・制御系、データ検証系、プロトコル検証系、監視・ログ系)の定義
- 重み付き乱数発生系によるテストパターンの最適化
- 包括的なテストベンチ設計手法の確立
第9回:AXI4バス・テストベンチの機能分類
- 第8回で作成したコードの機能毎のファイル分割と汎用化
- 5つの機能系(共通定義・パラメータ系、テスト刺激生成系、検証・期待値生成系、ログ・監視系、ユーティリティ関数系)への分類
- 段階的なファイル分割実装によるリスク最小化
- include文による依存関係管理とシンプルな構造化
第10回:AXI4仕様のシンプルシングルポートRAM
- AXI4準拠シンプルシングルポートRAMの設計と実装
- リード・ライト統合制御パイプラインによる排他アクセス制御
- 5段階ステートマシン(IDLE、R_NLAST、R_LAST、W_NLAST、W_LAST)による優先度制御
第11回:AXI4バス・テストベンチのリファクタリング
- 拡張ストローブ制御: パラメータによるストローブ生成戦略の制御
- 乱数生成の高度化: 重み付き選択とストローブ戦略の組み合わせ
- テストカバレッジの向上: 様々なストローブパターンのテスト
- 実装の保守性向上: 設定による動作の制御とエラー検出の強化
第12回:AXI4 SIZEとWRAPの仕様
- AXI4プロトコルのSIZE制約とWRAPバーストの詳細仕様
- IHI0022B_AMBAaxi公式仕様書に基づく正確な解説
- SIZE制約(転送サイズとバス幅の関係)の実装要件
- WRAPバーストのアドレス計算と境界制約の詳細
- 実装上の注意点とテスト戦略(size_strategy)の解説
第13回:AXI4バス・テストベンチのバイトアクセス検証機能
- 従来手法の問題点:READ/WRITE両方でアドレス計算を間違えた場合の検出困難性
- 新しい検証手法:バイト単位での個別検証による正確性確認
- バイト検証制御モジュールとフェーズ制御統合
- アドレス計算の正確性をより厳密に検証する手法の実装
今後の予定
- 第14回以降:バス幅変換・クロック周波数変換コンポーネント(準備中)
ルール集
AIによる一貫性のあるドキュメント作成のためのルール集
開発手法・デバッグ手法
- インクリメント法
- 2分探索法
- ランダム法
- 総当たり探索法
- 条件網羅法
- 帰納法
- 境界条件法
- 偏微分調査法
- 条件刈込法
- 御破算やりなおし法
- マイクロデバッグ・スパゲティコード化
- ハルシネーション・ポチョムキン理解・認知バイアス除去
- 本質要素抽象化
- 機能分類によるファイル分割
- 段階的リファクタリング
- include文による依存関係管理
ドキュメント作成方針
このドキュメントはパイプライン動作のハードウェア設計をシンプル・単純化するためのノウハウを記載しています。以下の方針に従って作成しています:
- シンプル性: 必要最小限の情報のみを記載
- 短縮性: 冗長な説明を避け、要点を簡潔に表現
- 理解しやすさ: 人間とAIの両方が理解できる明確な記述
- 実用性: 実際の設計で使用できる実践的な内容
- 継承性: 将来の設計者やAIに技術を伝承
- 国際化: 英語コメントと統一された用語による国際的な理解
対象読者
- ハードウェア設計者
- AIによるコード生成の学習データとして
- AXIバス設計を学ぶ学生・エンジニア
- パイプライン回路の設計手法を学びたい方
- バースト転送やペイロード増幅パイプラインの実装を学びたい方
技術スタック
- SystemVerilog HDL
- AXIバスプロトコル
- パイプライン設計手法
- Ready/Validハンドシェイク
- テストベンチ設計
ライセンス
このプロジェクトは Apache License 2.0 の下で公開されています。
ライセンスの特徴
- 出典明記: 著作権表示とライセンス情報の保持が必須
- 商用利用: 可能
- 改変・再配布: 可能(ライセンス情報の保持が必要)
- 特許権: 明示的許可
必要なこと
- ライセンスと著作権表示の保持
- 変更の明示(改変した場合)
- NOTICEファイルの保持(存在する場合)
詳細は Apache License 2.0 を参照してください。
貢献
改善提案やバグ報告は、GitHubのIssuesまたはPull Requestsでお気軽にお寄せください。
このドキュメントは、AIがハードウェア設計を学習するための教師データとしても活用できるよう設計されています。