Chisel環境をつくる



<!-- ###################################本文############################################### -->

# Chiselの環境構築をUbuntu上で行う
Ubuntu(Debian系のLinux)でChiselの環境構築を行う方法です。
（Windows環境でWSLを通してUbuntuを使用しても可能です）
Chiselの動作には

- java(jdk)
- sbt
- verilator 

をインストールする必要があります。
そしてテキストエディターとして

- InteliJ　や　VScode

をインストールする必要があります。

## Java(jdk)のインストール
次のコマンドでインストールします。
```
sudo apt install default-jdk
```

## sbtのインストール
### SDKMANのインストール
SDKMANはsbtのインストールに使用します。
SDKMANがすでにインストールされている場合は飛ばしてください。`sdk version`のコマンドでバージョンが画面に出力されるかで確認できます。
インストールされていない場合は以下のコマンドを順に実行してください。
```
 apt-get update
 apt-get install -y unzip zip curl vim
 curl -s "https://get.sdkman.io" | bash
 source "$HOME/.sdkman/bin/sdkman-init.sh"
 sdk version
```
 
:::note alert
注意
sbtのインストールには次のコマンドを使用するように説明されることがありますが、url関係に問題が起こることがあるので個人的に非推奨です
```
・echo "deb https://dl.bintray.com/sbt/debian /" | sudo tee -a /etc/apt/sources.list.d/sbt.list
・curl -sL "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x2EE0EA64E40A89B84B2DF73499E82A75642AC823" | sudo apt-key add
・sudo apt update
・sudo apt install sbt
```
:::

### sbtをSDKMANでインストールする
次のコマンドでインストールします。
```
 sdk install sbt
```


## Verilatorのインストール
### verilatorに必要なパッケージをインストールする
verilatorの実行には必要なパッケージがあるのでそれらを次のコマンドでインストールします。
```
 sudo apt install gcc g++ make perl flex bison texi2html
```

### verilatorのインストール
gitがインストールされていない場合には次のコマンドを使用してください。
```
sudo apt-get install git
```
verilatorをインストールするために次のコマンドを順に実行してください。
```
sudo apt-get install git help2man perl python3 make autoconf g++ flex bison ccache
sudo apt-get install libgoogle-perftools-dev numactl perl-doc
sudo apt-get install libfl2  
sudo apt-get install libfl-dev  
sudo apt-get install zlibc zlib1g zlib1g-dev  

git clone https://github.com/verilator/verilator   

unsetenv VERILATOR_ROOT  
unset VERILATOR_ROOT 
cd verilator
git pull         
git tag         
git checkout stable      

autoconf         
./configure      
make -j `nproc`  
sudo make install
```

:::note alert
注意
　verilatorのインストールに次のコマンドが説明されていることがあります
```
apt-get install verilator
```
　しかしこれではsbtを実行したとき、エラーになる可能性があるので非推奨です。
この方法でverilatorを入れてchisel-templateをsbt testしたときに次のエラーが発生しました（１行のみを抜粋、実際はもっと長い）。
```
chisel  - Gcd should calculate proper greatest common denominator *** FAILED ***
....
...
..
```
　原因はverilatorのバージョンにあります。`apt-get install`の方法では最新のバージョンをインストールできる可能性が低いので、古いバージョンのエラーが発生してしまいます。`git`の方法だと最新のバージョンが手に入り、インストールのオプションも設定できます。[公式ドキュメント](https://verilator.org/guide/latest/install.html)に詳細が記載されています。
 　（僕はこのエラーに長時間悩まされました。ネットで検索してもヒットしなかったので、いろいろと試してやっと解決しました。verilatorのインストールはapt-get installではなくgitでやるべきだということがこの記事を書く動機であり、一番言いたかったことでもあります。）
:::

## InteliJのインストール
　InteliJの[公式サイト](https://www.jetbrains.com/ja-jp/idea/download/?section=windows)からダウンロードできます。IntelliJ IDEA Ultimate版とIntelliJ IDEA Community版の２種類がありますが、無料なのでCommunity版をおすすめします。価格についての[ページ](https://www.jetbrains.com/ja-jp/idea/buy/?section=discounts&billing=yearly)で学生や教職員などはUltimate版でも無料で使用できるそうです。変更する可能性があるので最新の情報はサイトで確認してください。
 
　またサイトにいくと次のような画面になると思います。
 
![スクリーンショット 2024-03-17 060846.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3346651/25526521-99d6-4a61-98bc-c0004542a3d9.png "InteliJダウンロードサイトの画面")

有料のUltimate版を白で目立たせて無料のCommunity版が黒で分かりにくいです。

　そしてInteliJがダウンロードできたらInteliJを起動しScalaのプラグインを入れます。起動後すぐにpluginからScalaを選択できますが、後でもInteliJの右上の歯車マークからpluginsを選択し、Scalaを選択すればインストールできます。
 ![no1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3346651/004fd013-4e82-89a4-1746-53389e5a58db.png)

![no2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3346651/5f2a817c-dadb-a59e-1a5c-74171d124c24.png)

### VScodeの場合
　Extension（拡張機能）でScala(metals)をインストールします。

## chisel-templateの導入
　まず[chisel-templateのgithub](https://github.com/chipsalliance/chisel-template)にいき、緑色の`Code`から`https://github.com/chipsalliance/chisel-template.git`をコピーします。

![スクリーンショット 2024-03-17 062927.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3346651/5fbc62c0-849b-0139-6967-2d1d982de23b.png)

　次にコマンドプロンプトで以下のコマンドを実行することでCドライブ直下にchisel-templateを配置できます。
 ```
 git clone https://github.com/chipsalliance/chisel-template.git
 ```

 ### chisel-templateをsbt testする
　InteliJでchisel-templateを開きます（このときScalaのプラグインが入っていないと.scalaファイルが隠された状態になります。ファイルの数が少なくても慌てずにプラグインを入れましょう）。README.mdに書いてあるようにbuild.sbtの`"%ORGANIZATION%"`や`"%NAME%"`は適当な文字列`"..."`に置き換えます。
 
[WSLの場合]
 　InteliJの左下のアイコンからTerminalを選択します。そしてTerminalの下矢印のアイコンを選択してUbuntuを選択します。
 ![no3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3346651/c0e155b2-13c5-d84a-8e3a-f70abb27d853.png)
 　※VScodeの場合も同様にターミナルでUbuntu(WSL)を開きます。

  　　
　ここまで完了したら次のコマンドでテストができます
 ```
 sbt test
 ```
 エラーが発生しなければテスト完了です