Altera Quartus IQ 让时序 10 倍 收敛,怎么做到的?

由 judy 提交于

文章转载自:FPGA入门到精通

Altera 这周的新闻我读了两遍。不是因为写得好,是因为同一篇文章里,两句话的精度差得太远。

讲架构那句很规矩,第三代 HyperFlex,1.8 倍性能每瓦,后面紧跟一句 over the earlier Agilex family。有倍数,有分母,上一代是谁写得明明白白。讲工具那句换了写法,Quartus IQ 让时序收敛改善 10 倍、整体设计周期改善 1.5 倍,动词是 has shown。

1.8 倍可以拿去跟上一代逐条比,10 倍不能。

差别不在数字大小,在有没有分母。

先把硬的摆完。Agilex 2X 是个家族,不是一颗芯片。高端 Agilex 27 先出,低功耗低成本的 Agilex 22 打底,中间往上爬。

一. 硬件这一栏,条条能对上上一代

骨架:第三代 HyperFlex

1.8 倍性能每瓦,原文写的是 over the earlier Agilex family。分母写进句子里的,才叫参数。

片内互联:HyperFlow

其实是个 NoC,把内存控制器、CPU 复合体、fabric 连起来,不再靠一堆 AXI 交叉开关硬拼。

CPU:Cortex-A720 加 A520

在 FPGA SoC 里算上了一个台阶。另外可挂 Nios V 软核,跑 Linux 或 FreeRTOS。

收发器:256 Gb/s

硬核直接支持 1.6T 和 800G 以太网,不用外挂 gearbox 去凑。

总线:PCIe 7.0 与 CXL

两个都进硬核。128 GT/s 这个数有明确的物理含义,板上能测。

预留:UCIe
这次只留口子。官方说给将来的 Direct RF 用,ADC、DAC 走 chiplet 进封装。

这些数字有个共同点,每一条都能和上一代对上,也都能被第三方的板子复现。

然后才是 10 倍。原文那句值得逐字读,It can deliver faster timing closures by prioritizing steps across compilation, timing and verification。

时序收敛这件事,干过的人都清楚它长什么样。综合一版,跑实现,看 report_timing 里最差那条路径的 slack 是多少,改约束或者改 RTL,再跑一版。一个 20 万 LUT 的工程,一版实现四到六个小时,一天能跑两版,十轮就是一周。

prioritizing steps,排序。不是每一步跑得更快,是把编译、时序、验证这几类动作的先后重排。原来你可能先综合三版再去看时序,它按时序目标排一个执行顺序,跳过几轮。

所以 它省的不是时间,是次数。一轮实现四小时,这个数不会变,变的是从十轮变成三轮。

这里可以做一道很简单的算术,做出来挺有意思。

把设计周期切成两块,时序收敛占 r,其他部分占 1 减 r,并且假设其他部分不受 AI 影响。AI 把时序收敛压到十分之一,整体变成原来的三分之二,因为官方说设计周期改善 1.5 倍。于是 r 除 10 加 1 减 r,等于三分之二。解开,r 约等于 37%。

反过来说,如果实际情况里时序收敛只占设计周期 20%,这工具再神也只能换来 1.22 倍,1.5 倍根本出不来。

图1:把 1.5× 反推成时间占比。时序收敛占 37% 时,两个官方倍数才自洽;占 20% 时,同样的压缩只能换来 1.22×。本图为按倍数推算,非厂商披露。

两个倍数不是各写各的,它们互相咬着。

第三方分析给的 FPGA 设计周期是 6 到 18 个月,按 37% 折算,纯时序收敛要吃掉 2.2 到 6.7 个月。这个量级跟一线体感对得上,一个中大型工程卡在时序上两三个月,太常见了。

说到这儿容易滑到另一个结论,那它是不是在吹。我不这么看。

硬参数是对外的接口规格,写不清第二天就被人拿板子打脸,所以必须带分母。软指标是自家流程的收益,分母是哪个版本的工具、哪一组设计、哪块器件,这三样它都没给。这不是造假,是 还没准备好被复算。

而且这不是 Altera 一家的毛病。这个月 AMD 的 Ross、安路的 EDA Agent、Siemens 那几组倍数,写法一模一样,能力讲得很细,收益只给倍数。

真正该警惕的不是倍数大,是倍数旁边没有测试集。

这事跟我们每天干的活是同一件事。我们那四道 Tcl 验收门,每次跑都打印对哪一版工具、哪块器件、哪组设计、WNS 和 WHS 具体多少。所以我们的改进永远带着分母,换个 Vivado 版本再跑,数字会变,但我知道它为什么变。

要往下落地,三件事就够。

二. 换到自己工程里,三件事就够

先把基线记下来

工具版本、器件型号、这一版的 WNS 和 WHS、这一版一共跑了几轮实现,四个数写在同一行。没有这四个数的对比,不叫优化,叫感觉。

把轮次当一等指标

一轮实现四小时,十轮降到三轮就是 3.3 倍,自己跑出来的倍数谁也改不了。Vivado 的 report 里没有轮次这一项,得自己在 Tcl 里数,open_run impl_1 前后各取一次时间戳。

别人报的倍数先找分母

找得到,就按它的口径换算成自己工程上的时间;找不到,就把它当一个形容词用,写进汇报可以,写进采购决策不行。

回到开头那两句话。1.8 倍后面跟着 over the earlier Agilex family,10 倍后面跟着 has shown。同一份材料,两种精度,中间那段没人替你补。

我不怀疑这个 10 倍。我只要求它可复算。

一个不能被复算的倍数,在采购会上和一个形容词的效用差不多。