AMBA CHIについての勉強 AMBA CHIについての勉強 オープンソース形式検証ツールSymbiYosysを用いて形式検証に入門する オープンソース形式検証ツールSymbiYosysを用いて形式検証に入門する Vivado Simulatorを使ってUVMに入門する Vivado Simulatorを使ってU…
記事カテゴリトップ:AMBA CHIプロトコルについての勉強 - FPGA開発日記 AMBA CHIについて今更勉強している。 なんかググっているとなぜかGem5がCHIの解説ページを作っていた。イントロダクションを読んでみるとCHI Rubyプロトコルと言って厳密にはAMBA CHI…
カテゴリインデックス:https://msyksphinz.hatenablog.com/entry/2024/12/14/040000 基本的なALUの形式検証ができたので、今度はレジスタ付きのデザインを考えてみよう。 以下のデザインは、入力信号が入ってから2サイクル後に演算結果が出てくる: always_…
カテゴリインデックス:https://msyksphinz.hatenablog.com/entry/2024/12/14/040000 まずは基本的なフォーマルを勉強するために、SymbiYosysを使ってALUを検証してみたい。 以下にHalf Adder & Half Adder & ALUを構成するデザインを作った。 ha.v module h…
前回はBRAMをSymbiYosysを使って検証してみたのだが、今度はちゃんとフォーマルが落ちるパタンを検証してみたい。 例えば、ReadとWriteが同時に発生した場合、Writeの値をReadに即時移動するようなことを考えると、これはどうなるだろう? 以下のようにコー…
オープンソース・ツールを用いた形式検証を行いたくて、いろいろチュートリアルを読んでいる。 例えば、以下の記事で書いてあるようなBRAMの形式検証を行ってみたい。 zipcpu.com デザインとしては以下をそのまま利用してみる: github.com デザインの本体:…
記事カテゴリトップ:AMBA CHIプロトコルについての勉強 - FPGA開発日記 AMBA CHIについて今更勉強している。 まずは基本的な読み込みリクエストについて。マニュアルを読んでいく。 B5.3 書き込みトランザクション このセクションでは、書き込みトランザク…
記事カテゴリトップ:AMBA CHIプロトコルについての勉強 - FPGA開発日記 AMBA CHIについて今更勉強している。 まずは基本的な読み込みリクエストについて。マニュアルを読んでいく。 B5.1 読み出しトランザクションフロー この節では、読み出しトランザクシ…
記事カテゴリトップ:AMBA CHIプロトコルについての勉強 - FPGA開発日記 AMBA CHIについて今更勉強している。 TXのReqインタフェースについて。マニュアルを読んで必要な信号線をチェックする。 Response fields QoS:サービス品質の優先順位。表B2.2で定義…
インデックス: オープンソース形式検証ツールSymbiYosysを用いて形式検証に入門する (1. SymbiYosysのインストールと基本的な動作確認) (24/12/14) オープンソース形式検証ツールSymbiYosysを用いて形式検証に入門する (2. Failするパタンの検証) (24/12/15…
記事カテゴリトップ:AMBA CHIプロトコルについての勉強 - FPGA開発日記 AMBA CHIについて今更勉強している。 TXのReqインタフェースについて。マニュアルを読んで必要な信号線をチェックする。 B2.2.1 Transaction request fields DoDWT: 直接書き込み転送…
記事カテゴリトップ:AMBA CHIプロトコルについての勉強 - FPGA開発日記 AMBA CHIについて今更勉強している。 TXのReqインタフェースについて。マニュアルを読んで必要な信号線をチェックする。 B2.2.1 Transaction request fields リクエストに使用するフィ…
記事カテゴリトップ:AMBA CHIプロトコルについての勉強 - FPGA開発日記 AMBA CHIについて今更勉強している。 TXのReqインタフェースについて。マニュアルを読んで必要な信号線をチェックする。 勘違いしそうだが、ReqインタフェースはRead/Writeなどのコマ…
記事カテゴリトップ:AMBA CHIプロトコルについての勉強 - FPGA開発日記 AMBA CHIについて今更勉強している。 チャネルについて RN-Fからは、TXインタフェースとRXインタフェースが存在している。TXチャネルはRN-Fノードからの発信用。RXチャネルはRN-Fノー…
各記事の構成要素まとめ: AMBA CHIプロトコルの勉強 (1. CHIのポート構成について) (24/12/04) AMBA CHIプロトコルの勉強 (2. CHIのReqインタフェースについて) (24/12/06) AMBA CHIプロトコルの勉強 (3. CHIのReqインタフェースについて) (24/12/08) AMBA …
マイクロプロセッサ・アーキテクチャ教科書 (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 =…