基于锁存器路径的静态时序分析在第三方验证中的应用

2017-12-14 05:43,,,,
计算机测量与控制 2017年9期
关键词:时序延时时钟

,, ,,

(上海航天电子技术研究所,上海 201109)

基于锁存器路径的静态时序分析在第三方验证中的应用

刘国斌,左丽丽,陈云,祝周荣,刘伟

(上海航天电子技术研究所,上海201109)

随着可编程逻辑门阵列(FPGA)设计规模的扩大,静态时序分析可有效减轻时序仿真的负担,缩短项目周期;常见的静态时序分析(STA)多是基于触发器(FF_Based STA),对触发器的STA算法研究已经比较成熟;但FPGA综合后网表可能会产生锁存器,而锁存器的STA与触发器的STA在算法上存在差异;为保证在FPGA产品第三方验证工作中对STA路径分析覆盖率达到100%,有必要对基于锁存器的时序分析(Latch_Based STA)做研究;阐述了锁存器“时间借入”与“时间借出”的概念;分析了“锁存器宽裕时间(slack time)”特性,绘制了其函数图;在某FPGA第三方验证项目中使用STA 工具Prime Time(一种计算机模型分析工具),分别对由“时间借入”、“时间借出”而导致“时序松弛”和“时序收紧”两种情况做了计算和分析,对STA路径分析覆盖率达到了100%,满足了第三方验证要求。

锁存器时序分析; 计算机模型仿真; 时间借入; 时间借出; 第三方验证

0 引言

FPGA的结构特性要求数据流在其内部传输时满足时序上的要求[1-2]。在FPGA验证工作中,单纯的功能仿真不能保证硬件描述语言在综合及布局布线后能正确地实现功能。随着FPGA结构工艺的发展,FPGA的规模已经可以达到千万门级别,相应的设计变得也愈加复杂[3]。时序仿真固然可以检查加入延时信息后的网表文件能否正确实现功能,但时序仿真的速度通常较慢,其工作量及工作时长往往会对项目周期产生难以承受的影响,特别是一旦在时序仿真后期发现问题,项目的按时交付会出现重大危机,为此有必要在进行时序仿真前先进行静态时序分析[4]。

静态时序分析(static timing analysis,STA)是将FPGA布局布线后产生的延时信息反标到网表文件中,借用一定的时序分析工具,根据设定的约束文件,穷尽搜索所有的路径,并分析每条路径的延时信息,通过搜寻延时最大的路径来检查建立时间是否满足要求,通过搜寻最小路径来检查保持时间是否满足要求[5]。传统的静态时序分析一般将路径分为四类:(1)从输入端口到触发器数据管脚;(2)从触发器时钟管脚到触发器数据管脚;(3)从触发器时钟管脚到输出端口;(4)从输入端口到输出端口[6]。可以看出以上静态时序路径的分类方式主要是基于触发器(FF_Based STA),但在实际设计中,根据功能需要,源代码综合后的电路会出现锁存器。第三方验证工作要求STA的路径覆盖率达到100%,故有必要对基于锁存器的静态时序分析(Latch_Based STA)做研究[7]。

1 基于锁存器静态时序分析意义及原理

锁存器的出现是一种设计的折中,它通过一种称为“时间借入(Time Borrowed)”的技术可以平衡相邻锁存器对时序的要求。一方面锁存器降低了设计对时序的要求,另一方面由于其电平敏感的特性,它无法对数据流的传输做到精确的控制[8-9]。针对锁存器物理特性,分析其特点,为基于锁存器路径的静态时序分析(Latch_Based STA)做理论准备。

1.1 STA工具介绍

第三方测评机构使用Synopsys公司STA工具Prime Time对FPGA做静态时序分析。Prime Time检查的对象是*.v文件和*.sdf文件[9]。其中*.v文件是FPGA的网表文件,是由源代码经FPGA开发环境进行综合及布局布线后形成的,由寄存器传输级(RTL)的代码信息转换为逻辑门级别的物理信息,是对FPGA布局布线后物理结构的计算机语言描述[10]。*.sdf文件是延时文件,是*.v网表文件中所有逻辑门在FPGA硬件中的走线延时。*.v文件和*.sdf文件结合起来,模拟实际FPGA硬件物理信息。

Prime Time有灵活的使用方式。通过编写*.tcl文件可控制FPGA网表文件的工况、检查类型等。通过编写*.sdc文件可以对FPGA工作时钟、信号与时钟关系、输入延时、输出延时等情况进行约束。

在使用Prime Time进行Latch_Based STA时,需要先识别*.v网表文件中的锁存器,对锁存器的G端(时钟端)分析,如果端口不是源代码中的时钟,需要根据实际情况对其进行合适的约束。另外,可以在*.tcl文件通过指令打开或关闭“时间借入”、约束最大可借入时间。具体操作方法下文有详细描述。

