139、NPU的仿真测试:使用SCALE-Sim进行脉动阵列仿真

NPU的仿真测试:使用SCALE-Sim进行脉动阵列仿真

去年调一个边缘AI芯片的驱动,板子刚上电,NPU跑ResNet-18,前几层数据还正常,到第三层卷积输出直接变成全零。查了三天,最后发现是脉动阵列的PE间数据流时序没对齐——仿真时用的理想模型,实际硬件里数据搬移延迟把计算节奏全打乱了。从那以后,我养成了习惯:任何NPU架构改动,先上SCALE-Sim跑一轮脉动阵列仿真,再动RTL。

为什么是SCALE-Sim

市面上NPU仿真工具不少,但SCALE-Sim是少数把“脉动阵列行为级建模”做到能用的开源项目。它不关心具体硬件实现细节,而是聚焦在数据流、计算吞吐和带宽瓶颈这三个核心维度。对于做架构探索的工程师来说,这比直接撸SystemC或者Verilog仿真快两个数量级。

SCALE-Sim的核心理念很简单:给定一个脉动阵列的尺寸(比如16x16 PE)、数据位宽、SRAM带宽,以及一个卷积层的参数(输入特征图尺寸、卷积核大小、stride等),它能精确模拟出每个时钟周期里PE阵列的利用率、数据复用次数、以及外部存储器的访问模式。

安装与第一个仿真

别用pip直接装,SCALE-Sim的master分支有时候依赖版本会打架。我习惯从GitHub clone下来后,用conda建一个干净环境:

conda create-nscalesim