FPGA開発日記

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

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

Computer Architecture: A Quantitative Approach 7th Edition が届いた

6th Editionとの目次の違いを可視化してみた。その部分を中心的に読んでみるかな。

Common Cellsのaddr_decode / addr_decode_napot の実装詳細解析

github.com addr_decode_dync をベースにして、コンフィグレーションを変更したものが addr_decodeおよび addr_decode_napot である。 addr_decode : 動的なコンフィグレーション変更を許さないデコーダ addr_decode_dync に対して、 config_ongoing_i を0に…

Common Cellsのaddr_decode_dyncの実装詳細解析:動的設定可能なアドレスデコーダ

github.com module addr_decode_dync #( parameter int unsigned NoIndices = 32'd0, parameter int unsigned NoRules = 32'd0, parameter type addr_t = logic, parameter type rule_t = logic, parameter bit Napot = 0, parameter int unsigned IdxWidth …

Zero-day-lab の IOMMU 実装調査 (1. インタフェース調査)

Zero-Day LabのRISC-V IOMMUは RISC-V仕様のIOMMUのRTL実装だ。IOMMUの仕様を理解するためにも、実装を一度概観してみよう。 github.com RISC-V IOMMUのインタフェース仕様 パラメータ キャッシュ・エントリ数の設定 parameter int unsigned IOTLB_ENTRIES =…

MICRO 2025の論文を概観する (2. Microarchitecture)

MICRO 2025の論文が公開されている。全部を一から読むのはきついので、AIに頼んで概要を掴んでみることにした。次はMicroarchitecture全般のセクション。 ※このセクションはAI生成による文章を含みます。誤りや不正確な情報が含まれている可能性がありますの…

MICRO 2025 の論文を概観する (1. Microarchitecture - Prefetch)

MICRO 2025の論文が公開されている。全部を一から読むのはきついので、AIに頼んで概要を掴んでみることにした。まずはMicroarchitecture の Prefetchのセクションから。 ※このセクションはAI生成による文章を含みます。誤りや不正確な情報が含まれている可能…

Speckleリポジトリについて調査する (2. 実行方法の調査)

Speckleは、SPEC CPU2006ベンチマークのコンパイルと実行を簡素化するためのツールセットである。前回 は、基本的なコンパイルの方法を調査した。 実際に実行してみる Speckleを実際にシミュレーションしてみる。Spike はシミュレーションも遅いし、コマンド…

Speckleリポジトリについて調査する

Speckleは、SPEC CPU2006ベンチマークのコンパイルと実行を簡素化するためのツールセットである。 Speckleリポジトリの主な目的は、SPEC CPU2006 v1.2ベンチマークのコンパイルと実行プロセスを簡素化することである。従来のSPEC CPU2006の複雑な設定と実行…

Snipersim 8.1をRISC-V対応でビルドさせる方法試行 (6. riscv-tools の修正対応)

前回の記事Snipersim 8.1をRISC-V対応でビルドさせる方法試行 (5. build-riscv.shへのデコーダ生成統合) - FPGA開発日記 でSniper部分は改善したが、埋め込まれている riscv-tools のバージョンが非常に古い。 まずは riscv-gnu-toolchain および riscv-test…

Snipersim 8.1をRISC-V対応でビルドさせる方法試行 (5. build-riscv.shへのデコーダ生成統合)

前回の記事では、riscv-opcodesを使ってRISC-Vデコーダを自動生成する方法について試行した。 しかし、毎回以下のような長いコマンドを手動で実行するのは面倒なので、 build-riscv.sh に統合してしまおう。 cat riscv/riscv-opcodes-latest/extensions/rv_i…

Snipersim 8.1をRISC-V対応でビルドさせる方法試行 (4. riscv-opcodesを使った自動化)

github.com msyksphinz.hatenablog.com RISC-Vの拡張を増やしたい場合、以下のようにしてターゲットとなるファイルの指定を増やす。 cat riscv/riscv-tools/riscv-opcodes/opcodes \\ riscv/riscv-tools/riscv-opcodes/opcodes-rvc \\ riscv/riscv-tools/ris…

