FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

自作CPUのリグレッションテストをGitHub Actionsで行うための手法の調査

自作CPUのリグレッションテストやCIをGitHub上で行いたくて、いくつか手法を調査している。

1つの手法としては、Dockerfileを使ってリグレッション環境を構築する。Dockerイメージ上にRISC-VツールチェインとVerilatorをインストールしておく。これをDockerHubに登録しておいた。

以下がDockefileの一部。VerilatorとRISC-Vツールチェインをインストールしている。

FROM ubuntu:22.04

RUN apt update
## ... 途中省略 ...
# ------------------
# Install Verilator
# ------------------

RUN curl -L https://github.com/verilator/verilator/archive/refs/tags/v4.228.tar.gz | tar xz && \
    cd verilator-4.228/ && \
    autoconf && \
    ./configure && \
    make -j$(nproc) && \
    make install

# -----------------------------
# RISC-V GNUTools Install
# -----------------------------
WORKDIR /work/
RUN curl -L https://github.com/riscv-collab/riscv-gnu-toolchain/releases/download/2022.08.08/riscv64-elf-ubuntu-20.04-nightly-2022.08.08-nightly.tar.gz   | tar xz
# RUN curl -L https://github.com/riscv-collab/riscv-gnu-toolchain/releases/download/2022.08.08/riscv64-glibc-ubuntu-20.04-nightly-2022.08.08-nightly.tar.gz | tar xz
# RUN curl -L https://github.com/riscv-collab/riscv-gnu-toolchain/releases/download/2022.08.08/riscv64-musl-ubuntu-20.04-nightly-2022.08.08-nightly.tar.gz  | tar xz
...
build-env:
        docker build . -f Dockerfile.migrate --platform=linux/amd64 -t msyksphinz/msrh:run_env
        docker push msyksphinz/msrh:run_env

これに対して、GitHub Actionsでどのようにリグレッションテストを実行するのか考えているのだが、以下のような環境を構築した。

services:
  app:
    build:
      context: "."
      dockerfile: "Dockerfile.test"
    image: msrh-test
    container_name: msrh-test
    environment:
        TZ: 'Asia/Tokyo'

Dockefile.testの中身は以下のようになっている。

FROM msyksphinz/msrh:run_env

COPY . /work/

WORKDIR /work/verilator_sim

RUN ["/work/scripts/runtest.py", "--isa", "rv64imac", "-c", "tiny", "-t", "dhrystone"]

このCOPYコマンドで、展開されたリポジトリの内容自体をコンテナ環境内にすべてコピーしている。そのうえでビルドを走らせるわけだ。これが正しいやり方なのかがわからないが、とりあえずうまく動いているようだ。