ICC2学习笔记之Clock Tree Synthesis
参考资料ICC2 User Guide Version M-2016.12-SP4• Prerequisites for Clock Tree Synthesis做时钟树的先决条件1.定义了create_clock或create_generated_clock2.已经placement且合法化且满足QoR满足QoR包括CongestionTimingMaximum capacitance;Maximum transition time.3.电源和地线已经被prerouted.4.高扇出的线已经被buffer.5.Active scenarios已经被定义。• Analyzing the Presynthesized Clock Tree一些概念性的东西暂时忽略。• Defining the Clock Trees• Deriving the Clock Trees一些概念性的东西可以指定一个组合电路的端口为固定值从而可以进行时序分析如下图确定根时钟create_clock create_generated_clock定义根时钟的时序特点set_driving_cell -lib_cell mylib/CLKBUF [get_ports CLK1] set_input_transition -rise 0.3 [get_ports CLK1] set_input_transition -fall 0.2 [get_ports CLK1]定义时钟endpoints工具确认两种类型为时钟分析结束点Sink pins和Ignore pins.Sink pins包括1.时序电路的Clock pin2.macro的clock pinIgnore pin包括1.另外一个时钟的source pin2.没有时钟输入pin的时序单元3.三态的使能pin4.输出端口5.不正确的时钟定义pin6.set_case_analysis定义的buffer和反向器的输入pin7.没有扇出的集成clock-gating或组合电路的输入pin且没有使能时序弧.• Defining Clock Tree Exceptions时钟树综合默认有一套自动规则自动识别所有时钟终点、自动做等长平衡、自动插缓冲器优化时序。 Clock Tree Exceptions 就是人工手动改写这套默认规则给部分时钟分支 / 引脚设置特殊处理方式解决特殊电路结构带来的 CTS 违规、时序问题。例外规则包括1.Defining Sink Pinsset_clock_balance_points -clock clock -consider_for_balancing true -balance_points pins [-corners corners] report_clock_balance_points remove_clock_balance_points2.Defining Insertion Delay Requirementsset_clock_balance_points [-clock clock]-delay delay [-rise] [-fall] [-early] [-late]-balance_points pins [-corners corners]3.Defining Ignore Pinsset_clock_balance_points -clock [get_clocks CLK[] \ -consider_for_balancing false -balance_points [get_pins U2/A]4.Setting Don’t Touch Exceptionsset_dont_touch_network -clock_only [get_pins pin_name]5.Setting Size-Only Exceptionsset_size_only [get_cells cell_name] true report_size_only -all• Copying Clock Tree Exceptions Across Modesset_clock_tree_options -copy_exceptions_across_modes -from_mode M1 -to_mode {M2 M3}• Deriving Clock Tree Exceptions From Ideal Clock Latencies• Handling Endpoints With Balancing Conflicts工具为了解决平衡冲突会自动将一些点作为ignore pin这个功能默认是开的可以设置成关cts.common.enable_auto_exceptionsmodule里面有sink pin且同时有组合电路因为在module里面不能插入buffer所以会将内部的check pin作为ignore pin来处理。sink pin不能被同时平衡的情况FF_gen/CLK 和 FF0_1-10/CLK是clkb的sinkFF1_1-10/CLK 和 FF0_1-10/CLK是clka的sinkFF_gen/CLK是FF1_1-10/CLK的源时钟工具在平衡clkb时会将FF_gen/CLK定义为忽略pin。• Verifying the Clock Treescheck_clock_trees -clocks [get_clocks CLK]• Setting Clock Tree Design Rule Constraints定义最大电容set_max_capacitance定义最大transitionset_max_transition• Specifying the Clock Tree Synthesis Settings• Specifying the Clock Tree References可以理解为给时钟树定义可用的cell这些cell必须包括buffer或inverter还包括已经存在的逻辑门电路比如原本在时钟树上的与门。如果是多电源设计还应包括常开的cell如果这个cell 定义了dont_touch的属性就不会包含在列表中。指定module使用哪个lib的cell.set_lib_cell_purpose -include cts {HVT_lib/buf1 HVT_lib/buf2 LVT_lib/buf1 LVT_lib/buf2} set_target_library_subset -clock {LVT_lib} -objects {TOP/TSK_BLK] set_app_options -name opt.common.enable_target_library_subset_opt -value 1• Setting Skew and Latency Targetsset_clock_tree_options -target_latency -target_skew -clock -corner report_clock_tree_options remove_clock_tree_options• Enabling Local Skew Optimization使能Skew优化工具默认忽略定义的skew目标可以关掉此功能让工具实现定义的目标值。set_app_options -list {cts.compile.enable_local_skew true} set_app_options -list {cts.optimize.enable_local_skew true} set_app_options -list {cts.common.enable_auto_skew_target_for_local_skew false}• Specifying the Primary Corner for Clock Tree Synthesis定义主要的corner进行时钟树综合set_app_options -name cts.compile.primary_corner -value fast_corner• Preserving Preexisting Clock Trees在执行时钟树综合时工具默认会把原来的buffer或者inverter全部删掉重新做如果不想原来的cell被删掉执行以下的命令set_app_options -name cts.compile.remove_existing_clock_trees -value true• Reducing Electromigration时钟树上的器件相对功耗会大如果聚集在一起电流密度会比较大容易造成电迁移为了避免这个问题可以设置时钟树上的cell之间的距离。同时可以用check_legality -verbose命令检查cell之间间隔的违规情况。set_clock_cell_spacing -x_spacing 1 -y_spacing 1• Handling Inaccurate Constraints During Clock Tree Synthesis在设计初始阶段不精确的约束或者太严格的约束会增加runtime和QoR所以在前期可以通过设置用短的runtime得到可用的结果就是try run的意思。set_app_options -list {cts.common.enable_dirty_design_mode true}• Defining Clock Cell Spacing Rulesreport_clock_cell_spacings remove_clock_cell_spacings• Creating Skew Groups简单理解就是可以分组进行时钟均衡create_clock_skew_group -name sg1 -objects {reg1/CP reg2/CP reg3/CP}• Defining a Name Prefix for Clock Cells在做时钟树综合时可以给工具添加的时钟树上的cell定义名字方便后面debug用。set_app_options -name cts.common.user_instance_name_prefix -value CTS_• Using the Global Router During Initial Clock Tree Synthesis工具可以使能全局的router在时钟树综合的初始阶段。set_app_options -name cts.compile.enable_global_route -value true• Setting Clock Tree Routing Options默认情况工具用默认的绕线规则和layer做时钟树可以自己定义规则和决定层数参考routing。• Reducing Signal Integrity Effects on Clock Nets芯片里金属线挨太近相邻走线信号跳变会互相干扰产生额外延迟、抖动clock skew 变大直接破坏时序收敛。时钟线频率高、扇出大串扰带来的时序恶化比普通信号线严重得多。相比默认走线NDR 会设置更大线间距、更宽线宽拉开时钟线和旁边信号线的距离大幅减少串扰。芯片局部区域走线密密麻麻拥塞区没法拉大间距空旷区域走线资源充足可以放心给时钟用宽松 NDR 规则。set_app_options -list {cts.optimize.enable_congestion_aware_ndr_promotion true}• Reporting the Clock Tree Settings报告是时钟树的设置情况report_clock_settings -type• Implementing Clock Trees执行时钟树综合前最好保存一下以便重新定义一些配置。• Performing Standalone Clock Trees Synthesissynthesize_clock_trees这条命令会执行时钟树综合和优化但是没有真正的绕线。• Synthesizing and Routing Clock Trees, and Optimizing the Design With the clock_opt Command这条命令包含了三步build_clock/route_clock/final_opto,可以指定从哪步到哪步。clock_opt -from XXX -to XXX1.Using of Nondefault Routing Rules Critical Nets During Optimization为了改善时序工具可以设置不使用默认的routing规格。set_app_options -name clock_opt.flow.optimize_ndr -value true2.Enabling Layer Optimization使能层优化同时可以指定优化范围。set_app_options -name clock_opt.flow.optimize_layers -value true clock_opt.flow.optimize_layers_critical_range3. Enabling Concurrent Clock and Data Optimizationset_app_options -name clock_opt.flow.enable_ccd -value true4. Performing Power or Area Recovery on the Clock Network如果使能了上一条命令工具会执行clock power recovery如果没有使能上一条命令可以单独使用命令来执行power recovery。执行这条命令的前提是定义了场景或者读取了.saif文件。代替power recovery可以使能area recovery。set_app_options -name clock_opt.flow.enable_clock_power_recovery -value power set_app_options -name clock_opt.flow.enable_clock_power_recovery -value area5.Performing Global-Route-Based Optimization为了执行全局绕线优化a.要确定所有scenarios是有效的并且至少一个scenario对leakage power是使能的.b.使能leakage-power优化是通过route_opt.flow.enable_pwoer命令。c.应用全部的routing相关的设置。d.使能全局绕线优化clock_opt.flow.enable_global_route_opt。e.执行clock_opt.• Performing Concurrent Clock and Data Optimization During the clock_opt and route_optCommands1.使能时钟和数据同时优化。set_app_options -name clock_opt.flow.enable_ccd -value true set_app_options -name route_opt.flow.enbale_ccd -value true2.控制边界寄存器的延迟调整Boundary registers是指输入port直接连接的寄存器或者是寄存器直接连接到输出端口。如果想要boundary register不被clock latencies调整则需要设置命令set_app_options -name ccd.optimize_boundary_timing -value false一些连接到输入port且高扇出的寄存器(比如连接scan_en或rst)会被认为是boundary寄存器这样在进行时钟和数据同时优化的过程时会将这些寄存器排除在外可以通过命令阻止排除。set_app_options -name ccd.ignore_ports_for_boundary_identification -value {SCN_EN RST}就算你不让调整边界寄存器本身的时钟到达延迟工具依然可以优化边界寄存器上游的时钟主干共享时钟路径通过调整公共时钟树改善其他内部寄存器的时序。设为false彻底锁死边界寄存器上游的时钟树上游时钟路径一丝一毫都不允许修改.缺点:会极大缩小 CCD 协同优化的可调范围时序更难修复非特殊需求不建议关闭。适用场景:顶层输入时钟路径是固定 IP 硬核、手动预布线不允许工具改动时钟主干ccd.optimize_boundary_timing_upstream这 3 个参数全部只在你开启了clock_opt/route_opt的时钟数据协同优化CCD 时才生效3.Ignoring Path Groups做 CCD 协同优化时跳过指定时钟对应的整组时序路径完全不优化这组路径。 分两种跳过规则全局跳过某时钟在所有场景 (scenario) 都不参与 CCD 优化场景限定跳过某时钟只在指定场景跳过优化其他场景正常优化。所有场景下忽略CLK1 path group只在scnA场景下忽略CLK2 path group。set_app_options -name ccd.skip_path_groups -value {CLK1 {CLK2 scnA}}4.Controlling the Latency Adjustment Values设置提前和滞后的最大值防止工具过于极端造成其他不良影响。set_app_options -list {ccd.max_prepone 0.2} set_app_options -list {ccd.max_postpone 0.1}5.Enabling Buffer Removal for the Postroute Stage在时钟和数据做均衡时可以移除buffer或者inverters来改善QoR.set_app_options -name route_opt.flow.enable_ccd -value true set_app_options -name ccd.post_route_buffer_removal -value true• Splitting Clock Cells可以手动拆分有DRC violation的高扇出的cell.有三种情况不拆分1.没有DRC violations 2.有dont-touch/size-only/fixed-placement属性的设置 3.跨电源域 / 冻结端口模块边界如果拆分需要新增端口。拆分后工具会重新命名original_cell_name_split_integer,同时完整继承原单元所有约束与属性。split_clock_cells -cells [get_cells U1/ICG*] set loads1 [get_pins I1/reg*/CK] set loads2 [get_pins I2/reg*/CK] splitclock_cells -loads [list $load1 $load2]• Balancing Skew Between Different Clock Trees1. 工具可以对两组clock进行平衡执行步骤1.产生内部时钟相互之间delay的约束定义clock balance groups和delay offsets。2.balance the interclock delays.Defining the Interclock Delay Balancing Constraints把需要互相对齐延迟的多个时钟打包成一组告诉工具这几个时钟要互相做 skew 平衡。比如假设有三个时钟clk1/clk2/clk3如果想要clk1和clk2延时一样并且clk3嵌入延时少于100则命令为create_clock_balance_group -name group3 -objects [get_clocks {clk1 clk2 clk3}] -offset_latencies {0 0 -100} report_clock_balance_groups remove_clock_balance_groups2. Generating Interclock Delay Balancing Constraints Automatically自动生成跨时钟延迟平衡约束默认情况是包括两个时钟的所有时序路径可以加条件指定满足条件的情况才自动生成约束。使用场景多时钟、跨时钟路径繁多不想一条条手动写前期摸底。derive_clock_balance_constraints -slack_less_than -0.23. Running Interclock Delay Balancing在执行时钟平衡前需要先定义时钟delay balance约束。balance_clock_groups• Optimizing the Design After Clock Tree Synthesis时钟综合后可以对其进行优化优化包含timinglogic DRC violationareapowerroutability.clock_opt -from final_opto• Routing Clock Trees时钟综合只是规划时钟路径插入buffer只生成虚拟的路径没有画实际的走线。此命令是画实际的走线-all_clock_nets选中设计里全部时钟网线只给时钟做详细布线不会动普通信号网。-reuse_existing_global_route true复用 CTS 阶段已经生成的全局虚拟布线轨道详细布线严格沿着之前规划好的路径走。route_group -all_clock_nets -reuse_existing_global_route true• Marking Clocks as Propagated After Clock Tree Synthesis标记时钟为真实的时钟propagated clock作用是从ideal clock切换成propagated clock进行后续的时序这条命令只对active scenario有效。set_scenario_status -active true [all_scenarios] synthesize_clock_trees -propagate_only• Performing Postroute Clock Tree Optimization执行布线后的时钟优化synthesize_clock_trees -postroute -routed_clock_stage detail• Marking Clock Trees as Synthesized用来给已经做好的时钟树打锁定标签防止后续 CTS、clock_opt、route_opt 等步骤随便改动时钟缓冲、走线、分支结构。mark_clock_trees• Removing Clock Treesremove_clock_trees• Implementing Multisource Clock TreesIntroduction to Multisource Clock TreesImplementing Regular Multisource Clock TreesImplementing Structural Multisource Clock TreesInserting Clock DriversSynthesizing the Global Clock TreesCreating Clock StrapsRouting to Clock StrapsAnalyzing Clock MeshPerforming Tap AssignmentBuilding the Local Clock Subtree Structures• Analyzing the Clock Tree Results1. Generating Clock Tree QoR Reports可以报告时钟树的各个参数SummaryLatencyDRCRobustnessclock-balance groups QoRLocal skewclock tree power还能生成他们的直方图。report_clock_qor2.Reporting Clock Tree Power可以指定clock mode cornerscenario每段或者每个subtree.report_clock_power3.Creating Collections of Clock Network Pinsget_clock_tree_pins (2020.09版本没有这条命令)4.Analyzing Clock Timingreport_clock_timing5.Analyzing Clock Trees in the GUI可以通过GUI来查看时钟树详细文档参考IC Compiler II Graphical User Interface User Guide

相关新闻

小熊猫Dev-C++终极配置手册:从零搭建高效C/C++开发环境

小熊猫Dev-C++终极配置手册:从零搭建高效C/C++开发环境

1. 项目概述:为什么你需要一份终极配置手册?如果你刚刚接触C或C编程,或者从其他语言转过来,那么Dev-C这个名字你一定不陌生。它可能是很多人的第一个C语言集成开发环境(IDE)。界面简单,安装包小…

2026/8/12 20:32:36 阅读更多 →
深入解析BG3ModManager:5个关键技巧打造完美《博德之门3》模组体验

深入解析BG3ModManager:5个关键技巧打造完美《博德之门3》模组体验

深入解析BG3ModManager:5个关键技巧打造完美《博德之门3》模组体验 【免费下载链接】BG3ModManager A mod manager for Baldurs Gate 3. This is the only official source! 项目地址: https://gitcode.com/gh_mirrors/bg/BG3ModManager 《博德之门3》作为近…

2026/8/12 20:32:36 阅读更多 →
免费获取官方教材PDF:国家中小学智慧教育平台电子课本下载器完全指南

免费获取官方教材PDF:国家中小学智慧教育平台电子课本下载器完全指南

免费获取官方教材PDF:国家中小学智慧教育平台电子课本下载器完全指南 【免费下载链接】tchMaterial-parser 国家中小学智慧教育平台 电子课本下载工具,帮助您从智慧教育平台中获取电子课本的 PDF 文件网址并进行下载,让您更方便地获取课本内容…

2026/8/12 20:32:36 阅读更多 →

最新新闻

【信息科学与工程学】信息科学工程领域 第三篇 信号与系统~04 阵列信号与AR/VR信号处理

【信息科学与工程学】信息科学工程领域 第三篇 信号与系统~04 阵列信号与AR/VR信号处理

阵列信号处理全栈知识体系 一、阵列信号处理基础框架 1.1 阵列信号处理核心要素 维度 核心概念 数学表达 物理意义 信号模型​ 窄带信号 s(t)=A(t)ejω0​t 带宽远小于中心频率,可简化处理 宽带信号 s(t)=∫ω1​ω2​​S(ω)ejωtdω 需频域处理或时域相关处理 …

2026/8/12 21:26:14 阅读更多 →
Python数据分析入门:从零搭建环境到NumPy/Pandas实战避坑指南

Python数据分析入门:从零搭建环境到NumPy/Pandas实战避坑指南

你是不是也遇到过这样的问题:想学Python数据分析,网上教程一大堆,但要么版本过时,要么只讲理论没有实操,要么一上来就让你安装一堆库,结果卡在环境配置上半天搞不定。更让人头疼的是,好不容易跑…

2026/8/12 21:26:14 阅读更多 →
【信息科学与工程学】【物理/化学科学和工程技术】知识体系87——声学基础02

【信息科学与工程学】【物理/化学科学和工程技术】知识体系87——声学基础02

声音信号参数全表 一、基本声学参数 类别 参数名称 符号/单位 定义/描述 典型范围/值 影响因素 振幅参数 声压 p / Pa 瞬时声压值 0.00002-20 Pa 声源强度 声压级 SPL / dB 20log₁₀(p/p₀),p₀=20μPa 0-140 dB 声源、距离 声强 I / W/m 单位面积声功率 10⁻-1 W/m 声压、介…

2026/8/12 21:26:14 阅读更多 →
文件一夜之间全变成 .sorry:Sorry勒索病毒攻击链拆解与防御落地

文件一夜之间全变成 .sorry:Sorry勒索病毒攻击链拆解与防御落地

报错现场:一觉醒来,服务器文件全加了 .sorry 后缀 2026年8月10日,国家计算机病毒应急处理中心联合计算机病毒防治技术国家工程实验室发布预警:我国境内发现多起"Sorry"勒索病毒攻击事件。运维群里最多的现场描述是这样的…

2026/8/12 21:26:14 阅读更多 →
iOS激活锁终极解决方案:AppleRa1n免费解锁工具完全指南

iOS激活锁终极解决方案:AppleRa1n免费解锁工具完全指南

iOS激活锁终极解决方案:AppleRa1n免费解锁工具完全指南 【免费下载链接】applera1n icloud bypass for ios 15-16 项目地址: https://gitcode.com/gh_mirrors/ap/applera1n 当您面对iOS设备上的激活锁问题时,AppleRa1n提供了一个专业、免费的解决…

2026/8/12 21:26:14 阅读更多 →
Java编程入门到精通:从环境搭建到JVM调优的完整知识体系

Java编程入门到精通:从环境搭建到JVM调优的完整知识体系

1. 项目概述:为什么“Java基础”值得你投入时间? 如果你刚打开电脑,准备敲下第一行 public static void main(String[] args) ,或者已经写了几个月代码,但总觉得对Java的理解浮于表面,那这篇内容就是为你…

2026/8/12 21:25:13 阅读更多 →

日新闻

Ubuntu 22.04安装与使用tree命令:高效管理Linux目录结构

Ubuntu 22.04安装与使用tree命令:高效管理Linux目录结构

1. 为什么需要一个“目录树”工具?在Linux世界里,尤其是Ubuntu这样的发行版,命令行是很多人的主战场。我们每天都要和文件、目录打交道。ls命令是查看目录内容的首选,它简洁、高效,能列出文件名、权限、大小等关键信息…

2026/8/12 9:33:34 阅读更多 →
博思AI智能体:意图识别、思考链与性能优化的工程实践

博思AI智能体:意图识别、思考链与性能优化的工程实践

在AI应用从“能用”走向“好用”的进程中,系统的响应速度、决策透明度与高并发稳定性是决定用户体验的关键。博思AI智能体近期完成了一次重要的专项优化,聚焦于意图识别、思考链展示与全链路压测三大核心领域,将系统从功能实现推向了工程卓越…

2026/8/12 9:33:34 阅读更多 →
子代理架构:AI智能体任务分解与协同执行的核心原理与实践

子代理架构:AI智能体任务分解与协同执行的核心原理与实践

1. 项目概述:为什么我们需要“子代理”?最近在折腾各种AI应用和自动化流程时,我越来越频繁地遇到一个瓶颈:单个AI智能体(Agent)的能力边界。无论是处理复杂的多步骤任务,还是需要同时调用多个专…

2026/8/12 9:33:34 阅读更多 →

周新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码(维护中 rm repo) 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/12 1:11:09 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/12 1:11:09 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身,而应重视模型外的系统搭建,即Harness。提出AgentModelHarness的实用公式,详细介绍Harness的四个层次:持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/12 1:11:08 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/11 17:09:45 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/12 1:11:10 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/11 17:09:45 阅读更多 →