纳米设计下的静态时序分析03
Chapter3 标准单元库
本章介绍库单元描述中的时序信息。 一个单元可以是一个标准单元,一个IO缓冲器,或一个复杂的IP,如USB核心。除了定时信息之外,库单元描述还包含几个属性,如单元区域和功能,这些属性与时序无关,但在RTL合成过程中是相关的。 在本章中,我们只关注与时序和功耗计算相关的属性。库单元可以使用各种标准格式来描述。 虽然各种格式的内容基本相似,但我们已经使用Liberty语法描述了库单元示例。
本章的最初部分描述了3.7节中描述的纳米技术的高级时序模型所遵循的线性和非线性时序模型。
3.1 引脚电容
单元的每个输入和输出都可以指定引脚的电容。 在大多数情况下,电容只针对单元输入而不针对输出,即大多数单元库中的输出引脚电容为0。

以上示例显示了输入INP1引脚电容值的一般规范。 在其最基本的形式中,引脚电容被指定为单个值(在上面的例子中为0.5单位)。 (电容单元通常是picofarad,在库文件的开头指定)。 单元格描述还可以为rise_capacitance(0.5个单位)和fall_capacitance(0.45个单位)指定单独的值,这些值用于引脚INP1上升和下降转换的值。 rise_capacitance和fall_capacitance值也可以指定为描述中指定了下限值和上限值的范围。
3.2时序模型
单元时序模型旨在为设计环境中单元的各种实例提供准确的时序。 时序模型通常从单元的详细电路仿真获得,以模拟单元操作的实际情况。 时序模型是为单元的每个时序弧指定的。

让我们首先考虑图3-1中所示的简单逆变器逻辑单元的定时弧。 由于它是一个反相器,输入端的上升(下降)转换会导致输出端下降(上升)转换。 针对小区特征的两种延迟是:
•Tr:输出上升延迟
•Tf:输出下降延迟
请注意,延迟是根据单元库(参见第2.4节)中定义的阈值点进行测量的,典型值为50%Vdd。 因此,从输入跨越其临界点到跨越其临界点的输出,测量延迟。时序弧通过反相器单元的延迟取决于两个因素:
I. 输出负载,即反相器输出引脚的电容负载。
II. 输入信号的转换时间。
延迟值与负载电容直接相关 - 负载电容越大,延迟越大。 在大多数情况下,延迟随着输入转换时间的增加而增加。 输入阈值(用于测量延迟)与单元的内部切换点有很大的不同。 在这种情况下,通过单元的延迟相对于输入转换时间可能表现出非单调行为 - 较大的输入转换时间可能产生较小的延迟,特别是如果输出轻载时。 单元输出的摆动主要取决于输出电容 - 输出转换时间随着输出负载的增加而增加。 因此,根据单元类型和输出负载,输入端的大摆动(大转换时间)可以在输出端得到改善。 图3-2显示了根据单元输出端的负载,单元输出端的转换时间可以改善或恶化的情况。
3.2.1线性时序模型
简单的时序模型是线性延迟模型,其中单元的延迟和输出转换时间被表示为两个参数的线性函数:输入转换时间和输出负载电容。 下面说明延迟D的线性模型通过单元格的一般形式。
D = D0 + D1 * S + D2 * C
其中D0,D1,D2是常数,S是输入转换时间,C是输出负载电容。 线性延迟模型在亚微米技术的输入转换时间和输出电容范围内是不准确的,因此大多数单元库目前使用更复杂的模型,如非线性延迟模型。

3.2.2非线性延时模型
大多数单元库包括表格模型,以指定单元的各个时序的延迟和时序检查。 一些用于纳米技术的更新的时序库也提供了基于电流源的高级时序模型(如CCS,ECSM等),这些将在本章后面介绍。 表格模型被称为NLDM(非线性延迟模型),用于延迟,输出摆动或其他定时检查。 表模型捕获单元输入引脚输入转换时间和单元输出总输出电容各种组合的延迟。
延迟的NLDM模型以二维形式呈现,其中两个独立变量是输入转换时间和输出负载电容,并且表中的条目表示延迟。 下面是一个典型的逆变器单元的例子:

在上面的例子中,描述了输出引脚OUT的延迟。 这部分单元描述包含从引脚INP1到引脚OUT的时序的上升和下降延迟模型,以及引脚OUT上允许的max_transition时间。 上升和下降延迟(对于输出引脚)有单独的模型,分别标记为cell_rise和cell_fall。 查询表模板delay_template_3x3中描述了索引的类型和表查找索引的顺序。

该查找表模板指定表中的第一个变量是输入转换时间,第二个变量是输出电容。表值被指定为一个嵌套循环,其中第一个索引(index_1)是外部变量(或最少变量),第二个索引(index_2)是内部变量(或最多变量),依此类推。每个变量有三个条目,因此它对应于一个3乘3的表。在大多数情况下,表格的条目也被格式化为一个表格,第一个索引(index_1)可以被视为一个行索引,而第二个索引(index_2)等同于列索引。索引值(例如1000)是虚拟占位符,被cell_fall和cell_rise延迟表中的实际索引值覆盖。指定索引值的另一种方法是在模板定义中指定索引值,并且不在cell_rise和cell_fall表中指定它们。这样的模板看起来像这样:

