2024-11-01から1ヶ月間の記事一覧
マイクロプロセッサ・アーキテクチャ教科書 (TECHIシリーズ Vol. 57)作者:中森 章CQ出版Amazon これの前版は自分が高校生くらいの時から買って読んでいた。 第2版が出てとてもうれしい。 前版は本当に自分の人生を変えた本だと思うので、これも読んで一生懸…
前回:msyksphinz.hatenablog.com github.com RISC-V IOMMUの構成について、概略をざっくり理解するためのメモ。 IOMMUのMSIアドレス変換について、MRIFを理解する必要が生じてきたのでメモ。 MRIFのフォーマットは以下のようになる。以下のアドレスマップは…
前回:msyksphinz.hatenablog.com github.com RISC-V IOMMUの構成について、概略をざっくり理解するためのメモ。 IOMMUのMSIアドレス変換について、MRIFを理解する必要が生じてきたのでメモ。 MRIF(メモリ常駐割り込みファイル: Memory Resident Interrupt F…
前回:msyksphinz.hatenablog.com github.com RISC-V IOMMUの構成について、概略をざっくり理解するためのメモ。 何回か読もうとして挫折してきたので、もう一度ちゃんと読んでみようと思う。 メモリ内データ構造のキャッシュ ダイレクトメモリアクセス(DMA)…
前回:msyksphinz.hatenablog.com github.com RISC-V IOMMUの構成について、概略をざっくり理解するためのメモ。 何回か読もうとして挫折してきたので、もう一度ちゃんと読んでみようと思う。 PCIe ATS変換リクエスト処理 ATS[2]変換要求で構成エラーが発生…
前回:msyksphinz.hatenablog.com github.com RISC-V IOMMUの構成について、概略をざっくり理解するためのメモ。 何回か読もうとして挫折してきたので、もう一度ちゃんと読んでみようと思う。 IOMMU による PTE アクセス(A)とダーティ(D)の更新 capabili…
前回はこちら:msyksphinz.hatenablog.com UVMを使って、2ポートのArbiterを検証することを考えたい。 2ポートのRound Robin Arbiterは、現在のPriorityに応じてAcceptするポートを変えるArbiterだ。 arbiter2_rr.sv always_comb begin w_curr_ptr_next = r_…
前回:msyksphinz.hatenablog.com github.com RISC-V IOMMUの構成について、概略をざっくり理解するためのメモ。 何回か読もうとして挫折してきたので、もう一度ちゃんと読んでみようと思う。 デバイスコンテキストの場所を特定するプロセス device_idを使っ…
前回はこちら:msyksphinz.hatenablog.com 前回、ランダム命令を生成するためのUVM記述を考えたのだが、ドライバのところに制約を書くのは良くない気がする。 これだとテストの環境に制約を書いてしまっていることになるので、もうちょっと一般的なところ、…
前回はこちら:msyksphinz.hatenablog.com UVMで色々コントロールできることが分かってきたので、今度はランダム検証に使うための要素について考えていきたい。 単純に考えられるのは、RISC-Vの命令をランダムに生成するランダムパタンジェネレータだ。 UVM…
メーリングリストに回ってきた仕様で、なんか変わった仕様があるなと思ったのでメモ。 64ビットのメモリアクセスの命令は、RV32だと当然存在していないのだが、それを無理やり定義する拡張がある。 Zilsd & Zclsdという仕様らしい。 Load/Store pair instruc…
前回はこちら:msyksphinz.hatenablog.com 1サイクルのDelayがあるRAMをUVMで検証している。 モニタのところで、アドレスとデータが1サイクルずれるのを吸収してやる必要がある。 とりあえず以下のようにして、1サイクルのDelayをprev_read_eqとprev_read_ad…
前回はこちら:msyksphinz.hatenablog.com 前回までで作っているUVMの環境では、DUTは入力を即時出力するようなデザインなのでイマイチ面白くない。 UVMのスコアボードは、中間結果を取っておいてそれを使って比較できるはずなので、メモリなどの記憶素子も…
前回はこちら:msyksphinz.hatenablog.com 前回までで作っているUVMの環境では、DUTは入力を即時出力するようなデザインなのでイマイチ面白くない。 UVMのスコアボードは、中間結果を取っておいてそれを使って比較できるはずなので、メモリなどの記憶素子も…
前回はこちら:msyksphinz.hatenablog.com ラウンド・ロビンのArbiterを、4入力からN入力に拡張してみよう。 実装を簡単にするために、最初に優先ポート順に並べ替えるのを、インデックスが大きいほど高い優先度になるようにちょっと変更する。 for (int i =…
前回はこちら: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…
前回はこちら:msyksphinz.hatenablog.com UVMについて理解を深めるために、4入力のArbiterを用いたデザインのUVM検証パタンを作っていこうと思う。 arbiter4.sv デザインとしては非常にシンプルで優先度も単純なのだが、とりあえずこれでUVMが走るところま…
前回:msyksphinz.hatenablog.com github.com RISC-V IOMMUの構成について、概略をざっくり理解するためのメモ。 何回か読もうとして挫折してきたので、もう一度ちゃんと読んでみようと思う。 IOVAを変換するプロセスは、ハードウェアID(device_id とprocess…
前回:msyksphinz.hatenablog.com github.com RISC-V IOMMUの構成について、概略をざっくり理解するためのメモ。 何回か読もうとして挫折してきたので、もう一度ちゃんと読んでみようと思う。 プロセス・ディレクトリ・テーブル (PDT) PDTは、process_id の…
前回:msyksphinz.hatenablog.com github.com RISC-V IOMMUの構成について、概略をざっくり理解するためのメモ。 何回か読もうとして挫折してきたので、もう一度ちゃんと読んでみようと思う。 MSI ページテーブルポインタ (msiptp) .MSIページテーブルポイン…
前回はこちら:msyksphinz.hatenablog.com UVMについて理解を深めるために、4入力のArbiterを用いたデザインのUVM検証パタンを作っていこうと思う。 arbiter4.sv デザインとしては非常にシンプルで優先度も単純なのだが、とりあえずこれでUVMが走るところま…
前回はこちら:msyksphinz.hatenablog.com UVMのさらなるテストベンチを試行するために、以下のウェブサイトのサンプルを試してみることにした。 www.chipverify.com 前回はScoreboardまで作ったので、残りを組み立てていこう。 テストの構成 class test ext…
RISC-V Summit 2024 North Americaの発表資料が一部公開されているので、それを眺めてみよう。 riscvsummit2024.sched.com RISC-V State of the Unionは、Krste Asanovicが毎回基調講演的な感じで、現在のRISC-Vの最新状況を伝える機会になっている。 https:…