ハードウェアの気になるあれこれ

技術的に興味のあることを調べて書いてくブログ。主にハードウェアがネタ。

RISC-V

Chiselで簡単なRISC-Vを作った話

今年のGWの自分宿題としてものすごく簡単なRISC-Vを作っていました。 ツイッター見てる方はご覧になってたかもしれませんが、GW中に一応riscv-tests位ならPASSするものが出来ています。 今回はその後にVivadoで合成してみた結果も取ることが出来たのでそれも…

riscv-sodorをintelliJ IDEAで解析する環境を整えた話

前回のChiselネタではVCD波形の確認に使うGTKWaveのビルドについてをまとめた。 www.tech-diningyo.info 今回はChisel-bootcampの傍らで確認を始めているRISC-Vの実装の一つsodorの実行&解析環境を作る際にIntelliJ IDEAとsbtの扱いでハマった話を備忘のた…

Chisel Bootcamp - Module3.2(6) - 練習問題:Vecを使ったRISC-Vのレジスタファイル

前回の記事ではChisel BootcampはChiselのコレクション型である`Vec`について調べた。 今日はModule3.2の締めくくりとして練習問題を見ていく。

SCR1の解析 - ecall命令の処理とriscv-testsの終了条件の確認

昨日の記事の結びで以下のように書いた。 > ということは`ecall`命令がうまく処理されていないことになるが、そもそも`ecall`命令って何??な状態なので次回は`ecall`命令の中身を把握するところからやっていきたい。 [https://www.tech-diningyo.info/entr…

SCR1の解析 - riscv-tests処理内容の確認

昨日の記事でVivadoシミュレータ上で実行した[riscv-testsのaddiテスト](https://github.com/riscv/riscv-tests/blob/master/isa/rv64ui/addi.S)が正常に終了しない件についての調査を行い、テストベンチ上の`$finish`に辿り着く条件を満たしていないことが…

RISC-Vの実装の1つ - SCR1の解析 - シミュレーション環境の疑問点の確認(2)

前回のSCR1ネタではVivadoシミュレータを使用した際に`$readmemh`がうまく行かない問題を解析していった。 今回はもうひとつ残っているシミュレーションが正常に終わらない問題について解析していく。

RISC-Vの実装の1つ - SCR1の解析 - riscv-testsの実行

前回のSCR1の記事ではriscv-toolsのビルドを行い、spikeを使ってRISC-Vのバイナリの実行が可能なことを確認した。 tech-diningyo.hatenablog.com 今回はビルドしたRISC-V用のtoolchainを使ってriscv-testsをSCR1向けにビルドしVivadoのシミュレータでシミュ…

RISC-Vの実装の1つ - SCR1の解析 - riscv-toolsのビルド

前回SCR1のVivadoシミュレーション環境の起動が確認できて、HW側の準備は整った。 今回は実際のRISC-Vバイナリを使ってシミュレーションするために必要となるriscv-toolsのビルドを行っていく。

RISC-Vの実装の1つ - SCR1の解析 - Vivadoプロジェクト準備(3)

今回も引き続き、SCR1のVivadoシミュレーション環境のエラー解析を行っていく。 今回はVivadoシミュレーション本体がSIGSEGVでツールごと落ちる問題を見ていく。

RISC-Vの実装の1つ - SCR1の解析 - Vivadoプロジェクト準備(2)

前回Vivado上でSCR1コアのプロジェクトを立ち上げシミュレーションを実行したところ、エラーが発生した。 今回の記事ではそのエラー内容の解析を行っていく。

RISC-Vの実装の1つ - SCR1の解析 - Vivadoプロジェクト準備(1)

RISC-Vのサイトに紹介されているコアで、最初の学習に良さそうなコアを探したところsyntacoreコア社のSCR1というコアが扱いやすそうなので、このコアをシミュレーションできる環境をVIvadoシミュレータを使って立ち上げていく。