FPGA開発日記

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

2024-11-01から1ヶ月間の記事一覧

マイクロプロセッサ・アーキテクチャ教科書を買った

マイクロプロセッサ・アーキテクチャ教科書 (TECHIシリーズ Vol. 57)作者:中森 章CQ出版Amazon これの前版は自分が高校生くらいの時から買って読んでいた。 第2版が出てとてもうれしい。 前版は本当に自分の人生を変えた本だと思うので、これも読んで一生懸…

RISC-V IOMMU の構成についてマニュアルを読んでまとめる (17. MRIFについて)

前回:msyksphinz.hatenablog.com github.com RISC-V IOMMUの構成について、概略をざっくり理解するためのメモ。 IOMMUのMSIアドレス変換について、MRIFを理解する必要が生じてきたのでメモ。 MRIFのフォーマットは以下のようになる。以下のアドレスマップは…

RISC-V IOMMU の構成についてマニュアルを読んでまとめる (16. MRIFについて)

前回:msyksphinz.hatenablog.com github.com RISC-V IOMMUの構成について、概略をざっくり理解するためのメモ。 IOMMUのMSIアドレス変換について、MRIFを理解する必要が生じてきたのでメモ。 MRIF(メモリ常駐割り込みファイル: Memory Resident Interrupt F…

RISC-V IOMMU の構成についてマニュアルを読んでまとめる (15. メモリ内データ構造のキャッシュ)

前回:msyksphinz.hatenablog.com github.com RISC-V IOMMUの構成について、概略をざっくり理解するためのメモ。 何回か読もうとして挫折してきたので、もう一度ちゃんと読んでみようと思う。 メモリ内データ構造のキャッシュ ダイレクトメモリアクセス(DMA)…

RISC-V IOMMU の構成についてマニュアルを読んでまとめる (14. PCIe ATS変換リクエスト)

前回:msyksphinz.hatenablog.com github.com RISC-V IOMMUの構成について、概略をざっくり理解するためのメモ。 何回か読もうとして挫折してきたので、もう一度ちゃんと読んでみようと思う。 PCIe ATS変換リクエスト処理 ATS[2]変換要求で構成エラーが発生…

RISC-V IOMMU の構成についてマニュアルを読んでまとめる (13. IOMMUのPTEアクセス)

前回:msyksphinz.hatenablog.com github.com RISC-V IOMMUの構成について、概略をざっくり理解するためのメモ。 何回か読もうとして挫折してきたので、もう一度ちゃんと読んでみようと思う。 IOMMU による PTE アクセス(A)とダーティ(D)の更新 capabili…

Vivado Simulatorを使ってUVMに入門する (25. 2ポートArbiterのUVMを考える)

前回はこちら:msyksphinz.hatenablog.com UVMを使って、2ポートのArbiterを検証することを考えたい。 2ポートのRound Robin Arbiterは、現在のPriorityに応じてAcceptするポートを変えるArbiterだ。 arbiter2_rr.sv always_comb begin w_curr_ptr_next = r_…

RISC-V IOMMU の構成についてマニュアルを読んでまとめる (12. IOVA の変換プロセス)

前回:msyksphinz.hatenablog.com github.com RISC-V IOMMUの構成について、概略をざっくり理解するためのメモ。 何回か読もうとして挫折してきたので、もう一度ちゃんと読んでみようと思う。 デバイスコンテキストの場所を特定するプロセス device_idを使っ…

Vivado Simulatorを使ってUVMに入門する (24. UVMを使ってランダムパタンジェネレータを作りたい)

前回はこちら:msyksphinz.hatenablog.com 前回、ランダム命令を生成するためのUVM記述を考えたのだが、ドライバのところに制約を書くのは良くない気がする。 これだとテストの環境に制約を書いてしまっていることになるので、もうちょっと一般的なところ、…

Vivado Simulatorを使ってUVMに入門する (23. UVMを使ってランダムパタンジェネレータを作りたい)

前回はこちら:msyksphinz.hatenablog.com UVMで色々コントロールできることが分かってきたので、今度はランダム検証に使うための要素について考えていきたい。 単純に考えられるのは、RISC-Vの命令をランダムに生成するランダムパタンジェネレータだ。 UVM…

RISC-VのLoad/Store Pair for RV32 (Zilsd & Zclsd)仕様について

メーリングリストに回ってきた仕様で、なんか変わった仕様があるなと思ったのでメモ。 64ビットのメモリアクセスの命令は、RV32だと当然存在していないのだが、それを無理やり定義する拡張がある。 Zilsd & Zclsdという仕様らしい。 Load/Store pair instruc…

Vivado Simulatorを使ってUVMに入門する (22. スコアボードを活用するDUTを作りたい)

前回はこちら:msyksphinz.hatenablog.com 1サイクルのDelayがあるRAMをUVMで検証している。 モニタのところで、アドレスとデータが1サイクルずれるのを吸収してやる必要がある。 とりあえず以下のようにして、1サイクルのDelayをprev_read_eqとprev_read_ad…

Vivado Simulatorを使ってUVMに入門する (21. スコアボードを活用するDUTを作りたい)

前回はこちら:msyksphinz.hatenablog.com 前回までで作っているUVMの環境では、DUTは入力を即時出力するようなデザインなのでイマイチ面白くない。 UVMのスコアボードは、中間結果を取っておいてそれを使って比較できるはずなので、メモリなどの記憶素子も…

Vivado Simulatorを使ってUVMに入門する (20. スコアボードを活用するDUTを作りたい)

前回はこちら:msyksphinz.hatenablog.com 前回までで作っているUVMの環境では、DUTは入力を即時出力するようなデザインなのでイマイチ面白くない。 UVMのスコアボードは、中間結果を取っておいてそれを使って比較できるはずなので、メモリなどの記憶素子も…

Vivado Simulatorを使ってUVMに入門する (19. Round Robin Arbiter向けのUVMを作る)

前回はこちら:msyksphinz.hatenablog.com ラウンド・ロビンのArbiterを、4入力からN入力に拡張してみよう。 実装を簡単にするために、最初に優先ポート順に並べ替えるのを、インデックスが大きいほど高い優先度になるようにちょっと変更する。 for (int i =…

Vivado Simulatorを使ってUVMに入門する (18. Round Robin Arbiter向けのUVMを作る)

前回はこちら:msyksphinz.hatenablog.com 次はラウンドロビン型の4入力Arbiterを作って、UVMで検証してみようと思う。 arbiter4_rr.sv module arbiter4_rr ( input logic i_clk, input logic i_reset_n, input logic i_valid0, input logic [15: 0] i_data0…

Vivado Simulatorを使ってUVMに入門する (17. arbiter向けのUVMを作る)

前回はこちら:msyksphinz.hatenablog.com UVMについて理解を深めるために、4入力のArbiterを用いたデザインのUVM検証パタンを作っていこうと思う。 arbiter4.sv デザインとしては非常にシンプルで優先度も単純なのだが、とりあえずこれでUVMが走るところま…

RISC-V IOMMU の構成についてマニュアルを読んでまとめる (10. IOVA の変換プロセス)

前回:msyksphinz.hatenablog.com github.com RISC-V IOMMUの構成について、概略をざっくり理解するためのメモ。 何回か読もうとして挫折してきたので、もう一度ちゃんと読んでみようと思う。 IOVAを変換するプロセスは、ハードウェアID(device_id とprocess…

RISC-V IOMMU の構成についてマニュアルを読んでまとめる (9. プロセス・コンテキスト)

前回:msyksphinz.hatenablog.com github.com RISC-V IOMMUの構成について、概略をざっくり理解するためのメモ。 何回か読もうとして挫折してきたので、もう一度ちゃんと読んでみようと思う。 プロセス・ディレクトリ・テーブル (PDT) PDTは、process_id の…

RISC-V IOMMU の構成についてマニュアルを読んでまとめる (8. MSIアドレス・マスク)

前回:msyksphinz.hatenablog.com github.com RISC-V IOMMUの構成について、概略をざっくり理解するためのメモ。 何回か読もうとして挫折してきたので、もう一度ちゃんと読んでみようと思う。 MSI ページテーブルポインタ (msiptp) .MSIページテーブルポイン…

Vivado Simulatorを使ってUVMに入門する (16. arbiter向けのUVMを作る)

前回はこちら:msyksphinz.hatenablog.com UVMについて理解を深めるために、4入力のArbiterを用いたデザインのUVM検証パタンを作っていこうと思う。 arbiter4.sv デザインとしては非常にシンプルで優先度も単純なのだが、とりあえずこれでUVMが走るところま…

Vivado Simulatorを使ってUVMに入門する (15. UVM Testbench Example 2を試す)

前回はこちら:msyksphinz.hatenablog.com UVMのさらなるテストベンチを試行するために、以下のウェブサイトのサンプルを試してみることにした。 www.chipverify.com 前回はScoreboardまで作ったので、残りを組み立てていこう。 テストの構成 class test ext…

RISC-V Summit 2024 North America の資料を概観する (1. State of the Union)

RISC-V Summit 2024 North Americaの発表資料が一部公開されているので、それを眺めてみよう。 riscvsummit2024.sched.com RISC-V State of the Unionは、Krste Asanovicが毎回基調講演的な感じで、現在のRISC-Vの最新状況を伝える機会になっている。 https:…