【第十章 鲁棒性检查 中】静态时序分析圣经翻译计划
本文由知乎
赵俊军
授权转载,知乎主页为https://www.zhihu.com/people/zhao-jun-jun-19
10.5 时钟门控检查
当一个门控信号(gating signal)可以控制逻辑单元中时钟信号(clock signal)的路径时,将会执行时钟门控检查(clock gating check),一个示例如图10-10所示。逻辑单元与时钟相连的引脚称为时钟引脚(clock pin),与门控信号相连的引脚称为门控引脚(gating pin),产生时钟门控的逻辑单元也称为门控单元(gating cell)。
进行时钟门控检查的条件之一是:必须将通过门控单元的时钟用作下游的时钟。下游时钟的使用可以是触发器的时钟、也可以是扇出到输出端口、也可以是作为衍生时钟的主时钟。如果时钟不用作门控单元之后的下游时钟,则不会推断出时钟门控检查。
时钟门控检查的另一个条件针对的是门控信号:门控引脚上的信号不应是时钟,或者如果是时钟,也不应将其用作下游时钟(例如本节稍后要介绍的将时钟用作门控信号的一个示例)。
在一般情况下,时钟信号和门控信号不需要连接到同一个逻辑单元(例如与门、或门),但是可以输入到任意逻辑块。在这种情况下,为了推断出时钟门控检查,检查的时钟引脚和检查的门控引脚必须扇出到公共输出引脚。
可推断出两种时钟门控检查:
-
高电平有效时钟门控检查:门控单元具有“与”功能或者“与非”功能。
-
低电平有效时钟门控检查:门控单元具有“或”功能或者“或非”功能。
高电平有效和低电平有效是指门控信号的逻辑状态,该逻辑状态用以使能门控单元输出端的时钟信号。如果门控单元是门控关系不明显的复杂功能,例如多路复用器(MUX)或异或门(XOR),则STA输出通常会给出警告,提示没有推断出时钟门控检查。但是,可以通过使用命令set_clock_gating_check为门控单元显式地指定时钟门控关系。在这种情况下,如果set_clock_gating_check命令与门控单元的功能不一致,则STA通常会给出警告。我们将在本节稍后部分介绍此类命令的示例。
如前所述,只有当时钟不用作下游时钟时,它才可以用作门控信号,考虑图10-11中的示例。由于定义了CLKA的衍生时钟,因此CLKB不用作下游时钟,即CLKB的路径被衍生时钟的定义阻塞了。因此,针对这个与门单元会推断出时钟CLKA的时钟门控检查。
高电平有效时钟门控
现在,我们来讨论高电平有效时钟门控检查的时序关系。这发生在与门(and)或者与非门(nand)单元上,使用与门单元的示例如图10-12所示。门控单元的引脚B是时钟信号,门控单元的引脚A是门控信号。
让我们假设两个时钟CLKA和CLKB具有相同的波形。
-
create_clock -name CLKA -period 10 -waveform {0 5} [get_ports CLKA]
-
create_clock -name CLKB -period 10 -waveform {0 5} [get_ports CLKB]
因为它是一个与门单元,所以门控信号引脚UAND0 / A上为高电平时才会打开门控单元,并允许时钟传播通过。时钟门控检查旨在验证门控引脚的电平切换不会为扇出时钟创建时钟有效沿。对于上升沿触发的逻辑,这意味着门控信号的上升沿发生在时钟的无效周期内(当其为低电平时)。类似地,对于下降沿触发的逻辑,门控信号的下降沿应仅在时钟为低电平时产生。注意,如果时钟同时驱动上升沿和下降沿触发的触发器,则门控信号的任何边沿(上升沿或下降沿)都必须仅在时钟为低电平时产生。图10-13给出了一个在有效周期期间门控信号电平切换的示例,该信号需要延迟才能通过时钟门控检查。
高电平有效时钟门控的建立时间检查可确保门控信号的电平改变发生在时钟变为高电平之前。以下是建立时间检查的路径报告:
请注意,终点(Endpoint)处说明这是时钟门控检查。另外,从Path Group一行中可以看出该路径属于clock_gating_default路径组中。该检查能确保门控信号在10ns处的时钟CLKB下一个上升沿之前改变。
高电平有效时钟门控的保持时间检查要求门控信号仅在时钟的下降沿之后才可以发生变化。以下是保持时间检查的路径报告:
时钟门控的保持时间检查失败了,因为在5ns处的CLKB下降沿之前,门控信号发生了改变。如果在UDFF0 / Q和UAND0 / A1引脚之间添加了5ns的延迟,则时钟门控的建立时间和保持时间检查都会通过,即门控信号仅在指定的时间窗口内发生变化。
从前文可以看到保持时间要求是非常大的,这是由于产生门控信号的时钟沿和门控单元时钟信号的有效沿是相同沿(上升沿或下降沿)导致的,这可以通过使用另一种类型的触发器(例如下降沿触发的触发器)产生门控信号来解决。下面将介绍这样的示例。
在图10-14中,触发器UFF0由时钟CLKA的下降沿触发。安全的时钟门控意味着触发器UFF0的输出必须在门控时钟的无效周期(5ns至10ns)之间才能变化。
与图10-14中的原理图相对应的信号波形如图10-15所示:
以下是时钟门控的建立时间检查报告:
以下是时钟门控的保持时间检查报告。请注意,在此新设计中,保持时间检查更容易满足要求。
由于产生门控信号的时钟沿(下降沿)与门控时钟相反(高电平有效),因此很容易满足建立时间和保持时间的要求。这也是门控时钟最常用的结构。
低电平有效时钟门控
图10-16给出了低电平有效时钟门控检查的示例:
-
create_clock -name MCLK -period 8 -waveform {0 4} [get_ports MCLK]
-
create_clock -name SCLK -period 8 -waveform {0 4} [get_ports SCLK]
低有效时钟门控检查可验证对于上升沿触发的逻辑,门控信号的上升沿在时钟的有效周期(高电平时)内到达。如前所述,关键在于门控信号不应使门控时钟的输出产生有效沿。当门控信号为高电平时,时钟无法通过。因此,只有在时钟为高电平时,门控信号才允许切换,如图10-17所示。
以下是低电平有效时钟门控的建立时间检查报告。该检查可确保门控信号在时钟沿变为无效状态(在这种情况下为4ns)之前到达。
以下是时钟门控的保持时间检查报告。此检查可确保门控信号仅在时钟信号的上升沿(在这种情况下为0ns)之后才发生变化。
使用多路复用器的时钟门控
图10-18给出了使用多路复用器单元进行时钟门控的示例。多路复用器输入上的时钟门控检查可确保多路复用器选择信号在正确的时间到达,以在MCLK和TCLK之间进行“干净”(clean)的切换。对于这个例子,我们感兴趣的是MCLK,假设TCLK为低电平时选择信号进行切换。这意味着多路复用器的选择信号应仅在MCLK为低电平时进行切换,这类似于高电平有效时钟门控检查。
时序关系如图10-19所示,多路复用器的选择信号必须在MCLK为低电平时到达。同样,假设选择信号改变时TCLK为低电平。
由于门控单元是多路复用器,因此不会自动推断出时钟门控检查,在STA期间会报告出以下信息:
但是,通过使用set_clock_gating_check命令可以强制执行时钟门控检查。
-
set_clock_gating_check -high [get_cells UMUX0]
-
set_disable_clock_gating_check UMUX0/I1
第一条命令中的-high选项表示这是高电平有效的时钟门控检查,第二条命令中的禁止检查将关闭特定引脚上的时钟门控检查,因为我们不考虑该引脚。以下是建立时间检查的路径报告:
接下来是时钟门控的保持时间检查报告:
带时钟反相的时钟门控
图10-20显示了另一个时钟门控示例,其中产生门控信号的触发器时钟被反相了。由于门控单元是与门单元,因此门控信号必须仅在时钟信号为低电平时才能切换,这定义了时钟门控的建立时间和保持时间检查。
以下是时钟门控的建立时间检查报告:
请注意,建立时间检查会验证数据是否在15ns处的MCLK沿之前发生改变。以下是时钟门控的保持时间检查报告:
保持时间检查可验证门控信号是否在10ns处的MCLK下降沿之前发生了改变。
如果门控单元是一个复杂的单元并且建立时间和保持时间检查不够明显,则可以使用set_clock_gating_check命令来指定对门控单元的门控信号进行建立时间和保持时间检查。建立时间检查会去确保门控信号在时钟信号的有效沿之前是稳定的,建立时间检查的失败可能会导致门控单元输出端出现毛刺。保持时间检查可验证门控信号在时钟信号的无效沿处是否稳定。以下是set_clock_gating_check命令的一些示例:
-
set_clock_gating_check -setup 2.4 -hold 0.8 [get_cells U0/UXOR1]
-
set_clock_gating_check -high [get_cells UMUX5]
10.6 功耗管理
功耗管理是任何设计及其实现方式的一个重要方面。在设计实现(implementation)过程中,设计人员通常需要评估在速度、功耗和面积之间权衡(trade-off)的不同方法。
如第3章所述,一个设计的逻辑部分中消耗的功率包括漏电功率(leakage power)和有功功率(active power)。 此外,模拟部分和IO缓冲器(尤其是具有主动匹配功能的)会耗散与功能无关且非漏电的功率。在本节中,我们重点讨论设计中逻辑部分所耗散功率的权衡。
通常,管理由标准单元和存储器组成的数字逻辑的功率影响有两个注意事项:
-
使设计的总有功功率最小化:设计人员将确保总功耗保持在特定的功耗极限之内。设计的不同工作模式可能会有不同的极限值,此外,设计中使用的不同供电电源也会有不同的极限值。
-
使待机模式下设计的功耗最小化:对于电池供电的设备(例如手机),这是一个重要的考虑因素,其目的是使待机模式下的功耗最小。待机模式下的功耗等于漏电功耗加上待机模式下有效逻辑的任何功耗。如上所述,可能存在其它模式,例如睡眠模式,其对功耗的约束有所不同。
本节将介绍各种功耗管理方法,这些方法中的每一种都有其优缺点。
10.6.1 时钟门控
如第3章所述,触发器的时钟翻转是总功耗的重要组成部分。即使触发器的输出未切换,触发器也会由于时钟切换而消耗功率。考虑图10-21(a)中的示例,其中触发器仅在使能信号EN处于有效状态时才接收新数据,否则将保持先前的状态。在EN信号处于无效状态期间,时钟在触发器处的翻转不会引起任何输出变化,但是仍然导致了触发器内部的功率消耗。时钟门控的目的是:通过在触发器输入无效的时钟周期内消除触发器的时钟翻转来最大程度地减少这种影响。通过时钟门控进行的逻辑重组会在触发器时钟引脚上引入时钟门控,图10-21给出了此时钟门控的示例:
因此,时钟门控可确保仅在其数据输入端有新数据可用时,触发器的时钟引脚才会翻转。
10.6.2 电源门控
电源门控包括关闭电源,以便可以关闭无效模块的供电。图10-22中说明了此过程,其中在电源中串联添加了Header(或Footer)MOS器件。适当配置控制信号SLEEP后,可以使Header(或Footer)MOS器件在模块的正常工作期间处于打开状态。由于在正常工作期间电源门控MOS器件(Header或Footer)处于打开状态,因此该模块已被上电,并在正常功能模式下运行。在模块的无效(或睡眠)模式期间,门控MOS器件(Header或Footer)被关闭,这可以消除逻辑模块中的任何有功功耗。Footer是在实际的地与模块的地网络之间的大型NMOS器件,可通过电源门控对其进行控制。Header是实际的电源和模块的电源网络之间的大型PMOS设备,也可通过电源门控进行控制。在睡眠模式下,模块中唯一消耗的功率是通过Header(或Footer)器件的漏电功率。
通常使用多个电源门控单元来实现Header或Footer,这些电源门控单元对应于多个并联的MOS器件。Header和Footer器件为电源引入了一系列导通电阻。如果导通电阻的值不小,则通过门控MOS器件的IR压降会影响逻辑模块中单元的时序。关于门控器件尺寸的考虑主要是为了确保导通电阻值足够小,若再同时考虑电源门控MOS器件在无效模式或睡眠模式下的漏电功耗,则需要进行权衡。
总之,应该有足够数量的并联电源门控单元,以确保在正常工作模式下电阻串联时的IR压降最小。但是,在无效模式或睡眠模式下门控单元的漏电功耗也是选择并联电源门控单元数量的标准。
10.6.3 多阈值单元
如第3章(3.8节)中所述,多阈值(Vt)单元可用于权衡速度与漏电。高Vt单元的漏电较少,但是却比标准Vt单元的速度更慢,相反,标准Vt单元虽然速度更快,但是漏电也更多。同样,低Vt单元的速度比标准Vt单元更快,但漏电量也相应地比较高。
在大多数设计中,目标是在达到所需工作速度的同时将总功率降至最低。即使漏电可能是总功率的重要组成部分,但仅采用高Vt单元来减少漏电的设计也可能会增加总功率,尽管漏电确实减少了。这是因为最终的设计实现可能需要更多(或更高强度)的高Vt单元才能实现所需的性能。由于使用高Vt单元,等效门数的增加导致的有功功率增加将会远大于漏电功率的减少。但是在某些情况下,漏电才是总功率的主要组成部分,在这种情况下,使用高Vt单元的设计可以使总功率降低。由于需要取决于具体的设计以及切换活动曲线(switching activity profile),因此需要适当地利用上述具有不同Vt的单元之间在速度和漏电方面的折中。下面将介绍一个高性能模块的两种不同情况,根据模块是处于非常活跃状态还是低切换状态,实现方法可能有所不同。
具有高切换活动的高性能模块
这种情况是具有高切换活动的高性能模块,其功率主要由有功功率决定。对于此类模块,即使可以将漏电影响最小化,但仅专注于降低漏电功率还是会导致总功率的增加。在这种情况下,初始设计实现应使用标准Vt(或低Vt)单元来满足所需的性能。在达到所需的时序之后,可以将具有正时序裕量的路径上的单元更改为高Vt单元,以便在仍满足时序要求的同时减少漏电功率。因此,在最终实现中,仅沿着关键或难以实现的时序路径使用标准Vt(或低Vt)单元,而沿着非关键时序路径的单元可以是高Vt单元。
具有低切换活动的高性能模块
这种情况是切换活动非常低的高性能模块,因此漏电功率是总功率的主要组成部分。由于该模块切换活动频率很低,因此有功功率并不是设计总功率的主要组成部分。对于此类模块,最初的设计实现在组合逻辑和触发器中仅使用高Vt单元。由于时钟树始终处于有效状态,因此会使用标准Vt(或低Vt)单元。在仅使用高Vt单元的最初实现之后,可能会有一些时序路径无法满足所需的时序。然后,可以将沿着此类路径的单元替换为标准Vt(或低Vt)单元,以实现所需的时序性能。
10.6.4 阱极偏置
阱极偏置(well bias)是指分别向用于NMOS和PMOS器件的P阱或N阱增加小的电压偏置。图2-1中所示的NMOS器件的衬底(或P阱)通常连接至地。同样,图2-1中所示的PMOS器件的衬底(或N阱)通常连接至电源(Vdd)。
如果阱的连接处具有轻微的负偏置电压,则可以大大降低漏电功率。这意味着NMOS器件的P阱连接到较小的负电压(例如-0.5V),类似地,PMOS器件的N阱连接处被连接到了高于电源的电压(例如Vdd + 0.5V)。通过添加阱极偏置,将会影响单元的速度,但是漏电大大减少了。单元库中的时序是考虑了阱极偏置之后的。
使用阱极偏置的缺点是:P阱和N阱连接需要额外的供电电源(例如-0.5V和Vdd + 0.5V)。
10.7 反标
10.7.1 SPEF
STA如何知道设计的寄生参数?通常,此参数信息是使用寄生提取工具提取出的,并且STA工具会以SPEF格式来读取此数据。SPEF的详细信息和格式将在附录C中介绍。
物理设计布局工具中STA引擎的行为也是类似的,不同之处在于提取信息将被写入内部数据库中。
10.7.2 SDF
在某些情况下,单元和互连走线的延迟是由另一个工具计算的,并通过SDF文件将其读入STA。使用SDF的优点是不再需要计算单元延迟和互连走线延迟,因为它们直接来自SDF文件,因此STA可以专注于时序检查。但是,这种标注延迟(delay annotation)的缺点是,由于缺少寄生信息,STA无法执行串扰计算。通常SDF是用于将延迟信息传递给仿真器的一种机制。
SDF的详细信息和格式将在附录B中介绍。
10.8 Sign-off方法学
STA可以在许多不同的情况下执行,不同的情况主要由三个变量来确定:
-
寄生角(用于寄生参数提取的RC互连角和工作条件)
-
操作模式
-
PVT角
互连寄生角
寄生参数可以在许多角(corner)下提取。这些主要取决于制造过程中金属宽度和金属刻蚀的变化,这些角包括:
-
Typical:这是指互连电阻和电容的标准值。
-
Mac C:这是指使电容值最大的互连角,其互连电阻小于Typical角下的电阻。该角会导致较短网络的路径延迟最大,因此可用于最大路径分析。
-
Min C:这是指使电容值最小的互连角,其互连电阻大于Typical角下的电阻。 该角会导致较短网络的路径延迟最小,因此可用于最小路径分析。
-
Max RC:这是指使互连RC乘积最大的互连角。这通常对应于较大的刻蚀,较大的刻蚀可以减小走线的宽度。该角会使电阻值最大,但对应的电容值小于Typical角下的电容。总体而言,该角对于互连走线较长的路径具有最大的延迟,可用于最大路径分析。
-
Min RC:这是指使互连RC乘积最小的互连角。这通常对应于较小的蚀刻,较小的刻蚀会增加走线的宽度。该角会使电阻值最小,但对应的电容值大于Typical角下的电容。总的来说,该角对于互连走线较长的路径具有最小的路径延迟,可用于最小路径分析。
基于上述各个角的互连电阻和电容,具有较大电容的互连角会导致电阻较小,具有较小电容的互连角会导致电阻较大。因此,电阻在一定程度上补偿了各个互连角下的电容。这意味着对于所有类型网络的延迟,没有一个角会真正对应极限情况(最差情况或最佳情况)。使用Cworst / Cbest角下的路径延迟仅对于较短网络是极限情况,而RCworst / RCbest角仅对于较长网络是极限情况,而对于平均长度的网络,Typical互连角通常在路径延迟方面是极限的。因此,设计人员经常会在上述各个互连角下都去验证设计的时序。但是,即使在每个角处都进行了验证也可能无法涵盖所有可能的情况,因为不同的金属层实际上可以独立地处于不同互连角下,例如:METAL2在Max C角下而METAL1在Max RC角下。10.9节中介绍的统计(statistical)时序分析将提出一种静态时序分析的机制,其中不同的金属层可以处于不同的互连角下。
操作模式
操作模式决定了设计所要执行的操作,设计的各种操作模式包括:
-
功能模式1(工作在高速时钟下)
-
功能模式2(工作在低速时钟下)
-
功能模式3(睡眠模式)
-
功能模式4(调试模式)
-
测试模式1(scan capture)
-
测试模式2(scan shift)
-
测试模式3(bist)
-
测试模式4(jtag)
PVT角
PVT角指的是STA在什么条件下执行。最常见的PVT角有:
-
WCS(慢工艺、低电压、高温)
-
BCF(快工艺、高电压、低温)
-
Typical(典型工艺、标准电压、标准温度)
-
WCL(低温下的最差情况:慢工艺、低电压、低温)
STA分析可以在任何条件下执行,这里的条件是指上述互连寄生角、操作模式和PVT角的组合。
多模式多角分析
多模式多角分析MMMC(Multi-Mode Multi-Corner)是指同时在多个工作模式、PVT角和寄生互连角之间执行STA。例如,假设一个DUA具有四个工作模式(正常、睡眠、扫描移位和Jtag),并且正在三个PVT角(WCS,BCF,WCL)和三个寄生互连角(Typical,Min C,Min RC)下进行分析 ,如下表所示:
总共有36种可能的情况可以去执行所有时序检查,例如建立时间、保持时间、压摆和时钟门控检查。对于运行时间而言,同时运行所有36个情况的STA可能会因设计规模而导致运行时间过长。某一个情况可能不是基本的,因为它可能包含在了另一个情况中,又或者这个情况不是必需的。例如,设计人员可以确定情况4、6、7和9不相关,因此不是必需的。此外,可能不必在一个角上运行所有模式,例如在情况5中可能不需要扫描移位模式或Jtag模式。如果可以使用MMMC功能,则STA可以在单个情况中运行,也可以在多个情况中同时运行。
运行多模式多角STA的优点是可以节省运行时间并节省设置分析脚本的复杂性。MMMC方案的另一个优势在于,与每种模式或角需要分别多次加载设计和寄生参数相比,MMMC只需加载一次或两次即可。这样的工作也更适合在LSF服务器上运行。多模式多角在优化过程中也具有很大的优势:在优化过程中会对所有情况进行优化,因此在一个情况中解决的时序违例不会在另一情况中引入时序违例。
对于IO约束,-add_delay选项可与多个时钟源一起使用,以在一次运行(run)中分析不同的模式,例如scan或bist模式,或PHY中对应于不同速度的不同操作模式。通常每种模式都会在单独的运行中进行分析,但并非总是如此。
通常这样的设计是不常见的:具有大量时钟、需要数十次独立运行才能覆盖最大和最小角的每种模式、需要包括串扰和噪声的影响。