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