2022-02-01から1ヶ月間の記事一覧
以下の記事の続き。仕様書を読んでいく。サイトとかPIPの定義、制約について細かく書いてあるが、正直この段階では何を言っているのか良く分からない。 msyksphinz.hatenablog.com msyksphinz.hatenablog.com msyksphinz.hatenablog.com fpga-interchange-sc…
自作RISC-Vコアの検証を強化するために、ランダムテストケースの適用を始めた。 RISC-Vにおけるランダムテストケースはriscv-tortureがオープンソースで使用可能だ。開発が終了してから時間がかなり立っているが、さてどうだろう。 github.com とりあえず適…
前回、自作コアをYosysで合成しようとしてSystemVerilogの文法制約の影響でコンパイルに失敗したのだった。 GitHub Issueにはsv2vを使うように指示があったのでそれを試行してみようとした。 github.com 以下でインストールを試みる。 git clone https://git…
SFENCE.VMA を適当にCSR命令として実装していたのだがテストを実行すると不具合を見つけた。 SFENCE.VMAはページテーブルのアップデートなどを行った際にそれを適用するためのフェンスで、ページテーブルを更新した後にそれを適用するための命令だ。 この命…
なんとなくYosysの使い方が分かってきたので、自作RISC-Vコアが合成できるのか試行してみようと思う。 まずは単純な部品から。以下のデザインが合成できるか確認してみる。 bus_or.sv module bit_or #( parameter WIDTH = 32, parameter WORDS = 4 ) ( input…
Chipyardの4コアコンフィグレーションを使用してAtomic命令の動作をシミュレートする。 テストとして以下のようなプログラムを作り、4コアが同じキャッシュラインを更新していくことを確認していきたい。 int global = 0; static inline void amoadd_d() { i…
以下の記事の続き。仕様書を読んでいく。サイトとかPIPの定義、制約について細かく書いてあるが、正直この段階では何を言っているのか良く分からない。 msyksphinz.hatenablog.com msyksphinz.hatenablog.com fpga-interchange-schema.readthedocs.io FPGA I…
自作RISC-Vコアの設計においては、LSU周りのデバッグをメインに行っているがあまりはっきりとした進捗が無いのでブログに書くネタがない。 一方でAtomic命令についてはいくつかテンプレートを作成した上で基本的な命令の動作記述を始めた。 アトミック命令に…
浮動小数点命令とレジスタをサポートするために、リネームと物理レジスタの実装を変更する。 物理レジスタについては、x0(=ft0)レジスタに書き込みができるように変更する。また、リネームにおいてはx0(=ft0)もリネームを実行する。 汎用レジスタに対する特…
前回のOpenLaneの試行はこちら。 msyksphinz.hatenablog.com 前回はspmというデザインをビルドしたのだが、生成されたファイル群はDockerを抜けても参照することができる。 OpenLane/designs/spm/runs/(実行日時)/results/finalで参照できる。 DESKTOP-P42Q0…
以下の記事の続き。仕様書を読んでいく。 msyksphinz.hatenablog.com fpga-interchange-schema.readthedocs.io FPGA Interchange Document 用語について デバイス : タイルとパッケージピンを含む タイル : ワイヤとサイトを含むタイルのインスタンス パッケ…
オープンソースのEDAツール関係を調査している。今回はオープンソースの論理合成ツールYosysだ。 まずはインストール手順を確認する。 github.com WSL2のUbuntu-20.04 LTSに環境を構築している。 sudo apt-get install build-essential clang bison flex lib…
OpenLaneはRTLからGDSIIを生成するためのツール群だ。 OpenROADとかOpenLaneとかあるけど、厳密な用語の定義は分からない。OpenLaneとOpenROAD、どっちがどっちを包含しているんだ? github.com まずはリポジトリをダウンロードする。WSL2のUbuntu-20.04をベ…
Google Open Source Blog の "FPGA Interchange format to enable interoperable FPGA tooling" を読んでわかったことをまとめる。 FPGAのツールチェインはそれぞれのベンダで発展しており、ツールチェイン間での互換性については考慮されることがあまりない…
浮動小数点命令をサポートするためには、まずはレジスタファイル、そして検証環境の更新が必要だ。 まず、SpikeにおけるFPU命令のトレースログの取り扱いについては、浮動小数点命令レジスタへの書き込みが行われると、レジスタの種類のビットが変更される。…
自作RISC-V CPUコアに浮動小数点命令をサポートしたい。浮動小数点命令は大きく分けて単精度浮動小数点と倍精度浮動小数点命令があり、それぞれの命令を追加していく。 自作CPUコアでは命令定義をJSONで管理して、デコーダを自動生成するようにしているので…
CVA6はオープンソースのRISC-V CPUコアで、Chipyardにも組み込まれているインオーダパイプラインのCPUだ。 そのL1Dキャッシュの機能について解説されている文書が公開されているので読んでいく。 arxiv.org https://arxiv.org/ftp/arxiv/papers/2202/2202.03…
CVA6はオープンソースのRISC-V CPUコアで、Chipyardにも組み込まれているインオーダパイプラインのCPUだ。 CPUの部分はソースコードを読むことができるが、複雑なLSUやキャッシュ周りはちゃんとVerilogの実装を読もうとすると時間がかかってしまう。ちょうど…
しばらくブログを書いていなかったが久しぶりに再開する。 自作RISC-V CPUコアの方は、いくつかのコンフィグレーションにおいてDhrystoneを完走させることができるくらいになってきた。性能は小さいほうから順調にスケーリングしているが、構成を大きくして…