RISC-V のベクトル命令の仕様一覧のページ RISC-V Vector ISA-extensions サイクル精度シミュレータ Sniperの勉強 サイクル精度シミュレータ Sniper AMBA CHIについての勉強 AMBA CHIについての勉強 オープンソース形式検証ツールSymbiYosysを用いて形式検証…
Docker 上で動いている C++ プログラムのメモリ使用量が大きく、挙動も重そうだったので heaptrack を使って確認した。 まずは素直に heaptrack を実行。 heaptrack ./a.out 相対パスを付けないと実行ファイルとして認識されない点に注意。 実行自体は成功し…
SIFT生成処理は順次実行していたのだが、SIFT生成の問題点が改善したので、並列実行に戻したいと思う。 SIFT生成オプションに合わせて、設定を変更していく。特に、 response_files は使用しない。 # 変更前 "${QEMU}" ${QEMU_FLAGS} -plugin "${QEMU_FRONTE…
SIFT生成時に誤って大量のトレースファイルが生成されてしまっているので、これのデバッグをしてみる。 Region of Interest (ROI) の開始条件判定において、m_in_roiの状態チェックが逆になっていた。具体的には、以下のような問題があった。 // 問題のあっ…
OCAシステムアーキテクチャの仕様書を日本語に翻訳して、Sphinxでドキュメント化している。 OCAは、異なるベンダーのチップレットがオープンなエコシステムで連携することを可能にするシステムアーキテクチャとのこと。 www.openchipletatlas.org 4.4節 シス…
OCAシステムアーキテクチャの仕様書を日本語に翻訳して、Sphinxでドキュメント化している。 OCAは、異なるベンダーのチップレットがオープンなエコシステムで連携することを可能にするシステムアーキテクチャとのこと。 www.openchipletatlas.org SiPにおけ…
OCAシステムアーキテクチャの仕様書を日本語に翻訳して、Sphinxでドキュメント化している。 OCAは、異なるベンダーのチップレットがオープンなエコシステムで連携することを可能にするシステムアーキテクチャとのこと。 www.openchipletatlas.org チップ間通…
OCAシステムアーキテクチャの仕様書を日本語に翻訳して、Sphinxでドキュメント化している。 OCAは、異なるベンダーのチップレットがオープンなエコシステムで連携することを可能にするシステムアーキテクチャとのこと。 www.openchipletatlas.org チップレッ…
OCAシステムアーキテクチャの仕様書を日本語に翻訳して、Sphinxでドキュメント化している。 OCAは、異なるベンダーのチップレットがオープンなエコシステムで連携することを可能にするシステムアーキテクチャとのこと。 www.openchipletatlas.org 現在のドキ…
SimPoint解析パイプラインにおいて、SIFTファイルの生成とSniperシミュレーションを実行する際に、同時並行で実行するとディスク容量不足になって落ちてしまう。 これは、SIFTファイルを全ベンチマーク分生成したうえでSniperの実行に移るのでSniperの実行に…
あけましておめでとうございます。今年も、FPGA開発日記をよろしくお願いします。 2026年1月4日で、FPGA開発日記は11年目を迎えます。 昨年は本当に忙しい1年で、ブログを書くのもほとんどままならなかった。 ブログの執筆もAIにアシストしてもらうことが非…
common_cellsに入っている 2つのメモリインターフェース変換モジュールについてみてみる。 1. mem_to_banks_detailed.sv mem_to_banks_detailed.svは、メモリアクセスを複数の並列バンクに分割する実際の実装を含むモジュールである。 https://github.com/pu…
stream_to_mem.sv フロー制御付きのリクエストを持つが、出力データにフロー制御がないメモリインターフェースを、ストリームインターフェースで使用できるように変換するモジュールである。 https://github.com/pulp-platform/common_cells/blob/9ca8a7655f…
stream_filter.sv ストリームのドロップを制御するシンプルなフィルタモジュールである。 drop_iが1の場合、下流に関係なく上流にreadyをアサートし、validを下流へ伝播しない。 https://github.com/pulp-platform/common_cells/blob/9ca8a7655f741e7dd57366…
stream_fork.sv 1つの入力ストリームを複数の出力ストリームへ分配するモジュールである。 各入力ハンドシェイクに対して、すべての出力が正確に1回ハンドシェイクする。 入力はすべての出力がハンドシェイクした後にのみハンドシェイクするが、出力は同時に…
stream_arbiter.sv 複数の入力ストリームを1つの出力ストリームへアービトレーションするモジュールである。 ラウンドロビンまたは優先度ベースのアービトレーション方式をサポートする。 https://github.com/pulp-platform/common_cells/blob/9ca8a7655f741…
stream_mux.sv 複数の入力ストリームから1つの出力ストリームへ選択的に接続するマルチプレクサモジュールである。 https://github.com/pulp-platform/common_cells/blob/9ca8a7655f741e7dd5736669a20a301325194c28/src/stream_mux.sv#L16 /// Stream multip…
stream_ モジュール群についての解析を行っている。 まずは、基本的なストリーム・モジュールについて。 stream_register.sv シンプルなready/validハンドシェイクを備えたレジスタモジュールである。 すべての制御信号の組み合わせパスを切断しないため、完…
common_cellsライブラリに含まれるstream_から始まるモジュール群の構成について分析する。 これらのモジュールは、ready/validハンド・シェイク・プロトコルを使用したストリームインターフェースを提供する。 github.com stream_モジュール群では、一般的…
Riescue-Dのサンプルテストコード(bfs.s、幅優先探索のテスト)を実行してみた。 riescued --testfile riescue/riescue/dtest_framework/tests/bfs.s --cpuconfig cpu_config.json --run_dir bfs --iss spike 実行ログ: fpgen unavailable, skipping /home/…
Riescue-C(CTK: Compliance Test Kit)を使ってテストキットを生成してみた。 Riescue-Cとは RiescueDは単一のテストファイルを処理するフレームワークだが、Riescue-CはCompliance Testを含めて複数のテストを自動生成できる点が本質的な違いだ。 Riescue-…
RiescueDダイレクトテスト実装メモ 実行コマンド: riescued --testfile test1.s --cpuconfig cpu_configuration.yml --run_dir test1 --iss spike まず、以下のエラーが生成された。 ValueError: key test_access is not a boolean in cfg={'address': '0x20…
Riscue-D(正式名称 RiescueD)は、Tenstorrent が提供する RISC-V 向け Directed Test Framework である。 単なる ISA 命令列テストの生成ツールではなく、特権レベル、仮想メモリ、例外処理、OS ライクな実行環境まで含めたシステムレベルのテストを、アセ…
前回の続き。Sniperによるシミュレーションを実行してみる。 make run_sniper_403.gcc sed: -e expression #1, char 11: unknown option to `s' === Running Sniper simulations for 403.gcc === find /home/msyksphinz/work/bench_trace/bench_trace_env/sp…
SPEC CPU2006のベンチマークをSniperでシミュレーションするために、Sniperのダウンロードからビルドまでのフローをspec2006_work/Makefileに追加した。 Makefileに以下のターゲットを追加した。 # Download and build Sniper build_sniper: .build_sniper .…
msyksphinz.hatenablog.com 実際の解析パイプラインは、以下のような流れになった。 make prepare CDROM_DIR=/home/msyksphinz/spec_bechmarks/spec2006_cdrom && \ make build -j${NPROC} && \ make run_bbv -j${NPROC} && \ make build_simpoint && \ make…
SPEC CPU2006のSimPoint解析までをGitHub Actionsで自動化する必要があった。 セルフホステッドランナーとDockerを使って実装したので、その作業ログを残しておく。 まずは、GitHub Actionsのワークフローファイルを作成した。最初は以下のような構成にした…
https://github.com/pulp-platform/common_cells/blob/master/src/cdc_4phase.sv 基本設計方針 cdc_4phase.svは、4相ハンドシェイクプロトコルを使用してクロックドメイン間でデータを転送するモジュールである。 4相ハンドシェイクでは、req信号とack信号が…
cdc_2phase.svは、2相ハンドシェイクプロトコルを使用してクロックドメイン間でデータを転送するモジュールである。2相ハンドシェイクでは、各トランザクションごとにreq信号とack信号がトグルする。この方式は、4相ハンドシェイクと比較して効率的であるが…
Common Cellsライブラリには、クロックドメイン間(Clock Domain Crossing, CDC)でデータを安全に転送するための実装が8つ用意されている: github.com cdc_2phase.sv: 2相ハンドシェイクによるCDC cdc_2phase_clearable.sv: クリア機能付き2相ハンドシェイ…