RISC-V
最近、RISCVとuartが使えるようになったので、RiscVの内部挙動を確認できるように、モニタを作ってみることにしました。 ひとまず、以下をモニタ可能にしてみました。 PCとして命令アドレス 内部レジスタダンプ で、ハード的にモニタ可能にしたあとは、ター…
先日、Vivadoで合成したら、タイミングMetしませんでした。 そのため、何らかの対策をすることが必要になりました。 それは、パイプライン設計とマルチクロックです。 thira2.hatenablog.com パイプラインは中々に手間なので、マルチクロックにしようと思い…
先日、RISCVを作ったので試しにFPGAで合成してみることにしました。 LUTが5000くらいでFFが1200くらいとなかなかに小型であることはわかりました。 問題はここからで、タイミングがまったくMetしていません。 125MHzで8ns周期なのに、WNSが-5.5nsと惜しくも…
先日、RV32Iもどきを作ったので、次に何を作ろうかと思いました。 そんな気分で、ricvの公式サイトをぼんやり眺めていると、なんとRISCVにはデバッグ仕様が存在することが判明しました。 そんなわけで、RISCVのデバッガを作ろうとしました。 Debug Specifica…
先日からコツコツRISCVを作ってたんですが、とりあえず spikeとのレジスタチェック、命令トレースチェック環境を構築し、 簡単なMain関数の実行が適切に流れるところまで確認しました!! 以下の設計方針で簡単に作成しただけですが、ある程度早めに良い感じで…
chiselでRISC-Vを作ろうとしたのですが、まずプログラム開発環境を揃えることにしました。 spikeで簡単なプログラムを流す(0x0000番地の罠) RISC-Vモデルはspikeにすることにしました。 公式から出ているシミュレータなので安心感があります。 spikeを使って…
最近ベクトル演算機に興味を持っていて、調べているんですが、 Vector命令の仕様がオープンなものは、RISC-V Vector命令しかないようでした。 なので、まずは仕様が明確なRISC-VのVector命令の動かし方について、調べてみました。 まずは、通常のrisc-vtool…
先日、本屋さんに一冊の大きな本が置いてあるのを見つけました。 なんだか、懐かしい感じと希望に溢れている本で気づけば手に取って買って帰りました。 (会計の時にすごく値段が高くてびっくりしました。) はい、そうです、ヘネパタ六版の翻訳版です。 中を…
RISC-Vについて、仕様理解を深めるために試しにプロセッサシミュレータ(RV32UI)を作ってみている。理解は進められているが、思ったより、難しく、技術を学ぶ必要があるということが結論。 妥当性確認方法 riscv-tests/isaが流れることとして確認を進めている…
RISC-Vの命令セットが期待通り動いているか確認するために、riscv-testがある。今回は命令セットシミュレータspikeを使って、riscv-testがPassすることを確認してみる。 以下方法ではPass/Failの表示がされないため、改良が必要 GitHub - riscv/riscv-tests …
GCCでRISCVの命令セットの指定してコンパイルする方法を調べたので以下に記載する。 -mabiは付けないとなぜかコンパイル失敗してしまう。 ABIはApplication Binary Interfaceの略でバイナリ版のAPIらしいがこの辺りもそのうち調べていきたい。 参考: All Abo…
次に以下コンパイラインストールの続きで適当なRISC-VプロジェクトをcloneしてRTLシミュレーションを実施してみる。 今回は公式ドキュメントが特に詳しく、知名度も高いSCR1を使用してサンプル実行まで確認してみることにした。 前回: RISC-Vのコンパイライ…
今更ではあるがRISC-Vについて聞こえてきて、学ぶいい機会と判断したので、いろいろ使ってみることにした。まずはRISC-Vのコンパイラ(gcc)とシミュレータ(spike)をインストールしhello worldが表示されることを確認した。 環境: MacOS(10.14.2) 1. 以下でURL…