FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

2025-12-01から1ヶ月間の記事一覧

RISC-V Test Generation Framework (Riescue) について調査する (4. Riescue-D を使ってサンプルコードを動かす)

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/…

RISC-V Test Generation Framework (Riescue) について調査する (3. Riescue-C試行メモ)

Riescue-C(CTK: Compliance Test Kit)を使ってテストキットを生成してみた。 Riescue-Cとは RiescueDは単一のテストファイルを処理するフレームワークだが、Riescue-CはCompliance Testを含めて複数のテストを自動生成できる点が本質的な違いだ。 Riescue-…

RISC-V Test Generation Framework (Riscue-D)について調査する (2. 実際のテストの生成方法調査)

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…

RISC-V Test Generation Framework (Riscue-D)について調査する

Riscue-D(正式名称 RiescueD)は、Tenstorrent が提供する RISC-V 向け Directed Test Framework である。 単なる ISA 命令列テストの生成ツールではなく、特権レベル、仮想メモリ、例外処理、OS ライクな実行環境まで含めたシステムレベルのテストを、アセ…

GitHub ActionsでSPEC CPU2006の実行を自動化する (4. Sniperによるシミュレーション試行)

前回の続き。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…

GitHub ActionsでSPEC CPU2006の実行を自動化する (3. Sniperのビルドを追加する)

SPEC CPU2006のベンチマークをSniperでシミュレーションするために、Sniperのダウンロードからビルドまでのフローをspec2006_work/Makefileに追加した。 Makefileに以下のターゲットを追加した。 # Download and build Sniper build_sniper: .build_sniper .…

GitHub ActionsでSPEC CPU2006の実行を自動化する (2. GitHub CI パイプラインの実装)

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…

GitHub ActionsでSPEC CPU2006の実行を自動化する (1. ワークフローの構築)

SPEC CPU2006のSimPoint解析までをGitHub Actionsで自動化する必要があった。 セルフホステッドランナーとDockerを使って実装したので、その作業ログを残しておく。 まずは、GitHub Actionsのワークフローファイルを作成した。最初は以下のような構成にした…

Common CellsのCDC実装詳細解析 (3. 4相ハンドシェイクCDC)

https://github.com/pulp-platform/common_cells/blob/master/src/cdc_4phase.sv 基本設計方針 cdc_4phase.svは、4相ハンドシェイクプロトコルを使用してクロックドメイン間でデータを転送するモジュールである。 4相ハンドシェイクでは、req信号とack信号が…

Common CellsのCDC実装詳細解析 (2. cdc_2phaseの実装)

cdc_2phase.svは、2相ハンドシェイクプロトコルを使用してクロックドメイン間でデータを転送するモジュールである。2相ハンドシェイクでは、各トランザクションごとにreq信号とack信号がトグルする。この方式は、4相ハンドシェイクと比較して効率的であるが…

Common CellsのCDC実装詳細解析 (1. CDCライブラリの概要)

Common Cellsライブラリには、クロックドメイン間(Clock Domain Crossing, CDC)でデータを安全に転送するための実装が8つ用意されている: github.com cdc_2phase.sv: 2相ハンドシェイクによるCDC cdc_2phase_clearable.sv: クリア機能付き2相ハンドシェイ…

Common Cellsの各種レジスタ実装詳細解析 (4. 等時性クロックドメイン間スピルレジスタ)

github.com 5. isochronous_spill_register.sv:等時性クロックドメイン間スピルレジスタ 基本設計方針 isochronous_spill_register.svは、等時性(isochronous)クロックドメイン間でデータを転送するためのスピルレジスタである。 等時性とは、2つのクロッ…

Common Cellsの各種レジスタ実装詳細解析 (3. Spillレジスタ)

github.com 3. spill_register.sv:後方互換性ラッパー 基本設計方針 spill_register.svは、spill_register_flushableのラッパーモジュールであり、後方互換性を維持するために提供されている。 flush_i信号を常に1'b0に固定して、フラッシュ機能なしのスピ…

Common Cellsの各種レジスタ実装詳細解析 (2. フォールスルー動作レジスタ)

github.com 2. fall_through_register.sv:フォールスルー動作レジスタ 基本設計方針 fall_through_register.svは、フォールスルー(fall-through)動作を実装したレジスタである。 出力側のモジュールが同じクロックサイクル内でデータを受け取る準備ができ…

Common Cellsの各種レジスタ実装詳細解析 (5つの実装形態)

github.com Common Cellsライブラリには、ready/validハンドシェイクプロトコルに対応したレジスタの実装が5つ用意されている: stream_register.sv: シンプルなストリームレジスタ fall_through_register.sv: フォールスルー動作を持つレジスタ spill_regis…