Snipersim 8.1をRISC-V対応でビルドさせる方法試行 (3. riscv-opcodesを使った自動化)

github.com msyksphinz.hatenablog.com SniperのRISC-V向けデコーダは結構古いものが使われているので、 riscv-opcodes (https://github.com/riscv/riscv-opcodes) を使ってデコーダを最新版に更新することを考える。 まず、riscv-opcodes をダウンロードす…

riscv-opcodes について調べる

github.com プロジェクトの目的 riscv-opcodesプロジェクトは、RISC-V命令セットの標準オペコードとコントロール・ステータスレジスタ(CSR)を列挙し、それらを複数の形式(C、Scala、LaTeX等)に変換するスクリプトを提供することが目的である。 このプロジェ…

Snipersim 8.1をRISC-V対応でビルドさせる方法試行 (2)

github.com msyksphinz.hatenablog.com 結局まとめると、修正点は以下のようになる: riscv/build-riscv.sh の修正 問題なのは riscv-tools リポジトリでダウンロードする riscv-gnu-toolchain が古すぎるのと、そもそも riscv-gnu-toolchain はサブモジュー…

Snipersim 8.1をRISC-V対応でビルドさせる方法試行

github.com まず単純に、$SNIPER_ROOT/riscv/build-riscv.sh を実行するとどうなるか。 Setting SNIPER_ROOT to . Header 'bzlib.h' not found in the GCC include paths. Please install 'libbz2-dev / bzip2-devel'. Header 'boost' not found in the GCC …

ArmとQualcommの法廷論争について

Arm と Qualcomm のライセンスに関する法廷論争の最新情報が伝わってきた。 Arm と Qualcomm の論争は、Armのビジネススタイルの根幹に関わるものになっている。これについて、どういう状況なのか整理する。 Arm のライセンス構造について Arm には ARMアー…

PULP Platform の AXIモジュール axi_to_axi_lite.sv の解析

axi_to_axi_lite.svはAXI4+ATOP(Atomic Operation)インターフェースをAXI4-Liteインターフェースに変換する役割を持つ。 AXI4-LiteはAXI4の簡易版であり、バースト転送やアトミック操作をサポートしていない。そのため、フル機能のAXI4からAXI4-Liteへの変…

Pulp Platform の AXI デザイン概要

PUPL の AXI コンポーネントが非常に有益なので、AIに頼んでどういうコンポーネントが含まれているのかサマライズしておく。 github.com AXIコンポーネント カテゴリ別一覧表 1. 基本定義・インターフェース ファイル名 主要モジュール名 簡単な説明 axi_pkg…

Common CellsのECCデコーダの実装詳細解析:ecc_decodesv の実装詳細

ecc_encode.sv の実装調査を行ったので、今度は ecc_decode.sv の実装調査をしてみる。 基本的には ecc_encode.sv の逆を行っており、問題があればエラーを通知することになる。 module ecc_decode import ecc_pkg::*; #( /// Data width of unencoded word.…

Common CellsのECCエンコーダーの実装詳細解析:ecc_encode.sv の実装詳細

ecc_encode.svの実装詳細 モジュール入出力 module ecc_encode import ecc_pkg::*; #( parameter int unsigned DataWidth = 64, parameter type data_t = logic [DataWidth-1:0], parameter type parity_t = logic [get_parity_width(DataWidth)-1:0], param…

簡単なVerilogの回路実装をSymbiYosysのフォーマル検証を試す (Booth Multiplierを検証する方法を考える)

乗算器をSymbiYosysでフォーマル検証する戦略を考えている。 段階的Assertion戦略 8つの段階的チェック 64ビットの結果を8ビットずつ8段階に分けて検証する戦略を採用した: `ifdef CHECK_8 assert (resp_result[ 7: 0] == model_result[ 7: 0]); `endif // …