时钟不确定性对FPGA高速设计限制的实测对比

随着FPGA内部同步电路运行时钟频率的提高,时钟不确定性将成为制约设计时序性能的显著因素。《基于Xilinx CMT设计低抖动的高性能时钟》一文聚焦于如何实现低抖动的FPGA片内高速时钟,本文将从实测的角度来观察这一限制。

1.1 案例工程的基本情况:

  • 一个基于Xilinx Spartan-6 FPGA(XC6SLX150-2FGG484)设计,符合CPCI/PXI规范的20通道高速RS232/422/485仿真测试模块;
  • 为实现高波特率(20Mbps)的RS422/485通讯,本设计将uart_baud、uart_rx、uart_tx三个功能单元定义为uart_phy,每5通道定义为一组(BANK),每组共用一个高速片内时钟,定义为PhyClk[3:0],设计的片内高速时钟频率不小于240MHz;
  • 整个设计大致消耗触发器20600,查找表18300,对一片XC6SLX150的Slices占用率大致为35%。其中高速电路部分大致消耗触发器5200,查找表4300,占整体设计的25%左右;
  • 每组PhyClk[n]驱动的同步电路规模大致为1300个触发器,5600个端点(endpoints),11000条时序路径(paths),如下图:

1.2 测试方法

由于设计基于Spartan-6 FPGA完成,开发工具限制于ISE软件,其布局工具有一个叫做Placer Cost Table(俗称“布线种子”)的属性参数,取值范围1 ~ 100(默认值1),如下图:

关于Placer Cost Table的介绍,请参阅:

Xilinx AR#35534 -- What is a placement cost table and how should it be used?

AR#35534告诉我们,基于ISE软件的设计,其布局/布线结果质量(QoR)是一个符合正态分布的随机值,当用户需要评估某一设计的QoR时,Xilinx推荐基于10个及以上的Placer Cost Table进行对比评估。

基于Xilinx CMT设计低抖动的高性能时钟》一文指出,基于Spartan-6 FPGA实现本设计的高速片内时钟有三种方案:

  • 单独使用DCM_SP实现;
  • 单独使用DCM_CLKGEN实现;
  • 使用DCM_CLKGEN + PLL_BASE实现。

三个方案输出时钟的Discrete Jitter差异显著,在相同的系统参数(SYSTEM_JITTER、INPUT_JITTER)设定下,则合成的时钟不确定性也有显著差异。

本文的测试,保持设计中其它逻辑不变,仅修改PhyClk[3:0]时钟的实现方案,并利用ISE软件内置工具SmartXplorer,对每种测试进行20个Placer Cost Table(1 ~ 20)的扫描,评估设计的以下特性:

  • 不同时钟方案引起不同的时钟不确定性下,同一设计的时序达标情况(按照ISE软件的定义,静态时序报告中Timing Score = 0,则设计完全满足时序要求);
  • 当前设计基于Spartan-6 FPGA -2速度等级的器件,uart_phy电路单元的速度极限?
  • 当前设计基于Spartan-6 FPGA -3速度等级的器件,uart_phy电路单元的速度极限?
  • Spartan-6 FPGA -3速度等级相对-2速度等级,能提高多少设计性能?

测试结果汇总于下表(点赞CSDN的编辑器,本表格我直接从word文档中拷贝过来,否则就贴图了):

序号

方案1)

速度等级2)

设计时钟3)

约束周期4)

时钟抖动5)

不确定性6)

达标数量7)

1

1

-3

360MHz

2.777ns

0.123ns

0.154ns

11 (55%)

2

1

-3

330MHz

2.950ns

0.124ns

0.155ns

19 (95%)

3

1

-3

300MHz

3.175ns

0.126ns

0.155ns

18 (90%)

4

1

-2

320MHz

3.125ns

0.126ns

0.155ns

0 (0%)

5

1

-2

310MHz

3.200ns

0.127ns

0.155ns

5 (25%)

6

1

-2

300MHz

3.175ns

0.126ns

0.155ns

8 (40%)

7

1

-2

280MHz

3.500ns

0.129ns

0.156ns

20 (100%)

8

1

-2

240MHz

3.250ns

0.127ns

0.155ns

11 (55%)

9

2

-2

240MHz

3.250ns

0.301ns

0.324ns

0 (0%)

10

3

-2

240MHz

3.250ns

0.691ns

0.519ns

0 (0%)

11

1

-2

240MHz

3.500ns

0.129ns

0.156ns

17 (85%)

12

2

-2

240MHz

3.500ns

0.302ns

0.325ns

17 (85%)

13

3

-2

240MHz

3.500ns

0.727ns

0.537ns

0 (0%)

14

1

-2

240MHz

3.750ns

0.131ns

0.156ns

18 (90%)

15

2

-2

240MHz

3.750ns

0.304ns

0.325ns

19 (95%)

16

3

-2

240MHz

3.750ns

0.764ns

0.555ns

15 (75%)

  1. 1 = DCM_CLKGEN + PLL_BASE、2 = DCM_CLKGEN、3 = DCM_SP;
  2. Spartan-6 FPGA器件速度等级,-2等级器件全局时钟网络的最大工作频率为375MHz,-3等级器件全局时钟网络的最大工作频率为400MHz;
  3. RTL代码中设计的时钟频率;
  4. UCF中的约束周期,为设计提供一定的过约束;
  5. 静态时序报告中,目标时钟的Discrete Jitter;
  6. 系统参数:SYSTEM_JITTER = 0.2ns、INPUT_JITTER = 0.2ns,静态时序报告中,目标时钟的合成不确定性(Clock Uncertainty);
  7. 静态时序报告中Timing Score = 0表明设计完全满足时序要求,每种条件测试20个Placer Cost Table,括号内的数据为达标率的百分比表示