根据延迟表,输入下降转换时间为0.3ns,输出负载为0.16pf将对应于0.1018ns的反相器上升延迟。由于输入下降转换导致反相器输出上升,所以上升延迟的表格查找包括反相器输入下降转换。由于在表格中表示作为两个变量(转换时间和电容)的函数的表格中的延迟的形式被称为非线性延迟模型,因为在这样的表格中表达了具有输入转变时间和负载电容的延迟的非线性变化。表格模型也可以是三维的 - 一个例子是一个具有互补输出的触发器,Q和QN在3.8节描述。 NLDM模型不仅用于延迟,还用于以输入转换时间和输出负载为特征的单元输出端的转换时间。因此,存在用于计算单元的输出上升和下降转换时间的单独的二维的二维表格。


有两个这样的转换时间表:rise_transition和fall_transition。 如第2章所述,转换时间是根据具体的转换阈值进行测量的,通常为电源的10%-90%。 如上所示,具有NLDM模型的逆变器单元具有以下表格:
•上升延迟
•下降延迟
•上升过渡
•下降过渡
给定这样一个单元的输入转换时间和输出电容,如图3-3所示,从cell_rise表获得15ps输入转换时间(下降)和10fF负载的上升延迟,并且从cell_fall获得下降延迟 表为20ps输入转换时间(上升)和10fF负载。

指定单元正在反转的信息在哪里? 该信息被指定为时序的timing_sense字段的一部分。 在某些情况下,这个字段没有被指定,但是可以从引脚函数派生出来。
对于示例反相器单元,时序弧是negative_unate这意味着输出引脚转换方向是输入脚转换方向相反(负)。 因此,cell_rise表查找对应于输入引脚的下降转换时间。
本节通过一个例子来说明表格模型的查找。 如果输入转换时间和输出电容对应一个表条目,那么表查找是微不足道的,因为时间值直接对应于表中的值。 下面的例子对应于查找不符合表中任何可用条目的一般情况。 在这种情况下,利用二维插值来提供得到的定时值。 为每个维度选择两个最近的表格索引用于表格插值。 考虑对于0.15ns的输入转换时间和1.16pF的输出电容的下降转换(上面指定的示例表)的表格查找。 下面再现与二维插值有关的下降转换表的相应部分。

在下面的表述中,两个index_1值表示为x1和x2; 两个index_2值分别表示为y1和y2,对应的表格值分别表示为T11,T12,T21和T22。如果(x0,y0)需要表查找,则查找值T00通过插值获得并由下式给出:


将index_1替换为0.15,将index_2替换为1.16将导致fall_transition值为:

请注意,上面的公式对于插值和外插都是有效的 - 也就是说当指数(x0,y0)位于指数范围之外时。 作为一个例子,对于索引_1为0.05,索引_2为1.7的表格查找,下降过渡值可以通过以下方式获得:

3.2.3阈值规范和压降额定值
转换值基于库中指定的测量阈值。 大多数上一代库(0.25mm或更老)使用10%和90%作为转换或转换时间的测量阈值。转换阈值被选择为对应于波形的线性部分。 随着技术的进一步发展,实际波形最为线性的部分通常在30%到70%之间。 因此,大多数新一代时序库指定摆动测量点为Vdd的30%和70%。 但是,由于过渡时间之前是在10%到90%之间,所以在30%到70%之间的过渡时间通常会增加一倍,以便填充库。 这是通常规定为0.5的摆率降低因数所规定的。 旋转阈值为30%和70%,旋转下降率为0.5时,测量结果为10%和90%。 阈值的示例设置如下所示。

以上设置指定库表中的转换时间必须乘以0.5才能获得与转换阈值(30-70)设置相对应的转换时间。 这意味着转换表中的值(以及相应的索引值)实际上是10-90个值。 在表征过程中,转换在30-70度量,而库中的转换数据相当于测量值外推到10%到90%((70-30)/(90-10)= 0.5)。另一个具有不同的斜率阈值设置的示例可能包含:


在20-80转换阈值设置的示例中,没有指定slew_derate_from_library(意味着缺省值为1.0),这意味着库中的转换时间数据不会降级。 转换表中的值直接对应于20-80个特征值摆动值。 见图3-4。

这里是单元库中的斜率阈值设置的另一个例子。
在这种情况下,slew_derate_from_library被设置为0.6,特征转换跳变点被指定为20%和80%。 这意味着库中的转换表数据对应于0%到100%((80-20)/(100-0)= 0.6)的外推值。 如图3-5所示。

当指定slew降额时,延迟计算过程中内部使用的slew值为:
library_transition_time_value * slew_derate
这是延迟计算工具在内部使用的斜率,对应于特征化的斜率阈值测量点。
3.3时序模型 - 组合门
让我们考虑双输入与门的时序弧。 这个门的时序弧都是positive_unate; 因此输入引脚上升对应于输出上升,反之亦然。
对于双输入与门,有四个延迟:
• A -> Z: Output rise
• A -> Z: Output fall
• B -> Z: Output rise
• B -> Z: Output fall