1.2 锁存器路径时序分析的理论基础

在时钟有效期的全部时间里,锁存器的数据输入端能直接改变数据输出端的状态。在一条路径中,如果本级锁存器数据端信号到来的时刻滞后于时钟有效状态起始时刻,则可以从下一级逻辑单元借入一段时间,这就是所谓的“时间借入(Time Borrowed)”。以图1所示的路径为例说明此问题。

图1 基于锁存器的路径

图1中包含两个锁存器,它们均为高电平有效,时钟周期为10 ns。静态时序分析工具Prime Time将时钟上升沿作为参考时钟沿,假设工具库中锁存器的建立时间为零,锁存器开通期间数据延时(数据从D端传输到Q端)为零。如图1所示,在锁存器U1与U2之间存期组合逻辑P1,其延时时间为8.92 ns,在锁存器U2与U3之间存在组合逻辑P2,其延时时间为0.77 ns。数据到达U2数据端的时刻为8.92 ns,滞后于U2时钟Phi2上升沿到来的时刻。对于触发器而言,这违反了数据建立时间,但对于锁存器,路径P1可以从U2与U3之间的路径“借入”一段时间,即借入时间(3.92 ns)。并且P1与P2延时之和为9.69 ns,小于10ns,数据到达U3数据输入端D的时刻早于U3时钟Phi1上升沿到来时刻,不违背U3锁存器的时序要求。

以下对宽裕时间(slack time)的分析均未考虑锁存器的建立时间(setup time)、时钟延时(clock latency)、时钟不确定性(clock uncertainty)、最差移除时钟重汇聚CRPR(clock reconvergence pessimism removal)。如果数据到达后级锁存器的时刻早于时钟有效开始的时刻,Prime Time会将此行为抽象为触发器,并在时钟有效的时刻(上升沿)将数据采样,同时在下一路经中将此时刻作为发送沿(launch edge)将数据发送,此时宽裕时间(slack time)为正实数,如图2所示;如果数据到达的时刻位于后级锁存器开通期间(上升沿之后,下降沿之前,即时钟高电平时间段),Prime Time会将此行为抽象为从锁存器数据端有效开始作为下一路经的发送沿(launch edge),而不是将时钟端有效作为发送沿(launch edge),此时不存在时序违背,且slack time 为零,如图2所示。如果数据到达后级锁存器的时刻滞后于时钟下降沿到来的时刻,则存在时序违背,slack time为负实数,如图2所示[12]。

图2 slack time函数图

1.3 最大可借入时间的约束

可从后级锁存器路径中借入的最大时间(TBImax)主要由两个因素确定:一是有效时钟宽度(Twidth),二是后级锁存器的建立时间(Tset),TBImax = Twidth - Tset。如果考虑时钟延时(clock latency)、时钟不确定性(clock uncertainty)、最差移除时钟重汇聚CRPR(clock reconvergence pessimism removal),则TBImax = Twidth - clock latency + clock uncertainty - CRPR - Tset。前级触发器后面的路径可借入时间TBImax越长,后级触发器路径的可容忍延时时间就越短。所以,在Prime Time的时序约束文件*.sdc中,如果指定clock latency、CRPR,则会使静态时序分析的时序松弛,如果指定clock uncertainty,则会使静态时序分析的时序收紧[12]。

1.4 借入时间与借出时间的关系

STA工具Prime Time计算实际的借入时间分两步走:首先考虑到传输路径上的clock uncertainty与CRPR来调整时钟有效沿到来的时刻,然后检测数据信号到达锁存器数据端的时刻,令后者减去前者即得到实际的借入时间。如果考虑clock uncertainty与CRPR的存在,则本级锁存器前面组合逻辑的实际借入时间将与该锁存器的实际借出时间不相等。实际借出时间TBO,与实际借入时间TBI的关系为:TBO =TBI - clock uncertainty + CRPR[12]。

把数据达到锁存器时刻记为tD,时钟到达锁存器时刻记为tG。在大多数情况下,如果数据早于时钟有效沿(opening edge)到达(tDlt;tG),则路径中不会出现“时间借入”的现象,如果数据滞后于时钟有效沿到达(tDgt;tG),则路径中会出现“时间借入”的现象。发生“时间借入”时,如果以该锁存器作为路径的结束点,则可认为是“从终点借入(TBFE)”;如果以该锁存器作为路径的起始点,则可认为是“借出给起始点”(TGTS)。

在某些情况下,即使数据早于时钟有效沿(opening edge)到达(tDlt;tG),仍然会产生“时间借入”的现象。如当锁存器的D-to-Q(数据输入端到数据输出端)延时远远大于G-to-Q(时钟输入端到数据输出端)延时,且数据到达锁存器数据端的时刻很接近与时钟沿到达锁存器的时刻时,即使数据到达D端时刻稍早于时钟到达G端时刻,但由于D-to-Q延时大于G-to-Q延时,仍然发生“时间借入”现象。此时,数据在后级路径的发送时间主要由数据到达该锁存器的时间及D-to-Q延时确定,而不是由发生在非“时间借入”模式下的G-to-Q延时确定。

