Professional Documents
Culture Documents
学 号:2019420063
专 业 学 位 硕 士 论 文
基于 UVM 的卷积神经网络加速器验证平台
设计与实现
研 究 生 姓 名 :郁添林
指 导 教 师 :隋金雪 副教授
专 业 学 位 类 别 :工程硕士(0852)
专 业 学 位 领 域 :电子与通信工程(085208)
论 文 提 交 日 期 :2022 年 6 月 2 日
万方数据
万方数据
山东工商学院硕士学位论文
摘要
人工智能对数据处理的需求不断上升,通用的图形处理单元不能为特定任务发
挥最优的性能和功耗,而人工智能专用芯片,尤其是特定应用场景的加速器,由于
能提供并行性和定制运行流程,达到最佳能效,已成为当前移动终端产品主流的解
决方案。另一方面,由于设计规模的与日俱增和制造工艺节点的提升,人工智能加
速器芯片的功能日趋复杂,设计出错的可能性大大增加,芯片验证的准确性、完备
性和稳定性成为芯片研发的重点。卷积神经网络的硬件实现大多通过高级语言生成
寄存器转化级电路,该方法对可综合 RTL 的支持比较有限,在产品的迭代和工程复
用性等方面也带来很大的挑战,而本文以硬件描述语言为基础,研究并设计实现了
具备卷积神经网络前向运算功能的硬件加速器,完成 UVM 仿真和 FPGA 板级验证,
确保功能的正确性,也便于卷积神经网络的开发和应用,快速地部署到嵌入式平台。
本文结合硬件验证语言 SystemVerilog 和 UVM 验证方法学的优势,对通用验证
方法学的平台结构、核心机制和寄存器模型等多方面进行分析,并介绍了接口协议,
为制定验证测试用例的激励时序提供参考。研究并设计了一款物联网终端应用中的
卷积神经网络硬件加速器,并以此为验证对象,完成了仿真验证平台和原型验证平
台的搭建。在此之前,先介绍了这一类神经网络的特点,分析其前向传播的工作流
程,然后研究分析加速器模块数据流、卷积计算等功能,常用算法模型的卷积层参
数适配,以及各个模块寄存器的功能配置。
根据 UVM 验证方法学思想和设计规格,构建平台的通用验证组件,实现组件之
间通信,生成与待测试模块寄存器相对应的寄存器模型,完成了硬件加速器模块的
验证平台搭建。重点进行了测试用例的开发、寄存器模型的读写访问操作、参考模
型的实现和记分板的结果自动比对。通过大量的测试用例对加速器模块进行全面的
仿真验证和覆盖率收集,并对仿真验证平台的代码进行优化,进而缩短了仿真时间,
提高了验证平台的可重用性。
接着,进行了板级测试环境的搭建,以仿真验证平台测试用例产生的激励为基
础,用调试器将数据转换为 JTAG 协议灌入加速器模块运行,进而验证仿真平台的正
确性。在加速器多通道数据读取时,采用一种固定优先级轮询仲裁器,解决仲裁的
公平性问题,节省 FPGA 的资源和功耗。
仿真验证和板级测试结果表明,专用硬件加速器设计合理,验证正确,完成所
万方数据
摘要
有的功能点测试,代码覆盖率达到 100%,所有测试用例的计算结果比对正确,符合
设计预期,设计代码综合成门级电路,并进行优化,生成基于工艺库的网表文件。
关键词:通用验证方法学;卷积神经网络加速器;验证平台;板级测试;电路综合
II
万方数据
山东工商学院硕士学位论文
Abstract
The demand for data processing by AI (Artificial Intelligence) is rising. General graph-
ics processing units cannot exert optimal performance and power consumption for specific
tasks, while some specific chips, especially accelerators for specific application scenarios,
can provide parallelism and customized operation process, to achieve the best energy effi-
ciency, has become the mainstream solution for current mobile terminal products. On the
other hand, due to the increasing design scale and the improvement of manufacturing pro-
cess nodes, the functions of AI accelerator chips are becoming more and more complex, and
the possibility of design errors is greatly increased. The accuracy, completeness and stabil-
ity of chip verification have become the focus of the research and development of chips.
The hardware implementation of CNN (Convolutional Neural Network) mostly generates
register transfer level circuits through high-level synthesis language. However, this method
has the limitation on the support for synthesizable RTL, and also brings great challenges in
product iteration and engineering reusability. Based on the hardware description language
SystemVerilog, the CNN accelerator with the forward operation function is investigated,
designed and implemented. Both the UVM simulation and FPGA board-level verification
are provided to ensure the correctness of the function and facilitate the development and
application of the CNN, and rapid deployment to embedded platforms.
III
万方数据
ABSTRACT
According to the UVM verification methodology and design specifications, the gen-
eral verification components of the platform are constructed, the communication between
components is realized, the register model corresponding to the register of the module to
be tested is generated, and the verification platform of the hardware accelerator module is
builded. The development of test cases, the read and write access operations of the register
model, the realization of the reference model and the automatic comparison of the results
of the scoreboard are focused in the analysis. Through a large number of test cases, the ac-
celerator module is fully simulated and verified and the coverage is collected, and the code
of the simulation verification platform is optimized, thereby shortening the simulation time
and improving the reusability of the verification platform.
Moreover, the board-level test environment is set up. Based on the excitation generated
by the test cases of the simulation verification platform, the debugger is used to convert the
data into the JTAG protocol, and then pour all the data into the accelerator module to run,
which finally verify the correctness of the simulation platform. When the multi-channel
data of the accelerator is read, a fixed-priority polling arbiter is applied to solve the fairness
problem of the arbitration and save the resources and power consumption of the FPGA.
The simulation verification and board-level test results show that the design of the
proposed hardware accelerator is reasonable and the build verification platform is efficient
and correct. All function point tests are completed, and the code coverage rate reaches
100%. The calculation results of all test cases are compared which show correctness and
meet the design expectations. Design codes are synthesized to gate-level circuits, which are
optimized to generate a netlist file based on the process library.
IV
万方数据
山东工商学院硕士学位论文
目录
摘要 ............................................................................................................. I
第1章 绪论 ........................................................................................... 1
1.1 课题的研究背景与意义 ............................................................................... 1
万方数据
目录
VI
万方数据
山东工商学院硕士学位论文
6.2 展望 ............................................................................................................... 61
参考文献 ..................................................................................................... 62
攻读学位期间发表论文与研究成果清单 ................................................. 68
致谢 ............................................................................................................. 69
VII
万方数据
山东工商学院硕士学位论文
第1章 绪论
1.1 课题的研究背景与意义
经过计算机硬件和数据存储技术的长足发展,深度学习在人机验证、智能安防、
数据风控模型等多个人工智能领域引发变革。人工智能 (Artificial Intelligence,AI) 早
已在棋类比赛中击败了人类,2020 年 12 月,DeepMind 提出了 MuZero,该算法结合
基于树的搜索与模型学习,在极具挑战性的复杂视觉领域展现出良好的性能,这种
人工智能模型掌握更多复杂的游戏,向着替代人类工作的目标前进。深度学习近十
年的发展奠定了未来的基础,部署到实际应用是人工智能技术的研究热点。深度学
习在应用中无处不在,包括目标检测、图像视频分类和自然语言处理,比如谷歌的
第四代张量处理单元 (Tensor Processing Unit,TPU) 达到了每秒 10 万万亿次的运算。
尽管深度学习算法已成功应用于许多实际产品中,此类算法快速、精准和低功耗的
硬件实现仍然是一项具有挑战性的任务,特别是对于物联网 (Internet of Things,IoT)
自动驾驶汽车和智能无人机等移动系统[1] 。
随着集成电路先进制程工艺发展放缓,通用型处理器无法满足高性能计算复杂
度的算法变化和大内存的数据移动,图形处理单元 (Graphics Processing Unit,GPU)
的应用场景相对受制于设备体积和功耗,半定制电路的现场可编辑逻辑门阵列 (Field
Programmable Gate Array ,FPGA) 适用于多样化的场景[4] ,灵活应用特定集成电路可
以解决这些挑战,但量产成本过高。在相对低水平的能耗下,定制化的专用集成电
路 (Application Specific Integrated Circuit,ASIC) 对车载信息的数据处理速度提升更
万方数据
第 1 章 绪论
快,随着自动驾驶级别的提升,芯片定制化需求增加,ASIC 专用芯片才是最优选择。
因此设计一种支持高并行度和优化数据流的专用芯片加速模块至关重要,这样底层
硬件可重新配置以应对尽可能多模型的层次结构,从而进一步提高能效。专用加速
器芯片可以充分使用硬件资源,对特定的任务优化电路结构、数据流传输,推动人
工智能芯片理论研究的不断发展,满足相关行业的迫切需求。
产品化的芯片设计完成之后,至少需要经过功能仿真、板级测试和电路综合的
验证才能最终完成。在集成电路架构设计日趋复杂的情况下,芯片的验证工作已经
超过整个研发周期的一半以上,验证平台的完善和验证流程的优化能提高验证的效
率,而复杂 IP(Intellectual Property) 的完备性验证可以避免系统级的验证场景出现不
可预知的功能缺失或测试错误[5] 。
目前一些公司和研究团队已经开展了卷积神经网络专用处理器研究工作,并运
用到实际的工业产品中。然而目前采用的验证方式都不够灵活,面对卷积神经网络日
益多样化的需求,底层架构设计变动后,为了缩短 ASIC 的开发周期,对 RTL(Register-
Transfer Level) 代码的功能型验证与板级验证以及功耗、时序、面积等测试分析的流
程应做到尽可能少的修改[6] 。因此,研究卷积神经网络硬件加速器的验证对人工智能
产品的落地具有重要意义。
1.2 国内外研究现状
1.2.1 卷积神经网络硬件加速器设计研究现状
GPU 拥有庞大的并行计算能力和完善的生态系统,尤其是在云端智能应用方面
处于首要地位,粗粒度并行的图形处理计算表现为高密度的计算,而且计算所需的
数据之间基本不存在相对的关联性,GPU 能提供至上千个计算单元和充足的高速内
存,但是 GPU 有个明显的缺陷,它会屏蔽底层接口,降低了数据的迁移和运算效率,
导致能耗较高[7] ;FPGA 的半定制化使其在通用性和性能之间取得平衡,不依赖于指
万方数据
山东工商学院硕士学位论文
令和软件,能用硬件描述语言直接编译成晶体管的逻辑组合,但是在实际设计中,采
用 FPGA 综合后会存在部分冗余晶体管和连线,运行频率低以及开发门槛和量产成
本较高,这都限制了其应用[8] ;虽然 ASIC 现在不是很成熟且单次光刻掩膜成本高,
但随着软件、算法的成熟稳定,实现大规模量产,单颗的造价远低于 GPU 和 FPGA,
其性能和能效比是最优的,针对独特的应用场合进行设计以满足需求,ASIC 的计算
能力和效率也可以根据算法需要进行定制。目前很多公司和研究机构都在推进 ASIC
计算芯片的研发,有产业化的应用,如 Google 的标志性产品 TPU (Tensor Precessing
Unit),阿里的倚天 710 云计算芯片,也有偏向研究类型的,如中科院的神经网络加
速器 DianNao 系列,麻省理工学院提出的深度学习加速器 Eyeriss[9] 。
对于车载芯片,长远来看,拥有稳定升级迭代的算法后,ASIC 是未来自动驾驶
量产芯片的唯一解决方案[14] 。究其原因,主要有以下几个方面的考量,第一是因为
传感器面临大量的冗余数据处理的问题,导致自动驾驶终端算力的需求较高,而且
在车速越快的情况下,要求计算能力也更高;第二是自动驾驶需要计算的实时性,超
万方数据
第 1 章 绪论
过一定范畴的延迟,极易引起事故的发生,因此终端必须承担自动驾驶的核心计算
与决策功能;第三是新能源车辆对能效也有需求,车辆的长续航才能保证良好的驾
驶体验,高能耗引起的热量可能降低芯片运行的稳定性。如支持 L4 的 NVIDIA Drive
Pegasus 功耗高达几百瓦,这种只能应用于自动驾驶的研究,而不是落地的产品[15] ;
第四是车规级芯片需要满足可靠性,面对严寒酷暑、风雨交加或长时间运行等恶劣
条件下,都有稳定的计算表现。
综合上述分析,专用硬件加速器的灵活配置可以迎合当前各个细分应用场景对
AI 计算的不同需求。而专用芯片支持的算法比较局限,对芯片的设计及验证都提出
了很高的要求。
1.2.2 芯片验证技术发展现状
国内外对硬件加速器的研究已经取得了一些成果,有些学者和厂商已经推出了
原型产品[21] ,随之而来的是 ASIC 的迭代。为了加快研发进程和确保功能正确性,因
此,针对硬件加速器有必要搭建一个基于 UVM 的硬件加速器平台和支持灵活配置
万方数据
山东工商学院硕士学位论文
的板级验证平台,实现完备的卷积神经网络加速器的功能型验证。
1.3 本文的主要研究内容
本文共分为六章,各个章节的核心内容如下:
第 1 章介绍本文的研究背景与意义,分析当前国内外学者及厂商对卷积神经网
络硬件加速器的研究现状,同时阐述了随着芯片集成度和复杂度的提高,对芯片的
功能验证提出了更高的挑战和要求,也证明验证对当今大规模数字集成电路设计的
重要意义,最后提出本文的研究内容和采用的研究方法。
第 3 章针对卷积神经网络特性,分析卷积神经网络的前向运算,设计卷积神经
网络加速器整体数据流框架,分析卷积层的并行性以及适配算法模型的参数,最后
说明设计模块中的寄存器功能。
万方数据
第 1 章 绪论
第 6 章归纳总结本文所做的工作内容,分析当前验证平台中存在的不足之处,并
对后续改进提出相应建议以及未来工作的展望。
万方数据
山东工商学院硕士学位论文
传统的验证方法逐渐变成研究高度复杂的电子系统和芯片开发的主要难关。加
强验证的可靠性、完备性、可重用性和提高验证效率能有效解决验证中存在的问题,
硬件验证语言和通用验证方法学相结合基本上弥补了以往验证技术手段的不足[23] 。
本章将对 SystemVerilog 和 UVM 验证方法学进行深入的研究,并探讨 UVM 验证方
法学的各种机制、寄存器模型等功能的运用。最后分析 APB (Advance Peripheral Bus)、
Lint 和 JTAG 协议,为测试激励的添加提供参考。
图 2.1 验证语言近十年使用情况
万方数据
第2章 UVM 验证方法学
和继承等方法,可以为验证提供较好的复用性[26] ;
(2)包含 char、int、byte、logic、void 等多种数据类型,实现了队列的插入、删
除和动态数组分配空间等常用方法,为了在更抽象的层系上建模硬件提供基础;
(3)增加随机化参数的方法,运用受约束的随机激励,通过改变随机种子,保证
激励在一定范围内随机产生,避免出现测试向量覆盖面不足和大量无用的穷举的问
题[27] ;
(4)接口既简化了模块间接口的连接,又实现了各模块间的通信。SystemVerilog
的虚拟接口可以将设计和验证平台分离,保证接口不受设计改变的影响;
(5)通过功能覆盖组和覆盖点收集功能覆盖率,用于判断测试向量是否覆盖待
测试模块的某些特定组合,代码覆盖率和功能覆盖率是判断验证是否完善的主要依
据[28] 。
此外,SystemVerilog 还有断言、内存自动管理机制等特性,其具备的诸多优点符
合当前集成电路对验证的需求,尽管单纯的验证语言本身也能完成验证任务,但面
对复杂的功能模块和系统,高效的层次化验证平台是验证技术发展的必然结果。因
此 EDA 厂商在 SystemVerilog 硬件描述的基础上开发出了多种验证方法学[29] 。
2.2 通用验证方法学
为了解决验证方法学的兼容问题,验证技术的开源成为行业的趋势,由 Accellera
提出了验证方法学统一的规范 UVM,继承了 OVM 和 UVM 的优点,获得了 EDA 工
具厂商三巨头 Synopsys、Mentor 和 Cadence 的拥护。如图2.2所示,Wilson 对近十年
来验证方法学的使用进行了统计,2020 年的使用率已接近 80%,表明 UVM 成为行
业标准的验证方法学[30] 。
图 2.2 验证方法学使用情况
万方数据
山东工商学院硕士学位论文
验证组件各个模块的基本功能如下:
(1)驱动器 driver:接收来自 sequencer 的激励,并转化为 transaction,使用虚拟
接口把激励驱动发送给 DUT;
(2)序列发生器 sequencer:sequencer 是启动测试序列产生事务级激励的组件,
为 driver 和 sequence 提供协同调度,完成数据的产生和传送[32] ;
(3)检测器 monitor:对 DUT 外部接口的信号进行监测,根据接口时序采集数
据,完成原始信号数据到 TLM 数据的转换,自动化打印并传送到记分板;
(4)代理器 agent:将 driver、sequencer、monitor 封装在内,旨在提高平台的可
移植性。代理器 agent 有主动和被动模式,主动模式下实例化上述的所有组件;被动
模式下只对 monitor 进行例化,达到监测 DUT 输出的作用[33] ;
(5)参考模型 reference model:根据待测试模块的信号变化和寄存器状态,模拟
DUT 内部行为产生的结果,将生成的数据打包发送给记分板;
万方数据
第2章 UVM 验证方法学
(6)记分板 scoreboard:接收参考模型和待测试模块的数据,比对两者的输出值
是否完全一致,根据需求可以打印详细信息。scoreboard 中可以运用打印信息,即
UVM 支持 UVM_ERROR 达到一定数量结束仿真,提高验证效率[34] ;
(7)环境 environment:容器类将 agent、reference model 和 scoreboard 等组件一
并封装,其自身包含可定制的拓扑结构和行为配置属性,便于组件进行实例化,提
高验证平台的纵向可重用性。
10
万方数据
山东工商学院硕士学位论文
(4)Objection 机制
(5)Sequence 机制
11
万方数据
第2章 UVM 验证方法学
(6)TLM 通信机制
图2.5展示了 A 和 B 两个模块通过端口通信,通信本质上也是调用函数或任务来
实现的。例如图中 A.port 的 put 调用 B.export 的 put 操作,继而调用 import 的 put,
import 会调用 B 模块的 put。UVM 将整套复杂的机制封装在表面简单的端口中,只
需在 connect_phase 中将端口连接起来就好。每个端口可以做 put、get、peek、transport
操作,对着 port、export、import 三种类型的端口,并且都支持阻塞和非阻塞[42] 。
图 2.5 blocking_put 操作
(7)Factory 机制
工厂机制可以自动创建类的实例,并调用其任务或函数,将组件加入 factory 机
制后,还可以使用 type_id::create() 和 override 等库函数。factory 的重载功能可用于
transaction、sequence 和任意的 component。重载的优势是一个子类的指针以父类的
类型传递,其表现出的行为仍然是子类的行为。验证后期修改或添加代码时,在不
12
万方数据
山东工商学院硕士学位论文
改变原有调用关系的前提下,可以替换原有的函数,并衍生出新的类,降低编译出
错的概率,实现重载的效果[44] 。重载功能极大地提高验证效率,减轻验证工作量。
这些机制确保了验证平台的正常运行并产生了期望的激励,大大简化了验证平
台的开发过程,缩短了 ASIC 的整体研发周期,同时也为后续基于 UVM 的硬件器验
证平台的设计和搭建奠定了扎实的理论基础。
DUT 的寄存器模块与验证环境的寄存器模型两个模块包含的寄存器信息是高度
一致的。属于验证环境的寄存器模型也可以抽象出层次化的寄存器列表,该列表包
含的地址、域、属性等信息与 DUT 一侧的寄存器内容一致。而由软件来建立的寄存
器模型对软件开发和功能验证都有帮助。从功能验证角度来讲,可以将总线访问寄
存器的方式抽象为寄存器模型访问的方式[45] ,这种处理方法对寄存器后期的地址修
改(例如基地址更改)或域的添加都不妨碍现有激励的输出,进而提升现有测试序
列的复用率。
寄存器的读写可以实现处理器配置硬件中各模块功能和访问状态的目的,而寄
存器的硬件实现就是触发器,每个比特位的触发器对应着寄存器的功能描述。寄存
器一般由 32 比特位构成,单个寄存器可以分为多个域,不同的域分为只写 (Write-
Only,WO)、只读 (Read-Only,RO) 和可读可写 (Read and Write,RW)。
图 2.6 寄存器模型结构
如图2.6所示,寄存器模型最小标准单位是 uvm_reg_field,状态寄存器包含四个
13
万方数据
第2章 UVM 验证方法学
图 2.7 前门访问读写操作流程
后门访问与前门访问相比,其不花费仿真时间,且运行周期更短。在大型芯片
验证中,更适合配置数量繁多的寄存器。本文研究的验证平台只是针对单个 IP 的功
能验证,不存在特殊的寄存器访问需求,后门访问虽然较前门访问更快捷,但后门
14
万方数据
山东工商学院硕士学位论文
访问不受硬件时序控制,对硬件进行后门访问也许会发生时序冲突。前门访问可以
在波形文件中找到总线信号变化的波形及操作记录,而后门访问无法在波形文件中
找到操作痕迹,只能依靠验证平台中输出的打印信息,增加了调试难度[48] 。
2.3 接口协议
(1)IDLE:APB 的初始状态,没有任何传输操作,也未选中任何从模块;
15
万方数据
第2章 UVM 验证方法学
2.3.2 Lint 协议
2.3.3 JTAG 协议
JTAG 作为一种国际标准的通用测试协议,主要用于芯片内部的测试。图2.9是
一个基本的 JTAG 端口同步器,其相关的 JTAG 接口定义为:tclk_i 是测试时钟输入,
16
万方数据
山东工商学院硕士学位论文
2.4 本章小结
17
万方数据
第 3 章 卷积神经网络加速器的硬件结构设计
第 3 章 卷积神经网络加速器的硬件结构设计
本章将论述卷积神经网络的运算原理,针对卷积层、激活层、池化层和数据位
宽截取等功能进行分析,指出了硬件设计中差异化并行的优势,为后续硬件加速器
的设计提供理论基础。
3.1 卷积神经网络前向运算
卷积神经网络是具备卷积计算和深度结构的前馈神经网络,作为深度学习典型
的算法之一,拥有表征学习的能力,以各个阶层结构对输入信息进行平移不变分类
的操作。图3.1是典型的 CNN 模型 VGG19,和大部分卷积神经网络模型类似,该模
型主要是由卷积层、池化层、激活层和全连接层组成。各层相互级联形成一个完整
的卷积神经网络模型,不同的功能层有相应映射的运算关系[54] 。其中卷积层是对图
片中每个特征的局部感知,再进行综合操作,得到全局信息;激活层是对卷积输出结
果的非线性映射,解决梯度消失问题;而池化层又称下采样,主要作用是特征降维,
压缩数据量和参数化,有效防止过拟合,也提高模型的容错性;全连接作为输出层,
将多维特征输入映射为二维的特征输出,起到分类器的作用[55] 。
图3.2所示为卷积运算的整个流程,包括输入图层、输出图层以及卷积核。先将
原始图像信息预处理后送入卷积层进行特征提取,利用卷积核矩阵对原始图像数据
中隐含的关联性抽象化,卷积计算公式表达如下:
18
万方数据
山东工商学院硕士学位论文
∑∑
K−1 I−1 ∑
J−1
Y l (m, n) = X k (m, n) ∗ H kl (m, n) = X k (m + i, n + j)H kl (i, j) (3.1)
k=0 i=0 j=0
图 3.2 卷积层运算整体过程
常用的激活函数是 ReLU,又叫线性整流器,对卷积层线性变换的特征做非线性
映射。与其他非线性函数 tanh 和 Sigmoid 相比,表明 ReLU 在大部分情况下性能都
是最好的[57] 。表达公式如下:
0, x⩽0
f (x) = (3.2)
x, x>0
池化层的提出是为了缓解卷积层对位置的过度敏感性,按操作类型分为最大池
化 (Max Pooling)、求和池化 (Sum Pooling) 以及均值池化 (Average Pooling)[58] 。一般
来说,最大值池化能降低卷积层参数误差引起的估计均值的偏移,平均值池化能改
善邻域大小限制引起的估计值方差变大的问题。从某种角度来考虑,池化就是卷积
中的特例,能在保持重要信息的同时降低特征图的维度,减小下一层输入的参数,降
19
万方数据
第 3 章 卷积神经网络加速器的硬件结构设计
低计算量,防止过拟合[59] 。
全连接层的主要作用是将提取的特征结合并分类,它在输出层使用 softmax 激
活函数。卷积、池化、激活等功能层的计算操作是把初始数据映射到隐藏层的特征
空间,全连接层是把分布式的特征表示映射到样本标记空间[60] 。
以上即为各功能层的运算方式和作用,将这些映射到硬件设计中,可有效加速
运算速度。本文接下来就要对神经网络的整体硬件架构进行分析,有效发挥 ASIC 的
灵活性和复用性。
3.2 硬件加速器整体结构设计
3.2.1 加速器数据流设计
图 3.3 加速器数据流框架
本文设计的卷积神经网络硬件加速器可实现图层之间的并行乘加计算,整体架
构如图3.3所示,可实现卷积、激活、池化和全连接等功能,首先从存储器中获取的
数据由选择器判断进入数据预取缓冲器或者权重缓冲器,将二维的图像矩阵转化为
串行可连续读取的一维数组数据,放入 MAC 阵列完成卷积计算。卷积运算结果通过
20
万方数据
山东工商学院硕士学位论文
比较器设置阈值范围实现激活层的效果,激活值需要先放入缓冲器中,存满一定的
列数才能开始池化运算[62] ,最后数据根据地址映射从缓冲器输出至外部存储器。
硬件加速器 IP 的卷积、激活和池化的功能模块是级联模式,并且根据寄存器值
可选择旁路模式,全连接层可以通过卷积计算模块的复用来完成,按照数据流划分
各个独立工作的模块,保证数据高速处理时各级流水线之间的连续性,提高了电路
的运行效率。
3.2.2 卷积层并行运算分析
卷积层详细数据流如图3.4所示,输入数据缓存负责将图像的原始数据按不同图
层,写入相应通道的数据缓冲器,缓冲器的个数可配并按图像的列数存储;每个像
素点数据进入预取模块,保证像素点的个数不小于卷积核的大小;再用行缓冲器将
预加的数据整合成二维的图像矩阵,每次进行计算输出数据模块就反馈一次数据移
位信号,更新图像矩阵[63] 。权值缓冲器的数据量相对较小,数据流的控制方式基本
类似。PE 阵列计算的输出结果按相同通道进行累加后存入缓冲器,完成卷积运算。
21
万方数据
第 3 章 卷积神经网络加速器的硬件结构设计
数据输出模块主要是传递数据通道的控制信号和累加输出,每个 PE 阵列输出一
个像素点的卷积和,输出结果进入对应的输出通道的接口,并在地址生成逻辑的驱
动下写回存储空间。
针对卷积神经网络的特点,设计了独立的数据重整模块以适应后续 MAC 矩阵
的运算特点,同时也有单独的 Relu 和 Activation 运算专用化模块,算力上可能不如
脉动阵列来得高[64] ,但这种硬件加速结构更注重能效,用 PE 的一维运算模式以及数
据复用,降低 CNN 模型的功耗,提高单位算力的能效比。
3.2.3 参数适配分析
越来越精确的深度学习模型面临两大挑战:计算密度越来越高;存储带宽越来
越大[65] 。解决此问题的可行方法之一就是降低数据位宽。这是因为较低的数据位宽
可以有效降低计算密度,同时减少计算时的功耗开销,而且也降低了存储需求。但
是,这里有个前提条件,那就是降低位宽不能损失模型性能,或者降低位宽带来的
收益远大于因此造成的模型性能损失,且损失是在可接受的范围之内。
22
万方数据
山东工商学院硕士学位论文
表 3.1 不同总线位宽综合后消耗的硬件资源
23
万方数据
第 3 章 卷积神经网络加速器的硬件结构设计
这种可复用的硬件加速器设计可以从不同网络模型的差异运算中寻找共性,能
使不同计算参数功能层的硬件资源平均利用率保持在较高的水平,达到专用集成电
路硬件加速器可扩展的效果。
3.3 加速器模块的寄存器配置
从上一节介绍的加速器数据流框架可知,卷积加速器的功能模块分为图像通道
数据、卷积核通道数据、激活信息、池化信息以及模块使能配置信息等,每个部分都
有各自对应的寄存器。配置寄存器都是通过 32 位的 APB 总线进行读写,下面是配
置寄存器的详细说明。
3.3.1 模块使能配置寄存器
在硬件加速模块启动之前,需要确认是否开启激活和池化功能模块,具体的模
式根据实际算法模型完成配置。等到第一幅图像运算所需的寄存器配置完成后,使
能 trigger 寄存器,加速器模块开始卷积运算,具体的寄存器介绍如表3.3所示。
表 3.3 模块使能配置主要寄存器
寄存器名 位宽 寄存器功能说明
3.3.2 卷积功能配置寄存器
图像数据通道寄存器有两组功能相同的寄存器,他们的配置序列是一样的,这
种乒乓缓存机制主要应用于数据传输速率大于数据处理速率的情况。
硬件加速模块配置图像数据通道寄存器前,先读取当前配置寄存器块的状态,
若 CONFIG_DONE 未拉高则可以开始当前乒乓 bank 的配置,先进行基础参数寄存
器配置,最后配置 CONFIG_DONE 表示当前 bank 配置完成,等待下次硬件触发或
24
万方数据
山东工商学院硕士学位论文
表 3.4 图像数据通道寄存器
寄存器名 位宽 寄存器功能说明
每次卷积层计算的卷积核参数一般都是固定的,所以卷积核数据读取会先于图
像数据。卷积核寄存器配置是先对地址、数据有效宽度和读写次数等基本参数配置,
随后启动 KERNEL_START 寄存器,触发卷积核缓存从存储空间读取数据,直至卷积
25
万方数据
第 3 章 卷积神经网络加速器的硬件结构设计
核数据读取完成后,KERNEL_DONE 只读寄存器置高。具体的寄存器描述如表3.5所
示。
表 3.5 权重数据通道寄存器
寄存器名 位宽 寄存器功能说明
3.3.3 激活及池化配置寄存器
激活、池化、移位和累加等功能的寄存器主要是在卷积计算处理完之后,根据
实际应用场景,选择累加和移位操作、激活的阈值范围以及池化的模式,具体的寄
存器名及其配置功能信息如表3.6所示。
表 3.6 激活池化移位功能部分寄存器
寄存器名 位宽 寄存器功能说明
26
万方数据
山东工商学院硕士学位论文
3.4 本章小结
本章首先介绍了卷积神经网络前向运算的原理,包括卷积、激活、池化、全连
接的功能。然后对整个硬件加速器的架构进行系统性分析,主要分析了卷积层数据
流的结构、MAC 阵列的运算方式,本设计支持通道的并行计算,各个模块采用级联
的方式,避免了数据阻塞的问题,其次,对不同算法模型卷积层的差异性进行分析,
并提出了通道的复用和卷积核拼接的方案。接着,列举了加速器 IP 中用到的主要的
寄存器,为后面制定验证计划提供基础。最后完成卷积神经网络加速器功能模块的
硬件方案设计。
27
万方数据
第4章 UVM 仿真验证平台设计与实现
硬件加速器验证平台是基于验证理论基础提出的验证平台架构设计开发的,使
用 SystemVerilog 语言完成与硬件加速设计模块相同的功能,在模块级验证上具有较
强的重用性。
4.1.1 仿真验证环境
基于 UVM 搭建的硬件加速器验证平台整体结构如图4.1所示,整个验证平台实
现自动化 python 脚本运行,可适用于不同类型 IP 的验证。图中配置文件的 Bootenv
初始化全局环境变量,define 文件中的宏定义参数值传递到整个工程,modulefile 管
理软件工具的版本,config 文件中会存放 IP 从备份 gitlab 仓库中的版本配置等相关
信息。Vmod 表示待验证的模块,存放设计原始的 RTL 代码。Verif 是与 DUT 相连的
UVM 验证平台,outdir 是文件经过预处理后,编译仿真执行产生的结果[71] 。
28
万方数据
山东工商学院硕士学位论文
4.1.2 验证平台的执行流程
图 4.2 硬件加速器验证平台执行流程
图4.2是硬件加速器验证平台的运行流程,从编译器的角度来说,整个验证平台
的编译执行都是从顶层模块开始自上而下的运行。如图所示,在 top_testbench 模块中
通过调用 run_test() 函数启动验证平台,并实例化 testcase;同时负责 DUT 与验证平台
29
万方数据
第4章 UVM 仿真验证平台设计与实现
为保证验证完备性,验证平台需要运行大量的测试用例,测试用例名在 shell 脚
本中的 UVM_TESTNAME 后面以字符串的方式指定,字符串是测试用例的类名,在
利用 factory 机制注册后,UVM 可以自动识别字符串,实例化出相应的测试用例。在
编译完成后产生 simv 仿真文件,为所有的测试用例单独创建路径,并执行各自的指
令,保证所有的测试用例并行执行。虽然需要消耗大量的计算机内存和线程资源,但
是大大减小实际仿真耗费的时间,提高验证效率[75] 。
4.2.1 验证 IP 的整体结构
调用 UVM 库中 print_topology,在仿真运行后能得到整个仿真验证平台的拓扑
结构。硬件加速器验证平台的容器类型组件主要有 uvm_test、uvm_environment、ref-
erence_model、scoreboard 以及多个 agent。所有的测试用例都是基于 uvm_test 派生
30
万方数据
山东工商学院硕士学位论文
4.2.2 接口的设计与实现
31
万方数据
第4章 UVM 仿真验证平台设计与实现
图 4.4 设计与验证接口连接
图 4.5 激励输入流程图
4.2.3 代理的封装
32
万方数据
山东工商学院硕士学位论文
4.2.4 序列器的激励产生
33
万方数据
第4章 UVM 仿真验证平台设计与实现
4.2.5 参考模型
本文前期搭建验证平台的大部分工作都在图4.8中的参考模型 (reference_model),
用于完成和 DUT 相同的功能,输出的结果可被 scoreboard 接收。下面将按照第二章
描述的卷积神经网络原理,详细介绍 reference_model 的具体过程。
图 4.8 参考模型数据流运行流程
从图4.8可以看出,参考模型在声明端口、宏注册、定义变量类型和构造 new 函
数后,进入 run_phase 机制中并行执行卷积核数据、图像信息、配置信息获取和卷
积计算输出结果等任务。为了便于验证平台的重用,数据获取的方式都会读取数据
34
万方数据
山东工商学院硕士学位论文
总线位宽和单个像素点的像素的宏定义,再进入不同判断条件的程序中执行相应的
代码。卷积核数据按照卷积输入通道个数、输出通道个数和卷积核大小三层 for 循
环嵌套,将其存入三维数组;图像数据直接在 while(1) 循环中不断获取,同样存入
三维数组;配置信息获取主要是指寄存器的状态值。整个卷积计算过程是先对图像
和权重数据按列依次乘加,在尽可能减小数据精度损失而保证数据不超出位宽的情
况下,对卷积层得到的数据进行移位,之后读取激活和使能状态,激活只要将数据
和配置的阈值做比较,池化必须满足的条件是激活处理后的数据列数除以步长大于
池化框的尺寸,最后将计算结果输出至 scoreboard,等待下一幅图像和权重数据的到
来。每个功能层的计算都是独立的级联模式,对不同的算法模型可以反复调用,直
至最后输出至全连接层。与一般参考模型不同的是需要配置信息是从 sequence 发送
的 transaction 获取,这样做的原因在于从寄存器模型中读取大量的寄存器数据花费
的时间不可控,而卷积计算具有的实时性,容易造成数据的错乱。
4.2.6 记分板
参考模型和待测试模块每次计算得到的数据都会存入 scoreboard,根据每个测试
用例的功能测试点,完成结果比对。scoreboard 用 uvm_blocking_get_port 将获取到的
地址及相应数据 transaction 存入文件,能够加快后续板级调试的进程。
如图4.9所示,scoreboard 中分为设计结果存取、验证结果存取和数据比较三个并
行功能模块。结果存取是将两边所有计算得到的地址和数据全部依次存入 log 文件
中,数据比较是把每笔获取的计算结果先存入两个队列,再将队列做对比,地址数据
相同的踢出队列,直至一幅图片计算完成后,任意队列不为空时直接打印 uvm_fatal,
停止仿真。当仿真报错后,可以结合上述的日志文件、打印信息和波形文件,查找设
35
万方数据
第4章 UVM 仿真验证平台设计与实现
计模块或者是验证平台中的问题,提高仿真验证的效率。
4.2.7 寄存器模型
与 DUT 中的寄存器模块对应的是属于验证环境中的寄存器模型,这两个模块包
含的寄存器信息是高度一致的。寄存器模型抽象出层次化的寄存器列表,包括地址、
域、属性等信息。对功能型验证而言,总线访问寄存器的方式使得寄存器后期的地
址修改或域的添加不会对已有激励产生影响,提高了测试序列的复用性。
本文研究的硬件加速器仿真验证平台中有三个 uvm_reg_block_rdl,分别存放权
重和图像乒乓缓存的寄存器配置。乒乓缓存是设计中在对一幅图像做卷积时,配置
另一幅图像的寄存器信息,这也是下文测试用例中要覆盖到的功能点,双缓存机制
提高了硬件加速数据的吞吐量。
36
万方数据
山东工商学院硕士学位论文
桥接方式。从激励流向的角度来看,寄存器序列把包含目标寄存器的有关信息存入
uvm_reg_item 实例中,送到 adapter。adapter 从 uvm_reg_item 中得到可以提取出总线
UVC 需要的数据,并产生总线 UVC 所需的 bus_seq_item 数据类型。完成数据内容提
取和再次写入后,bus_seq_item 通过 adapter 传入总线 UVC。在 bus_seq_item 的传输
下,总线 UVC 得到读写地址、数据、操作模式等一系列数据后再启动对总线的读写
访问。以写访问为例,假设总线上有反馈信号表示请求有效,那就以总线 sequencer
按照 response item 的过程传至 adapter,转换器也会对这个响应信号完成相应的处理。
同样的,反馈路径进行读访问时,会把总线读取的数据传输至 adapter,并最终返回
至与寄存器操作相关的方法返回值[78] 。
图 4.11 寄存器模型的桥接转换
寄存器模型的前门访问,不论是读还是写操作,寄存器模型都会由 sequence 产
生一个 uvm_reg_bus_op 的变量,这个变量中存储着操作类型和操作地址。如果是写
操作,还会将写入的数据等信息经过一个转换器 (adapter) 转换后交给 bus_sequencer,
再传到 bus_sequencer,最终到达 DUT。图4.12是寄存器模型前门访问的写操作模式
流程,除了完成前门访问的读写操作,还通过自动预测来更新寄存器的镜像值和期
望值,跟踪 DUT 中存在的实时变更的寄存器值。
37
万方数据
第4章 UVM 仿真验证平台设计与实现
寄存器模型同样也可以发起读操作,再将数值返回给寄存器模型,由于总线的
特殊性,bus_driver 以驱动总线发起读请求时,它能一并获得要读的数值,假如它把
该值存入由 bus_sequencer 得到的 bus_transaction 中时,那么 bus_transaction 中已存
在读取的数值,该值通过 adapter 中 bus2reg 函数的传递,最终寄存器模型得到此值。
图 4.12 寄存器模型前门访问写操作
4.3 测试用例设计
验证工作需要根据卷积神经网络硬件加速器的内容,分解测试点,根据测试点
设计对应的测试用例。测试用例分为基础测试、随机测试、错误测试和定向测试四
种类型。
(1)基础测试是对每个功能点 sequence 发送受约束的 transaction 做测试;
(2)随机测试是 sequence 发送不受约束的 transaction 测试;
(3)错误测试是指 sequence 发送一些不符合卷积神经网络硬件加速器原理的
transaction 给 DUT,观察 DUT 的运行结果是否会受影响;
(4)定向测试的目的是在测试后期收敛覆盖率,由于卷积神经网络的参数较多,
上百个测试用例也还是会存在参数交叉覆盖的遗漏的情况。
38
万方数据
山东工商学院硕士学位论文
表 4.1 硬件加速器总线验证平台测试点
测试点 寄存器配置 Hits/Bins
Bank_switch 0/1 791/2
Burst_len 2n̂(n<=8) 27/8
Hard_trigger/ Soft_trigger 0/1 539/2
Slide_num/step 1∼5 200/5
Buffer_threshold 8(default) 190/8
Pixel_width 8/16bit 539/16
Kernel_size 3*3/5*5 352/5
Stride_address 8bit 7934/8
Bypass_mode 0/1 37/2
Relu 0/1 203/2
Pooling 0∼2(average,min,max) 285/3
以上测试点是在分析了卷积神经网络硬件加速器原理之后,根据卷积各个功能
层的计算方式、数据流控制以及握手协议等特性来划分测试点,从测试结果来看基
本涵盖了硬件加速器的各个特性。
4.4 功能仿真结果
经过反复调试的验证平台,确认可以顺利运行后,按照测试功能点进行逐步验
证,排除 bug。仿真完成后每个测试用例都会产生对应的波形文件。
UVM 验证平台判定测试用例通过的主要方法是输出结果对比,日志信息查看,
波形的时序检查等。在芯片面对的实际应用场景中,电路可能会遇到一些极端情况。
本节具体分析的是卷积核大小 5×5、步长 1、单个像素位宽 16bit、图像大小 60×60、
输入输出层数为 1 的基础测试仿真波形,然后使用 gvimdiff 工具比对,如图4.13从
39
万方数据
第4章 UVM 仿真验证平台设计与实现
图 4.13 工具比对结果示意图
图 c 是卷积核数据通道,卷积核模块发出数据请求信号,kernel_driver 将 ack 信
号置高,确认握手完成后,在卷积核读数据信号有效的情况下,向卷积核缓存发送
随机的有符号数据。
图 e 作为最后运算结果的输出通道,在数据写出通道信号握手成功后,就会向
外发送数据结果,在实际验证平台中会发送到 scoreboard,与 reference_model 的结
40
万方数据
山东工商学院硕士学位论文
果进行比较。每笔发送的数据都需要进行握手,假设外部存储空间存满,没有及时
返回 wr_channel_ack 信号,数据结果会一直存在设计内部的 FIFO 中,FIFO 存满后,
也会停止读通道的读数据请求,形成反压效果。
(a) 仿真缩略图
(c) 卷积核通道写入权重数据
(d) 读数据通道写入数据与卷积触发
(e) 写数据通道输出运算结果
图 4.14 加速器随机测试用例仿真波形
每个测试用例仿真结束后,验证平台都会打印其详细的仿真报告。仿真报告中
包括验证平台执行的相关信息,输出结果的比较。验证平台的仿真报告是标准化打
41
万方数据
第4章 UVM 仿真验证平台设计与实现
印,UVM 自身提供了一些内建的函数和方法供开发者灵活运用。根据验证的不同需
求,设置相应的冗余度和安全级别,生成的仿真报告更清晰有条理,便于仿真后续
的调试工作。以上述某一随机测试用例的仿真日志为例,其仿真报告如图4.15所示。
图 4.15 测试用例的仿真报告
4.5 覆盖率分析
功能覆盖率是对数据组合和行为序列的检查。在本文中功能覆盖率是通过编写
覆盖组、覆盖点和交叉覆盖主要是获得对寄存器配值的数据覆盖率,同时也是硬件
加速器各层功能的测试指标。由于功能覆盖率是人为定义的,即使达到 100% 也不一
定将所有的场景都能覆盖,需要不断对测试用例进行迭代。
覆盖率驱动的验证方式既可以量化验证进度,
还能确保验证的完备性。
从图4.16的
代码覆盖率统计情况,可以看出通过多种测试方式,覆盖了所有待验证的功能点,将
代码覆盖率提升到接近 100%,说明卷积神经网络硬件加速器验证平台功能完备,可
以完成对卷积神经网络前向运算的验证工作。
42
万方数据
山东工商学院硕士学位论文
图 4.16 代码覆盖率统计
4.6 验证仿真优化
随着设计复杂度与规模的增加,验证平台的复杂度也随之增加。优化验证组件,
加快验证平台的仿真速度成为验证过程中的重要问题。以下是本文在搭建验证平台
时采用的几种优化方法,可根据实际应用相互配合,达到优化 UVM 仿真平台的目
的。
(2)减少判断条件的嵌套,循环条件中不带简单计算,避免每次循环反复计算;
与循环因子无关的计算跳出循环;循环内尽可能不引用,在硬件中引用在运行时是
静态的,可预先计算分层引用。在 SystemVerilog 编写的 testbench 中,引用一般是指
同期遍历类实例层次结构和动态类型,所有这类操作都能够在仿真运行时间内修改。
所以模拟器必需遍历全部的引用才可获取数据,但这也必然降低效率。
43
万方数据
第4章 UVM 仿真验证平台设计与实现
(6)
“动态数据结构”如队列、动态数组、联合数组是常见性能问题的来源,因
此尽可能使用静态数组而不是动态数组。即便数组位宽会有些许变化,可以提前设
定静态数组更大一些,并不是使用动态数组,减少内存和时间的开销。队列和动态
数组都有各自需求的使用场景,虽然他们的功能类似,但不建议随意混用。队列能
自动调整大小的前后操作,而动态数组便于随机插入、删除操作和查找,仿真器内
部具备对应它们各自的优化操作。用静态类代替动态类,避免同一组类被反复分配
内存和释放内存,保证仿真的整体内存占用保持一致,加快仿真速度。
(7)验证平台中常被调用的接口功能,放入接口而不是类中定义,更具仿真效
率。功能与接口存在一定的关联性,具备可重用性,另外,接口上操作的类具备和接
口关联的基本操作,保证对接口将来的任意操作都能使用该基本代码,但是 virtual
接口是没有权限引用此类代码的。
(9)断言的序列和属性尽量避免使用局部变量,虽然可能需要局部变量来操纵
序列和属性内部的数据,但仿真过程中也增加了开销。
(10)在覆盖率收集时,合并使用相同事件的采样过程,尽量使用特定事件触发
器,而不是系统时钟之类的通用事务,用于采样覆盖率、覆盖组共享共同表达式等
方式来缩短仿真运行时间。
表4.2是验证平台经过上述一系列优化后,再对同一测试用例进行仿真的时间对
44
万方数据
山东工商学院硕士学位论文
表 4.2 验证平台优化前后消耗仿真时间
验证平台 开始时间 结束时间 仿真消耗时长
初始化 Nov 25 08:21:12 2021 Nov 25 19:12:53 2021 10 时 51 分 41 秒
最终优化 Dec 13 21:34:03 2021 Dec 14 05:30:25 2021 7 时 56 分 22 秒
本文提出的编码层面的验证仿真提速策略,对于代码规模不大的验证任务,并
不是最有效的方式,甚至有的收益难以感知。但当验证规模到一定程度,包含大量
的仿真数据,如图像视频等数据流处理的场景,有明显的区别。
4.7 本章小结
45
万方数据
第 5 章 卷积神经网络加速器板级测试与电路综合
第 5 章 卷积神经网络加速器板级测试与电路综合
上一章对加速器模块的各个功能进行功能仿真,本章将对仿真通过的待测试设
计模块进行进一步的板级验证,板级验证前需要对待测试模块进行综合,完成板级
验证。本章搭建 FPGA 原型验证平台,并设计了待测试模块的外部环境,根据仿真
测试用例的激励,比对板级验证与仿真验证结果。完成 RTL 代码验证工作后,使用
DC(Design Compiler) 工具将逻辑电路转换到工艺库,并对设计的时序、面积等设置
约束条件,产生网表文件,供后端布局布线。
5.1 原型验证硬件平台资源
46
万方数据
山东工商学院硕士学位论文
FPGA 作为芯片产品,
内部的信号无法直接观测。通常需要借助于 FPGA 的 debug
工具在生成 Bit 文件前选取要观察的信号。当 Bit 文件加载运行时,必须通过配套的
debug 工具观察指定的信号波形,受限于 Block RAM 的容量以及信号优化等原因,调
试的效率比较低。而本文采用图5.2的劳特巴赫 TRACE32 工具支持嵌入式市场上通
用的微处理器架构,工具硬件的模块化结构,提供了一个集成的调试环境。其调试
系统由调试模块和指定芯片架构的调试线缆组成,提供了标准的调试功能[85] ,如本
文中所用到的 JTAG 调试接口、程序运行控制、多路调试和高级语言调试等功能。
图 5.2 劳特巴赫调试器
5.2 板级测试整体结构设计
47
万方数据
第 5 章 卷积神经网络加速器板级测试与电路综合
图 5.3 测试平台框图
5.2.1 单通道环境搭建
本文构造了单通道的卷积神经网络硬件加速器测试环境,分别由 JTAG_Ctrl、
mem_ctrl、memory 模块、Lint2APB 以及 DUT 五个模块组成,如图5.4所示。
图 5.4 单通道测试环境整体结构
48
万方数据
山东工商学院硕士学位论文
表 5.1 存储器模块的寻址范围
地址范围 存储器
0x2000_0000∼0x2000_1fff rd_channel_mem
0x0800_0000∼0x0800_1fff kernel_channel_mem
0x1000_0000∼0x1000_2fff wr_channel_mem
0x0000_0000∼0x0000_1fff lint2apb
5.2.2 多通道环境搭建
图5.6是多通道的卷积神经网络硬件加速器测试环境整体结构的示意图,从图中
可以看出多通道的加速器测试环境由 JTAG_Ctrl、mem_ctrl、memory 模块、Lint2APB、
arbiter 以及 HWPE 六个模块组成。相比单通道需要处理多个图层的数据分配问题,用
49
万方数据
第 5 章 卷积神经网络加速器板级测试与电路综合
arbiter 的仲裁功能来选择向每个图层对应的通道,从存储器中读取或写入数据。
图 5.6 多通道测试环境整体结构
图 5.7 轮询优先级仲裁器原理图
50
万方数据
山东工商学院硕士学位论文
但这样的设计存在面积和时序上优化不足的情况,所以本文利用屏蔽通路的方
式实现轮询仲裁机制。具体来说,采用了优先级不变的模式,当某一路请求信号握
手完成后,人为的把这个通路的请求信号屏蔽掉,只允许之前没有握手的通道参与
仲裁,等到所有的通道都处理完再把屏蔽打开。如图5.7所示,当还存在请求信号时,
选择上面的通路,否则选择未握手的信号通路,直至所有通道的握手完成。
相比于修改优先级实现遍历的轮询仲裁器,固定优先级并屏蔽通路的办法实现
的轮询仲裁器,在上述四通道的情况下综合出的电路相差不大,但在 64 通道的情况
下时序面积功耗上的优化更好。图5.8给出了轮询优先级仲裁器综合分析结果,从图
中对比的情况来说,时序、面积和功耗都有所降低,实际算法模型中通道数比较多
的情况下,尽可能在理想状态下将数据灌入 DUT,得到的测试结果更符合 ASIC 的
真实情况。同时 leakage power 也只有 1.5uW 左右,与动态功耗不同的是其本身和频
率无关,是电路没有跳变时电路的功耗,在 FPGA 灌入比特流文件并长时间不断电
的情况下,不会因为温度给芯片造成一定的负担[88] 。
图 5.8 轮询优先级仲裁器电路综合分析
5.2.3 测试步骤
51
万方数据
第 5 章 卷积神经网络加速器板级测试与电路综合
5.3 板级验证结果分析
5.3.1 单通道验证结果
52
万方数据
山东工商学院硕士学位论文
图 5.10 单通道脚本预处理数据写入调试器
上述写入的数据包括数据图像、卷积核和寄存器配置信息,可由调试工具运行
后,在赛灵思公司开发的集成设计环境 vivado 软件中,抓取对应信号通道的波形图,
确认由上位机写入的数据,经过调试器转换数据类型,最终进入设计 IP 外部接口的
激励一致。
图 5.11 单通道图像数据读入板级波形
图 5.12 单通道图像数据读入仿真波形
这些数据的来源都是上一章中仿真验证平台中的测试用例,图5.11是板级验证
工具 vivado 以读数据请求信号上升沿为触发条件抓取的波形,图5.12是在仿真验证
平台中用仿真工具 verdi 打开的波形图。保证了灌入的图像数据信息一致。
图5.13和图5.14分别是卷积核数据的板级和仿真波形,确认板级验证平台输入的
所有数据以及寄存器配置信息都一致后,再去对比卷积神经网络硬件加速器 IP 的结
果才有意义。
53
万方数据
第 5 章 卷积神经网络加速器板级测试与电路综合
图 5.13 卷积核数据读入板级波形
图 5.14 卷积核数据读入仿真波形
由于图中波形截取的限制,需要说明数据配置是单输入单输出,卷积核大小是
3x3,卷积核的数据位宽是 8bit,图像尺寸为 64x64,步长 1,图像的单个像素点位
宽是 16bit。将 IP 中卷积触发信号置为有效后,等待 FPGA 中 DUT 运行一段时间后,
可以得到图5.15中左边是调试工具从存储器中获取的数据,右边是仿真验证平台中
打印出的数据。图5.16是仿真验证平台中截取的数据结果,图5.15中地址和数据的完
全一致,可以判定板级验证与仿真验证平台的正确性。
图 5.15 单通道计算结果输出仿真波形
图 5.16 单通道仿真与板级测试结果对比
5.3.2 多通道验证结果
多通道仿真测试相比于单通道需要更大的数据存储空间,同时还添加了仲裁器。
图5.17的板级波形和图5.18中调试器写入脚本的数据一致,确保从上位机输入的激励
54
万方数据
山东工商学院硕士学位论文
到模块接口读取的数据完全相同,减少后期验证调试不必要的工作量。
图 5.17 多通道图像数据读入板级验证波形
图 5.18 多通道脚本预处理数据写入调试器
图5.19是卷积神经网络加速器模块卷积核接口读取的波形,它的输入数据也是
根据仿真验证产生的激励而来,与仿真中卷积核的数据相同。
图 5.19 卷积核数据读取板级验证波形
55
万方数据
第 5 章 卷积神经网络加速器板级测试与电路综合
图 5.20 多通道计算结果输出板级验证波形
图5.21是多通道仿真与板级测试结果得对比图,左边一栏是板级验证的结果从
write_channel_memory 中读取出来,经过调试器的数据类型转换,存入上位机。右边
是仿真计算结果的地址和数据,两者对比结果相同,说明多通道的基础测试完全正
确。以仿真验证的测试用例为参考,用同样的方法对设计进行大量的板级验证,因
此,可以得出卷积神经网络加速器模块功能符合设计预期的结论。
图 5.21 多通道仿真与板级测试结果对比
56
万方数据
山东工商学院硕士学位论文
级单元组成中间网表;优化和映射就是对已有的网表分析,去除设计中的冗余单元,
对不满足限制条件的路径做优化,然后把优化之后的电路映射到实际的工艺库上。
因为触发器与锁存器两种不同时序单元的共存电路会增加调试复杂度,所以本
文综合的过程基本上采用同一种时序单元,为避免实际电路中产生锁存器,执行判
断语句前赋予默认的状态,即先对输出赋初值再进行判断,也可以选取 if…else、if
…else 的语法构造[90] 。
set DesignMaxCapacitance 1
57
万方数据
第 5 章 卷积神经网络加速器板级测试与电路综合
在综合编译过程中,运用 DC 进行结构级、逻辑级和门级三个阶段的优化方式。
图5.24是这三个阶段的关系图,结构级是高层次的综合,可以采用 DesignWare IP 库
的选择、共享子表达式、资源共享以及运算符排序等方法优化;经过结构级优化电
路转化成与工艺无关的 GTECH 库的形式,本文在逻辑级优化时使用的是 DC 默认
的结构化方式来综合逻辑级电路,这样可以兼顾时序和面积的结果;最后门级优化
就是把 GTECH 的电路映射到工艺库,并在不影响时序和面积的前提下修正违反规
则的单元。
58
万方数据
山东工商学院硕士学位论文
经过预综合和施加设计约束后,开始编译生成门级网表,在满足设计规则的条
件下运用上述的方法优化,最终综合出满足时序和面积的电路。表 5.2 是本设计在不
同频率下的综合结果,并与 Eyeriss 卷积神经网络加速相比较,本设计在逻辑门数量
是其 2 倍的情况下,功耗更低,延迟也符合设计要求。
表 5.2 不同频率下卷积神经网络加速器综合结果对比
frequency(Hz) 800M 1G 2G 200M(Eyeriss)
2
area(um ) 451814 452520 454869 250000
gate 2404289 2406634 2418399 1176000
Leakage power(uW) 76660.8 78692 96785
Total power(mW) 142.1858 145.4759 160.4868 236
Latency 0.83ns 0.69ns 0.34ns 5.2ms(total)
5.5 本章小结
本节首先对设计模块进行综合和实现,然后搭建单通道和多通道的验证环境,其
中单通道的验证环境需要将 Lint 协议转换为 APB 协议来配置寄存器,多通道的环境
中,面对多个通道的读数据请求,通过轮询优先级仲裁器实现仲裁请求的公平性。最
后基于 GLOBALFOUNDRIES 22nm 工艺库完成硬件加速器 DesignCompiler 逻辑综
合后时序、面积与功耗的优化。为确保验证的严谨性,板级测试与仿真验证的激励
和配置寄存器一致,再进行比较得出两者的验证结果相同,经过以上分析,本文设
计的卷积神经网络加速器满足设计要求,达到前端功能验证的交付标准。
59
万方数据
第 6 章 总结与展望
第 6 章 总结与展望
6.1 本文工作总结
60
万方数据
山东工商学院硕士学位论文
编译报告,调整优化的方法和策略,得到符合要求的约束结果。
6.2 展望
研究卷积神经网络硬件加速器和验证工作需要花费大量的时间和精力,本文通
过卷积神经网络验证平台的搭建及研究,在专用加速器验证方面取得一定成果,但
还有很多可以改善和进一步提高的地方,对未来可进行的研究工作规划总结如下:
(1)本文用实验室现有的卷积神经网络硬件加速器 IP,把研究的重点放在仿真
验证和板级验证,而接下来还需要测试实际算法模型的运行状况。
(2)本文中仿真验证平台完成了卷积神经网络硬件加速器 IP 的验证工作,但对
于相似类型的神经网络模型设计模块的验证环境搭建,可能还需要少量的代码修改,
并不能做到完全的可重用。
61
万方数据
参考文献
参考文献
[1] Hong J, Arslan S, Lee T, et al. Design of Power-Efficient Training Accelerator for Convolution
Neural Networks [J]. Electronics, 2021, 10 (7): 787.
[2] Lin W, Adetomi A, Arslan T. Low-Power Ultra-Small Edge AI Accelerators for Image Recognition
with Convolution Neural Networks: Analysis and Future Directions [J]. Electronics, 2021, 10 (17):
2048.
[4] Ahmadi M, Vakili S, Langlois J P. CARLA: A Convolution Accelerator With a Reconfigurable and
Low-Energy Architecture [J]. IEEE Transactions on Circuits and Systems I: Regular Papers, 2021,
68 (8): 3184–3196.
[7] Hsieh M-H, Liu Y-T, Chiueh T-D. A Multiplier-less Convolutional Neural Network Inference Ac-
celerator for Intelligent Edge Devices [J]. IEEE Journal on Emerging and Selected Topics in Cir-
cuits and Systems, 2021, 11 (4): 739–750.
[8] Lu L, Xie J, Huang R, et al. An efficient hardware accelerator for sparse convolutional neural net-
works on FPGAs [C]. In 2019 IEEE 27th Annual International Symposium on Field-Programmable
Custom Computing Machines (FCCM), 2019: 17–25.
[12] Shen Y. The Argus FPGA-Based CNN Accelerator Generator [D]. Long Island: State University
of New York at Stony Brook, 2021.
[13] Trippel T D. Developing Trustworthy Hardware with Security-Driven Design and Verification [D].
Ann Arbor: University of Michigan, 2021.
[14] Mayekar P A. Design and Verification of a DFI-AXI DDR4 Memory PHY Bridge Suitable for
FPGA Based RTL Emulation and Prototyping [D]. Rochester: Rochester Institute of Technology,
2019.
62
万方数据
山东工商学院硕士学位论文
[17] Piziali A. Functional verification coverage measurement and analysis [M]. New York: Springer,
2008.
[18] 克里斯·斯皮尔, 斯皮尔, 张春, et al. System Verilog 验证: 测试平台编写指南 [M]. 北京:
System Verilog 验证: 测试平台编写指南, 2009.
[20] Singh B P. Knowledge-Guided Methodology for Soft IP Analysis [D]. Cleveland: Case Western
Reserve University, 2015.
[23] Nagesh K A, Shilpa D. Verification of SerDes Design Using UVM Methodology [C]. In Proceeding
of Fifth International Conference on Microelectronics, Computing and Communication Systems,
2021: 607–616.
[24] Zhao T, Qiao L, Chen Q. An FPGA-Based CNN Efficient Storage Processor [J]. IOP Conference
Series. Materials Science and Engineering, 2019, 569 (3).
[26] Moskala M, Kloczko P, Cieplucha M, et al. UVM-based Verification of Bluetooth Low Energy Con-
troller [C]. In 2015 IEEE 18th International Symposium on Design and Diagnostics of Electronic
Circuits & Systems (DDECS), 2015: 123–124.
[27] Ni W, Wang X. Functional coverage-driven UVM-based UART IP verification [C]. In 2015 IEEE
11th International Conference on ASIC (ASICON ), 2015.
[29] Fathy K, Salah K, Guindi R. A proposed methodology to improve UVM-based test generation and
coverage closure [C]. In Design & Test Symposium, 2016: 147–148.
[31] Gayathri M, Sebastian R, Mary S R, et al. A SV-UVM framework for Verification of SGMII IP core
63
万方数据
参考文献
with reusable AXI to WB Bridge UVC [C]. In 2016 3rd International Conference on Advanced
Computing and Communication Systems (ICACCS ), 2016.
[33] Khalifa K, Salah K. Implementation and verification of a generic universal memory controller based
on UVM [J]. IEEE, 2015: 1–2.
[35] Conti E, Marconi S, Christiansen J, et al. Simulation of digital pixel readout chip architectures
with the RD53 SystemVerilog-UVM verification environment using Monte Carlo physics data [J].
Journal of Instrumentation, 2016, 11 (01): C01069.
[37] Marconi S, Conti E, Christiansen J, et al. Reusable SystemVerilog-UVM design framework with
constrained stimuli modeling for High Energy Physics applications [C]. In IEEE International Sym-
posium on Systems Engineering, 2015: 391–397.
[39] Priyanka B, Gokul M, Nigitha A, et al. Design of UART Using Verilog And Verifying Using
UVM [C]. In 2021 7th International Conference on Advanced Computing and Communication
Systems (ICACCS), 2021: 1270–1273.
[40] Ni W, Zhang J. Research of reusability based on UVM verification [C]. In 2015 IEEE 11th Inter-
national Conference on ASIC (ASICON), 2015: 1–4.
[41] 谢峥, 王腾, 雍珊珊, et al. 一种基于 UVM 面向 RISCCPU 的可重用功能验证平台 [J]. 北京大
学学报 (自然科学版), 2014, 50 (02): 221–227.
[42] Salah K. A UVM-based smart functional verification platform: Concepts, pros, cons, and opportu-
nities [J]. IEEE, 2015: 94–99.
[43] Goel A, Sundari B B T, Mathew S. UVM based Controller Area Network Verification IP (VIP) [C].
In 2020 International Conference on Smart Electronics and Communication (ICOSEC), 2020: 645–
652.
[44] 刘达, 倪伟, 徐春琳. 基于 UVM 的 AXI 总线验证 IP 设计 [J]. 微电子学, 2019, 49 (05): 680–685.
[46] Melikyan V, Harutyunyan S, Kirakosyan A, et al. UVM Verification IP for AXI [C]. In 2021 IEEE
East-West Design & Test Symposium (EWDTS), 2021: 1–4.
[47] Peng X, Wang S, Wang H, et al. Function verification of SRAM controller based on UVM [C].
64
万方数据
山东工商学院硕士学位论文
[48] Harshavardhan M, Hegde G. AHB Protocol Verification Using Reusable UVM Framework and
System Verilog [M] // Harshavardhan M, Hegde G. Computer Networks and Inventive Communi-
cation Technologies. Springer, 2021: 2021: 729–742.
[49] 李兆斌. 基于 UVM 的 AXI4 总线协议接口 IP 验证的研究与实现 [D]. 广州: 暨南大学, 2017.
[50] Chau C K. A Hierarchical Approach to Formal Modeling and Verification of Asynchronous Cir-
cuits [D]. Austin: The University of Texas at Austin, 2019.
[51] Bailey S. Rapid ASIC Design for Digital Signal Processors [D]. Berkeley: University of California,
Berkeley, 2018.
[52] Jiang S. Productive and Extensible Hardware Modeling, Simulation, and Verification Methodolo-
gies [D]. Ithaca: Cornell University, 2021.
[54] Ge F, Wu N, Xiao H, et al. Compact convolutional neural network accelerator for iot endpoint
soc [J]. Electronics, 2019, 8 (5): 497.
[56] Li J, Jiang S, Gong S, et al. SqueezeFlow: A sparse CNN accelerator exploiting concise convolution
rules [J]. IEEE Transactions on Computers, 2019, 68 (11): 1663–1677.
[57] Zhao Y, Wang D, Wang L. Convolution accelerator designs using fast algorithms [J]. Algorithms,
2019, 12 (5): 112.
[61] Yantır H E, Eltawil A M, Salama K N. IMCA: An Efficient In-Memory Convolution Accelerator [J].
IEEE Transactions on Very Large Scale Integration (VLSI) Systems, 2021, 29 (3): 447–460.
[62] Mittal S, et al. A survey of accelerator architectures for 3D convolution neural networks [J]. Journal
of Systems Architecture, 2021: 102041.
[63] Ambalakkat S M. Optimization of Constrained Random Verification Using Machine Learning [D].
St. Paul: University of Minnesota, 2018.
[64] Bertoni F, Citti G, Sarti A. LGN-CNN: A biologically inspired CNN architecture [J]. Neural net-
works : the official journal of the International Neural Network Society, 2022, 145: 42–55.
65
万方数据
参考文献
[66] 常亮, 邓小明, 周明全, et al. 图像理解中的卷积神经网络 [J]. 自动化学报, 2016, 42 (09): 1300–
1312.
[67] Zhang Y. Deep Convolutional Neural Network for Image Restoration and Synthesis [D]. Boston:
Northeastern University, 2021.
[68] Nelson J. Hardware Aware Optimization of Custom CNN Implementations and Benchmarking of
CNN Algorithms on FPGA [D]. Cookeville: Tennessee Technological University, 2021.
[69] Lee H, Eum S, Kwon H. ME R-CNN: Multi-Expert R-CNN for Object Detection [J]. IEEE trans-
actions on image processing : a publication of the IEEE Signal Processing Society, 2019, 29:
1030–1044.
[70] 李晨阳, 宋澍申, 王涛, et al. 一种基于 UVM 的高层次化验证平台设计 [J]. 微电子学与计算
机, 2019, 36 (06): 79–83.
[71] Shey J. Power Supply Analysis for Device Verification [D]. Baltimore: University of Maryland,
Baltimore County, 2020.
[72] S R, N M. UVM based verification of iAPX 186 processor modules [J]. Journal of Physics: Con-
ference Series, 2021, 1921 (1).
[73] Mohsin Y. Verification of a Single Port RAM Using UVM Methodology [D]. Kingsville: Texas
A&M University - Kingsville, 2021.
[74] Maksimovic D. Novel Directions in Debug Automation for Sequential Digital Designs in a Modern
Verification Environment [D]. Toronto: University of Toronto (Canada), 2015.
[75] Lnu N. Design and Verification of 1X3 Router [D]. Kingsville: Texas A&M University - Kingsville,
2018.
[76] Lin H. Algorithms for verification of analog and mixed-signal integrated circuits [D]. College Sta-
tion: Texas A&M University, 2016.
[78] Lee P S. Automation of Simulation-Based Verification at the Register Transfer and Behavioral
Levels [D]. Irvine: University of California, Irvine, 2013.
[79] Kamireddy L S, K L S. UVM Based Reusable Verification IP for Wishbone Compliant SPI Master
Core [J]. International Journal of VLSI Design & Communication Systems, 2018, 9 (5).
[80] Ma Y. Hardware Acceleration of Deep Convolutional Neural Networks on FPGA [D]. Phoenix:
Arizona State University, 2018.
66
万方数据
山东工商学院硕士学位论文
[81] Kumar P, Kumar V, Pratap R. FPGA Based Design and HIL Verification of a Soft-Core Directional-
OCR [J]. Electric Power Components and Systems, 2019, 47 (14-15): 1423–1436.
[82] Krishnani A R. In-Situ Implementation and Training of Convolutional Neural Network on FP-
GAs [D]. Richardson: The University of Texas at Dallas, 2020.
[83] Kourfali A, Fricke F, Huebner M, et al. An Integrated on-Silicon Verification Method for FPGA
Overlays [J]. Journal of Electronic Testing : (JETTA), 2019, 35 (2): 173–189.
[84] Kim D. FPGA-Accelerated Evaluation and Verification of RTL Designs [D]. Berkeley: University
of California, Berkeley, 2019.
[85] 狄新凯, 杨海钢. 基于 FPGA 的稀疏化卷积神经网络加速器 [J]. 计算机工程, 2021, 0 (0): 1–9.
[86] Jabeen S. A Formal Verification Methodology for Real-Time FPGA [D]. Fargo: North Dakota State
University, 2017.
[87] Hale R B. Distributed Memory Based FPGA Debug [D]. Provo: Brigham Young University, 2020.
[88] Dua A. Hardware Acceleration of Video Analytics on FPGA Using OpenCL [D]. Phoenix: Arizona
State University, 2019.
[89] Bannon J. Reconfigurable Convolution Implementation for CNNs in FPGA [D]. Seattle: University
of Washington, 2018.
[90] Bai L, Zhao Y, Huang X. A CNN accelerator on FPGA using depthwise separable convolution [J].
IEEE Transactions on Circuits and Systems II: Express Briefs, 2018, 65 (10): 1415–1419.
67
万方数据
攻读学位期间发表论文与研究成果清单
攻读学位期间发表论文与研究成果清单
68
万方数据
山东工商学院硕士学位论文
致谢
岁月如梭,三年一晃而过,我的研究生生涯即将结束。回首这三年来的经历,收
获很多宝贵经验和美好回忆,借论文完成之际,感谢给予帮助的老师和师兄弟们,也
感谢同学和同事们!
在此由衷地感谢我的导师隋金雪副教授,感谢他三年来的支持与理解,推荐我
去北大信息技术高等研究院学习芯片的设计与验证。其次,感谢张霞博士,在我实
习的两年半时间里,张老师在工作和生活上提供帮助,在论文方面给予悉心指导;还
要感谢我的师兄季永辉,在我遇到技术困难时,季永辉总是耐心讲解,也提高了我
的自主学习的能力,也要感谢高性能存储与计算实验室的其他成员等,我们一起工
作和学习,让我的实习生活充满乐趣。
最后感谢我的家人们,他们的关怀是我继续前进的动力,希望通过我不断的努
力获得成就来报答他们。
69
万方数据
版权声明
版权声明
任何收存和保管本论文的各种版本的单位与个人,未经本论文作者同意,不得
将本论文转借他人,也不得随意复制、抄录、拍照或以任何方式传播。否则,引起有
碍作者著作权之问题,将可能承担法律责任。
70
万方数据