这意味着对于NLDM模型,将会有四个表格模型用于指定延迟。 同样,也会有四个这样的表模型来指定输出转换时间。
3.3.1延时和偏差模型
输入INP1为三输入nand单元输出OUT的时序模型示例如下所示。


在本例中,使用两个单元延迟表(cell_rise和cell_fall)和两个转换表(rise_transition和fall_transition)来描述从INP1到OUT的时序弧的特性。 上面的例子中也包含了max_transition的输出值。
正面或负面unate
如第2.7节所述,nand单元示例中的时序弧为负电平,这意味着输出管脚转换方向与输入管脚转换方向相反(负)。 因此,cell_rise表查找对应于输入引脚的下降转换时间。 另一方面,由于输出转换与输入转换方向相同,因此通过单元或单元的时序弧是正的。
3.3.2通用组合模块
考虑一个具有三个输入和两个输出的组合块。

像这样的块可以有多个时序弧。 一般来说,时序弧可以是块的每个输出的输入。 如果从输入到输出的逻辑路径是同相或正相,则输出与输入具有相同的极性。 如果是反相逻辑路径或负的单相,则输出与输入极性相反; 因此,当输入上升时,输出下降。 这些时序弧表示通过块的传播延迟。
通过组合单元的一些时序弧可以是正的,也可以是负的。 一个例子是通过双输入xor单元的时序弧。 在两输入xor单元的输入处的转换可以引起相同或相反转换方向上的输出转变,这取决于单元的另一个输入的逻辑状态。 这些弧的时间可以被描述为非统一的或者作为两个不同的正的独立和负的独立时间模型,这是与状态有关的。 这些状态相关的表在3.5节中有更详细的描述。
3.4时序模型 - 顺序单元
Consider the timing arcs of a sequential cell shown in Figure 3-8.

对于同步输入,如引脚D(或SI,SE),有以下定时序弧:
i. Setup check arc (rising and falling)
ii. Hold check arc (rising and falling)
对于异步输入,如引脚CDN,有以下时序弧:
i. Recovery check arc
ii. Removal check arc
对于触发器的同步输出,例如引脚Q或QN,存在以下时序弧:
i. CK-to-output propagation delay arc (rising and falling)
所有的同步时序弧相对于时钟的有效边缘,时钟的边缘引起连续单元捕捉数据。 另外,时钟引脚和异步引脚如清零,可以有脉宽时序检查。 图3-9显示了使用各种信号波形的时序检查。

3.4.1同步检查:建立和保持
建立和保持同步定时检查是通过顺序单元正确传播数据所必需的。这些检查将验证数据输入在时钟的有效边沿是否明确,并将正确的数据锁存在有效边沿。这些时序检查验证数据输入在有效时钟沿周围是否稳定。在数据输入必须保持稳定的有效时钟之前的最短时间称为建立时间。这是从最新数据信号越过阈值电压(通常为Vdd的50%)到超过其阈值电压(通常为Vdd的50%)的有效时钟沿的时间间隔。同样,保持时间是数据输入必须在时钟的有效沿之后保持稳定的最短时间。这被测量为从跨过其阈值的有效时钟边沿到跨越其阈值的最早的数据信号的时间间隔。如前所述,顺序单元的时钟的活动边缘是导致顺序单元捕获数据的上升沿或下降沿。
Example of Setup and Hold Checks
顺序单元的同步引脚的建立和保持约束通常用二维表格来描述,如下所示。 下面的例子显示了触发器数据引脚的建立和保持时序信息。


上面的例子显示了输入引脚D相对于顺序单元的时钟CK的上升沿的建立和保持约束。 二维模型是根据约束点(D)和相关点(CK)的转换时间。 二维表的查找基于库中描述的模板setuphold_template_3x3。 对于上面的例子,查找表模板setuphold_template_3x3被描述为:

像前面的例子一样,表中的设置值被指定为一个嵌套循环,其中第一个索引index_1是外部变量(或最小变量),第二个索引index_2是内部变量(或最多变量),而等等。 因此,在D引脚上升转换时间为0.4ns,CK引脚上升转换时间为0.84ns时,D引脚上升沿的建立约束条件为0.112ns - 从rise_constraint表中读取该值。 对于D引脚的下降沿,设置约束将检查设置表的fall_constraint表。 对于转换时间不对应于索引值的建立和保持约束表的查找,3.2部分描述的非线性模型查找的一般过程是适用的。
请注意,设置约束的rise_constraint和fall_constraint表参考了constrained_pin。 所使用的时钟转换是由timing_type决定的,它指定了单元是上升沿触发还是下降沿触发。
设置和保持检查中的负值
请注意,上例中的一些保留值是负值。这是可以接受的,并且通常在从触发器的引脚到数据的内部锁存点的路径比时钟的对应路径更长时发生。因此,负保持检查意味着触发器的数据引脚可以在时钟引脚之前改变,并且仍然满足保持时间检查。触发器的设置值也可以是负值。这意味着在触发器的引脚处,数据可以在时钟引脚之后改变,并且仍然满足设置时间检查。可以设置和保持负面吗?没有;对于设置和保持检查是一致的,建立和保持值的总和应该是正值。因此,如果设置(或保持)检查包含负值 - 相应的保持(或设置)应该足够正,以便设置加保持值为正数量。有关负值保持的示例,请参见图3-10。由于设置必须在保持之前发生,设置加保持是正数量。设置加保持时间是数据信号需要稳定的区域的宽度。

