今天的设计团队如果采用传统的rtl设计流程,将花费很多时间才能将运算密集型网络带入到硬件中,该领域亟需一个有别于以往rtl流程,同时又能有效提高生产力的方法。
catapult hls平台的时代来临
15年前,mentor认识到设计和验证团队需要从rtl升级到hls层级,并开发catapult®hls平台。该平台提供了从c + +到最佳化rtl的完整流程(图1)。
图1:catapult hls平台
catapult hls平台为算法设计师提供硬件设计解决方案,可以从c++/systemc描述,生成高品质的rtl,并且以asic、fpga或efpga为目标。此平台能在合成之前检查设计中的错误、为功能验证和覆盖率分析提供无缝且可重复使用的测试环境,同时支持在生成的rtl与原始hls来源之间执行形式等效性检查。
该解决方案的优势包括:
支持后期阶段变更。可随时变更c++算法,重新生成rtl代码或使用新制程。
支持硬件评价。可迅速地探索功耗、性能和面积选项,而无需变更原始代码。
加快时程。将设计和验证所花时间从一年缩短至几个月,可在数日内增添新功能,使用的c/c++代码行数比rtl减少5倍。
ai加速器生态系统
同时,mentor在catapult hls平台中部署了ai加速器生态系统(图2),为ai设计师提供能快速展开项目的环境。
图2:catapult ai加速器生态系统
ac math数据库
algorithmic c math(ac math)中的所有函数都以c ++模板参数写成,让设计师可依据目标应用来指定数值的精准度。许多函数都使用不同的近似策略,例如,自然对数提供两种形式,即分段线性近似和cordic形式。在可接受准确度稍有误差的情况下,前者较小且较快; 后者虽然较慢,但准确许多。所有情况下都能自定义来源以达成设计目标。每个功能/内存块都附有详细的设计文件和c ++验证程序。由于catapult hls平台会利用c ++验证程序,因此很容易根据来源设计来验证rtl准确度。
该数据库中的数学函数类别包括:
分段线性函数-绝对值、正规化、倒数、对数和指数(自然和底数2)、平方根、反平方根和正弦/余弦/正切(正和反)
激励函数,如双曲正切、s函数和leaky relu函数
线性代数函数,如矩阵乘法和cholesky分解
dsp数据库
algorithmic c dsp(ac dsp)数据库定义了dsp设计师通常所需要的可合成c ++函数,例如滤波器和fft。这些函数采用以c ++类别为主的设计,让设计师能轻松示例物件的众多变体,以打造复杂的dsp子系统。与ac math数据库一样,输入和输出参数都会参数化,以便能在所需的定点精确度下执行算术,从而在为合成的硬件执行面积和性能折衷时,提供高度的弹性。
dsp数据库包含:
滤波器函数,如fir、1-d移动均值,以及多相位抽取
快速傅立叶变换(fft)函数,如radix-22单一延迟回授、radix-2x动态就位和radix-2就位图像处理数据库algorithmic c图像处理数据库(ac ipl)首先会定义一些常见的像素格式类型定义。
ai加速器生态系统还可提供丰富的工具组,由真实且经过测试的加速器参考设计示例,团队可以研究、修改和复制这些示例,迅速展开项目。这些随catapult提供的套件,包含了可设定的c++/systemc ip原始代码、文件纪录、验证程序和指令码,让设计能进行hls合成和验证流程。这些工具组展示了各种能用来对性能(延迟)、帧率、面积或功率的折衷进行实验的方法和编写程序技术。
pixel-pipe视讯处理工具组
该视讯处理工具组展示了一个使用pixel-pipe加速器的即时图像处理应用程序(图3)。加速器内存块使用c++类阶层构架来实作。该内存块将图像缩小,并将图像从彩色转换为单色,以执行边缘侦测,然后放大图像。xilinx®petalinux下的cpu上,执行了一个使用者空间应用程序,此程序能让软件控制开启或关闭边缘侦测内存块。工具组文件纪录会显示如何使用xilinx ip将该内存块整合到xilinx电路板中,以便团队展示该系统。
图3:pixel-pipe视讯处理工具组
2-d折积工具组
该工具组展示了如何以c++对eyeriss1处理元件(pe)数组进行编码,实作2-d折积以执行图像的强化(锐化、模糊和边缘侦测)。处理元件(图4)可以执行3x1乘积累加(折积)。
图4:eyeriss处理元件
tinyyolo物件辨识工具组
物件辨识工具组(图5)展示了使用折积加速器引擎的物件辨识应用程序,该引擎使用2-d eyeriss工具组中的pe数组实现。该工具组展示了如何透过axi4互连(从系统內存来读取核心权重数据)取得高速数据路由,并展示如何定义高效能內存构架。该工具组提供tensorflow整合能力,可以c++语言的网络层能进行推理测试。
图5:tinyyolo工具组示例-系统视图
系统整合
加速器内存块并非独立存在,catapult hls提供“界面合成”能力,以将时间性协定加入至非时间性c++函数界面变数。设计师只需要在catapult gui中,为协定设定构架约束条件。此工具可支持典型的协定,例如axi4视讯串流、请求/认可交握,以及內存界面。这让设计师不必变更c++原始码,就能探索界面协定。
axi示例
axi示例(图6)显示了如何使用catapult hls产生的axi界面ip,在axi soc子系统中示例一个或多个加速器元件。提供主控端、受控端和串流示例。
图6:axi示例
基础处理器示例
基础处理器示例(图7)显示了如何将机器学习加速器连接到完整的处理器型系统中,并采用了axi示例。此示例中的机器学习加速器采用了简单的乘积/累加构架,搭配2-d折积和区域取最大值。支持数个第三方处理器ip模型,并包含一个用于裸金属编程的软件流程(含有相关数据)。
图7:基础处理器平台示例
编辑:muyan来源:eeworld