如果在Prime Time约束文件*.sdc中设定允许“时间借入”,数据到来时刻减去时钟有效长度即为“时间借入”,此时该值为负。如果以该锁存器作为路径的结束点,则可认为是“借出到路径终点”(TGTE);如果以该锁存器作为路径的起始点,则可认为是“从起始点借入”(TBFS)。TBFE与TGTS,TGTE与TBFS,分别是对同一种路径计算方式从不同角度的描述。根据时序关系,分别从路径的起点和终点角度梳理“时间借入”与“时间借出”关系,结论如表1所示。

表1 借入时间与借出时间关系

1.5 在Prime Time限定借入时间

在Prime Time约束文件中使用命令set_max_time_borrow设定可借入的最大时间,remove_max_time_borrow撤销设定的最大借入时间[10][11];如果default_max_time_borrow为零,则不允许存在“时间借入”现象,Prime Time将锁存器当做触发器来做时序检查;如果default_max_time_borrow为负值,则要求信号早于时钟沿到达锁存器。

2 Latch_Based STA 在FPGA验证中的应用

在某型号FPGA产品第三方验证工作中,在Prime Time约束文件中若只约束输入时钟,Prime Time 只检查FF_Based STA,由于网表文件存在锁存器,STA路径覆盖率达不到100%,存在未覆盖路径(Untested)。如表2所示。

经分析,造成STA覆盖率达不到100%的原因是网表文件中生成了锁存器(Latch), DL1 data_in[14] (.D(N_180), .G(un1_data_in7_buf_net_1), .Q(

data_in[14]_net_1 )); 生成锁存器的源代码如下所示:

表2 STA覆盖率不足100%

always @ (fpga_data,io_data,mcu_addr[15:12]) begin

case (mcu_addr[15:12])

4'b0000: data_in = io_data;

4'b0001: data_in = io_data;

4'b1111: data_in = fpga_data;

default: data_in = data_in ;

endcase

end

为使STA覆盖率达到100%,不仅需要进行FF_Based STA,还需要进行Latch_Based STA。通过Prime Time 约束文件*.sdc,对锁存器data_in时钟端约束衍生时钟。语法如下:create_generated_clock -name vclk1 -source [get_ports { i_clk_16m }] -divide_by 1 [get_pins { data_in[*]/G }]。之后运行Prime Time,覆盖率达到100%,如表3所示。

表3 STA覆盖率达100%

比较表2与表3,可看出表3中对setup和hold的检查增加了16条基于锁存器的路径。通过增加对锁存器路径的分析,STA覆盖率达到100%,满足第三方验证要求。Latch_Based STA中的 “时间借入”、“时间借出”分别会造成时序松弛和时序收紧,以下选取Latch_Based STA路径做计算说明。

2.1 实例1-“时间借入”时序松弛

选取锁存器路径做数据分析,如图3所示,该图是锁存器时序波形及路径信息。数据到达锁存器DL1(data_in[14])的D端时刻为latency + path delay = 0.978 + 21.213 = 22.191,时钟到达锁存器DL1(data_in[14])的G端时刻为latency =6.749。数据到达时刻滞后于时钟到达时刻,实际滞后 22.191- 6.749 = 15.442。由图2 slack 函数图可知,该锁存器可以向后级路径执行“时间借入”,借入的时间值不可大于最大可借入时间(max time borrow)。通过1.2节分析可知,最大可借入时间(max time borrow)与时钟周期(pulse width)、时钟延迟(latency)、后级触发器建立时间(setup time)有关,故最大可借入时间为 时钟周期pulse width (31.25) -latency (6.75) -setup time(0.91) = 23.60。故进行Latch_Based STA时,该锁存器是路径的终点,从后级触发器实际借入时间(TBFE)为15.442ns。上述计算分析过程符合图3所提供的路径信息。

图3 “时间借入”正值,时序松弛

2.2 实例2-“时间借出”时序收紧

由1.2分析可知,当时钟延迟(latency)大于时钟周期时,最大可借入时间(max time borrow)是负值,由表1可知,此时“时间借入”转变为“时间借出”,即借出到路径终点(TGTE)。锁存器通过“时间借出”后,未缓解slack紧张度,反而对其实行了负面影响(negative effect),导致时序进一步收紧。举例分析如下。