对于触发器,在扫描数据输入引脚上有一个负的保持时间是有帮助的。 这在时钟偏移方面提供了灵活性,并且可以消除几乎所有缓冲器插入的需要,以便在扫描模式下固定保持违反(扫描模式是其中触发器串联连接形成扫描链的一种 - 触发器的输出是 通常串联连接到下一个触发器的扫描数据输入引脚;这些连接用于可测试性)。与对同步数据输入的建立或保持检查类似,还存在控制异步引脚的约束检查。 这些在下面描述。
3.4.2异步检查
恢复和删除检查
异步引脚(如异步清除或异步设置)会覆盖单元的任何同步行为。 当异步引脚处于活动状态时,输出由异步引脚控制,而不是由数据输入中的时钟锁存控制。 但是,当异步引脚变为无效时,时钟的有效沿开始锁存在数据输入中。 异步恢复和删除约束检查验证异步引脚在下一个活动时钟边沿已明确返回到非活动状态。 恢复时间是异步输入在下一个有效时钟沿之前被置为无效之后稳定的最短时间。 类似地,移除时间是异步引脚必须保持有效的有效时钟沿之后的最小时间,然后才可以取消置位。 异步删除和恢复检查分别在第8.6节和第8.7节中介绍。
脉冲宽度检查
除了同步和异步定时检查,还有一个检查,确保单元的输入引脚的脉冲宽度满足最低要求。 例如,如果时钟引脚的脉冲宽度小于指定的最小值,则时钟可能无法正确锁存数据。 脉冲宽度检查也可以为相关的同步和异步引脚指定。 可以为高脉冲和低脉冲指定最小脉冲宽度检查。
恢复,去除和脉冲宽度检查的示例
下面给出了一个触发器异步清零引脚CDN的恢复时间,去除时间和脉冲宽度检查的例子。 恢复和删除检查相对于时钟引脚CK。 由于恢复和删除检查定义为异步引脚无效,因此下面的示例中只存在上升限制。 引脚CDN的最小脉冲宽度检查是针对低脉冲的。 由于CDN引脚处于低电平有效,因此该引脚上的高脉冲宽度没有限制,因此没有规定。


3.4.3传播延时
顺序单元的传播延迟是从时钟的有效边沿到输出的上升沿或下降沿。 下面是从时钟引脚CKN到输出Q的负边沿触发器的传播延迟弧的一个例子。这是一个非单调的定时弧,因为时钟的有效边缘可能导致上升或下降 边沿在输出Q.这里是延迟表:


正如在前面的例子中,输出的延迟表示为输入转换时间和输出引脚电容方面的二维表。 然而在这个例子中,使用的输入转换时间是CKN引脚的下降转换时间,因为这是一个下降沿触发的触发器。 在上面的例子中,这由结构timing_type表示。 上升沿触发的触发器将指定rising_edge作为其timing_type。


3.5 级依赖模型
在许多组合块中,输入和输出之间的时序弧取决于块中其他引脚的状态。 输入和输出引脚之间的这些时序弧可以是正的,负的,或者是正的,也可以是负的单弧。 一个例子就是xor或者xnor单元,其中输出的时间可以是正的,也可以是负的。 在这种情况下,时间行为可以根据块的其他输入的状态而不同。 通常,描述取决于引脚状态的多个时序模型。 这样的模型被称为状态依赖模型。
XOR,XNOR和连续单元
考虑一个双输入xor单元的例子。 当另一个输入A2为逻辑0时,从输入A1到输出Z的时序路径是正的。 当输入A2是逻辑1时,从A1到Z的路径是负的。 这两个时序模型是使用状态相关模型来指定的。 当A2为逻辑0时,从A1到Z的时序模型规定如下:


状态相关条件是使用when条件指定的。 虽然单元模型摘录仅说明了cell_rise延迟,但其他时序模型(cell_fall,rise_transition和fall_transition表格)也是在条件相同的情况下指定的。 当条件为A2时为逻辑1的情况下,为另一个指定一个单独的时序模型。

sdf_cond用于指定生成SDF时要使用的定时弧的条件 - 请参阅第3.9节中的示例和附录B中描述的COND结构。状态相关模型用于各种类型的定时弧。 许多顺序单元使用状态相关模型来指定建立或保持时序约束。 接下来指定使用状态相关模型进行保持约束的扫描触发器的示例。 在这种情况下,指定了两组模型 - 一个是扫描使能引脚SE处于活动状态时,另一个是扫描使能引脚处于非活动状态时。

SE引脚为逻辑0时使用上述模型。当条件SE被指定为逻辑1时,类似的模型被指定。一些时序关系是使用状态相关模型和非状态相关模型来指定的。在这种情况下,如果单元的状态是已知的并且包括在状态相关模型之一中,则时序分析将使用状态相关模型。如果状态依赖模型不覆盖单元的状态,则利用来自非状态依赖模型的时序。例如,考虑一种情况,其中当在逻辑0处的SE的情况下,只有一个保持约束被指定,并且在逻辑1处没有为SE指定单独的状态相关模型。在这种情况下,如果SE设置为逻辑1,则使用来自非状态依赖模型的保持约束。如果保持约束不存在非状态依赖模型,则不会有任何主动保持约束!可以为时序库中的任何属性指定依赖于状态的模型。因此,对于功率,泄漏功率,转换时间,上升和下降延迟,时序约束等,可以存在状态相关规范。下面给出一个与状态相关的泄漏功率规格的例子:

