FPGA開発日記

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

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

"The MIPS R10000 Superscalar Microprocessor" を NotebookLM でまとめさせてみる (2)

前回の続き: msyksphinz.hatenablog.com "The MIPS R10000 Superscalar Microprocessor" の論文を改めて読んでみて、NotebookLMを使ってまとめてみた。すごく便利だ。便利すぎて頭に入らないよ。 以下の文章は全部AIで生成してもらったので注意です。 レジ…

"The MIPS R10000 Superscalar Microprocessor" を NotebookLM でまとめさせてみる (1)

"The MIPS R10000 Superscalar Microprocessor" の論文を改めて読んでみて、NotebookLMを使ってまとめてみた。すごく便利だ。便利すぎて頭に入らないよ。 以下の文章は全部AIで生成してもらったので注意です。 はじめに MIPS R10000は、シリコン・グラフィッ…

RISC-Vの「Svvptc拡張」について調査する

RISC-Vの仕様書を読んで、Svvptc拡張について内容を読んでみる。 この拡張機能は、オペレーティングシステムのメモリ管理処理を大幅に簡略化する可能性を秘めているものである。 Svvptc 拡張の基本概念 Svvptcは、ページ・テーブル・エントリ(PTE)の無効状態…

RISC-V「SVADU」拡張:PTE A/Dビットのハードウェア更新機能

SVADUというRISC-V拡張は、ページ・テーブル・エントリのAccessedビットとDirtyビットの管理を行うための命令拡張だ。 まずは、ページ・テーブル・エントリ(PTE)のA/Dビットについてまとめる。 Accessed(A)ビット ページが読み取り、書き込み、または実行…

SymbiYosysを使ったBooth乗算器のフォーマル検証を試行する

より複雑なBooth乗算器に対して同様のフォーマル検証を試行してみる。 Booth乗算器は、符号付き数の乗算を効率的に実行するためのアルゴリズムであり、部分積の数を削減することで高速化を図る手法である。 このような複雑な設計に対してフォーマル検証がど…

EmacsのVerilog-Modeではstruct/interfaceが扱える

知らなかったのだが、EmacsのVerilog-Modeでは structやinterfaceが扱えるようだ。長年の悩みが解決される! qiita.com module auto_connect_struct ( input logic i_clk, input input_t in, output output_t out ); assign out.c = in.a + in.b; endmodule …

riscv-tests の pmpaddr に関するテストは何をしているのか

riscv-testsの以下のテストがよく意味が分からなかったので、ちょっと考えてみることにした。 github.com まず、PMPにおけるNAPOTの意味を確認しよう。 RISC-V の PMP (Physical Memory Protection) では、各エントリにアドレスとモードを設定し、アクセス可…

RISC-V Formal Verification Framework (riscv-formal)のチュートリアルを実際に動かしてみる

riscv-formalに付属の実際のコードを動かしてみよう。 git clone https://github.com/YosysHQ/riscv-formal.git 以下のコマンドによって、RISC-VコアNERVを使ってriscv-formal を動かしてみる。 cd riscv-formal/cores/nerv make -j$(nproc) check^ SimbiYos…

RISC-V Formal Verification Framework (riscv-formal) についてまとめる

RISC-V Formal Verification Frameworkは、RISC-Vプロセッサの形式的検証を行うための包括的なフレームワークである。 このフレームワークは、RISC-V Formal Interface (RVFI)を中心として構築されており、SystemVerilog Assertions (SVA)を活用した形式的テ…

Verilog 2001で実装されたBooth乗算器を調査する (7. Booth乗算器を8ビットまで縮小して動かす)

