Running 64-bit RISC-V Linux in LiteX/Rocket on Arty A7-35T
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を実行することに成功しました。