单核Rocket-Chip的Gemmini加速器配置是否适配Arty-Z720运行LeNet-5?
Arty-Z720搭载Gemmini运行LeNet-5的配置分析
一、当前配置的资源适配性
你的ArtyGemminiConfig和artyConfig在资源层面适配Arty-Z720开发板:
- 单核Huge Rocket Core + 64位系统总线:Arty-Z720的FPGA资源(218K LUT、109K FF、4.9MB BRAM)完全支撑该配置,不会出现资源溢出。
- 8×8 systolic array + 1 tile:小规模计算阵列对FPGA逻辑资源占用极低,不会成为瓶颈。
- 32KB SP(存储池)+16KB ACC(累加器):总容量48KB,远低于Arty-Z720的BRAM总容量,存储资源充足。
- 64位DMA总线、8个并发内存请求:符合Arty-Z720的外设总线带宽能力。
二、功能层面的关键问题
当前配置无法直接运行LeNet-5,核心缺失两个LeNet-5必需的模块:
has_max_pool = false:LeNet-5包含2层Max Pooling操作,关闭该选项会导致硬件不支持池化计算,推理时直接报错。has_nonlinear_activations = false:LeNet-5依赖ReLU非线性激活函数实现特征提取,关闭后无法完成网络的核心计算逻辑。
三、修改建议
只需调整artyConfig中的两个参数,即可适配LeNet-5推理:
val artyConfig = defaultConfig.copy( meshRows = 8, meshColumns = 8, tileRows = 1, tileColumns = 1, sp_capacity = CapacityInKilobytes(32), acc_capacity = CapacityInKilobytes(16), dataflow = Dataflow.WS, dma_buswidth = 64, max_in_flight_mem_reqs = 8, has_training_convs = false, // 保持关闭,LeNet-5仅需推理,无需训练相关逻辑 has_max_pool = true, // 打开Max Pooling支持 has_nonlinear_activations = true, // 打开非线性激活支持 spatialArrayOutputType = SInt(32.W), ) val customConfig = artyConfig
额外优化点(非必需):
- 若想进一步节省资源,可将
spatialArrayOutputType改为SInt(8.W)或UInt(8.W):LeNet-5推理用8位定点数即可满足精度要求,能大幅降低逻辑资源占用。
四、总结
调整上述两个参数后,你的配置完全可以在Arty-Z720上完成LeNet-5的FPGA演示,资源和功能层面均能匹配需求。
内容的提问来源于stack exchange,提问作者NauQ
相关产品推荐
相关产品推荐