結局、32ビット x 32ビットの乗算器の一発での検証はかなり難しいことが分かった。 もう少し小さな乗算器でFormalが回せるかどうかを確認してみよう。8ビット x 8ビットの乗算器まで縮小したデザインを用意した。 module booth_mult ( input logic clk, inpu…

Verilog 2001で実装されたBooth乗算器を調査する (6. SymbiYosysを用いた形式検証環境の構築と実行)

前章まででVerilatorによるシミュレーション検証を実施したが、つぎは形式検証(Formal Verification)をSymbiYosysを使用して実装してみよう。 Formal検証コードの実装 mul_1.vに以下のFormal検証コードを追加した: `ifdef FORMAL logic r_result_valid; a…

Verilog 2001で実装されたBooth乗算器を調査する (5. テストパタンの実行)

msyksphinz.hatenablog.com テスト実行制御 initial begin do_reset(); // Directed tests run_directed(); // Random tests run_random(NUM_RANDOM); // Wait until all expected results are consumed wait (exp_q.size() == 0 || cycle > 20000); if (exp…

Verilog 2001で実装されたBooth乗算器を調査する (4. SystemVerilogテストベンチの設計: tb_mul)

前章で解析したmul_1.vの実装に対して、 tb_mul を作成して検証することにした。 msyksphinz.hatenablog.com リファレンスモデルの実装 function automatic logic [63:0] model_mul( bit s1, bit s2, logic [31:0] a, logic [31:0] b ); logic [63:0] A_u, B…

Verilog 2001で実装されたBooth乗算器を調査する (3. もう少し実用的なBooth乗算器)

GitHubリポジトリtom01h/yosys_tryのmul_1.vは32ビット×32ビットの高性能乗算器として設計されており、符号付きおよび符号なし両方の乗算に対応している。 モジュール構成と全体アーキテクチャ このファイルには2つのモジュールが含まれている: mulモジュー…

RISC-V Smstateen/Ssstateen Extensionsについて調査する

APLICとIMSICの挙動を調査しているときに引っかかったので、Smstateen/Ssstateenについて調査することにした。 Smstateen/Ssstateenは、特定の状態(state)へのアクセスを制御するための仕組みである。 この拡張機能は、セキュリティと特権レベルの分離を強…

QEMUで命令ヒストグラムを生成するプラグイン実装 (2. 実行結果)

前回の続き: msyksphinz.hatenablog.com 4. ソートアルゴリズム 出力時に実行頻度順にソートするため、バブルソートを実装している: /* 命令情報をカウント順にソート(バブルソート) */ for (int i = 0; i < array->size - 1; i++) { for (int j = 0; j …

QEMUで命令ヒストグラムを生成するプラグイン実装 (1. 概要)

QEMUのプラグイン機能を活用して、特定の命令実行区間における命令ヒストグラムを生成するプラグインを実装してみた。 このプログラムは、あるポイントからの命令の実行頻度をヒストグラム化することを目的としている。 主な用途としては、SimPointで取得し…

Verilog 2001で実装されたBooth乗算器を調査する (2. 2ビット乗算器)

MorrisMA/Booth_Multipliersリポジトリをベースに、Booth乗算アルゴリズムの実装と検証についてまとめる。 2ビットずつBooth乗算器の実装例 次は、2ビットずつ処理するBooth乗算器の実装例だ: module Booth_Multiplier_2x #( parameter N = 16 // Width = N…

Verilog 2001で実装されたBooth乗算器を調査する

MorrisMA/Booth_Multipliersリポジトリをベースに、Booth乗算アルゴリズムの実装と検証についてまとめる。 Booth乗算アルゴリズムの概要 Booth乗算アルゴリズムは、2の補数表現での符号付き乗算を効率的に実行するための手法である。 従来のシフト加算方式と…

APLIC(Advanced Platform Level Interrupt Controller) のレジスタについて調査する (2)

APLICは、RISC-Vで定義されている外部からの割り込みを制御するための非ISA仕様だ。 drive.google.com このAPLICで定義されているレジスタについて少し調べてみようと思う。割り込みを発生させるためにはどのようなレジスタを叩いていけばいいのかを調査する…

APLIC(Advanced Platform Level Interrupt Controller) のレジスタについて調査する (1)

APLICは、RISC-Vで定義されている外部からの割り込みを制御するための非ISA仕様だ。 drive.google.com このAPLICで定義されているレジスタについて少し調べてみようと思う。割り込みを発生させるためにはどのようなレジスタを叩いていけばいいのかを調査する…

SimPointのインストールと使用方法について

SimPointは、プログラムの実行時間を短縮するために使用される重要なツールである。 SimPointはコンピュータアーキテクチャの研究のために使用されることが多く、特に実行時間の長いベンチマークの中から、実行される頻度の多いブロックを取り出すために使用…