报告人:林俊杰
一、评估开展说明开展意义FPGA开发流程包括设计输入、功能 仿真、综合优化、布局布线,其中综合优化和布局布线过程中需要考虑到时序约束实现问题。通常情况下如果时序约束无法满足要求,则需要重新查看代码设计,往复的进行前阶段流程,直到时序约束满足要求。在项目系统时钟较高,时序要求严格的情况下,该过程消耗大量的项目开发周期,降低该阶段周期可有效提高开发效率。
评估目标In time依据人工智能进行数据分析,能自动实现综合编译策略的选择。通过多次迭代,最终确定能满足时序约束的综合策略。通过本次的试用,验证InTime的可用性及有效性,为后续FPGA项目开发流程改进上提供可用的、高效的方案。
内容细分1.软件环境 1)项目: 1.软件操作性 2.软件运行速率 2)方法: 1.安装开发软件,学习开发软件使用,评估软件易用性。 2.搭建工程,试探软件运行效率。 3.评估软件功能性。 3)意义: 1.良好的开发环境包括环境界面、报告分析等,保证软件具有较好可控性。 5)输出物: 1.软件功能概述 2.示例工程及说明
2.工程试验 1)项目: 1.验证Intime自动优化功能 2.验证Intime自动优化速率 3)方法: 1.利用FPGA实际工程项目为试验对象。 2.查看对比时序自动优化前后的结果。 3.统计自动时序优化消耗时间 4)意义: 1.以实际FPGA工程为对象进行实验,能有效的说明Intime的功能实用性。 2.通过前后时序优化结果及优化周期统计,验证软件在实际项目开发过程中,满足项目周期要求。 5)输出物: 1.示例工程
二、PLUNIFY简介Plunify是一家 电子设计自动化 (EDA) 软件公司,总部位于新加坡。Plunify的目标是要以云计算,机器学习以及数据分析技术来解决 半导体晶片设计过程中所面对的问题。 在2011年,Plunify开发的云计算应用平台正式上线,是世界第一个专为半导体晶片设计的云平台。用户能透过这个平台,以随选式快速地得到服务器资源和软件工具。 Plunify在2013年正式发布旗舰产品 – InTime。InTime是一款针对FPGA综合与布局布线问题的专家软件。它利用大量且低价的云计算资源,通过机器学习和数据分析技术,在不需人工修改代码的情况下自动地达到更优越的设计结果。
三、InTime使用InTime简介InTime是一款使用大规模计算能力和机器学习来解决FPGA时序优化问题的软件。InTime 内嵌学习引擎,可以智能分析FPGA设计,为综合和布局布线提供更优的策略组合。同时,根据对器件、设计和工具特点的了解,以及独有的算法,InTime 可以生成最能满足设计需求的编译设置和设计约束。InTime 分析每一次编译结果,不断学习、丰富和更新自己的数据库。通过对计算资源的智能掌控,InTime 极大地帮助了FPGA工程师解决设计问题,并且使芯片性能显著提升。
InTime运行原理
InTime实质上是一款综合器策略选择软件,支持Vivado和Quartus。实现Vivado、Quartus软件自动调用,自动填写综合策略指令。内嵌机器学习引擎,依据每一轮的编译综合结果,自动选择下轮运行策略。InTime运行流程如下图所示。
InTime自动在本地生成专属数据库,存储相关的设计信息。初始化运行时,依据综合器的选取,自动生成策略填入综合器优化选项。InTime支持多线程、多处理器分布计算,可为每个处理器分配特定的生成策略进行并行综合编译。编译结束后,利用机器学习引擎对编译结果进行分析学习,补充完善专属数据库设计信息,为下轮迭代运行提供策略生成依据。机器学习引擎主要关注时序、资源占用率、能耗。最终的优化结果呈现收敛趋势。
InTime运行流程
传统FPGA开发经过设计输入、设计综合、布局布线阶段,并依据综合编译结果选择是否再次进行时序优化。人工修改设计代码,多次运行编译后达到设计要求。InTime主要作用插入在设计综合和布局布线阶段,比对设计目标与当前运行结果,进行多次的自动迭代,降低人为参与,如下图所示。
“配方”是指 InTime 执行优化的关键设置选项。目前总共有四种类别的配方: Learning, Last-Mile, General以及 Advanced。Learning和Last-Mile,是用户进行分阶段优化时可采用的配方。当用户使用 InTime对某设计首次进行优化时,Plunify推荐使用Learning 类别。这个类别的配方会对设计的设置和约束进行初步分析和校准。例如 InTime default 配方会根据对以往结果的学习,调整所有可用的编译设置参数。当结果被 Learning 类别的配方充分提升后,执行Last-Mile类别的配方会进行更加具体的优化。例如,Placement Seed Exploration 配方仅仅改变编译设置的布局种子(placement seed)。最后, General 和 Advanced 类别下的配方更则多是出于可用性目的。
InTime运行流畅如下图所示,主要运行流程如下: 1.历史综合结果分析,提取运行结果,判断是否满足设定要求 2.选择InTime默认配方进行设定策略,运行编译 3.判定运行结果,满足时序要求跳转到 ,不满足跳转到5 4.依据当前运行结果与数据中心,机器学习引擎重新进行优化种子分配,写入综合编译策略,跳转到3. 5.综合优化结束,查看分析结果,并导出工程。
InTime策略优化选择的过程中,不能自动进行Recipe的切换。优化过程会一直沿用某个选定的Recipe持续进行,可能导致算法无法得到最终的目标时序。InTime的Recipe需要依据当前运行状态和所得到的结果数,人为进行切换。 InTime Recipe选择依据如下: 1)初始阶段选择:Intime default->工程首次优化校正、种子探索、优化 2)收敛阶段选择:Explorer-> Intime default无法得到目标时序时,需要在Intime default策略的运行结果中,选择最优结果作为子版本,进行探索。Deep dive->运行结果150个以上未能出现时,选择该策略进行深度策略分析,分析不同结果之间的策略差异 3)末端阶段选择:ExtraOpt explorer/placement explorer->应对综合阶段或者布局布线阶段进行优化探索。
InTime使用流程
1.设置优化目标、运行参数
常用参数设置包括: 1)TNS:时序优化目标 2)Runs per round:每个子版本运行次数 3)Maximum Runtime:每次运行最大消耗时间,超出该消耗时间,则终止该次运行 2.选择Recipe运行优化
Strat Recipe进行时序优化,软件开始自动设置优化策略,调用相应的综合器综合编译,布局布线。
运行结果以Job ID进行区分,并以层次结构逐级呈现。目标时序击中后,停止优化流程。 3.分析选择优化结果
InTime自动导出时序、面积、能耗等评估参数,用户可综合考虑各种参数,并选择所需要的最佳结果进行细致分析。
选择其中某个运行结果分析,得到优化数据与收敛曲线等。
4. 工程导出
InTime最终需要导出某个击中目标时序的优化策略选择工程,用户可通过再次编译导出工程,验证时序是否满足要求。
四、工程验证
工程1
工程1芯片采用xc7a50t,系统时钟156M,目标时序TNS=0,LUT使用率在80%左右,内含SERDES、MAC等IP,其具体资源利用率如下图所示:
工程1项目加入较多信号观测的chipscope后,时序无法达到要求,TNS=-1.881存在风险。采用InTime进行时序自动优化。采用InTime Default配方进行策略探索,如图所示经两三轮的运行后,即击中目标时序,TNS=0。
VXLAN_S57H项目相对需要优化的目标较为简单,容易满足。且工程量较小,整体综合编译布局布线周期较短,无法有力说明InTime带来的优化便利性。
工程2
工程2器件采用xcku095,工程庞大,Vivado正常综合编译消耗时间在7小时左右。系统时钟在200M,内含多个SERDES、MAC、DDR IP核,时序目标在TNS=0。其具体资源利用率如下图所示:
最初工程TNS=-5982.01,首次策略选择InTimeDefault
|