欢迎光临散文网 会员登陆 & 注册

时钟树综合

2023-09-19 10:37 作者:西安简矽技术  | 我要投稿

在数字集成电路设计中,时钟信号是数据传输的基本,它对于同步数字系统的功能、性能和稳定性起决定性作用,所以时钟信号的特性及其分配网络至关重要。时钟信号通常是整个芯片中有最大扇出,最长距离,最高速度的信号,其必须保证在各种极端条件下,时序均能满足要求,而时钟树综合作为后端设计流程中的关键步骤,提供了对时钟信号的平衡和分配方法。


时钟树综合(clock tree synthesis)是通过建立buffer/inverter的时钟网络去平衡时钟路径的延迟。其本质是通过减小各个时钟路径上的延迟差异,以达到时序收敛的目的。

时钟信号

时钟信号的物理特性有很多,时钟周期(频率)时钟迟滞(latency)时钟的不确定性(uncertainty)是三个必不可少的参数。


周期为时钟波形中相邻上升沿或下降沿之间的时间。在设计中,时钟用create_clockcreate_generated_clock命令来定义。例如,定义周期20ns的时钟命令为create_clock -period 20 CLK。定义clk2是clk1的二分频时钟的命令为create_generated_clock -name clk2 -source clk1 -divide_by 2 FF1/Q


时钟迟滞(latency)又称为时钟延迟,它包括两个部分,时钟源延迟(clock source latency),即时钟源到当前模块的input port所需时间,如下图红线所示。时钟网络延迟(clock network latency),即时钟从input port到寄存器CK pin所需的时间,如下图绿线所示。时钟网络延迟也就是时钟树延迟。在理想时钟的情况下,假定时钟网络延迟为零。对于上述两种延迟的定义,可以通过不同的命令加以区分。

例如,set_clock_latency 2.0 -source [get_clocks {cpu_clk}],该命令定义了时钟源延迟;set_clock_latency 2.0 [get_clocks {cpu_clk}],该命令定义了时钟网络延迟,两者可通过-source区分。

图1 时钟迟滞

时钟不确定性(uncertainty)又称为时钟抖动(jitter),如下图所示,它取决于时钟发生器的结构,所以时钟抖动是先天存在的,无法通过时钟树综合进行优化,只能考虑其影响。通常将时钟不确定性设置得较大,从而给时钟树偏差(skew)预留一定的范围。在时钟树综合之后,可以将该值设置得较小,一般视工艺情况而定。可通过以下命令设置:set_clock_uncertainty 0.3 [get_clock {*}]

图2 时钟抖动

时钟信号偏差(skew)指同一时钟到达该时钟域内不同寄存器CK pin之间的时间偏差。时钟信号偏差是衡量时钟树性能的重要参数,而时钟树综合的目的就是为了减少偏差。

标准设计约束SDC文件

SDC文件是由一组命令组成的设计约束的标准,它的主要内容为时序约束(timing constraints),因此它也被称为时序约束文件。


简单介绍一下SDC文件中的几类常用约束:

1.clock相关约束

包括周期period,占空比duty cycle,时钟迟滞latency,时钟不确定性uncertainty等;

2.IO端口约束

包括输入延迟input_delay,输出延迟output_delay,输入驱动input_transition,drive,driving_cell,输出负载load等;

3.逻辑设计规则

包括最大转换时间max_transition,最大扇出max_fanout,最大负载电容max_capacitance等;

4.时序特例

包括false_path,多周期路径multicycle_path等。

时钟树综合基础和策略

做时钟树综合时需要告诉ICC工具buffer和inverter长到哪里为止,所以需要定义几类pin。1.stop pinBuffer和inverter tree长到哪里为止,ICC工具默认所有的pin为stop pin;2.float pin告诉工具该pin后还有一段delay,从而使工具在balance时会考虑到float pin后的delay;3.ignore pin工具只会在该pin上做buffer和inverter tree,但不会去做任何的balance;4.non-stop pin工具不会认为这是tree的终点,会穿过该pin继续向前长tree。


在SoC芯片设计中,时钟数量往往非常庞大,结构复杂,做时钟树时需要一定的策略。下面介绍几种比较常见的例子,自我交叉(self-reconvergent)相互交叉(crossover)OCVCPPR


1、自我交叉(self-reconvergent)

如下图所示,从PLL出来的时钟,经过不同的处理(分频)然后通过一个MUX汇集到一起,在这种情况下,我们可先综合balance右边tree部分的skew,再balance左边circuit1和circuit2的skew,从而balance掉整个时钟树的skew。

图3 自我交叉

2、相互交叉(crossover)

如下图,tree3是两个不同时钟所选择后的公共部分,在做时钟树综合时,可首先综合tree3,balance掉tree3的skew,然后对tree1进行综合,同时根据tree3的结果balance掉tree1的skew。最后根据tree3的结果,balance掉tree2的skew。

图4 相互交叉

3、OCV与CPPR在时钟树综合中的应用

片上误差OCV对时序路径的延时偏差(skew)有着更严格的要求。因此在做时钟树时需要考虑OCV的影响。如下图所示。左侧结构时钟的公共路径(common path)更多,在做时序分析时,因为公共路径的悲观消除(CPPR),时序更加容易收敛。

图5 CPPR的时钟树策略


时钟树综合的评论 (共 条)

分享到微博请遵守国家法律