FPGA開発日記

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

FPGA開発日記 カテゴリ別インデックス

RISC-VにおけるRVWMOの仕様について読み直す 1. RVWMOの概要 (24/02/01) 2. 構文依存性の定義 (24/02/02) 3. Preserved Program Order / Memory Model Axioms (24/02/04) RISC-V仕様書 : Appendix A. RVWMO Explanatory Material, Version 0.1 (24/02/05) RI…

LiteXによるSoC環境構築を試行する (20. ILAを使ったデザインのデバッグ)

LiteXのLiteScopeではどうにも細かい信号を取得することができないので、Xilinxの純正の波形のデバッグツールであるILA(Integrated Logic Analyzer)を使って内部の信号を観察する方法を見てみる。 一応、一歩ずつ問題を特定しているが、まだまだ動いていない…

LiteXによるSoC環境構築を試行する (19. ILAを使ったデザインのデバッグ)

LiteXのLiteScopeではどうにも細かい信号を取得することができないので、Xilinxの純正の波形のデバッグツールであるILA(Integrated Logic Analyzer)を使って内部の信号を観察する方法を見てみる。 もうちょっと細かい信号を取得するために、tclでILAを挿入す…

LiteXによるSoC環境構築を試行する (18. ILAを使ったデザインのデバッグ)

LiteXのLiteScopeではどうにも細かい信号を取得することができないので、Xilinxの純正の波形のデバッグツールであるILA(Integrated Logic Analyzer)を使って内部の信号を観察する方法を見てみる。 ある程度信号波形を取れてきたので、必要な個所にデバッグ信…

LiteXによるSoC環境構築を試行する (17. LiteXデザインにILAを挿入する方法の調査)

LiteXのLiteScopeではどうにも細かい信号を取得することができないので、Xilinxの純正の波形のデバッグツールであるILA(Integrated Logic Analyzer)を使って内部の信号を観察する方法を見てみる。 まず、ILA無しでLiteXでFPGAをビット・ストリームファイルを…

LiteXによるSoC環境構築を試行する (16. Litescopeによるデバッグを試行する)

LiteXでどのように波形をダンプしてデバッグすればよいかを調査していたのだが、LiteXはブリッジを通じてホストに対して情報をダンプする機能が多く備わっているらしい。 これは便利だ。 ChipScopeのように内部の信号まで取り出したいのだが、このためにはデ…

LiteXによるSoC環境構築を試行する (15. Litescopeによるデバッグを試行する)

LiteXでどのように波形をダンプしてデバッグすればよいかを調査していたのだが、LiteXはブリッジを通じてホストに対して情報をダンプする機能が多く備わっているらしい。 これは便利だ。 まずは、RTLシミュレーション環境:litex_simで試してみる。 各種情報…

LiteXによるSoC環境構築を試行する (14. 自作CPUのLiteXのインテグレーション試行)

