Chipyard でSoCを生成してみる
Chipyardを使ってSoCを生成してみた際、いくつかハマる点があったのでメモっておきます。
- 環境
- Ubuntu 20.04 (一部OSXでもOK)
- Memoryは8GB以上必要
- Vivado は2020.02
- 関連URL
Vivadoのインストール
参照 https://reference.digilentinc.com/vivado/installing-vivado/start
Digilentのガイドに従えば無事導入されるが、ホストがUbuntu 20.04だとライブラリがないとエラーになって動かない。その際は下記のおまじないを唱える。その後 コマンドラインで vivado と打って起動するなら準備 OK。
sudo ln -s /lib/x86_64-linux-gnu/libtinfo.so.6 /lib/x86_64-linux-gnu/libtinfo.so.5
Initial Repository Setup
参照 https://chipyard.readthedocs.io/en/latest/Chipyard-Basics/Initial-Repo-Setup.html
Chipyard実行に必要なパッケージを入れておく。下記のsetup.shファイルを作成して実行。curl autoconfを追加。Pythonは3.8に。
#!/bin/bash
set -ex
sudo apt-get install -y curl autoconf
sudo apt-get install -y build-essential bison flex
sudo apt-get install -y libgmp-dev libmpfr-dev libmpc-dev zlib1g-dev vim git default-jdk default-jre
# install sbt: https://www.scala-sbt.org/release/docs/Installing-sbt-on-Linux.html
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-get update
sudo apt-get install -y sbt
sudo apt-get install -y texinfo gengetopt
sudo apt-get install -y libexpat1-dev libusb-dev libncurses5-dev cmake
# deps for poky
sudo apt-get install -y python3.8 patch diffstat texi2html texinfo subversion chrpath git wget
# deps for qemu
sudo apt-get install -y libgtk-3-dev gettext
# deps for firemarshal
sudo apt-get install -y python3-pip python3.8-dev rsync libguestfs-tools expat ctags
# install DTC
sudo apt-get install -y device-tree-compiler
# install verilator
git clone http://git.veripool.org/git/verilator
cd verilator
git checkout v4.034
autoconf && ./configure && make -j$(nproc) && sudo make install
実行する。
sudo bash setup.sh
verilatorのコンパイルで少々時間がかかる。次にchipyardをCloneする。
git clone https://github.com/ucb-bar/chipyard.git
cd chipyard
./scripts/init-submodules-no-riscv-tools.sh
ツールチェインをBuildする。何故か QEMUのCloneでコケたので,下記の例はQEMUなし。
export MAKEFLAGS=-j8
./scripts/build-toolchains.sh --ignore-qemu riscv-tools
45分ほどかかった。環境変数をセットして準備完了。
source ./env.sh
Software RTL Simulation
参考 https://chipyard.readthedocs.io/en/latest/Simulation/Software-RTL-Simulation.html#sw-rtl-sim-intro
Chipyardの例題のSoC(64Bitのシングルコア)を生成してSimulationしてみる。これはVerilatorを利用する場合。
cd sims/verilator
make
最初はSBTをDLするのでちょっと時間がかかる。以降は10分位でVerilog生成。Simulationを実行してみる。
$ ./simulator-chipyard-RocketConfig $RISCV/riscv64-unknown-elf/share/riscv-tests/isa/rv64ui-p-simple
This emulator compiled with JTAG Remote Bitbang client. To enable, use +jtag_rbb_enable=1.
Listening on port 40081
[UART] UART0 is here (stdin/stdout).
ひとまず。動いたらしい。できたコアがちゃんと動くかまとめてテストするには。
make run-asm-tests
make run-bmark-tests
PASSEDになればOK。 コードを新しくして実行する場合は
git pull
git submodule update --recursive
波形を見たいとき
make debug CONFIG=RocketConfig VERILATOR_FST_MODE=1
./simulator-chipyard-RocketConfig-debug --vcd=rv64ui-p-simple.fst --verbose $RISCV/riscv64-unknown-elf/share/riscv-tests/isa/rv64ui-p-simple
生成された rv64ui-p-simple.fst ファイルをGtkWaveで開けばOK。
OSXで実行する場合
ここまではOSX (Mac)でも実行可能。いくつか方法があるがToolchainのBuildでハマると抜け出せないので、Docker Image を使うのが簡単。
sudo docker pull ucbbar/chipyard-image:1.5.0
sudo docker run -it ucbbar/chipyard-image bash
Chipyardのイメージが起動したら
cd chipyard
source env.sh
cd sims/verilator
make
で生成できる。
FPGAのBitファイルの作成
参照 https://chipyard.readthedocs.io/en/latest/Prototyping/General.html
なぜかFPGA用のデザインは fpgaの下にある。最初に必要なモジュールをCloneする。
./scripts/init-fpga.sh
つぎに、ARTY用のBitfileを生成してみる。Sifive Freedomに近い?
cd fpga
make SUB_PROJECT=arty bitstream
10分位で完了。 generated-src/chipyard.fpga.arty.ArtyFPGATestHarness.TinyRocketArtyConfig/obj/ArtyFPGATestHarness.bit が生成される。
VLSI
PD(物理設計)の実行には、必要ないくつかのレポのアクセスに承認が必要である。ひとまず Verilog RTL の生成までなら下記で実行できる。init-vlsi.shでエラーになるレポのアクセスをコメントアウトしておく。
./scripts/init-vlsi.sh
cd vlsi
make verilog
感想
UCBの一連のChiselな実装がChipyardの元にまとまっている。Toolchainを毎回 Build するのは苦痛なので、Dockerのイメージを利用するのも手かもしれない。おそらく設計はSIMからFPGAを経てVLSIとつながってゆくと思うが、今のChipyardでそのへんをどのように扱うべきなのかよくわからない。
EOF
Author And Source
この問題について(Chipyard でSoCを生成してみる), 我々は、より多くの情報をここで見つけました https://qiita.com/mune10/items/c7ae1e89aa7c4a5885aa著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .