SDC命令详解:使用set_operating_conditions命令进行约束(bc_wc模式和on_chip_variation模式)
相关阅读SDC命令详解https://blog.csdn.net/weixin_45791458/category_12931432.html?spm1001.2014.3001.5482目录默认工作环境显式指定工作环境指定工作环境名指定最大条件的工作环境指定最大条件工作环境的搜索库指定最小条件的工作环境指定最小条件工作环境的搜索库指定搜索库指定对象名称Multicorner-Multimode支持指定分析模式PrimeTime与Design Compiler/IC Compiler的区别其他OCV方法set_operating_conditions命令用于设置设计的工作环境工作环境包括温度、电压、工艺等它们的变化会显著影响电路性能因此所有工艺库的数据都是在一个特定的工作环境下得到的这个环境被称为特征化环境并根据选择的工作环境进行相应调整。有关特征化环境和工作环境的更详细内容可以参考下面的博客。静态时序分析工艺库的特征化环境和工作环境https://blog.csdn.net/weixin_45791458/article/details/136088521?ops_request_misc%257B%2522request%255Fid%2522%253A%2522b3dbe94f88b3c34dbccf8e467840d97c%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257Drequest_idb3dbe94f88b3c34dbccf8e467840d97cbiz_id0utm_mediumdistribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-136088521-null-null.nonecaseutm_term%E7%89%B9%E5%BE%81%E5%8C%96spm1018.2226.3001.4450默认工作环境如果不使用set_operating_conditions命令指定工作环境Design Compiler将自动选择默认工作环境。逻辑库中可以使用default_operating_conditions库属性定义默认工作环境如果逻辑库中不存在default_operating_conditions库属性且只包含一个工作环境则该工作环境将被设置为默认工作环境如果逻辑库中不存在default_operating_conditions库属性且包含多个工作环境则标准工作环境nom_pvt将被创建并被设置为默认工作环境。Design Compiler会在link_library变量或local_link_library属性两者统称为link_path中的第一个逻辑库即主库中搜索默认工作环境如果失败则会选择标准工作环境nom_pvt。具体来说综合时Design Compiler将在target_library变量中的第一个逻辑库中搜索默认工作环境这是因为综合后设计的local_link_library属性将被设置为target_library变量其他情况下Design Compiler将在link_path中的第一个逻辑库中搜索默认工作环境。拓扑模式的Design Compiler NXT为了提升与物理实现工具如IC Compiler II的一致性在2021版本引入了一个新特性如果用户不使用set_operating_conditions命令指定工作环境在综合后需要使用compile_ultra -spg命令自动选择的默认工作环境将被添加为一个约束就像用户使用了set_operating_conditions命令那样该约束可以被传递给IC Compiler II Link也可以使用write_icc2_files命令或write_sdc命令输出综合或使用这两个命令时会提示以下信息。Warning: There is no user-defined operating conditions in the design. The tool is inferring operating conditions %s from the library %s. (DCT-399)在IC Compiler II中执行write_icc2_files命令输出的脚本时将会提示以下信息。Information: IC Compiler II will be using the default operating condition inferred by Design Compiler NXT显式指定工作环境与默认选择工作环境相比更加常用的是使用set_operating_conditions命令显式指定工作环境本文就将对此进行讨论。本文针对Design Compiler但该命令同样存在于PrimeTime、IC Compiler等工具中它们大致相同略有差别。set_operating_conditions命令的BNF范式有关BNF范式可以参考以往文章为set_operating_conditions [condition] [-max max_condition] [-max_library max_lib] [-min min_condition] [-min_library min_lib] [-library lib] [-object_list objects] [-analysis_type bc_wc | on_chip_variation]指定工作环境名condition参数指定了一个工作环境它被设置为最大条件下一般情况下如果不开启on_chip_variation这指的是建立时间检查和最小条件下一般情况下如果不开启on_chip_variation这指的是保持时间检查的工作环境。该参数不能与-min选项和-max选项一起使用。指定最大条件的工作环境-max选项指定了最大条件下的工作环境一般情况下如果不开启on_chip_variation这指的是建立时间检查。该参数不能与condition参数一起使用。指定最大条件工作环境的搜索库-max_library选项指定了搜索最大条件下的工作环境的库如果不指定-max_library选项则Design Compiler会在link_path指定的逻辑库中从左至右搜索指定的工作环境如果在-max_library选项中指定了多个逻辑库则Design Compiler会在这些指定的逻辑库中从左至右搜索指定的工作环境。该选项只有在使用了-max选项后才能使用。指定最小条件的工作环境-min选项指定了最小条件下的工作环境一般情况下如果不开启on_chip_variation这指的是保持时间检查如果不指定最小条件下的工作环境Design Compiler会使用最大条件的工作环境。该参数不能与condition参数一起使用。如果指定了最小条件的工作环境通常需要使用set_min_library命令设置最大与最小条件的库映射关系否则会出现设计映射到最大条件的逻辑库但在最小条件分析时由于最小条件的工作环境与最大条件的逻辑库中的特征化环境不一致而出现使用k系数(k-factors)调整的问题更详细的分析可以参考下面博客中的“与set_operating_conditions命令同时使用”一节。SDC命令详解使用set_min_library命令进行约束https://chenzhang.blog.csdn.net/article/details/149541491?spm1011.2415.3001.5331指定最小条件工作环境的搜索库-min_library选项指定了搜索最大条件下的工作环境的库如果不指定-min_library选项则Design Compiler会在link_path指定的逻辑库中从左至右搜索指定的工作环境如果在-min_library选项中指定了多个逻辑库则Design Compiler会在这些指定的逻辑库中从左至右搜索指定的工作环境。该选项只有在使用了-min选项后才能使用。指定搜索库-library选项指定了搜索最大条件和最小条件下的工作环境的库该选项的优先级高于-max_library选项和-min_library选项。指定对象名称-object_list选项指定要设置工作环境的单元或端口。如果不使用此选项则工作环境设置在整个设计上对象可以是叶单元也可以是层次单元。这个选项在早期的Design Compiler中即2007版本前此时UPF标准还尚未公布因此是非UPF模式用于指定多电压域设计中各电压域的工作环境现在已经废除。如今的多电压域设计中使用UPF文件指定电压意图使用set_voltage命令指定各电压域的工作电压使用set_operating_conditions命令指定整个工作温度和工作工艺。关于UPF模式和非UPF模式的更多介绍可以参考下面的博客。Design Compiler两种工作模式线负载模式和拓扑模式https://blog.csdn.net/weixin_45791458/article/details/144830461?sharetypeblogdetailsharerId144830461sharereferPCsharesourceweixin_45791458spm1011.2480.3001.8118Multicorner-Multimode支持该命令仅对当前场景生效换句话说只能在当前场景设置工作环境。如果使用了MCMM必须设置每个场景的工作环境。关于场景的更多介绍可以参考下面的博客。Design Compiler多工艺角和多工作模式(Multicorner-Multimode, MCMM)https://blog.csdn.net/weixin_45791458/article/details/149578771?ops_request_misc%257B%2522request%255Fid%2522%253A%2522e3267dcc7cc26380435f53994dc8b9b8%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257Drequest_ide3267dcc7cc26380435f53994dc8b9b8biz_id0utm_mediumdistribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-149578771-null-null.nonecaseutm_termMCMMspm1018.2226.3001.4450指定分析模式-analysis_type选项指定了Design Compiler的分析模式可以是bc_wc模式默认或on_chip_variation模式PrimeTime默认。如果是bc_wc模式则Design Compiler在时序分析时只会使用单一的最大条件设置和最小条件设置对于建立时间分析Design Compiler使用最大条件下的工作环境以及最大条件设置即用-max选项设置的约束并在转换时间合并时统一使用最慢转换时间对于保持时间分析Design Compiler使用最小条件下的工作环境以及最大条件设置即用-min选项设置的约束并在转换时间合并时统一使用最快转换时间。关于转换时间合并可以参考下面的博客中有关GBA分析的那一部分。静态时序分析静态时序分析的原理及其两种模式PBA、GBAhttps://blog.csdn.net/weixin_45791458/article/details/136078969?ops_request_misc%257B%2522request%255Fid%2522%253A%2522f82123c01eaab2e7a8e5c467f18fad01%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257Drequest_idf82123c01eaab2e7a8e5c467f18fad01biz_id0utm_mediumdistribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-136078969-null-null.nonecaseutm_termPBAspm1018.2226.3001.4450如果是on_chip_variation模式则Design Compiler在时序分析时会根据检查类型对发射路径和捕获路径使用不同的条件设置对于建立时间分析Design Compiler会对发射路径使用最大条件设置转换时间合并时使用最慢转换时间对捕获路径使用最小条件设置转换时间合并时使用最快转换时间对于保持时间分析Design Compiler会对发射路径使用最小条件设置转换时间合并时使用最快转换时间对捕获路径使用最大条件设置转换时间合并时使用最慢转换时间以分析最差情况下的时序。下面以图1举例说明分析模式的使用。图1 简单的触发器首先使用create_clock命令以clk端口为源对象创建一个周期为10的时钟。create_clock -period 10 [get_ports clk]接着在输入端口d定义分别定义最大条件和最小条件的输入延迟。set_input_delay -max 0.8 -clock clk [get_ports d] set_input_delay -min 0.4 -clock clk [get_ports d]最后定义理想时钟最大条件和最小条件下的延迟。set_clock_latency 0.2 -max [get_clocks clk] set_clock_latency 0.1 -min [get_clocks clk]如果使用bc_wc模式默认则此时输入端口d的建立时间时序报告和保持时间时序报告分别如图2和图3所示。图2 输入端口的建立时间报告bc_wc模式图3 输入端口的保持时间报告bc_wc模式可以看出对于发射路径时序报告上半部分和捕获路径时序报告下半部分Design Compiler统一使用了最大条件或最小条件下的设置。如果使用on_chip_variation模式则此时输入端口d的建立时间时序报告和保持时间时序报告分别如图4和图5所示。图4 输入端口的建立时间报告on_chip_variation模式图5 输入端口的保持时间报告on_chip_variation模式可以看出对于发射路径时序报告上半部分和捕获路径时序报告下半部分Design Compiler在进行建立时间分析时发射路径选择了最慢的时钟延迟0.2而捕获路径选择了最快的时钟延迟0.1这导致了与bc_wc模式相比时序裕量由9.16下降为9.06在进行保持时间分析时发射路径选择了最快的时钟延迟0.1而捕获路径选择了最慢的时钟延迟0.2这导致了与bc_wc模式相比时序裕量由0.39下降为0.29。本例只展示了对于时钟延迟的设置在两种模式下的差异实际上所有可以分别设置-min选项和-max选项的命令在这两种模式下都是会有差异的。虽然on_chip_variation模式模拟了片上变化带来的影响但显而易见它是悲观的尤其是对于时钟路径上的共同路径这被称为共同路径悲观(Common Path Pessimism)如果想移除这种悲观可以将timing_remove_clock_reconvergence_pessimism变量设置为true默认值为false。在Design Compiler/IC Compiler中使用report_deisgn命令可以查看当前使用的工作环境使用report_scenarios命令可以查看当前使用的分析模式在PrimeTime中使用report_deisgn命令可以查看当前使用的工作环境和分析模式。PrimeTime与Design Compiler/IC Compiler的区别对于PrimeTime而言原本存在single模式、bc_wc模式和on_chip_variation模式三种分析模式如果选择bc_wc模式和on_chip_variation模式可以在使用其他命令时指定-min或-max选项后来bc_wc模式被删除了因此现在的PrimeTime只有在分析模式为on_chip_variation默认时才能在使用命令时指定-min或-max选项包括set_operating_conditions命令而Design Compiler/IC Compiler则无此要求。其他OCV方法除了设置分析模式之外还可以通过set_timing_derate模拟片上变化即使分析模式为bc_wc但该命令只能使用单一的因子进行降额。为了更加精准地模拟片上变化PrimeTime在2008版本推出了AOCV(Advanced On-Chip Variation)模式在2013版本推出了POCV(Parametric On-Chip Variation)模式使用它们可以在on_chip_variation模式的基础上考虑逻辑深度、举例和统计分析等更多因素。POCV模式在拓扑模式的Design Compiler Graphical中得到了支持AOCV模式和POCV模式在IC Compiler中得到了支持。