Running 64-bit RISC-V Linux in LiteX/Rocket on Arty A7-35T

linux-litex-rocket-arty

Luffcaでは、LiteX/Rocketを用いてSoCを構成し、Digilent社のFPGAボードのArty A7-35T上で、64-bit RISC-V Linuxを実行することに成功しました。
また、Qmtech社のFPGAボードのWukongボードでも、同様に成功しました。
これらのシステムは、github.com/litex-hub/linux-on-litex-rocketをベースにしています。

Rocket

Rocketは、ハードウェア記述言語のChiselで記述されたオープンソースのRISC-Vソフトコアです。
Rocketコアは、RV64(64-bit RISC-V)またはRV32(32-bit RISC-V)構成の5ステージのイン・オーダー実行コアとなっており、更に、RV64用Rocketコアの構成には、Big/Med/Small/Tinyがあります。

LiteX/Rocket

LiteXは、オープンソースのSoC(System on Chip)ビルダーとIP(Intellectual Property)コンポーネントのライブラリから構成されています。
LiteXでRocketを使用するには、Rocket Chip Generator環境ではなく、ChiselからVerilogに変換されたファイルを含むgithub.com/litex-hub/pythondata-cpu-rocketが必要になります。

Digilent Arty A7

Arty A7は、Xilinx社のFPGA(Field-Programmable Gate Array) Artix-7を使用した、Digilent社のFPGAボードです。
このボードの主な仕様は、以下のようになっています。

  • FPGA: XC7A35T/XC7A100T
  • RAM: 256MB
  • MIIイーサネット
  • USB-UARTブリッジ
  • Pmodインターフェース: 4

このボードには、FPGAにXC7A35Tを使用するArty A7-35Tと、XC7A100Tを使用するArty A7-100Tがあります。
現在、Arty A7-35Tを使用しています。

Arty A7-35T上にLiteX/RocketのSoCを構成する場合、FPGAの規模が小さいため、SDカード(Pmod MicroSD)とイーサネットの両方に対応することができません。
このため、SDカードとイーサネットの各々に対応するゲートウェア等を作成し、目的に応じて使い分けています。

まとめ

Luffcaでは、SoCビルダーとIPコンポーネントのライブラリから構成されるLiteXと、オープンソースの64-bit RISC-VソフトコアのRocketを用いて、Digilent社のArty A7-35TとQmtech社のWukongボード上に、FPGAの規模等に合わせたSoCを構成し、64-bit Linuxを実行することに成功しました。