选取锁存器路径做数据分析,如图4所示,该图是锁存器时序波形及路径信息。数据到达锁存器DL1(data_in[5])的D端时刻为44.59,时钟到达锁存器DL1(data_in[5])的G端时刻为36.57。数据到达时刻滞后于时钟到达时刻,实际滞后 44.59- 36.57 = 8.02。经计算最大可借入时间(max time borrow)为 时钟周期(pulse width)- lantency -setup time = 31.25 - 36.57 -0.45 = -5.77。该值为负,称作time given to endpoint(TGTE),表示锁存器无法执行有效的“时间借入”,而是“时间借出”。Prime Time进行STA时,对时钟的要求时序(requried time )进一步收紧,其值为 lantency + max time borrow = 36.57 + (-5.77) = 30.80,故宽裕时间(slack time) 为- 44.59 + 30.80 = -13.79。说明执行“时间借出”后,slack值由 -5.77变为-13.79,时序情况进一步收紧。

图4 “时间借入”负值(时间借出),时序收紧

3 结语

目前静态时序分析已成为FPGA第三方验证的标准环节,对基于锁存器路径的分析是静态时序分析的一个重要方面。通过计算分析Latch_Based STA,使STA的路径覆盖率达到了100%,满足了第三方验证要求。随着FPGA技术的发展,需要不断完善对超大规模FPGA硬件结构的计算机语言描述,以提高其对物理结构的精确映射。将来静态时序分析会变得愈加复杂,这对STA工具提供商及第三方验证机构均提出了更高的要求,对STA模型及算法的研究还将有很长的路要走。

[1] 吴 丹, 刘三清, 徐维锋. 深亚微米ASIC设计中的时序约束与静态时序分析[J]. 电子工程师,2004(3):16-20.

[2] 关俊强,左丽丽,吴维林. 基于FPGA和CAN控制器软核的CAN总线发送系统的设计与实现[J].计算机测量与控制,2016(24):281-284.

[3] 许天一, 张乃通.FPGA静态时序分析的研究与实现[D].哈尔滨:哈尔滨工业大学,2016.

[4] 陈 敏, 殷瑞祥, 郭 瑢.静态时序分析在数字ASIC设计中的应用[J].重庆工学院学报,2005(8):52-56.

[5] 廖军和,叶 兵.深亚微米ASIC设计中的静态时序分析[J].半导体技术,34(1):45-48.

[6] 孟祥志,来金梅,杨 萌.FPGA的静态时序分析与设计[D].上海:复旦大学,2013(3).

[7] Synopsys, Prime Time Suite Quick Reference[S]. Version C- 2009.06.

[8] Synopsys, Prime Time Modeling user guide[S]. Version C- 2009.06.

[9] Synopsys, Prime Time Error Messages[S]. Version C- 2009.06.

[10] 阎 石. 数字电子技术基础 -5版[M].北京:高等教育出版社,2006.

[11] 郝玉虹, 付宇卓, 鲁 欣. SoC芯片STA的时钟约束问题研究[J]. 计算机工程,2005(18):50-52.

[12] Synopsys, Prime Time Advanced Timing Analysis User Guide[S]. Version C- 2009.06.

ApplicationofLatch_BasedSTAAnalysisinIndependentVerification

Liu Guobin,Zuo Lili,Chen Yun,Zhu Zhourong,Liu Wei

(Shanghai Aerospace Electronic Technology Institute,Shanghai 201109,China)

With the expansion of FPGA design scale,STA can relieve the stress of timing simulation,shorten project cycle.The common STA is usually FF_Based ,but after synthesis,unexpected Latch can be generated. The calculating algorithm between Latch_Based STA and FF_Based STA is different. In order to achieve a 100% coverage rate of SAT path analysis,it is necessary for the Independent Verification Authority to do some research on Latch_Based STA. The conceptions of “Time Borrowed”,”Time Given”were explained.The feature of “Latch slack time” was analysed and its function graph was plotted.. In order to describe “Timing Loosen”and “Timing Tighten” separately effected by “Time Borrowed” and ”Time Given” ,two separate examples were analysed by Prime Time( a tool of Computer model simulation used for STA). A 100% coverage rate of STA path analysis was achieved, and the requirement of Independent Verification was satisfied.

latch_based STA; computer model simulation; time borrowed; time given; independent verification

2017-03-20;

2017-04-13。

刘国斌(1986-)男,上海人,工学硕士,工程师,主要从事FPGA第三方验证方向的研究。

1671-4598(2017)09-0203-03

10.16526/j.cnki.11-4762/tp.2017.09.052

TP273

A

猜你喜欢
时序延时时钟
顾及多种弛豫模型的GNSS坐标时序分析软件GTSA
清明
别样的“时钟”
基于级联步进延时的顺序等效采样方法及实现
古代的时钟
基于不同建设时序的地铁互联互通方案分析
日光灯断电关闭及自动延时开关设计
基于FPGA 的时序信号光纤传输系统
有趣的时钟
时钟会开“花”