news 2026/9/24 15:21:31

Design Compiler:Concurrent Clock and Data Optimization(CCD)的使用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Design Compiler:Concurrent Clock and Data Optimization(CCD)的使用

相关阅读

Design Compilerhttps://blog.csdn.net/weixin_45791458/category_12738116.html?spm=1001.2014.3001.5482


目录

并行时钟与数据优化的原理

向IC Compiler II传递CCD信息

旧版行为

新版行为(默认)


并行时钟与数据优化的原理

物理实现工具(如IC Compiler II)中存在一种被称为并行时钟与数据优化(Concurrent Clock and Data Optimization, CCD)的技术(在Innovus中被称为Clock Concurrent Optimization, CCopt),这种技术通过利用时钟路径上的有用偏移(Useful Skew)改善时序QoR(WNS/TNS),如图1所示。拓扑模式的Design Compiler NXT在2019版本将该技术拓展到综合阶段,在更早的阶段尝试靠近设计的性能、功耗和面积(PPA)目标。

图1 有用偏移

通过使用CCD优化,一些时序违例可以通过时钟偏移轻松修复,从而减少数据路径优化的工作量,使数据路径功耗降低,适用于时序或功耗敏感设计,如图2所示。

图2 数据路径和时钟路径的优化对比

可以设置2019版本引入的compile_enable_ccd变量为true(默认值为false)允许在增量综合(需要使用compile_ultra -spg -incr命令)过程中启用CCD优化,此时将会有以下信息提示。

Information: CCD enabled, user provided latencies will be adjusted with useful skew. (OPT-1723)

由于时钟树综合前都是理想时钟,所有的时钟延迟都通过set_clock_lantency命令指定,在找到可供使用的有用偏移后,综合工具将自动更新SDC约束,图3展示了一个使用report_timing命令进行报告的例子。

图3 发射时钟和捕获时钟的延迟差异

其中同一个时钟到达不同触发器的时钟延迟不同是通过在引脚上设置时钟延迟实现的,如下两条SDC命令所示。

# 假设用户没有设置全局时钟延迟 set_clock_latency -0.1 -clock [get_clocks clk] [get_pins FF1/CLK] set_clock_latency 0.1 -clock [get_clocks clk] [get_pins FF2/CLK]

与IC Compiler II一样,在Design Compiler NXT也可以通过一些变量控制CCD优化的行为,如表1所示。

表1 CCD优化控制变量

变量功能
ccd_skip_path_groups(默认值为空)禁止特定时序组的CCD优化
ccd_optimize_boundary_timing(默认值为true)禁止边界触发器的CCD优化
ccd_ignore_scan_reset_for_boundary_identification(默认值为false)边界触发器识别时排除复位和扫描端口
ccd_ignore_ports_for_boundary_identification(默认值为空)边界触发器识别时排除特定端口
ccd_max_postpone(默认值为0)限制时钟延迟被增大的幅度
ccd_max_prepone(默认值为0)限制时钟延迟被减小的幅度
ccd_respect_cts_fixed_balance_pins(默认值为false)阻止调整那些cts_fixed_balance_pin属性为true的时钟引脚的时钟延迟
ccd_hold_control_effort(默认值为high)维持保持时间不退化的努力级别

向IC Compiler II传递CCD信息

Design Compiler NXT在2019版本引入了一个新的变量ccd_write_script_sdc_add_offset_to_latency,用于控制由于CCD优化而更新的SDC约束在输出时的行为,下面将分别讨论。

旧版行为

当ccd_write_script_sdc_add_offset_to_latency变量设置为true时(默认值为false),引脚上设置的时钟延迟将包含原时钟延迟,当使用write_icc2_files命令时,set_clock_latency命令将被写入icc2_files/<design>.MCMM/scenario_<scenario>.tcl文件,如下所示,而derive_clock_balance_points命令将被写入icc2_files/<design>.cbp.tcl文件,该命令可以将时钟延迟约束转换为时钟平衡点约束,从而引导IC Compiler II进行优化。

# icc2_files/<design>.MCMM/scenario_<scenario>.tcl set_clock_latency 1.0 [get_clocks clk] # 假设用户设置了全局时钟延迟 set_clock_latency 0.9 -clock [get_clocks clk] [get_pins FF1/CLK] set_clock_latency 1.1 -clock [get_clocks clk] [get_pins FF2/CLK]

使用write_sdc或write_script命令与使用write_icc2_files命令的输出类似,但此时用户需要显式在IC Compiler II中使用derive_clock_balance_points命令。

新版行为(默认)

旧版行为中,引脚上设置的时钟延迟将包含原时钟延迟,但这样会导致难以理解时钟延迟是由用户设置的还是由CCD优化产生的,从2021版本开始,当ccd_write_script_sdc_add_offset_to_latency变量设置为false时,CCD优化生成的时钟偏移将通过set_clock_latency -offset命令表示(-offset是一个非标准的SDC命令选项,仅限工具内部使用,绝不能由用户指定),使用write_icc2_files命令时icc2_files/<design>.MCMM/scenario_<scenario>.tcl文件的内容如下所示,icc2_files/<design>.cbp.tcl文件依然包含derive_clock_balance_points命令。

# icc2_files/<design>.MCMM/scenario_<scenario>.tcl set_clock_latency 1.0 [get_clocks clk] # 假设用户设置了全局时钟延迟 set_clock_latency -offset -0.1 -clock [get_clocks clk] [get_pins FF1/CLK] set_clock_latency -offset 0.1 -clock [get_clocks clk] [get_pins FF2/CLK]

但是需要注意的是,write_sdc命令此时无法写出CCD优化生成的时钟偏移(非标准),只有write_script命令支持,用户需要显式在IC Compiler II中使用derive_clock_balance_points命令。

当使用report_clock -skew命令报告时钟偏移时,也会在括号中特别注明CCD优化生成的时钟偏移,如下所示。

dcnxt_shell> report_clock -skew **************************************** Report : clock_skew Design : TOP Version: U-2022.12-SP1 Date : Mon Dec 8 01:03:45 2025 **************************************** Rise Fall Min Rise Min fall Uncertainty Object Delay Delay Delay Delay Plus Minus --------------------------------------------------------------------------- clk 1.00 1.00 1.00 1.00 - - FF1/CLK -0.10 -0.10 -0.10 -0.10 - - (offset) FF2/CLK 0.10 0.10 0.10 0.10 - - (offset)
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/24 15:16:10

12个AI模型自由切换:Strands Agents多模型支持终极指南

12个AI模型自由切换&#xff1a;Strands Agents多模型支持终极指南 【免费下载链接】harness-sdk Build an agent harness and control it end-to-end. Open-source SDK for production AI agents in Python & TypeScript - any model, any cloud. 项目地址: https://git…

作者头像 李华
网站建设 2026/9/24 15:12:47

Win11无法识别HC05蓝牙模块的根源与原生解决方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/24 15:12:33

慢性心力衰竭所致下肢水肿:鉴别要点、高危诱因与长期规范化管理|合肥高新心血管病医院临床科普

#摘要 下肢凹陷性水肿是慢性心力衰竭&#xff08;CHF&#xff09;最常见体征之一&#xff0c;但临床中易与肾源性、肝源性、静脉源性、内分泌源性水肿混淆。本文结合临床实践&#xff0c;梳理心衰相关下肢水肿的病理机制、临床鉴别要点、筛查方案与慢性心衰长期管理策略&#x…

作者头像 李华
网站建设 2026/9/24 15:08:40

手把手复现五种带隙基准Bandgap结构:从Widlar到Banba仿真实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华