安装gemmini 和chipyard过程:
2024.2.19日更新
发现别人做的一个文档, 里面也有配置环境的教程
https://hjdzsa51s9.feishu.cn/docx/SOUfdtH11oci8ux5q1tcOIQFntg
安装版本:
chipyard 版本是1.8.1 ,gemmini版本0.7.0
tip: 如果在base里安装conda-lock觉得缓慢,可以新建新的环境时就指定安装conda-lock
conda create --name yourEnv python=3.7 conda-lock=1.4
到对应的env环境下
conda activate yourEnv
查看是否安装成功 conda-lock
conda-lock --version
安装chipyard:
这里墙裂建议使用魔法
git clone -b 1.8.1 https://github.com/ucb-bar/chipyard.git
cd chipyard
git checkout 1.8.1
./build-setup.sh esp-tools
source env.sh
cd generators/gemmini
git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
git fetch && git checkout v0.7.0
git submodule update --init --recursive
SPIKE_HASH=$(cat SPIKE.hash)
cd -
cd toolchains/esp-tools/riscv-isa-sim/build
git fetch && git checkout $SPIKE_HASH
make && make install
cd ~/chipyard/generators/gemmini && ./scripts/setup-paths.sh
开启多线程加速
目录:
/chipyard/generators/gemmini/scripts/buid-verilator.sh
//18行
j="8" //线程数
目录:
/chipyard/sims/verilator/Makefile
//107 行
VERILATOR_THREADS ?= 16 //线程数
//110行
VERILATOR_FST_MODE ?= 1 //加速波形图用的
配置8*8个PE
目录:
/chipyard/generators/gemmini/src/main/scala/gemmini/CustomConfigs.scala
//在51行加入
val Mum64Config = defaultConfig.copy(
meshRows = 8,
meshColumns = 8,
has_training_convs = false,
)
// Specify which of your custom configs you want to build here
//把这里修改成Mum64Config
val customConfig = Mum64Config
友情提醒·0
gemmini自带的resnet50循环层数过多,需要等很久。如果只是想验证是否正确可以减少层数!!
resnet50.c路径:
chipyard/generators/gemmini/software/gemmini-rocc-tests/imagenet/resnet50.c
运行Gemmini仿真
每次重新开一个终端,需要先运行此命令,将conda激活
conda activate yourEnv
在chipyard/文件夹下
source env.sh
将为所请求的工具链正确设置PATH、RISCV和LD_LIBRARY_PATH环境变量
build software
cd chipyard/generators/gemmini/software/gemmini-rocc-tests
./build.sh
友情提醒·1
如果运行gemmini仿真之后,再修改
imagenet/resnet50.c
中的代码
就要删除
/chipyard/generators/gemmini/software/gemmini-rocc-tests/build
文件夹,重新执行./build.sh
生成模拟器
cd generators/gemmini/
./scripts/build-verilator.sh --debug
–debug是为了生成波形
运行仿真
./scripts/run-verilator.sh resnet50 --debug
gemmini 波形图路径
Top/TestHarness/chiptop/system/tile_prci_domain/tile_reset_domain/tile/gemmini/ex_controller/mesh