FPGA開発日記

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

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

オープンソース形式検証ツールSymbiYosysを用いて形式検証に入門する (5. 乗算器の検証)

カテゴリインデックス:https://msyksphinz.hatenablog.com/entry/2024/12/14/040000 SymbiYosysを使った乗算器の形式検証 SymbiYosysを使用して乗算器の形式検証を行ってみる。 検証対象の乗算器 検証対象の乗算器は以下のようなVerilogコードで記述されて…

RISC-V LinuxをBusyBox付きでビルドするDocker環境の構築 (1. Dockerfileの作成)

RISC-V Linuxのビルド環境を構築するにあたり、以下の目標を設定した。 RISC-V LinuxカーネルとBusyBoxを自前でビルドし、QEMU上で動作させる ホスト環境を汚さず、Dockerコンテナ内で完結させる なるべく自動化して、再現性の高い環境を構築する 2. Dockerf…

RISC-VのSBI(Supervisor Binary Interface)の仕組みと役割についての調査

最近RISC-VのLinuxサポート周りを調べている中で、「SBI(Supervisor Binary Interface)」という仕組みが要所で登場する。 最初は「ブート時の一時的なインターフェースかな?」と思っていたが、どうやらRISC-Vにおいてはランタイムでも重要な役割を持つ仕組…

Champsim の Hashed Perceptronの実装を読む (6. しきい値の調整)

github.com この辺の実装がどのようになっているのかを勉強したい。ChatGPTにお願いしながら、読み進めていくことにする。 msyksphinz.hatenablog.com 4. 閾値(theta)の動的調整 adjust_threshold(prediction_correct); adjust_thresholdは次のように定義さ…

Champsim の Hashed Perceptronの実装を読む (5. テーブルの学習)

github.com この辺の実装がどのようになっているのかを勉強したい。ChatGPTにお願いしながら、読み進めていくことにする。 msyksphinz.hatenablog.com テーブルのアップデート方法 void hashed_perceptron::last_branch_result(champsim::address pc, champs…

Champsim の Hashed Perceptronの実装を読む (4. 予測の実行)

github.com この辺の実装がどのようになっているのかを勉強したい。ChatGPTにお願いしながら、読み進めていくことにする。 msyksphinz.hatenablog.com 5. テーブルと内積計算(std::inner_product) result.yout = std::inner_product( std::begin(tables), st…

Champsim の Hashed Perceptronの実装を読む (3. 予測の実行)

github.com この辺の実装がどのようになっているのかを勉強したい。ChatGPTにお願いしながら、読み進めていくことにする。 msyksphinz.hatenablog.com 予測の実行 bool hashed_perceptron::predict_branch(champsim::address pc) { auto get_index = [pc_sli…

Champsim の Hashed Perceptronの実装を読む (2. テーブルの初期化方法)

github.com この辺の実装がどのようになっているのかを勉強したい。ChatGPTにお願いしながら、読み進めていくことにする。 msyksphinz.hatenablog.com ghist_words:折り畳みシフトレジスタ(folded_shift_register) using history_type = folded_shift_reg…

Champsim の Hashed Perceptronの実装を読む (1. テーブルの定義)

github.com この辺の実装がどのようになっているのかを勉強したい。ChatGPTにお願いしながら、読み進めていくことにする。 Hashed Perceptronのテーブルの定義 using bits = champsim::data::bits; // saves some typing constexpr static std::size_t NTABL…

GAPベンチマークで使われるsg・wsg圧縮ファイル形式の調査 (4. Graph-Vにsg/wsg読み込みコードを埋め込んで動かしてみる)

msyksphinz.hatenablog.com sgとwsgのファイルフォーマットについてだいぶ把握したので、Graph-Vのベンチマークにこれを組み込んで動かせるようにしてみよう。 repo.hca.bsc.es ポイントは、VecGraphの構築時にファイル名に応じてsg/wsgの読み込みコードを挿…

GAPベンチマークで使われるsg・wsg圧縮ファイル形式の調査 (3. WSGファイルのフォーマット調査)

msyksphinz.hatenablog.com sgファイルについて調査したので、次はwsgファイルだ。wsg(weighted serialized graph) ファイルは、重み付きなので、各エッジに重みの情報が付くことになる。 wsgファイルの構造 wsgファイルを読み取るときのプログラムは以下の…

GAPベンチマークで使われるsg・wsg圧縮ファイル形式の調査 (2. SGファイルのフォーマット調査)

sgファイルについてもうちょっと見てみることにした: sgファイルの構造 sgファイルを読み取るときのプログラムは以下のようになっている: vector_benches/gapbs/src/reader.h bool directed; SGOffset num_nodes, num_edges; DestID_ **index = nullptr, *…

GAPベンチマークで使われるsg・wsg圧縮ファイル形式の調査

GAP(Graph Algorithm Platform)ベンチマークは、グラフアルゴリズムの性能評価に広く用いられている。 その際、グラフデータの格納や配布のために独自の圧縮ファイル形式である.sgや.wsgが利用されている。 これらのファイル形式の概要と特徴について調査す…

SymbiYosysのドキュメントを読む (7. 実際に動いているカバー・プロパティ)

SymbiYosysによるデザイン検証の続き。 symbiyosys.readthedocs.io 前回のブログの記事には一部誤解があり、SymbiYosysは以下のコードを実行できない。実際には、実行するにはTabby CAD Suiteのライセンスが必要なようだ。 // use block formatting for w_un…

SymbiYosysのドキュメントを読む (6. 検証が失敗するケースの練習問題)

SymbiYosysによるデザイン検証の続き:FIFOの検証で、検証が失敗するケースをデバッグする。 symbiyosys.readthedocs.io 練習問題 [script] nofullskip: read -define NO_FULL_SKIP=1 noverific: read -noverific read -formal fifo.sv hierarchy -check -to…

SymbiYosysのドキュメントを読む (5. FIFOの検証のカバーケースを観察する)

SymbiYosysによるデザイン検証の続き:FIFOの検証例で、カバーケースを取得する方法を見てみる。 正しい動作の間、w_underfillステートメントはアンダーフローのケースをカバーする。fifo_cover/logfile.txtを調べると、探しているcoverステートメントを含む…

RISC-V Spikeで非常に大きなメモリを取り扱うときの注意点

これはいろいろ試行錯誤中にはまってしまったのだが、たとえば40GB近くのファイルをRISC-Vのプログラムで処理したい場合、Spikeを使うときにいろいろと詰まった。 普通にriscv64-unknown-elf-gccを使ってコンパイルすると、これはnewlibを使っているからか知…

Official GCCでのRISC-Vコンパイル環境構築方法のアップデート調査 (GCC-14.3)

msyksphinz.hatenablog.com msyksphinz.hatenablog.com GCC15.1にすると、Newlibのビルドが失敗する問題なのだが、バージョンを落としてGCC14.3ならば正しくビルドできることが分かった。 これがなぜなのか理由が良く分からない。正直GCCのリビジョンの違い…

Official GCCでのRISC-Vコンパイル環境構築方法のアップデート調査 (GCC-15.1)

msyksphinz.hatenablog.com 以前GCC13.1を使ってOfficial GCCを使ったRISC-V向けGCCの構築方法をメモしていたのだが、これをGCC15.1に更新するとトラブルが発生した。 問題はNewlibのビルド部分だ: curl -L ftp://sourceware.org/pub/newlib/newlib-4.5.0.2…

SymbiYosysのドキュメントを読む (4. SymbiYosysの作業環境をDockerfileにまとめる)

https://github.com/msyksphinz-self/symbiyosys-docker-env に、SymbiYosysを含めた試行環境を置いておくことにした。 github.com 以下は、SymbiYosys(SBY)およびその依存ツール(Yosys、yosys-smtbmc、Boolectorなど)をインストールした検証用Dockerfil…

SymbiYosysのドキュメントを読む (3. FIFOの検証コードを試してみる)

SymbiYosysのドキュメントを読むために、まずはリポジトリ内のドキュメントを読んでみることにする。 github.com SymbiYosysでFIFOサンプルを検証しようとした際の実行ログを以下に示す。 なんか思っているのと違うなあ。VCDファイルも生成されていない。 sb…

はてなブログの投稿をBlueSkyに自動投稿するスクリプト (1. BlueSky認証情報の管理)

msyksphinz.hatenablog.com BlueSky認証情報の管理 前回の実装には問題が残っていた。 BSKY_DID と BSKY_JWT は定期的に更新される必要があるため、スクリプトを改良する必要があった。 BlueSkyの認証情報について、ChatGPTに詳しく説明してもらった: BSKY_…

はてなブログの投稿をBlueSkyに自動投稿するスクリプト (1. はてなブログの取得とBlueSkyへの投稿スクリプト)

X(Twitter)は最近もう使っていないので、はてなブログの投稿をBlueSkyに投稿させたい。 このためにはBlueSkyのAPIを叩いたり、はてなブログから記事情報を引っ張ってきて投稿文章を作成しないといけない。 しかし自分はそのあたりのWebアプリケーション周り…

AXI5/AXI4について資料を読んで勉強 (6. AXI5/AXI4の信号のバリエーション : R)

msyksphinz.hatenablog.com 各チャネルについて、AXI5/AXI4でどのようなバリエーションがあるかまとめていきたい。Rチャネル。 (この図は仕様書を読みながら自分で作ったので、誤解により間違いがあるかもしれない) Signal AXI5 AXI5-Lite AXI4 AXI4-Lite AX…

AXI5/AXI4について資料を読んで勉強 (5. AXI5/AXI4の信号のバリエーション : AR)

msyksphinz.hatenablog.com 各チャネルについて、AXI5/AXI4でどのようなバリエーションがあるかまとめていきたい。ARチャネル。 (この図は仕様書を読みながら自分で作ったので、誤解により間違いがあるかもしれない) Signal AXI5 AXI5-Lite AXI4 AXI4-Lite A…

SymbiYosysのドキュメントを読む (2. FIFOの検証のためのドキュメントを読んでみる)

SymbiYosysのドキュメントを読むために、まずはリポジトリ内のドキュメントを読んでみることにする。 github.com まずはFIFOに関するドキュメントを読んでみよう。DeepLの力を借りて翻訳しながら読んでいく。 symbiyosys.readthedocs.io FIFO (First-In, Fir…

AXI5/AXI4について資料を読んで勉強 (4. AXI5/AXI4の信号のバリエーション : B)

msyksphinz.hatenablog.com 各チャネルについて、AXI5/AXI4でどのようなバリエーションがあるかまとめていきたい。Bチャネル。 (この図は仕様書を読みながら自分で作ったので、誤解により間違いがあるかもしれない) Signal AXI5 AXI5-Lite AXI4 AXI4-Lite AX…

AXI5/AXI4について資料を読んで勉強 (3. AXI5/AXI4の信号のバリエーション : W)

msyksphinz.hatenablog.com 各チャネルについて、AXI5/AXI4でどのようなバリエーションがあるかまとめていきたい。Wチャネルから。 (この図は仕様書を読みながら自分で作ったので、誤解により間違いがあるかもしれない) Signal AXI5 AXI5-Lite AXI4 AXI4-Lit…

AXI5/AXI4について資料を読んで勉強 (2. AXI5/AXI4の信号のバリエーション : AW)

msyksphinz.hatenablog.com 各チャネルについて、AXI5/AXI4でどのようなバリエーションがあるかまとめていきたい。まずはAWチャネルから。 (この図は仕様書を読みながら自分で作ったので、誤解により間違いがあるかもしれない) Signal AXI5 AXI5-Lite AXI4 A…

AXI5/AXI4について資料を読んで勉強 (1. AXI5/AXI4の各種バリエーション)

AXI5/AXI4のそれぞれのバリエーションについてまとめてみる。 AWチャネルの信号リスト Wチャネルの信号リスト Bチャネルの信号リスト ARチャネルの信号リスト Rチャネルの信号リスト AXI5 もっとも汎用的なパラメータを持つもの。 AXI5-Lite AXI5のサブセッ…