少说废话,多看代码。
1.
NVDLA是个完整的开源IP项目,提供了RTL源码,软件代码,设计文档,验证环境。这是商业公司维护的开源项目,代码质量不错。
对于研究或者从事AI加速器设计相关工作有实际的意义。包括卷积层的实现架构,片内存储单元的设计,标量与矢量运算单元的实现,带宽与性能的平衡设计考虑。
对于学习Verilog或者前端设计工作,可以借鉴很多基本单元设计的代码。比如AMBA总线接口,FIFO,数据运算,控制逻辑,复位处理,时钟网络,握手信号,memory接口与控制等。
同时提供了代码自动生成的一些脚本实例。比如使用内嵌python的代码自动生成,基于宏定义的代码配置等等。
针对验证方面,提供了一个基本的基于uvm的验证环境,可以作为IP级验证环境的参考。
软件方面,提供了firmware和性能仿真相关源码,网上也可以找到网络编译器相关的资料。
2.
人工智能是最近几年的热点,芯片是最近几年的痛点,人工智能芯片项目还能火几年。
NVDLA是一个硬件加速器IP,支持卷积神经网络(CNN)常用的一些运算操作:比如卷积,激活,池化等。支持FP16,INT16,INT8等数据精度,详细性能(Tops)和功耗(Walt)参数可以参考官方网站。
NVDLA开发环境支持Caffe模型输入,利用编译器进行量化和网络结构分割,然后交付硬件调度执行,对主CPU的占用率不高。
NVDLA可以放在FPGA平台上,结合周边外设,实现各类智能应用,比如目标分类,人脸检测等。
3.
基于开源项目学习Verilog是个不错的思路。
以NVDLA开源项目为基础,逐步熟悉Verilog在大型IP开发中的实战应用,了解AI硬件加速器的设计思路。
方法以代码阅读为主,结合技术文档资料,辅助代码仿真实践。
输出内容包括个人学习笔记,以及实验代码(如有)。
日拱一卒,难在坚持。
推荐阅读,欢迎交流
【NVDLA学习笔记:001】获取源码
【NVDLA学习笔记:002】Tree Config Mak
【NVDLA学习笔记:003】Environment Setup
【NVDLA学习笔记:004】运行一个仿真case
【NVDLA学习笔记:005】代码综合
【NVDLA学习笔记:006】FPGA移植
【NVDLA学习笔记:007】参考资料汇总