もっと詳しく

わたすけです。

「RISC-VとChiselで学ぶ はじめてのCPU自作」(9784297123055)という本をご存知ですか?

10月頃にこの本を買ったのですが、最近ようやく重い腰を上げてやろうかな~と思っているところです。本の中ではDockerを使った環境構築が紹介されているのですが、せっかくならVSCodeのRemote Containerで開発したいと思いました。

ということで、今回はそのやり方を紹介しようと思います。

使うもの

  • Windows 11 (Insider)
  • Docker (docker-compose)
  • VSCode (Insider)
  • Remote Container

Remote – containerは、VSCodeでDockerの中に入って開発できる感じの便利なツールです。
これらのインストール方法は割愛します。いい感じに検索してください。

今回準備したものはGitHubに載せています。環境がほしいだけならforkしたほうが早いと思います・・・。

GitHub – watasuke102/riscv-cpu-selfmade
Contribute to watasuke102/riscv-cpu-selfmade development by creating an account on GitHub.

まずは本の通りに

Chiselのテンプレートをgit cloneしてきます。

GitHub – freechipsproject/chisel-template: A template project for beginning new Chisel work
A template project for beginning new Chisel work. Contribute to freechipsproject/chisel-template development by creating an account on GitHub.

そうしたら、src/main/scala/*src/test/scala/*を削除します。自分の場合はtest/scalaを消し忘れてました・・・。

Remote Containerの設定

次に、.devconteinerという名前でディレクトリを作成します。その中に、Remote Container用の設定ファイル、devcontainer.jsonを作って、以下のように入力します。

{
  "name": "chisel",
  "dockerComposeFile": "docker-compose.yml",
  "service": "chisel",
  "workspaceFolder": "/src",
  "shutdownAction": "stopCompose"
}

正直よくわかってないです。

続いて、docker-compose.ymlを作成します。

version: "3"

services:
  chisel:
    build: .
    command: sleep infinity
    volumes:
      - ../src:/src
    environment:
      SHELL: "/bin/bash"

まあSHELLを/bin/bashにしているくらいしか言うことはないです。/usr/bin/bashだと動きませんでした。気のせいかも知れませんが。

そして、ビルド用にDockerfileを配置します。と言っても、これもGitHubから持ってくるだけです。ありがたく頂戴いたしましょう。

riscv-chisel-book/dockerfile at master · chadyuu/riscv-chisel-book
Contribute to chadyuu/riscv-chisel-book development by creating an account on GitHub.

ということで、ここまでで以下のようなディレクトリ構造になっているはずです。

.devcontainer/
  |- devcontainer.json
  |- docker-compose.yml
  |- Dockerfile
src/
  |- main/scala/ (空)
  |- test/scala/ (空)



...

起動してみる

あとは起動するだけです。

このディレクトリをVSCodeで開き、左下のアイコンから「Reopen in Container」を選んで、死ぬほど長いビルド時間を乗り越えれば終わりです!!
ビルド時間は、2時間は確保したほうが良いんじゃないでしょうか。自分の場合は3~4時間(15,000秒くらいだった気がする)でした。DockerをHDDに移しているのもあるとは思います。

終わりに

いかがでしたか?

まさかこんなにビルドが遅いとは思っていませんでした。しかも、おそすぎたので中断してOS再起動したら/home/watasukeがディレクトリごと消し飛んでて心臓も消し飛ぶかと思いました。OSを再起動したら治りました。

とはいえ、環境構築が出来てよかったです。途中まったく起動しなかったのであれこれいじったりしていたので、他の環境で動くか心配ですが、とりあえず今回建てた環境で頑張ろうと思います。

The post Chiselによる開発環境をVSCode Remote Containerで構築する first appeared on FascodeNetwork Blog.