FPGA開発日記

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

2022-02-01から1ヶ月間の記事一覧

オープンソースFPGAフォーマットの仕様書を読む (3. BELの仕様について)

以下の記事の続き。仕様書を読んでいく。サイトとかPIPの定義、制約について細かく書いてあるが、正直この段階では何を言っているのか良く分からない。 msyksphinz.hatenablog.com msyksphinz.hatenablog.com msyksphinz.hatenablog.com fpga-interchange-sc…

自作RISC-V CPU開発におけるriscv-tortureの適用

自作RISC-Vコアの検証を強化するために、ランダムテストケースの適用を始めた。 RISC-Vにおけるランダムテストケースはriscv-tortureがオープンソースで使用可能だ。開発が終了してから時間がかなり立っているが、さてどうだろう。 github.com とりあえず適…

自作RISC-VコアをYosysで合成する試行 (2. sv2v によるデザインの修正試行、の以前)

前回、自作コアをYosysで合成しようとしてSystemVerilogの文法制約の影響でコンパイルに失敗したのだった。 GitHub Issueにはsv2vを使うように指示があったのでそれを試行してみようとした。 github.com 以下でインストールを試みる。 git clone https://git…

SFENCE.VMAの実行に関する検討 (OoOでページテーブルが正しく更新されるためにはどうしたらいいか)

SFENCE.VMA を適当にCSR命令として実装していたのだがテストを実行すると不具合を見つけた。 SFENCE.VMAはページテーブルのアップデートなどを行った際にそれを適用するためのフェンスで、ページテーブルを更新した後にそれを適用するための命令だ。 この命…

自作RISC-VコアをYosysで合成する試行 (1. 部品の合成試行)

なんとなくYosysの使い方が分かってきたので、自作RISC-Vコアが合成できるのか試行してみようと思う。 まずは単純な部品から。以下のデザインが合成できるか確認してみる。 bus_or.sv module bit_or #( parameter WIDTH = 32, parameter WORDS = 4 ) ( input…

Rocket-ChipのAtomic命令動作観察 (2. QuadCoreConfigによるAtomic命令のRTLシミュレーション)

Chipyardの4コアコンフィグレーションを使用してAtomic命令の動作をシミュレートする。 テストとして以下のようなプログラムを作り、4コアが同じキャッシュラインを更新していくことを確認していきたい。 int global = 0; static inline void amoadd_d() { i…

オープンソースFPGAフォーマットの仕様書を読む (2. PIPの仕様を読んでいく)

以下の記事の続き。仕様書を読んでいく。サイトとかPIPの定義、制約について細かく書いてあるが、正直この段階では何を言っているのか良く分からない。 msyksphinz.hatenablog.com msyksphinz.hatenablog.com fpga-interchange-schema.readthedocs.io FPGA I…

自作RISC-V CPU開発におけるアトミック命令のサポート検討

自作RISC-Vコアの設計においては、LSU周りのデバッグをメインに行っているがあまりはっきりとした進捗が無いのでブログに書くネタがない。 一方でAtomic命令についてはいくつかテンプレートを作成した上で基本的な命令の動作記述を始めた。 アトミック命令に…

自作RISC-Vコアにおける浮動小数点命令サポートの実装 (3. レジスタの実装と基本的な符号命令)

浮動小数点命令とレジスタをサポートするために、リネームと物理レジスタの実装を変更する。 物理レジスタについては、x0(=ft0)レジスタに書き込みができるように変更する。また、リネームにおいてはx0(=ft0)もリネームを実行する。 汎用レジスタに対する特…

オープンソースのチップ設計ツール群OpenLaneを試す (2. GUIでGDSIIを観察する)

前回のOpenLaneの試行はこちら。 msyksphinz.hatenablog.com 前回はspmというデザインをビルドしたのだが、生成されたファイル群はDockerを抜けても参照することができる。 OpenLane/designs/spm/runs/(実行日時)/results/finalで参照できる。 DESKTOP-P42Q0…

オープンソースFPGAフォーマットの仕様書を読む

以下の記事の続き。仕様書を読んでいく。 msyksphinz.hatenablog.com fpga-interchange-schema.readthedocs.io FPGA Interchange Document 用語について デバイス : タイルとパッケージピンを含む タイル : ワイヤとサイトを含むタイルのインスタンス パッケ…

オープンソースの論理合成ツールYosysを試す

オープンソースのEDAツール関係を調査している。今回はオープンソースの論理合成ツールYosysだ。 まずはインストール手順を確認する。 github.com WSL2のUbuntu-20.04 LTSに環境を構築している。 sudo apt-get install build-essential clang bison flex lib…

オープンソースのチップ設計ツール群OpenLaneを試す

OpenLaneはRTLからGDSIIを生成するためのツール群だ。 OpenROADとかOpenLaneとかあるけど、厳密な用語の定義は分からない。OpenLaneとOpenROAD、どっちがどっちを包含しているんだ? github.com まずはリポジトリをダウンロードする。WSL2のUbuntu-20.04をベ…

オープンソースFPGAフォーマットを知る

Google Open Source Blog の "FPGA Interchange format to enable interoperable FPGA tooling" を読んでわかったことをまとめる。 FPGAのツールチェインはそれぞれのベンダで発展しており、ツールチェイン間での互換性については考慮されることがあまりない…

自作RISC-Vコアにおける浮動小数点命令サポートの実装

浮動小数点命令をサポートするためには、まずはレジスタファイル、そして検証環境の更新が必要だ。 まず、SpikeにおけるFPU命令のトレースログの取り扱いについては、浮動小数点命令レジスタへの書き込みが行われると、レジスタの種類のビットが変更される。…

自作RISC-Vコアにおける浮動小数点命令サポートの検討

自作RISC-V CPUコアに浮動小数点命令をサポートしたい。浮動小数点命令は大きく分けて単精度浮動小数点と倍精度浮動小数点命令があり、それぞれの命令を追加していく。 自作CPUコアでは命令定義をJSONで管理して、デコーダを自動生成するようにしているので…

RISC-V CPUコア CVA6 のL1Dキャッシュ構成ドキュメントを読む (2. その他のモジュール)

CVA6はオープンソースのRISC-V CPUコアで、Chipyardにも組み込まれているインオーダパイプラインのCPUだ。 そのL1Dキャッシュの機能について解説されている文書が公開されているので読んでいく。 arxiv.org https://arxiv.org/ftp/arxiv/papers/2202/2202.03…

RISC-V CPUコア CVA6 のL1Dキャッシュ構成ドキュメントを読む (1. L1Dキャッシュの構造)

CVA6はオープンソースのRISC-V CPUコアで、Chipyardにも組み込まれているインオーダパイプラインのCPUだ。 CPUの部分はソースコードを読むことができるが、複雑なLSUやキャッシュ周りはちゃんとVerilogの実装を読もうとすると時間がかかってしまう。ちょうど…

自作RISC-V CPUコアで構成を変えながら性能を測定していく

しばらくブログを書いていなかったが久しぶりに再開する。 自作RISC-V CPUコアの方は、いくつかのコンフィグレーションにおいてDhrystoneを完走させることができるくらいになってきた。性能は小さいほうから順調にスケーリングしているが、構成を大きくして…