【Chipyard】修改Gemmini 中PE的数量
实战目标
PE数量扩大到原来4倍
原来配置
tileRows: Int = 1,tileColumns: Int = 1,meshRows: Int = 16,meshColumns: Int = 16,
改后配置
tileRows: Int = 1,tileColumns: Int = 1,meshRows: Int = 32,meshColumns: Int = 32,
修改配置
1. 修改gemmini的scala配置文件,用于构建 chipyard rtl和测试程序
修改配置文件,chipyard/generators/gemmini/src/main/scala/gemmini/GemminiConfigs.scala
的 GemminiArrayConfig 内容
- meshRows/meshColumns 的数值
- Scratchpad and accumulator memory parameters ,同倍数放大
修改后如下:
object GemminiConfigs {val defaultConfig = GemminiArrayConfig[SInt, Float, Float](// DatatypesinputType = SInt(8.W),weightType = SInt(8.W),accType = SInt(32.W),spatialArrayInputType = SInt(8.W),spatialArrayWeightType = SInt(8.W),spatialArrayOutputType = SInt(20.W),// Spatial array size optionstileRows = 1,tileColumns = 1,// meshRows = 16,// meshColumns = 16,meshRows = 32,//扩大两倍meshColumns = 32,//扩大两倍// Spatial array PE optionsdataflow = Dataflow.BOTH,// Scratchpad and accumulator//sp_capacity = CapacityInKilobytes(256), //acc_capacity = CapacityInKilobytes(64),sp_capacity = CapacityInKilobytes(1024), //扩大四倍acc_capacity = CapacityInKilobytes(256),//扩大四倍
2 . 修改 spike 的Gemmini 配置文件,用于更新gemmini spike
有两处gemmini_params.h 文件需要更新,他们分别位于 chipyard、generators/gemmini/software/gemmini-rocc-tests/include和/chipyard/generators/gemmini/software/libgemmini 中,修改后的关键内容如下:
#define XCUSTOM_ACC 3
//#define DIM 16
#define DIM 32 // 扩大到两倍
#define ADDR_LEN 32
#define BANK_NUM 4
#define BANK_ROWS 4096
#define ACC_ROWS 1024
//#define MAX_BYTES 64
#define MAX_BYTES 128 //扩大到两倍
#define MAX_BLOCK_LEN (MAX_BYTES/(DIM*1))
#define MAX_BLOCK_LEN_ACC (MAX_BYTES/(DIM*4))
重和新编译
因为是重新编译,-s 1 表示跳过第一条
cd $CY_DIR
./build-setup.sh -s 1 -s 6 -s 7 -s 8 -s 9
更新libgemmini
source env.shcd $CY_DIR/generators/gemmini
make -C software/libgemmini install
重新编译仿真器
cd $CY_DIR/sims/verilator
#make CONFIG=GemminiRocketConfig# Or, if you want a simulator that can generate waveforms, run this:
make -j$(nproc) debug CONFIG=GemminiRocketConfig
重新编译测试程序
cd $CY_DIR/generators/gemmini/software/gemmini-rocc-tests
rm -rf build
./build.sh