LiteXはオープンソースのSoC構成環境なのだが、これに対して自作CPUのインテグレーションを試行してみる。 既存のシミュレーション環境に対して、以下の定義を追加して、LiteX用に改造してみる。 CLINT / PLICのメモリマップを定義する。 { "base": "0x0200_…

RISC-Vの高性能アウト・オブ・オーダCPU XiangShanについての資料を読む (7. KunmingHuのビルドと試行)

HPCA2024で開催された、RISC-Vのアウト・オブ・オーダCPU XiangShanについての資料が公開されていたので、読んでみることにした。 じっくり読みたいので、1ページずつ要点を抑えていく。 実際のGitHubリポジトリをダウンロードして、いろいろ試してみようと…

RISC-Vの高性能アウト・オブ・オーダCPU XiangShanについての資料を読む (6. Kuminghuのマイクロアーキテクチャ続き)

HPCA2024で開催された、RISC-Vのアウト・オブ・オーダCPU XiangShanについての資料が公開されていたので、読んでみることにした。 じっくり読みたいので、1ページずつ要点を抑えていく。 次は、マイクロアーキテクチャのトピックについて。続き。 xiangshan-…

RISC-Vの高性能アウト・オブ・オーダCPU XiangShanについての資料を読む (5. Kuminghuのマイクロアーキテクチャ)

HPCA2024で開催された、RISC-Vのアウト・オブ・オーダCPU XiangShanについての資料が公開されていたので、読んでみることにした。 じっくり読みたいので、1ページずつ要点を抑えていく。 次は、マイクロアーキテクチャのトピックについて。続き。 xiangshan-…

RISC-Vの高性能アウト・オブ・オーダCPU XiangShanについての資料を読む (4. Microarchitecture Design and Implementation)

HPCA2024で開催された、RISC-Vのアウト・オブ・オーダCPU XiangShanについての資料が公開されていたので、読んでみることにした。 じっくり読みたいので、1ページずつ要点を抑えていく。 次は、マイクロアーキテクチャのトピックについて。続き。 xiangshan-…

RISC-Vの高性能アウト・オブ・オーダCPU XiangShanについての資料を読む (3. Microarchitecture Design and Implemenation)

HPCA2024で開催された、RISC-Vのアウト・オブ・オーダCPU XiangShanについての資料が公開されていたので、読んでみることにした。 じっくり読みたいので、1ページずつ要点を抑えていく。 次は、マイクロアーキテクチャのトピックについて。 xiangshan-doc.re…

Vivado Simulatorを用いてUVMに入門する (3. テストベンチの解析)

UVMに入門したくて、簡単な例を用いて試してみることにした。以下のようなシンプルなデザインをテストしたい。 vlsiverify.com msyksphinz.hatenablog.com msyksphinz.hatenablog.com 次にMonitorとScoreboardについてみていこうと思う。 monitorについては…

RISC-Vの高性能アウト・オブ・オーダCPU XiangShanについての資料を読む (2. XiangShanのAgile Development)

HPCA2024で開催された、RISC-Vのアウト・オブ・オーダCPU XiangShanについての資料が公開されていたので、読んでみることにした。 じっくり読みたいので、1ページずつ要点を抑えていく。 xiangshan-doc.readthedocs.io https://github.com/OpenXiangShan/Xia…

Vivado Simulatorを用いてUVMに入門する (2. テストベンチの解析)

UVMに入門したくて、簡単な例を用いて試してみることにした。以下のようなシンプルなデザインをテストしたい。 vlsiverify.com adderとのインタフェースとして、以下を定義する。これによりテストベンチとDUTを接続する。 verify/addr_if.sv interface add_i…

Vivado Simulatorを用いてUVMに入門する (1. adderを用いたシンプルな例)

UVMに入門したくて、簡単な例を用いて試してみることにした。以下のようなシンプルなデザインをテストしたい。 vlsiverify.com module adder (input logic clk, input logic reset, input logic [ 7: 0] in1, input logic [ 7: 0] in2, output logic [ 8: 0]…

RISC-Vの高性能アウト・オブ・オーダCPU XiangShanについての資料を読む (1. 概要)

HPCA2024で開催された、RISC-Vのアウト・オブ・オーダCPU XiangShanについての資料が公開されていたので、読んでみることにした。 じっくり読みたいので、1ページずつ要点を抑えていく。 xiangshan-doc.readthedocs.io https://github.com/OpenXiangShan/Xia…

SystemVerilogにおけるInterface内の関数を使うときのセンシティビティ・リストの考慮事項

SystemVerilogで回路記述をしていて、引っかかったところのメモ: www.edaplayground.com SystemVerilogのInterface内でFunctionを定義した場合、これを使う場合には注意が必要だ。 interface interface_counter; logic valid; logic [ 3: 0] counter; funct…

自作CPUの回路面積削減検討 (ROBの面積削減検討)

自作CPUの回路面積削減の続き。次はROBの面積削減を検討する。 ROBもCAMで構成する要素と、RAMで構成する要素がある。 これまですべてCAMで構成する要素を、RAMに変更して構成する。 // Instruction's static information from decoder typedef struct packe…

自作CPUの回路面積削減検討 (ストアバッファの面積削減検討)

自作CPUの回路面積削減の続き。ストアバッファの面積が結構大きいので、削減を検討する。 ストアバッファが大きくなっている原因は、直接的なものはよくわからないのだが、Atomic命令を処理するフィールドが少なくともかなり面積を使用しているので、これを…

自作CPUの回路面積削減検討 (命令発行条件の緩和検討)

自作CPUのいくつかの面積最適化を行っていたら、またバグが出てきた。今度はデッドロック系だ。 問題は、LSUの命令発行キューに対してリプレイキューが小さく設計してあることにある。 例えば、リプレイキューのエントリ数がNであり、リプレイキューまでのパ…

自作CPUの回路面積削減検討 (STQのフォワード論理削減検討2.)

現在の自作CPUは、結構面積が大きくて通常のFPGAに乗り切らない。どうにか乗り切れるように、面積削減を検討している。 LSUの中で圧倒的に面積が巨大なのがSTQだ。STQが巨大な要因はいくつかある。 LDQと異なり、各エントリはアドレスとデータの両方を管理す…

自作CPUの回路面積削減検討 (STQのフォワード論理削減検討)

現在の自作CPUは、結構面積が大きくて通常のFPGAに乗り切らない。どうにか乗り切れるように、面積削減を検討している。 LSUの中で圧倒的に面積が巨大なのがSTQだ。STQが巨大な要因はいくつかある。 LDQと異なり、各エントリはアドレスとデータの両方を管理す…

自作CPUの回路面積削減検討 (STQの面積削減検討)

現在の自作CPUは、結構面積が大きくて通常のFPGAに乗り切らない。どうにか乗り切れるように、面積削減を検討している。 LSUの中で圧倒的に面積が巨大なのがSTQだ。STQが巨大な要因はいくつかある。 LDQと異なり、各エントリはアドレスとデータの両方を管理す…

マルチポートRAMを使用するためのXOR Multiport RAMの実装

前のブログの記事では、LVTを用いたSingle Port RAMをMulti Portに複製するための方法について調査した。 msyksphinz.hatenablog.com LVT(Live Value Table)を用いた手法では、各RAMインデックスについて、どのバンクRAMに最新の値が書き込まれているかを示…

キャッシュのコヒーレンス・プロトコルについてまとめる (MOESIプロトコル)

マルチコアにおいて、キャッシュ・コヒーレンス・プロトコルというのは切っても切り離せない問題だ。 幾つかのプロトコルについてメモを書いたので、一応ここに残しておく。 MOESIプロトコル 前回まとめたMESIプロトコルに対して、O(Owned)状態を加える。 O(…

キャッシュのコヒーレンス・プロトコルについてまとめる (MSI/MESIプロトコル)

マルチコアにおいて、キャッシュ・コヒーレンス・プロトコルというのは切っても切り離せない問題だ。 幾つかのプロトコルについてメモを書いたので、一応ここに残しておく。 MSIプロトコル MESIプロトコル MOESIプロトコル MSIプロトコル キャッシュ内のブロ…

自作CPUのフロントエンドデータ幅とバックエンドデータ幅の分離検討

現在の自作CPUは、簡易的にフロントエンドとバックエンドのデータ幅を一致させている。 例えば、バックエンドのキャッシュラインの幅が64Bであれば、フロントエンドも64Bにしている。 しかし、さすがにフロントエンドのデコードラインで64Bを一気にデコード…

"Constructing a Weak Memory Model" を読む (4. GAMのOOOMPへの拡張)

Weak Memory Modelについてもう少し知識をつけたかったので、論文を読んでみることにした。 arxiv.org 基本的にDeepLに翻訳してもらったものを、自分で読み直しながら直しているだけなので、自分でまとめているわけではない。 冗長なのは無編集でブログに貼…