由于ISE软件的布局/布线结果质量呈现正态分布,故参照正态分布的区间划分,将本设计的实现难易程度依据20个Placer Cost Table扫描的时序达标率(λ)作如下划分:

  • 极易:λ≥ 95%;
  • 较易:68% ≤λ≤ 95%;
  • 适中:32% ≤λ≤ 68%;
  • 较难:5% ≤λ≤ 32%;
  • 极难:λ≤ 5%。

1.3 测试总结:

  • 分析上表8 ~ 16行测试数据,(查看测试过程中的静态时序报告,本设计在-2速度等级下,布线延迟的极限在2.8ns ~ 3.0ns左右,这是一个与设计强相关的数据,对FPGA逻辑的设计者而言,不会有官方数据,也不会有计算公式),在逼近设计的布线延迟极限前,时钟不确定性不会对设计造成致命影响,布局/布线工具可通过优化来满足设计需求。例如:表中13行的数据,约束周期为3.5ns,但由于时钟不确定性高达0.537ns,直接导致20个布线失败;表中11、12行约束周期同为3.5ns,但时钟不确定性分别为0.156ns、0.325ns,布线通过率提高到了85%;而表中16行的数据,时钟不确定性为0.555ns,但因约束周期放宽至3.75ns,布线通过率提高到了75%;
  • 分析上表4 ~ 7行的测试数据,基于Spartan-6 FPGA -2速度等级的器件,当前设计可以轻松满足280MHz以下的要求,且300MHz的实现难度适中;
  • 分析上表1 ~ 3行的测试数据,基于Spartan-6 FPGA -3速度等级的器件,当前设计可以轻松满足330MHz以下的要求,且360MHz的实现难度适中;
  • 针对当前设计,Spartan-6 FPGA器件的-3速度等级相对-2速度等级有大致18%的性能提升;
  • Spartan-6 FPGA数据手册(DS162)中,-3速度等级器件全局时钟网络的最大工作频率限制为400MHz,-2速度等级器件限制为375MHz,这自然成为Spartan-6 FPGA同步逻辑电路运行时钟的频率上限。经过充分优化的设计(5600个端点,11000条时序路径),可以发挥出器件80% ~ 90%的极限性能。

1.4 补充提示

本文的主旨是探究片内同步电路运行时钟的不确定性对FPGA高速设计的限制,但考虑到测试平台搭建不易,测试时间漫长,故而测试过程中一并完成了设计极限的摸底,确认本设计的uart_phy部分可运行于300MHz(XC6SLX150-2)/360MHz(XC6SLX150-3)的同步时钟。从设计原理来看,孤立的uart_phy电路,能跑再高的速度都是没有意义的,本设计必然还包括以下两个部分:

  • uart_phy电路收/发数据的缓存,不作它想地基于Block RAM设计;
  • uart_phy电路与片内低速控制电路的跨时钟域逻辑,部分逻辑工程师会选择基于Block RAM的异步FIFO实现。

这两个部分的设计,都会涉及到Block RAM的使用,那么,Block RAM是否会成为本设计的瓶颈?答案是肯定的:

  • Block RAM在FPGA片内位置固定,布局/布线自由度低,与其它逻辑间的布线延迟通常较大;
  • Block RAM允许的最大工作频率远低于FPGA内部CLB逻辑、BUFG等电路的最大工作频率。查看DS162中Spartan-6 FPGA Block RAM的最大工作频率,可以看到,-3/-2速度等级下,Block RAM的最大工作频率都低于本设计能达到的运行频率:

FPGA片内高速逻辑电路设计的数据缓存方案、跨时钟域方案,是在RTL阶段需要重点考虑和优化的地方,若忽略了Block RAM对高速设计的时序限制,到后期时序优化阶段再来处理Block RAM的问题,这涉及到了基础架构的修改,必然是事倍功半的!

选取Xilinx各系FPGA中/低档速度等级,整理BUFG、Block RAM各自的最高时钟频率如下表(表格数据来自本文完成时,Xilinx发布的各系FPGA数据手册):

FPGA系列

速度等级

FMAX_BUFG

FMAX_BRAM

FMAX_BRAM/FMAX_BUFG

Spartan-3AN

-4

334MHz

280MHz

83.8%

Virtex-4

-11

450MHz

450.45MHz

100%

Virtex-5

-2

667MHz

500MHz

75.0%

Spartan-6

-2

375MHz

280MHz

74.7%

Virtex-6

-2

750MHz

540MHz

77.1%

Spartan-7

-1

464MHz

388.2MHz

83.4%

Artix-7

-2

628MHz

460.83MHz

73.4%

Kintex-7

-2

710MHz

543.77MHz

76.6%

Virtex-7

-2

710MHz

543.77MHz

76.6%

Kintex-u

-2

725MHz

585MHz

80.7%

Virtex-u

-1H

725MHz

585MHz

80.7%

Artix-u+

-1

667MHz

645MHz

96.7%

Kintex-u+

-2

775MHz

738MHz

95.2%

Virtex-u+

-2

775MHz

737MHz

95.1%

可以看到:

  • Xilinx FPGA在最新一代(UltraScale+)之前,除了Virtex-4这个特例,其Block RAM对设计的时序性能限制较为明显;
  • UltraScale+系列FPGA的Block RAM预计不会成为设计的时序性能瓶颈。

1.5 附件,测试记录(略)

如需查看测试记录截图,请下载附件原文pdf

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值