3.6接口时序模型和黑盒子
本节介绍黑盒(任意模块或块)的IO接口的时序弧。 时序模型捕捉黑匣子IO接口的时序。 黑匣子接口模型可以具有组合的以及顺序的定时弧。 一般来说,这些弧也可以是状态依赖的。 对于图3-11所示的例子,定时弧可以放在以下类别中:
• 输入到输出组合弧:这对应于从输入到输出(例如从输入端口FIN到输出端口FOUT)的直接组合路径。
• 输入顺序电弧:这被描述为连接到触发器的D引脚的输入的建立时间或保持时间。 一般情况下,在块连接到触发器的D引脚之前,可以在块的输入端有组合逻辑。 这方面的一个例子是关于时钟ACLK在端口DIN上的设置检查。
• 异步输入弧:这与触发器的输入异步引脚的恢复或去除时序约束类似。 例如触发器UFF0的异步清零引脚的输入ARST。
• 输出顺序电弧:这与连接到触发器Q的输出时钟的输出传播时序相似。 通常,触发器输出和模块输出之间可以有组合逻辑。 一个例子是从时钟BCLK到触发器UFF1输出到输出端口DOUT的路径。
除了上面的定时弧外,还可以在黑盒的外部时钟引脚上进行脉冲宽度检查。 还可以定义内部节点,并在这些内部节点上定义生成的时钟,并指定往返于这些节点的定时弧。 总之,一个黑匣子模型可以有以下的时间弧:
I. 输入到输出组合逻辑路径的定时弧。
II. 设置并保持从同步输入到相关时钟引脚的时序弧。
III. 对于相关时钟引脚的异步输入,恢复和移除时序弧。
IV. 输出从时钟引脚到输出引脚的传播延迟。
如上所述的接口时序模型不是为了捕获黑盒的内部时序,而仅仅是其接口的时序。
3.7高级时序建模
时序模型(如NLDM)表示基于输出负载电容和输入转换时间的定时电弧的延迟。 实际上,单元输出端看到的负载由电容和互连电阻组成。 互连电阻成为一个问题,因为NLDM方法假定输出负载是纯电容性的。 即使采用非零互连电阻,当互连电阻的影响很小时,这些NLDM模型也已经被使用。 在电阻互连存在的情况下,延迟计算方法通过在单元的输出处获得等效的有效电容来改进NLDM模型。 在延迟计算工具中使用的“有效”电容方法获得等效电容,其在具有RC互连的单元的单元输出处具有相同的延迟。 有效的电容方法被描述为5.2节中延迟计算的一部分。
随着特征尺寸的缩小,互连电阻的影响可能导致很大的不准确性,因为波形变得高度非线性。 各种建模方法为单元输出驱动器提供了更高的精度。 一般来说,这些方法通过用等效电流源对驱动器的输出级进行建模来获得更高的准确度。 这些方法的例子是 - CCS(复合电流源)或ECSM(有效电流源模型)。 例如,CCS时序模型通过使用随时间变化和电压依赖的电流源为单元输出驱动器建模提供了额外的精度。 定时信息是通过指定接收器引脚电容1的详细模型和不同场景下的输出充电电流来提供的。 接下来介绍CCS模型的细节。
3.7.1接收器引脚电容
接收器引脚电容对应于为NLDM型号指定的输入引脚电容。与NLDM模型的引脚电容不同,CCS模型允许在转换波形的不同部分单独指定接收器电容。由于互连RC和由于单元内的输入设备的米勒效应而引起的等效输入非线性电容,接收器电容值在过渡波形上的不同点处变化。这个电容因此在波形的初始(或前导)部分中被不同地建模
对比波形的尾部。
接收器引脚电容可以在引脚电平(如NLDM型号)中指定,其中通过该引脚的所有时序电弧均使用该电容值。或者,接收器电容可以在定时电弧水平处指定,在这种情况下,可以为不同的定时电弧指定不同的电容模型。接下来介绍这两种指定接收器引脚电容的方法。
指定引脚电平
当在引脚级指定时,接下来给出接收器引脚电容的一维表规范的示例。

index_1指定此引脚的输入转换时间索引。 值中的一维表格指定波形前端部分输入引脚上的波形上升的接收器电容。 类似于上面显示的receiver_capacitance1_rise,receiver_capacitance2_rise指定输入上升波形尾部的上升电容。 下降电容(下降输入波形的引脚电容)分别由属性receiver_capacitance1_fall和receiver_capacitance2_fall指定。
指定时间弧级的电容
接收器引脚电容也可以根据输入转换时间和输出负载用定时电弧指定为二维表格。 下面给出定时弧级的规格示例。 本例指定引脚IN波形引脚部分的接收器引脚上升电容,作为输入引脚IN上的转换时间和输出引脚OUT上的负载的函数。


