ICC2基础知识19--Defining Clocks(二)
时钟网络具有以下特征:
·延迟(Latency)
这是时钟信号从原始时钟源传播到设计中的sequential elements所花费的时间。
延迟由以下两部分组成:
◦ 源延迟
这是设计中从时钟源到时钟定义引脚的延迟。
◦ 网络延迟
这是从时钟定义点到寄存器时钟引脚的延迟。
可以使用以下方法之一表示网络延迟:
▪ 估计并明确指定每个时钟的延迟
这被称为理想的网络延迟,相应的时钟为称为理想时钟。理想的时钟通常在执行之时钟树综合之前使用。
▪ 允许工具通过沿时钟网络传播延迟来计算延迟
这被称为传播网络延迟,相应的时钟被称为传输时钟。只有在执行时钟树综合后,才能使用传播的时钟。
·不确定性(Uncertainty)
这是相同时钟或不同时钟的寄存器时钟引脚处的时钟到达时间的最大变化。
时钟不确定性包括以下两个部分:
◦ 相对于理想时钟波形,时钟抖动是在源时钟处时钟的连续边缘的生成中的变化。
◦ 时钟偏斜,即从block的时钟源到不同寄存器时钟引脚的不同传播延迟导致的时钟到达时间的差异。
这仅在时钟树综合之前适用。在时钟树综合之后,时钟偏斜由传播的时钟网络延迟来替代。
·过渡时间(Transition time)
这是信号从逻辑低变为逻辑高(上升时间)或从逻辑高变为逻辑低(下降时间)所需的时间。
下图显示了the timing effects of clock networks。
2.Specifying Clock Source Latency要为理想时钟和传播时钟设置源延迟,请使用set_clock_latency -source命令指定以下信息:
·延迟值
·受影响的对象列表,其中可以包含一个或多个时钟、端口或管脚。如果指定的对象列表是管脚或端口,则必须使用-clock选项指定与理想网络延迟相关的时钟。
此外,您可以指定
·通过使用-early和-late选项指定源延迟的早期和晚期变化。该工具对约束时钟计时的每个起点和终点使用最严格的源延迟值(早期或晚期)。对于setup检查,它使用每个起点的晚期值和每个终点的早期值。对于hold检查,它使用每个起点的早期值和每个终点的晚期值,如下图所示。
·通过使用-dynamic选项,源延迟的动态变化分量,即在连续时钟周期之间不同的分量。
对于具有多个场景的设计,默认情况下,源延迟仅适用于当前场景。指定的源延迟
·对于特定模式的所有场景,请使用-modes选项。
·对于特定拐角和当前模式的所有场景,请使用-corners选项。
·特定模式和角落的所有场景,使用-modes和-corners选项
·特定场景,使用-scenations选项。使用此选项时,不能使用-modes或-corners选项。
以下命令指定时钟CLK1的源延迟,外部时钟网络延迟从1.5到2.5变化,动态分量为0.5:
要删除使用set_clock_latency命令指定的源延迟,请使用remove_clock_latency命令。
3.Specifying Ideal Network Latency要将时钟指定为理想时钟,请使用set_ideal_network命令。在完成时钟树综合之前,请将所有时钟指定为理想时钟。
要指定理想的网络延迟,请使用set_clock_latency命令并指定以下信息:
·延迟值
·受影响对象的列表,可能包含一个或多个时钟、端口或引脚。
如果指定的对象列表是引脚或端口,则必须通过使用-clock选项指定关联的时钟。如果您指定时钟网络的引脚或端口上的理想延迟对应的时钟对象,应用于管脚或端口的值应用于所有在扇出中register时钟引脚,并覆盖应用于时钟对象的延迟。
此外,您可以将理想的网络延迟设置限制为仅
·使用-rise或-fall选项显示时钟的上升沿或下降沿。否则,该设置适用于上升和下降边缘。
·使用-min或-max选项的最小或最大操作条件。否则,该设置适用于所有操作条件。
以下示例将当前设计的时钟名称CLK1的预期上升延迟设置为1.2,下降延迟设置为0.9:
要删除使用set_clock_latency命令指定的理想网络延迟,请使用remove_lock_latency命令。
4.Specifying Clock Uncertainty
要指定时钟不确定度,请使用set_clock_uncertainty命令,并指定不确定度值和以下值之一:
·简单的不确定性或抖动,即同一时钟连续边缘之间的不确定性, 通过指定由时钟、端口或引脚组成的对象列表.
简单的不确定性适用于您指定的时钟、端口或引脚扇出中的所有寄存器时钟引脚.
·通过使用以下方法之一,两个交互时钟之间不确定性:
◦ 使用-from、-rise_from或-fall_from选项获取源时钟
◦ 使用-to、-rise_to或-fall_to选项设置目标时钟
当指定两个时钟之间的时钟间不确定性时,如果有从第一个时钟到第二个时钟以及从第二个钟到第一个时钟的定时路径,则必须指定两个方向的不确定性,即使值相同。
指定简单时钟或时钟间不确定性:
·setup检查,使用-Setup选项。
·hold检查,使用-Hold选项。
例如,要为通向由时钟CLK1计时的端点的所有路径设置0.21的简单setup不确定性和0.33的hold不确定性,请使用以下命令:
要在名为CLKA和CLKB的时钟之间设置2的时钟间不确定性,对于setup和hold,请使用以下命令:
要删除时钟不确定性设置,请使用remove_clock_uncertainty命令。
5.Specifying Clock Jitter使用set_clock_jitter命令在主时钟上设置以下类型的时钟抖动之一:
·周期抖动模拟同相边缘之间的变化(即,它模拟相隔多个时钟周期的边缘之间的差异)。
·占空比抖动模拟异相边缘之间的变化(即,相隔0.5、1.5、2.5……个周期的边缘)。
时钟抖动由从主时钟生成的所有启动时钟和捕获时钟继承。
为了确定启动时钟和捕获时钟之间的时钟抖动的正确类型,命令将启动边缘和捕获边缘跟踪到主时钟的相应边缘,如下所示:
·如果主时钟的相应边缘相隔多个周期,则使用周期抖动。
·如果它们不是相隔整数个周期,则使用占空比抖动。
·如果它们被追溯到主时钟的同一边缘,则不使用时钟抖动。
要获取主时钟及其生成的所有时钟的周期抖动和占空比抖动报告,请使用report_clock_jitter命令。
要从主时钟中删除时钟抖动设置,请使用remove_clock_jitter命令。从主时钟中消除时钟抖动后,将自动从生成的时钟中消除。
6.Specifying Ideal Clock Transition
理想时钟的默认转换时间为零。要为理想时钟指定非零过渡时间,请使用set_clock_transition命令并指定以下内容:
·理想过渡值
·适用的时钟列表
此外,您可以指定过渡时间仅适用于:
·使用-rise或-fall选项显示时钟的上升沿或下降沿。
·使用-min或-max选项的最小条件或最大条件。
该工具使用您为指定的可传递扇出时钟中的所有寄存器时钟引脚指定的转换时间。
例如,对于当前场景,要在名为CLK1的时钟的所有寄存器的时钟引脚处指定0.64的转换时间,请使用以下命令:
要删除此命令指定的理想转换,请使用remove_clock_transition命令。
7.Controlling the Clock Marking Behavior从clock root开始,该工具遍历每个时钟网络,并通过将每个引脚的is_clock_used_as_clock属性设置为true来标识所有时钟网络引脚。但是,如果时钟网络到达一个引脚,超出该引脚就没有sequential pins,如下图所示,该工具会将该引脚的is_clock_used_as_data属性设置为true。时钟网络交叉到数据网络的这种引脚被称为clock-to-data pin。
您可以使用以下命令来识别block中的时钟到数据引脚:
识别时钟网络引脚和时钟到数据引脚的过程称为时钟标记。IC编译器II和PrimeTime工具的时钟标记行为略有不同。通过将time.clock_marking应用程序选项设置为PrimeTime,可以指定IC编译器II工具使用与PrimeTime工具相同的时钟标记行为。默认值为native。
8.Enabling Clock-to-Data Analysis for Ideal Clocks
如果传播的时钟到达clock-to-data引脚,则工具使用传播的时钟抵达时间作为数据到达时间,将传播的时钟转变时间作为引脚处的数据转变时间。
当理想时钟到达clock-to-data引脚时,默认情况下,工具不使用理想时钟延迟作为数据到达时间,而使用理想时钟转换时间作为引脚处的数据转换时间。要使用clock-to-data引脚的理想时钟延迟和转换时间,请将time.enable_clock_to_data_analysis应用程序选项设置为true。
9.Unateness of Clocks时钟信号为:
·如果时钟源的上升沿只能导致寄存器时钟引脚的上升沿,而时钟源的下降沿只能导致寄存器时钟引脚的下降沿,则为Positive unate。
·如果时钟源的上升沿只会导致寄存器时钟引脚的下降沿,而时钟源的下降沿只会造成寄存器时钟引脚上升沿,则为Negative unate。换句话说,时钟信号被反相。
·如果由于时钟路径中的non-unate timing arc导致时钟感测不明确。例如,通过XOR门的时钟not unate。Clock sense可以是正的或负的,这取决于XOR门的其他输入的状态。则为Non-unate。
下图显示了展示unate 和non-unate时钟信号的时钟逻辑示例。
10.Propagating a Specific Clock Sense
如果时钟网络仅包含导致正或负unate时钟信号的逻辑,则该工具可以导出到达每个寄存器时钟引脚的时钟信号的sense。如果时钟网络包含导致non-unate时钟信号的逻辑,则可以通过使用set_sense命令仅传播特定的时钟感测来解决此歧义。
以下示例仅传播名为CLK1的时钟的正sense和名为CLK2的时钟的负sense,超出名为U29/z的单元引脚:
以下示例防止工具将所有时钟(包括时钟和数据)传播到名为U32/z的管脚之外:
本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
0条评论