FPGA開発日記

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

Verilatorのリグレッションテスト用にGitHub Actionsの設定を試行

Verilatorを使った自作CPUのリグレッションテスト用に、Dockerでの環境構築と同時にGitHub Actionsを使ってCI環境を作っておきたい。 GitHub Actionsはこれまで全く使ったことが無かったので、まずは使い方を覚えるところから。

.github/workflowsというところにYAMLファイルを置いておくらしい。やりたいこととしては

  • 必要なパッケージのインストール(Ubuntu)
  • RISC-Vツールのインストール(GNU GCCとか)
  • Verilatorのインストール
  • 各コンフィグレーションでのビルド
  • 各コンフィグレーションでのリグレッションテスト

まで出来るようにしてみたい。まずは簡単にGitHub Actionsを使えるようになるまでを試行した。

主に以下を参考にしながら進めている。

www.tech-diningyo.info

github.com

なるほど、DockerやVagrantと似ていて、環境を構築するためのスクリプトを用意しておく感じか。GitHub Actionsの場合はYAMLを使うということになっている。

とりあえずいろんなものをコピペしながら以下のようなmain.ymlファイルを作成した。

# いろいろ省略

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
  # This workflow contains a single job called "build"
  build:
    name: ci
    strategy:
      matrix:
        system: ["ubuntu-20.04"]
        verilator: ["4.204"]

    # The type of runner that the job will run on
    runs-on: ${{ matrix.system }}

    # Steps represent a sequence of tasks that will be executed as part of the job
    steps:
      # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
      - uses: actions/checkout@v2

      # Apt updates
      - name: apt_updates
        run: |
          sudo apt update
          sudo apt install -y tzdata
          sudo apt install -y git autoconf automake autotools-dev curl python3 libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev\
 libexpat-dev libfl-dev

      # Build Verilator
      - name: Cache Verilator ${{ matrix.verilator }}
        uses: actions/cache@v2.1.6
        id: cache-verilator
        with:
          path: verilator-${{ matrix.verilator }}
          key: ${{ matrix.system }}-verilator-${{ matrix.verilator }}

      - name: Compile Verilator ${{ matrix.verilator }}
        if: steps.cache-verilator.outputs.cache-hit != 'true'
        run: |
          wget https://github.com/verilator/verilator/archive/refs/tags/v${{ matrix.verilator }}.tar.gz
          tar xvf v${{ matrix.verilator }}.tar.gz
          cd verilator-${{ matrix.verilator }}
          autoconf
          ./configure
          make
      - name: Install Verilator ${{ matrix.verilator }}
        run: |
          cd verilator-${{ matrix.verilator }}
          sudo make install
          verilator --version

ここまでをリポジトリにコミット、pushしたら自動的にGitHub Actionsが動き始める。その結果は自動的にGitHub Actionsのページに記録される。便利だなあ。

f:id:msyksphinz:20210905002201p:plain

これに、さらに各コンフィグレーションでのVerilatorビルドのコマンドをくっつけるとビルドしてくれる?試してみる。