上面的例子指定了receiver_capacitance1_rise的模型。 该库包含对receiver_capacitance2_rise,receiver_capacitance1_fall和receiver_capacitance2_fall规范的类似定义。 下表总结了四种不同类型的接收机电容类型。 如上所述,这些可以在引脚级别被指定为一维表格,或者在定时级别被指定为二维表格。

3.7.2输出电流
在CCS模型中,非线性时序以输出电流表示。 输出电流信息被指定为依赖于输入转换时间和输出负载的查找表。 输出电流是针对输入转换时间和输出电容的不同组合而规定的。 对于这些组合中的每一种,指定输出电流波形。 实质上,这里的波形是指作为时间函数的输出电流值。 使用output_current_fall指定的下降输出波形的输出电流示例如下所示。

reference_time属性是指输入波形超过延迟阈值的时间。 index_1和index_2是指输入转换时间和输出负载,index_3是时间。 index_1和index_2(输入转换时间和输出电容)每个只能有一个值。 index_3是指时间值,表格值是指相应的输出电流。 因此,对于给定的输入转换时间和输出负载,输出电流波形作为时间的函数是可用的。 还指定了其他输入转换时间和输出电容组合的其他查找表。 类似地描述了使用output_current_rise指定的上升输出波形的输出电流。
3.7.3串扰噪声分析模型
下面介绍一个nand单元的示例模型:


我们现在描述CCS噪声模型的属性。 属性ccsn_first_stage指示该模型用于nand单元的第一级CCB。 如前所述,nand小区只有一个CCB。 属性is_needed几乎总是正确的,除了非功能单元如负载单元和天线单元。 具有值的stage_type既指定该阶段同时具有上拉和下拉结构。所述miller_cap_rise和miller_cap_fall分别表示用于上升和下降的转换输出的米勒电容。
直流电流
dc_current表代表输入引脚电压和输出引脚电压不同组合的输出引脚上的直流电流。 index_1指定输入电压,index_2指定输出电压。 二维表中的值指定CCB输出处的直流电流。 输入电压和输出电流都以库为单位(通常为伏特和毫安)。 对于从输入IN1到nand单元的输出的CCS噪声模型,输入电压-0.9V和输出电压0V导致输出端的直流电流为0.42mA。
输出电压
output_voltage_rise和output_voltage_fall结构分别包含CCB输出上升和下降的时序信息。 这些被指定为CCB输出节点的多维表格。 多维表格被组织为多个表格,规定了不同输入转换时间和输出净电容的上升和下降输出电压。 每个表的index_1指定轨到轨输入转换时间速率,index_2指定输出净电容。 index_3指定输出电压跨越特定阈值点(此时0.9V的Vdd电源的30%,70%和90%)的时间。 在每个多维表中,电压交叉点是固定的,CCB输出节点越过电压的时间值在index_3中指定。
传播噪声
propagated_noise_high和propagated_noise_low模型指定通过CCB提供噪声传播信息的多维表。 这些模型表征从CCB的输出到串扰毛刺(或噪声)传播的特征。 表征在输入处使用对称三角波形。 propagated_noise的多维表格被组织成多个表格,指定CCB输出处的毛刺波形。 这些多维表格包含:
I. 输入毛刺幅度(在index_1中),
II. 输入毛刺宽度(在index_2中),
III.CCB输出净电容(在index_3中)和
IV. 时间(在index_4)。
CCB输出电压(或通过CCB传播的噪声)在表中指定。
两阶段单元的噪声模型
就像单级单元一样,两级单元(如单元和单元)的CCS噪声模型通常被描述为定时弧的一部分。 由于这些单元包含两个单独的CCB,因此噪声模型分别针对ccsn_first_stage和另一个针对ccsn_last_stage指定。 例如,对于双输入单元,CCS噪声模型由第一阶段和最后阶段的单独模型组成。 接下来将说明这一点。


为IN2指定的ccsn_last_stage内的模型与为IN1描述的ccsn_last_stage中的模型相同。
多阶段和顺序单元的噪声模型
通常将复杂组合或连续单元的CCS噪声模型描述为引脚规范的一部分。这与一级或二级单元如nand,and,and不同,或者CCS噪声模型通常在引脚对的基础上指定为定时弧的一部分。复杂的多级单元和顺序单元通常由所有输入引脚的ccsn_first_stage模型和输出引脚的另一个ccsn_last_stage模型来描述。这些单元的CCS噪声模型不是定时弧的一部分,但通常是为引脚指定的。如果输入和输出之间的内部路径达到两个CCB级,则噪声模型也可以表示为引脚对定时弧的一部分。通常,多级单元描述可以将一些CCS噪声模型指定为引脚对定时弧的一部分,而可以使用引脚描述来指定其他一些噪声模型。下面的例子具有CCS噪声模型和引脚描述以及部分定时弧。


