×
嵌入式 > 技术百科 > 详情

FPGA时序优化软件InTime评测试用

发布时间:2020-06-08 发布时间:
|

根据Synopsys统计,FPGA/CPLD设计中最大的,也最难解决的是时序问题。这一点,相信不少工程师朋友都感同身受。一般来说,解决方法不外乎尝试修改代码,使用替换种子,或是根据经验调整综合/布局布线选项设置。这些方法,依赖于个人经验,对于某些特别复杂的时序问题收效甚微。笔者之前也曾作为逻辑工程师,从事无线通信相关研发,因为工程规模较大,所以顶层设计的子模块分别由不同项目组开发。但各组把达到时序要求的模块合成构建时,经常因为完整工程的时序不达标而发愁。更为发愁的是,即使完整工程时序达标,项目交付日期临近时,市场反馈的客户需求变更,也可能导致设计代码修改,此时,颇有牵一发而动全身的顾虑。

此次,我们选用了一款FPGA时序优化专家软件InTime来做测评。

相信很多朋友都对这款EDA工具很陌生,其实,这是市面上第一款利用大数据分析和机器学习来优化逻辑时序的软件。不同于传统的EDA工具,InTime可以调用海量服务器资源来自动探索设计,推荐达到甚至高于时序目标的工具参数组合给用户。从公司和用户的角度看,其前后开发的项目业务类型、模块功能相关性很大,因此,InTime会为每个用户建立自己的专属时序数据库,作为机器学习的依据。而且,对于那些成功的构建,可以确保其经验运用到后续新设计中。

测试选用了一个实现光通信功能的设计,具体工程信息:

  • 器件:Altera Stratix V GX 收发吞吐量高达 14.1Gbps 的高端高性能 FPGA
  • 编译工具 :Quartus 13.0 SP1
  • 单次编译时间:8小时
  • 资源占用率:98%
  • TNS:-2.617
  • 问题描述:其时序不达标,更为严重的是该工程的资源占用率已达98%,任何轻易变更都会导致构建失败。
  • 解决方案:出于对比人工和软件解决该问题效率的目的,我们邀请了两位资深FPGA工程师,即团队A。笔者自己则利用InTime调试,即团队B。团队A专家先对设计代码进行分析,查找影响关键路径时序的原因。通过修改部分代码,调整子模块位置,根据经验修改编译选项,尝试再次编译来分析不同修改的影响。

图1 光通信模块示意图

团队B利用30台Linux workstation,运行InTime私有云模式 (1)

(1)InTime 可以在单个电脑上运行,也可在网络中的多台机器以及亚马逊云计算上运 行。“私有云”指的是网格计算运行模式。在这种模式中,InTime 将执行构建的任务分配到多台机器上。

图2 私有云模式部署示意图

Step 1 初始校准

启动 InTime Default Recipe (2)含有 30-40 个策略(3)来对设计进行初始校准。InTime 生成并运行一系列“校准”综合、布局及布线设置(每一套设置被称为一个策略)来确认该设计对它们如何进行响应。结果: 由于目标设备的封装(98%的逻辑利用率),产生了许多的过度拟合的结果。一些校准构建超过了用户设置的最大运行时间(11 小时),因此InTime 自动终止了这些构建。

(2) 一套 InTime “Recipe”是一条由 InTime 提供的 Tcl 脚本,用于自动执行通用的 InTime 任务。用户可以最终建立自己的“配置”来定制设计流程。

(3) InTime 将每一套合成及位置和路线设置的组合成为一项“策略”。每一项策略对应于一项执行构建。

Step 2 锁定合成设置

由于 InTime 发现该设计资源利用率对于合成设置非常敏感,该工具使用 了一项叫做“设置筛选锁定列表”的功能 (4), 以尽可能地保留原始合成设置。这意味着 InTime 只会对布局布线设置进行调整(5) 。InTime 生成了两项 作业(6) ,共 50 个策略,并将它们分配给 30 台服务器。结果:InTime 运行了两项作业(作业一和作业二),总共 50 个策略。其中,30 个策略成功执行,其他策略在超过最大运行时间后被终止或者未能 成功执行。最佳(最低)时序评分为 23.628。

Step 3 建立学习数据库

现在,超过一半的构建成功运行,InTime 继续使用 InTime 的默认配置来生成和运行更好的策略。这使得 InTime可以不断从结果中学习,逐渐降低时序评分。结果: InTime 运行另外三项作业(作业三、作业四和作业五),生成的改善结果表明学习过程是有效的。最新的时序评分是 0.007,已经非常接近通过的结果。

Step 4 使用替代种子来“推动”结果越过完成线

在达到足够低的时序评分后,InTime 将简单地使用替代种子来尝试达到预 定目标的结果。在这种情况下,它将运行由替代种子 51 至 100 号组成的 50 项构建。结果: 作业六成功地达到了时序标准,即时序评分TNS=0。

(4)InTime 的“设置筛选器”功能由三个名单组成,用户可以控制用于生成策略的综合及布局布线设置。

  • i) 白名单: 仅在这些设置中变化。
  • ii) 黑名单: 避免的设置。
  • iii) 锁定列表: 在特定的设置当中使用特定的值。

(5)对于仅使用位置及布局布线设置的策略分析,请参考网址:

http://blog.plunify.com/2014/06/intime-v115-released.html。

(6)一项 InTime“作业”指 InTime 生成并运行的一系列策略(或执行构建)。结果可根据作业号进行追踪。

InTime优化过程分析

该项目的时序问题,建立在98%资源占用率的基础上,如果我们把每轮作业运行结果绘制出如下所示时序优化结果图,不难发现,作业1的30-40 个策略中,多次构建都因为资源超标而失败。经过作业1的探索,InTime意识到必须在满足资源占用率的前提下探索最优时序结果,因此作业2调整了优化策略原则,如图所示的Job2到Job3改善程度明显高于Job1到Job2,即23.628改善至1.632。后续作业的改善效果也越发明显。最终达到了TNS=0的结果。InTime 操作界面,可以方便的把该结果保存并导出至Quartus。

图 3 时序分数(Y)---作业编号(X)统计图

开始三天后,经过6轮的探索,InTime成功优化了设计,并为该工程建立了专属时序数据库。从Job2开始,每轮的探索都会充分利用已有的数据库信息,提高效率。开始一周后,团队A始终难以平衡资源占用率和时序目标的矛盾,最终为设计找到一组TNS = 1.803的结果。并建议开发组重新规划关键路径,修改设计源代码。

根据工具开发商Plunify产品介绍,InTime还具有提高设计的最大工作频率等功能。因为篇幅所限,这里就不一一赘述。传统的时序优化方法,大多是从设计思路的角度出发,如逻辑复制、流水线、串并转换等,因此不可避免的涉及到代码修改。Quartus/Vivado等编译工具的时序优化,大多需要手动调整编译设置,这对个人经验要求很高,而且每次能尝试的编译组合数量有限。即使如DSE等具有一定自动化程度的优化工具,也只是在人工尝试的基础提高自动化程度而已,相比于他们,InTime自带的机器学习功能,体现出更大的智能性。

现在Plunify公司开放InTime软件的免费试用,成功申请下来的还能够得到一对一的专家指导,解决你在FPGA综合时的时序难题。凡是参与活动都有机会获得Kindle阅读器一台,机会难得。


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
三星研发基于risc-v架构的5G毫米波射频芯片