时钟树综合
时钟树偏移分析
拥塞图分析
为了得到更准确的拥塞图,执行GlobalRoute命令进 为了得到更准确的拥塞图,执行GlobalRoute命令进 GlobalRoute 行全局布线,再执行axgDisplayPLCongestionMap axgDisplayPLCongestionMap命令对拥 行全局布线,再执行axgDisplayPLCongestionMap命令对拥 塞图显示方式进行设置,然后按快捷键F6 F6在版图上显示布 塞图显示方式进行设置,然后按快捷键F6在版图上显示布 线拥塞的情况如图所示,从中可知仅存在4处蓝色( 线拥塞的情况如图所示,从中可知仅存在4处蓝色(溢出数 1)区域 因此可判断拥塞在允许范围内。 区域, 为1)区域,因此可判断拥塞在允许范围内。
CTS开始时的设计状态 开始时的设计状态
布局-----完成 布局-----完成 ----电源和地网络---------预布线 电源和地网络-----预布线 估计阻塞-----------可接受 估计阻塞------可接受 估计时序------可接受( ------可接受 估计时序------可接受(~0ns) 估计最大电容/传输时间---------没有违规 估计最大电容/传输时间-----没有违规 高扇出网络: 高扇出网络: Reset,Scan Enable已经综合 Enable已经综合 时钟还没有综合
时钟树偏移分析
执行命令
执行命令astSkewAnalysis得出时钟 执行命令astSkewAnalysis得出时钟 astSkewAnalysis 偏移报告,如图所示,从图中可知最 偏移报告,如图所示, 长时钟路径延时为1.487ns 1.487ns, 长时钟路径延时为1.487ns,最短时 钟路径延时为1.409ns 1.409ns, 钟路径延时为1.409ns,全局时钟偏 移为0.078ns 0.078ns。 移为0.078ns
带有SDC不确定的传播时钟 不确定的传播时钟 带有
如果SDC不确定值包括抖动和时间裕量,Astro仍 如果SDC不确定值包括抖动和时间裕量,Astro仍 SDC不确定值包括抖动和时间裕量,Astro 能计算实际的时钟网络延时,同时模仿这些效应 能计算实际的时钟网络延时, 调整SDC set_clock_uncertainty的值 SDC中 调整SDC中set_clock_uncertainty的值 通过估计偏移值减少这个值 执行相同的命令 sdc “set_propagated_clock [all_clocks] set_propagated_clock [all_clocks]” 调节下面的时序设置项 Uncertainty” Unset “Ignore Clock Uncertainty Ignore Clock” Unset “Ignore Propagated Clock Ignore
Starting Point Before CTS
CTS目标 目标
符合buffer约束(不符合该约束会报违规) 符合buffer约束(不符合该约束会报违规) buffer约束 最大传输时间延迟 最大负载电容 最大扇出 最大buffer buffer级数 最大buffer级数 符合时钟树目标(不会报违规) 符合时钟树目标(不会报违规) 最大偏移 根据Min/Max delay插入延迟 根据Min/Max delay插入延迟
同步Pins和忽略 和忽略Pins 同步 和忽略
同步Pins: 同步Pins: CTS优化达到 CTS优化达到 buffer约束 约束( buffer约束(最大传 输时间/电容) 输时间/电容)和时 钟树目标(偏移, 钟树目标(偏移,插 入延时等) 入延时等)) 忽略Pins: 忽略Pins: CTS加入一个小的 CTS加入一个小的 buffer去隔离所有 buffer去隔离所有 的Pins 忽略buffer buffer约束 忽略buffer约束 最大传输时间/ (最大传输时间/电 容和时钟树目标) 容和时钟树目标)
时钟树时序分析
使用astReportTiming命令进行时序分析得 使用astReportTiming命令进行时序分析得 astReportTiming 如图所示,从中可知建立时间、保持时间、 如图所示,从中可知建立时间、保持时间、最 大电容和最大过渡时间满足要求。 大电容和最大过渡时间满足要求。
指定非默认的偏移(例 指定非默认的偏移 例3)
不是一个时钟, 不是一个时钟,现在假设所有的时钟有不同 的不确定值,用更好的方法: 的不确定值,用更好的方法: 输入axSetIntparam acts ingore acts” 输入axSetIntparam “acts “ingore set_clock_uncertainty” 命令让Astro set_clock_uncertainty 0命令让Astro SDC文件中的值而不是GUI中的偏移目标 文件中的值而不是GUI 用SDC文件中的值而不是GUI中的偏移目标 值
时钟buffer约束 约束 时钟
最大tran/cap/fanout: 最大tran/cap/fanout: 如果在多个地方指定 ,SDC文件或Astro默 文件或Astro (库,SDC文件或Astro默 Astro使用最小值 认), Astro使用最小值 最大buffer buffer级数 最大ห้องสมุดไป่ตู้uffer级数 用默认的初始值(20) 用默认的初始值(20) 只有在仔细分析或基于 以住经验的基础上才需 要调整 如果设置太紧, 如果设置太紧,违规可能 不能修复
插入延时和忽略约束
插入延时目标: 插入延时目标: 用这些设置去控制 最小/ 最小/最大插入延时 默认在SDC SDC的插入 默认在SDC的插入 延时具有优先, 延时具有优先,除非 执行axSetIntparam 执行axSetIntparam “acts “ingore acts” ingore acts set_clock_latency” set_clock_latency 命令才忽略SDC SDC设 1命令才忽略SDC设 置 你可以选择完全忽 SDC或库的约束进 略SDC或库的约束进 行CTS
Post-CTS设置 传播时钟 设置:传播时钟 设置
CTS后,Astro能计算实际的时钟网络延时而 CTS后,Astro能计算实际的时钟网络延时而 不是使用SDC SDC中估计的理想值 不是使用SDC中估计的理想值 执行下面命令: 执行下面命令: sdc “set_propagated_clock [all_clocks]” 调整下面的时序设置项 set “Ignore Clock Uncertainty” Unset “Ignore Propagated Clock”
CTS流程 流程
时钟树综合
建立buffer树去平衡负载达到最小时钟偏移 建立buffer树去平衡负载达到最小时钟偏移 buffer
时钟树综合
延迟线加入去符合插入延迟目标
时钟树的起点和终点
时钟树起点是在.SDC文件 时钟树起点是在.SDC文件 .SDC 定义的时钟源: 定义的时钟源: create_clock –p 2 CLOCK p 时钟树终点在Astro Astro定义 时钟树终点在Astro定义 Pins” 的”stop Pins 两种类型的” Pins” 两种类型的”stop Pins 同步Pins: Pins:时序单元和宏 同步Pins:时序单元和宏 单元的Clock 单元的Clock Pins 忽略Pins: Pins:其它 忽略Pins:其它
默认的Skew Optimization 默认的
时钟延时在每一个时钟域内全部进行平衡, 时钟延时在每一个时钟域内全部进行平衡,经过所 有的主时钟和产生时钟的clock pin, clock有的主时钟和产生时钟的clock-pin,去减少时钟 偏移到0 偏移到0,或尽可能小
时钟公共选项设置
默认的设置如图 时钟公共选项设置 在CTS和优化之前进 CTS和优化之前进 行设置
指定非默认的偏移(例 指定非默认的偏移 例1)
若所有时钟在 SDC文件中有 SDC文件中有 set_clock_unc ertainty值为 ertainty值为 0.2ns,你想在 0.2ns,你想在 CTS时用这个值 CTS时用这个值 而不是默认值0 而不是默认值0, 则在Target 则在Target Skew中设置 中设置0.2 Skew中设置0.2 所有时钟用相 同的偏移值进 行综合
CTS) 时钟树综合 (CTS CTS
列出在CTS前的设计状态 列出在CTS前的设计状态 CTS 为设计单元进行CTS 为设计单元进行CTS 识别隐含的时钟树起点和终点, 识别隐含的时钟树起点和终点,明确什 么时候需要更改 通过约束和目标来控制CTS 通过约束和目标来控制CTS 识别三种不同的时钟偏移优化方法 执行推荐的CTS CTS和优化流程 执行推荐的CTS和优化流程 分析时序和CTS CTS后的时钟具体情况 分析时序和CTS后的时钟具体情况
Post-CTS优化 根据需要反复执行 优化:根据需要反复执行 优化
对于一个大的设计, 对于一个大的设计,每 次优化目标只有一个, 次优化目标只有一个,如 修复hold hold时间等 修复hold时间等
Post-CTS布局优化结果 布局优化结果
通过逻辑优化和单元重新放 置来修复时序( 置来修复时序(建立时间和保 持时间)、最大电容和最大过 持时间) 渡时间违规可能会影响时钟 网络----FFS可能会被移动. 网络----FFS可能会被移动. ----FFS可能会被移动 这将可能影响时钟偏移和插 入延时. 入延时. 因此要分析时钟偏移和插入 延时! 延时! 如果想不影响时钟偏移和插 入延时,则需保持FFS FFS位置固 入延时,则需保持FFS位置固 执行clock >Utilitiesclock定,执行clock->UtilitiesTree… >Mark Clock Tree
时钟树综合结果
时钟buffer增加 时钟buffer增加 buffer 阻塞可能会增加 非时钟树单元可能 会被移动到不理想 的位置 可能会引起新的时 序和最大tran/cap 序和最大tran/cap 违规