注意上面的触发器单元的一些CCS模型是用引脚定义的。 在输入引脚上定义引脚规格的那些被指定为ccsn_first_stage,并且输出引脚QN上的CCS模型被指定为ccsn_last_stage。 此外,两阶段CCS噪声模型被描述为CDN到Q的定时弧的一部分。因此,该示例显示了一个单元可以将CCS模型指定为引脚规范的一部分并且作为定时组的一部分。
3.7.4其他噪声模型
除了上述的CCS噪声模型之外,一些单元库还可以提供用于表征噪声的其他模型。在CCS噪声模型出现之前,这些模型中的一些被利用。如果CCS噪声模型可用,则不需要这些附加模型。我们在下面介绍一些这些早期的噪声模型的完整性。直流裕度的模型:直流裕度是指在单元的输入引脚允许的最大直流变化,它将保持单元处于稳定状态,也就是说,不会在输出端产生毛刺。例如,输入低电平的DC余量是指输入引脚上的最大DC电压值,而不会在输出端引起任何转换。噪声抑制模型:噪声抑制模型指定了输入引脚允许的毛刺幅度。这些通常用二维表格来描述,毛刺宽度和输出电容作为两个指标。表中的值对应于输入引脚可以允许的毛刺幅度。这意味着任何小于指定幅度和宽度的毛刺都不会传播通过单元。噪声抑制模型的不同变化可以被指定,例如:

3.8功耗建模
单元库包含与单元中的功耗有关的信息。 这包括有功功率以及备用或泄漏功率。 顾名思义,有功功率与设计中的活动有关,而备用功率是待机模式下的功耗,主要是由于泄漏。
3.8.1 Active Power
有功功率与单元输入和输出引脚的活动有关。电池中的有功功率是由于输出负载的充电以及内部开关。这两个通常分别被称为输出开关电源和内部开关电源。输出开关功率与单元类型无关,仅取决于输出容性负载,开关频率和单元电源。内部开关功率取决于单元的类型,因此这个值包含在单元库中。下面介绍库中内部开关电源的规格。内部开关电源被称为单元库中的内部电源。当单元的输入或输出有活动时,这是单元内的功耗。对于一个组合单元,输入引脚转换可能导致输出切换,从而导致内部开关电源。例如,逆变器单元在输入开关(在输入处具有上升或下降转换)时消耗功率。内部权力在library中被描述为:


上面的例子显示了从输入引脚A到单元输出引脚Z1的功耗。模板中的2x2表格根据引脚A的输入转换和引脚Z1的输出电容。请注意,虽然表中包含输出电容,但表格值仅对应于内部开关,不包括输出电容的贡献。这些值代表每个开关转换(上升或下降)单元内耗散的内部能量。单位是从库中的其他单位派生的(通常电压是伏(V),电容是皮法(pF),并且这以皮焦(pJ)为单位)。库中的内部功率因此实际上指定了每个转换耗散的内部能量。除了电源表之外,上面的例子还说明了电源引脚,接地引脚和断电功能的规格,该功能规定了电池关闭时的状态。这些结构允许在设计中使用多个电源,并且可以关断不同的电源。下图显示了每个单元的电源管脚规格。


功率规格语法允许用于上升和下降功率的独立结构(指输出意义)。 就像定时弧一样,功率规格也可以是状态相关的。 例如,异或单元的状态相关功耗可以被指定为取决于各种输入的状态。 对于组合电池,开关电源是在输入输出引脚对的基础上指定的。 然而,对于具有互补输出Q和QN的顺序单元如触发器,CLK-> Q转换也导致CLK-> QN转换。 因此,库可以将内部开关功率指定为三维表格,如下所示。 以下示例中的三个维度分别是CLK处的输入摆动和Q和QN处的输出电容。


即使输出或内部状态没有转换,开关电源也可以消散。 一个常见的例子是在触发器的时钟引脚切换的时钟。 触发器通过每个时钟切换消耗功率 - 典型地由于触发器单元内的反相器的切换。 即使触发器输出不切换,由时钟引脚触发引起的功耗也会消失。 因此,对于顺序单元,输入引脚功率是指单元内部的功耗,即输出不转换时的功耗。 输入引脚功率规格的一个例子如下。


这个例子显示了CLK引脚切换时的功耗规格。 这代表即使在输出不切换时由于时钟切换而引起的功耗。
Double Counting Clock Pin Power?
请注意,由于CLK-> Q转换,触发器还包含功耗。 因此,重要的是,CLK-> Q功率规格表中的值不包括由于与输出Q不切换时的条件相对应的CLK内部功率所造成的贡献。 以上准则是指应用工具对功率表使用的一致性,保证在功率计算过程中,由时钟输入指定的内部功率不会被重复计算。
3.8.2 Leakage Power
大多数标准电池的设计使得功率仅在输出或状态改变时耗散。当电池通电时,任何功率消耗,但没有活动是由于非零泄漏电流。泄漏可能是由于MOS器件的亚阈值电流或由于穿过栅氧化层的隧穿电流造成的。在前几代CMOS工艺技术中,泄漏功率可以忽略不计,在设计过程中一直没有考虑到这一点。然而,随着技术的缩小,泄漏功率正在变得显着并且与有功功率相比不再可以忽略不计。如上所述,泄漏功率贡献来自两个现象:MOS器件中的亚阈值电流和栅极氧化物隧穿。通过使用高Vt电池,可以降低亚阈值电流;然而,由于高Vt电池的速度降低而存在折衷。高Vt电池漏电量较小,但速度较慢。类似地,低Vt电池具有更大的泄漏,但是允许更高的速度。由于栅极氧化物隧穿导致的贡献不会由于切换到高(或低)Vt单元而显着改变。因此,控制泄漏功率的可能方式是利用高Vt单元。类似于高Vt和标准Vt单元之间的选择,设计中使用的单元的强度是泄漏和速度之间的折衷。较高强度的电池具有较高的泄漏功率,但提供较高的速度。第10.6节详细介绍了与电源管理有关的权衡。亚阈值MOS泄漏对温度具有很强的非线性依赖性。在大多数工艺技术中,随着器件结温从25℃提高到125℃,亚阈值漏电流可以增长10倍到20倍。由于栅极氧化物隧穿造成的贡献相对于器件的温度或Vt是相对不变的。在工艺技术100纳米及以上,栅氧化层隧道效应可以忽略不计,对于65纳米或更精细的技术而言,在较低温度下漏电成为重要的原因。例如,对于65nm或更精细的工艺技术,栅极氧化物隧穿泄漏可能等于室温下的亚阈值泄漏。在高温下,亚阈值泄漏继续成为泄漏功率的主要来源。为库中的每个单元指定泄漏功率。 例如,逆变器单元可能包含以下规格:

