时钟树综合
布局-----完成 电源和地网络-----预布线 估计阻塞------可接受 估计时序------可接受(~0ns) 估计最大电容/传输时间-----没有违规 高扇出网络: Reset,Scan Enable已经综合 时钟还没有综合
Starting Point Before CTS
CTS目标
时钟树综合 (CTS)
列出在CTS前的设计状态 为设计单元进行CTS 识别隐含的时钟树起点和终点,明确什 么时候需要更改 通过约束和目标来控制CTS 识别三种不同的时钟偏移优化方法 执行推荐的CTS和优化流程 分析时序和CTS后的时钟具体情况
CTS开始时的设计状态
在CTS期间进行优化
在CTS期间进行优化
重新连接扫描链
在布局前打断扫描链,让布局集中在功能路径 在时钟树生成之后,要进行重新连接扫描链和优化扫描链, 重新连接扫描链和优化扫描链在下一个优化步骤包括修复 hold time 相同组的FFS,在打断前先’traced’ 不同的顺序:基于布局,减少布线资源
时钟树偏移分析
拥塞图分析
为了得到更准确的拥塞图,执行GlobalRoute命令进 行全局布线,再执行axgDisplayPLCongestionMap命令对拥 塞图显示方式进行设置,然后按快捷键F6在版图上显示布 线拥塞的情况如图所示,从中可知仅存在4处蓝色(溢出数 为1)区域,因此可判断拥塞在允许范围内。
Post-CTS设置:传播时钟
CTS后,Astro能计算实际的时钟网络延时而 不是使用SDC中估计的理想值 执行下面命令: sdc “set_propagated_clock [all_clocks]” 调整下面的时序设置项 set “Ignore Clock Uncertainty” Unset “Ignore Propagated Clock”
时钟树综合结果
时钟buffer增加 阻塞可能会增加 非时钟树单元可能 会被移动到不理想 的位置 可能会引起新的时 序和最大tran/cap 违规
Post-CTS布局优化
Post-CTS布局优化能 优化时序和减少阻塞 执行逻辑和布局优化 去修复可能的时序 (建立时间和保持时 间)、最大电容和最 大过渡时间违规 保持时间推荐在这 里进行首次修复 Congestion Removal 能通过移动不必要的 非时钟树buffer减少 阻塞
测试
若SDC中set_clock_uncertainty约束过高 (如0.05ns),你想放松到0.02ns,怎么实现? 同步Pin和忽略pin的区别在哪里?列出一些 隐含的同步和忽略Pin例子 全局和局部偏移优化的优缺点? 在CTS期间,产生时钟和主时钟都被当作相 同的时钟域?
测试
Post-CTS优化:根据需要反复执行
对于一个大的设计,每 次优化目标只有一个,如 修复hold时间等
Post-CTS布局优化结果
通过逻辑优化和单元重新放 置来修复时序(建立时间和保 持时间)、最大电容和最大过 渡时间违规可能会影响时钟 网络----FFS可能会被移动. 这将可能影响时钟偏移和插 入延时. 因此要分析时钟偏移和插入 延时! 如果想不影响时钟偏移和插 入延时,则需保持FFS位置固 定,执行clock->Utilities>Mark Clock Tree…
时钟树综合
建立buffer树去平衡负载达到最小时钟偏移
时钟树综合
延迟线加入去符合插入延迟目标
时钟树的起点和终点
时钟树起点是在.SDC文件 定义的时钟源: create_clock –p 2 CLOCK 时钟树终点在Astro定义 的”stop Pins” 两种类型的”stop Pins” 同步Pins:时序单元和宏 单元的Clock Pins 忽略Pins:其它
时钟延时在每一个时钟域内全部进行平衡,经过所 有的主时钟和产生时钟的clock-pin,去减少时钟 偏移到0,或尽可能小
时钟公共选项设置
默认的设置如图 时钟公共选项设置 在CTS和优化之前进 行设置
全局偏移(运行钟树
默认情况下,所有时钟域 用目标偏移为0进行综合 所有SDC定义的时钟都进 行综合, 除非在clock nets中列出时钟信号时, 其它不综合 默认情况下,在SDC中的 set_clock_uncertainty 在CTS时没有用
时钟树时序分析
使用astReportTiming命令进行时序分析得 如图所示,从中可知建立时间、保持时间、最 大电容和最大过渡时间满足要求。
时钟树偏移分析
执行命令
执行命令astSkewAnalysis得出时钟 偏移报告,如图所示,从图中可知最 长时钟路径延时为1.487ns,最短时 钟路径延时为1.409ns,全局时钟偏 移为0.078ns。
符合buffer约束(不符合该约束会报违规) 最大传输时间延迟 最大负载电容 最大扇出 最大buffer级数 符合时钟树目标(不会报违规) 最大偏移 根据Min/Max delay插入延迟
CTS流程
布局完成 设置时钟公共选项 综合时钟树 重新连接扫描链 使能传播时钟 Post-CTS布局优化 优化时钟偏移(CTO) 优化时序(Useful Skew CTO) 布线
指定非默认的偏移(例1)
若所有时钟在 SDC文件中有 set_clock_unc ertainty值为 0.2ns,你想在 CTS时用这个值 而不是默认值0, 则在Target Skew中设置0.2 所有时钟用相 同的偏移值进 行综合
指定非默认的偏移(例2)
假设其中一个时钟 (Clock2)是一个低频 时钟有2.0ns的正偏 移,因此要求Astro忽 略默认的0.2ns偏移 而用2.0ns或更大的 偏移来减少运行时间 (这个时钟要先进行 综合) 默认,一旦一个时钟 已经CTS,那么在后续 的CTS运行将不再综 合(然后余下的时钟 用0.2ns偏移进行CTS)
带有SDC不确定的传播时钟
如果SDC不确定值包括抖动和时间裕量,Astro仍 能计算实际的时钟网络延时,同时模仿这些效应 调整SDC中set_clock_uncertainty 的值 通过估计偏移值减少这个值 执行相同的命令 sdc “set_propagated_clock [all_clocks]” 调节下面的时序设置项 Unset “Ignore Clock Uncertainty ” Unset “Ignore Propagated Clock ”
同步Pins和忽略Pins
同步Pins: CTS优化达到 buffer约束(最大传 输时间/电容)和时 钟树目标(偏移,插 入延时等)) 忽略Pins: CTS加入一个小的 buffer去隔离所有 的Pins 忽略buffer约束 (最大传输时间/电 容和时钟树目标)
默认的Skew Optimization
“Useful Skew”优化
Useful Skew优化对保持时间不足不进行优化 强迫优化,使用:useful_skew_opt -buffer_sizing –hold_target -2.0 潜在的保持时间违规可通过使用post-CTS布局优化 进行修复
测试
1、在CTS前,高扇出网络已经进行综合和初 始时间树已经建立 2、CTS努力要实现的是哪两种目标 3、默认,CTS要: A.符合SDC中时间偏移约束 B.符合SDC中时间偏移和插入延时约束 C.符合最小偏移和SDC中插入时间约束 D.减少时间偏移和插入延时到0
在CTS后和运行post-CTS优化前,哪两个主 要任务必须实现? 列出运行post-CTS优化的三个优点? CTO的优点是什么以及什么时候你必须运行 它? 什么时候应该运行Useful Skew优化?
时钟树综合总结
功耗分析
执行astReportClockTreePower命令对FFT 处理器时钟树进行功耗优化分析,优化前分析功 耗为218.436mW,经过功耗优化后进行功耗分析 得出结果如图所示,从中可知功耗降为 209.479mW。
时钟树浏览
时钟树浏览
时钟树浏览
时钟树浏览
时钟树优化
在布线前执行额外的时钟树优化去进一步 减少时钟偏移和达到插入延时
插入延时和忽略约束
插入延时目标: 用这些设置去控制 最小/最大插入延时 默认在SDC的插入 延时具有优先,除非 执行axSetIntparam “acts” “ingore set_clock_latency” 1命令才忽略SDC设 置 你可以选择完全忽 略SDC或库的约束进 行CTS
导入CTS
在CTO后仍有时序违规
时钟树已经进行很好的平衡,但仍存在建立 时间违规?
“Useful Skew”优化
“Useful Skew CTO”使用流水借时间工 艺来减少或消除建立时间违规,同时在 其它地方保持平衡偏移
“Useful Skew”优化
修复建立时间违规通过利用在流水中的正偏 移进行改变时钟buffer尺寸
指定非默认的偏移(例3)
不是一个时钟,现在假设所有的时钟有不同 的不确定值,用更好的方法: 输入axSetIntparam “acts” “ingore set_clock_uncertainty” 0命令让Astro 用SDC文件中的值而不是GUI中的偏移目标 值
时钟buffer约束
最大tran/cap/fanout: 如果在多个地方指定 (库,SDC文件或Astro默 认), Astro使用最小值 最大buffer级数 用默认的初始值(20) 只有在仔细分析或基于 以住经验的基础上才需 要调整 如果设置太紧,违规可能 不能修复