DEV Community

Lena
Lena

Posted on • Updated on

IPAセキュリティ・キャンプ全国大会2022 RISC-V CPU自作ゼミ事前準備

IPAセキュリティ・キャンプ全国大会2022 Y4クラスの「RISC-V CPU自作ゼミ」で使用されている「RISC-VとChiselで学ぶ はじめてのCPU自作」の参考出力をここにまとめました。

目次

  1. 簡単なCPUの実装
  2. パイプラインの実装
  3. GOWIN EDAでビットストリームを作成
  4. openFPGALoaderでTang Nanoに書き込む

簡単なCPUの実装

使用環境:VirtualBox Ubuntu 22.04

命令フェッチのテスト (p.85)
Image description

デコーダのテスト (p.88)
Image description

LWのテスト (p.97)
Image description

SWのテスト (p.104)
Image description

riscv-testsのビルド (p.147)
Image description
Image description

ELFファイルをBINファイルへ変換, BINファイルのHex化 (p.148)
Image description

riscv-testsのテスト (p.154)

Image description
Image description

(この後にディレクトリを~/chisel-templateから~/src/chisel-templateに変えました)

riscv_testsの一括実行 (p.157)
Image description

コンパイル (p.160)
Image description
Image description

リンク (p.162)
Image description

HexおよびDumpファイルの作成 (p.163)
Image description

テストの実行 (p.164)
Image description
Image description

パイプラインの実装

make br_hazardの出力 (p.192)
Image description

分岐ハザード対応前のCPUでのテスト (p.193)
Image description
Image description

make hazard_wbの出力 (p.204)
Image description

データハザード対応前CPUでのテスト (p.204)
Image description
Image description

データハザード対応後CPUでのテスト (p.205)
Image description
Image description

make hazard_exの出力 (p.206)
Image description

データハザード対応前CPUでのテスト (p.207)
Image description
Image description

データハザード対応後CPUでのテスト (p.208)

Image description
Image description

riscv-testsのテスト
Image description

GOWIN EDAでビットストリームを作成

使用環境:Windows 10

top.svのSystemVerilogコード:

module top(
    input wire          clock,
    output logic [5:0]  led
);


initial begin
    led <= 0;
end

logic [24:0] counter = 0;

always_ff @(posedge clock) begin
    if( counter < 25'd27_000_000 ) begin
        counter++;
    end
    else begin
        led <= ~led;
        counter <= '0;
    end
end

endmodule
Enter fullscreen mode Exit fullscreen mode

Synthesizeが成功した時の出力:

Image description

フロアプランのIO TypeはLVCMOS33を使用しました。

Image description

Place & Rootが成功した時の出力:
Image description

blink.fsがプロジェクトディレクトリに作成されました。
Image description

openFPGALoaderでTang Nanoに書き込む

openFPGALoaderのインストール:

Image description

使用したZ設定:
Image description

openFPGALoaderの動作確認:
Image description

Tang Nanoをパソコンに接続した際:

openFPGALoaderでビットストリームをTang Nanoに書き込んだ時の出力:
Image description

Latest comments (0)