这是单元中的泄漏功耗 - 泄漏功率单元在库的标题中指定,通常以纳瓦为单位。 通常,泄漏功率取决于单元的状态,并且可以使用when条件来指定依赖于状态的值。例如,INV1单元可以具有以下规格:

我是INV1单元的输入引脚。 应该注意的是,规范包括一个默认值(在何时条件之外),并且默认值通常是在何时条件内指定的泄漏值的平均值。
3.9单元库中的其他属性
除了定时信息之外,库中的单元描述还指定定时弧的区域,功能和SDF条件。 这些在本节中简要描述; 有关更多详细信息,请参阅Liberty手册。
Area Specification
区域规范提供了一个单元格或单元组的区域。

以上规定了单元面积为2.35个面积单位。 这可以表示单元使用的实际硅片面积,也可以是面积的相对测量值。
Function Specification
函数规范指定了引脚(或引脚组)的功能。

上面指定了双输入与单元的Z引脚的功能。
SDF Condition
SDF条件属性支持标准延迟格式(SDF)文件生成和反向注册时的条件匹配。 正如when指定用于时序分析的状态相关模型的条件,SDF批注的状态相关时序使用的相应规范由sdf_cond表示。这由以下示例说明:

3.10特征和操作条件
单元库指定了创建库的特征和操作条件。 例如,库的标题可能包含以下内容:

标称环境条件(标记为nom_process,nom_temperature和nom_voltage)指定了库的特征化过程,电压和温度。 操作条件指定了来自该库的细胞将被使用的条件。 如果表征和操作条件不同,则延迟计算期间获得的定时值需要降低; 这是通过使用库中指定的降额因子(k因子)来实现的。 在不同于用于表征的条件下使用降级来获得定时值会引起定时计算中的不准确性。 只有在感兴趣的条件下表征图书馆是不可行的时,才采用降额程序。
What is the Process Variable?
与物理量的温度和电压不同,该过程不是可量化的量。数字表征和验证的目的很可能是一个缓慢,典型或快速的过程。那么,1.0(或其他值)的过程值是什么意思呢?答案如下。图书馆的表征是一个耗时的过程,表征各个流程角的图书馆可能需要数周的时间。过程变量设置允许以特定过程角为特征的库用于不同过程角的计时计算。过程的k因子可用于减免从特征化过程到目标过程的延迟。如上所述,降额因素的使用在时间计算中引入了不准确性。在整个过程条件下降额特别不准确,很少使用。总而言之,指定不同过程值(比如说1.0或其他)的唯一功能是允许在很少(如果有的话)使用的条件下降额。
3.10.1使用K因子降额
如上所述,当操作条件不同于表征条件时,降额因子(被称为k因子)用于获得延迟。 k因子是近似因子。 库中k因子的一个例子如下所示:

这些因素用于计算延迟计算过程中工作条件的过程,电压或温度与库中的标称条件不同时的时间。 请注意,k_volt因子为负,意味着延迟随着电压供应的增加而减小,而k_temp因子为正值,这意味着延迟通常随着温度的升高而增加(除了第2.10节中描述的出现温度倒置现象的电池外)。 使用k因子如下:

例如,假设一个库的特点是在1.08V和125℃的缓慢过程模型。 如果要获得1.14V和100C的延迟,慢速过程模型的单元上升延迟可以得到:

假设使用上面概述的k_factors,则先前的等式映射到

在降低的情况下延迟达到原始延迟的约94.48%。
3.10.2库单元
单元格描述具有库单元的所有值。 这些单元是使用Liberty命令集在库文件中声明的。 电压,时间,电容和电阻的单位如下例所示:


在本文中,我们假定库的时间单位是纳秒(ns),电压是伏特(V),内部功率是每微微焦耳(pJ),漏电功率是纳瓦(nW),电容值是 以皮法(pF)表示,电阻值以公制为单位,面积单位为平方微米(mm2),除非明确规定以帮助解释。
:
浙公网安备 33010602011771号