)
相关阅读Design Compilerhttps://blog.csdn.net/weixin_45791458/category_12738116.html?spm1001.2014.3001.5482目录简介多工艺角和多工作模式支持的功能多工艺角和多工作模式不支持的功能基本的多工艺角和多工作模式流程进行设置逻辑库不一致警告dont_use属性确保库单元所属的逻辑库的PVT值唯一创建、设置和报告场景指定TLUPlus文件设置工作环境指定约束条件使用报告命令流程示意脚本简介拓扑模式的Design Compiler Graphical在2008版本引入了一种被称为多工艺角和多工作模式(Multicorner-Multimode, MCMM)的功能该功能允许设计者在多个模式和多个工艺角下并行地分析和优化设计综合时需要使用compile_ultra命令在此之前设计者通常使用set_min_library命令分别设置最大条件和最小条件的逻辑库。芯片通常需要在多种工作环境或者说工艺角以及多种工作模式下运行工艺角是指工艺(Process)、电压(Voltage)、温度(Temperature)一个逻辑库是在一个工艺角下进行特征化的工作模式由一组时钟、供电电压及其他时序约束定义例如一个芯片可能拥有测试模式、功能模式和待机模式。场景(Scenario)是工艺角与工作模式的组合也是分析优化的基本单位优化多工艺角和多工作模式设计的过程本质上就是对多个场景的管理与优化。多工艺角和多工作模式支持的功能在运行多工艺角-多工作模式优化时以下功能被支持compile_ultra命令的所有选项漏电功耗优化动态功耗优化使用UPF进行多电压域设计多工艺角和多工作模式不支持的功能在运行多工艺角-多工作模式优化时以下功能不被支持时钟树估算k系数缩放因子set_min_library命令不能用于单个场景它是全局设置的基本的多工艺角和多工作模式流程图1展示了基本的多工艺角和多工作模式流程该流程的关键步骤是创建场景以及进行场景定义包括指定TLUPlus寄生参数文件、指定工作环境、指定时序约束。图1 基本流程进行设置Design Compiler会使用link_library变量或local_link_library属性两者统称为link_path对设计进行链接综合时Design Compiler将在target_library变量中的逻辑库进行单元映射同时综合后设计的local_link_library属性将被设置为target_library。由于一个场景可能使用多个逻辑库例如标准单元库和宏单元库Design Compiler会自动将link_path包括target_library变量中的逻辑库按照特征化环境的PVT值分组并根据场景中设置的最大条件工作环境的PVT值决定每个场景需要使用哪个库组。如果工具在所指定的库组中找不到合适的单元将会报错例如Error: cell TEST_BUF2En_BUF1/Z (inx4) is not characterized for 0.950000V, process 1.000000, temperature -40.000000. (MV-001)下面列出了一些设置阶段可能出现的问题。逻辑库不一致警告当使用多个库组时如果同名单元在功能上不完全一致或者它们的引脚名称及顺序不同工具会发出警告指出库之间存在不一致建议首先使用如下命令检查库的一致性set_check_library_options -mcmm check_library -logic_library_name {MAX.db MIN.db}使用-mcmm选项会导致check_library命令执行专门针对多工艺角和多工作模式的检查如工作环境或掉电不一致等如果检测到不一致工具会生成详细报告并报告以下信息Information: Logic library consistency check FAILED for MCMM. (LIBCHK-360)dont_use属性当使用多个库组时如果在某个库单元上设置了dont_use属性则要求该库单元在所有库组中都要设置dont_use属性否则工具会认为这些逻辑库不一致。使用通配符可以方便地在多个逻辑库中设置dont_use属性如下所示set_dont_use [get_lib_cells */AN2]确保库单元所属的逻辑库的PVT值唯一正如上面所说逻辑库按照特征化环境的PVT值分组如果一个库单元在两个逻辑库中都存在且它们的特征化环境的PVT值相同则它们会被分为同一个库组相应的场景会在link_path包括target_library变量从左到右选择第一个匹配的单元这可能会导致错误的链接映射。下面展示了一个例子即使在设置工作环境时使用-library或-max_library选项指定了逻辑库错误的链接映射也可能发生这些选项只是帮助找到工作环境。表1 逻辑库情况逻辑库名以及在target_library变量中的顺序特征化环境PVT工作环境MAX1.db1/1.30/100MAX1(1/1.30/100)MAX2.db1/1.30/100MAX2(1/1.30/100)表2 场景以及它们的最大条件工作环境场景s1s2最大条件工作环境MAX1MAX2假设MAX1.db和MAX2.db中包含相同的库单元但它们的特征化环境PVT相同因此分为同一个库组即使s2场景选择了MAX2工作环境但还是会错误链接映射到MAX1.db。创建、设置和报告场景使用create_scenario命令可以定义一个场景推荐最少有一个最坏情况的setup场景和一个最坏情况的leakage场景针对其他场景的进一步优化建议在IC Compiler/IC Compiler II中完成。建议使用三段式命名规则来保持清晰和一致性如下所示MM_TYPE.OC_TYPE.RC_TYPEMM_TYPE为模式类型比如mode_norm、mode_slow、mode_testOC_TYPE为工作环境如OC_WC、OC_TYPRC_TYPE表示提取角TLUPlus文件比如RC_MAX_1、RC_MIN_1。当第一个场景被创建时设计中先前存在的所有场景特定约束都会被清除并会出现以下警告Warning: Any existing scenario-specific constraints are discarded. (MV-020)使用set_active_scenarios命令可以设置激活的场景不包含在内的场景即为未激活状态默认情况下所有创建的场景都处于激活状态。使用set_active_scenarios命令可以设置各场景的优化状态比如是否进行建立时间优化、是否进行漏电功耗优化、是否进行动态功耗优化等。使用report_scenarios命令可以报告各场景的激活状态、优化状态等信息使用report_scenario_options命令可以报告各场景的优化状态信息。指定TLUPlus文件必须使用set_tlu_plus_files命令为每个场景指定TLUPlus文件常规流程中可以不指定否则会出现以下错误Error: TLU file not set for scenarios ***. (OPT-1439)如果TLUPlus库文件不正确工具将出现以下错误Error: TLU sanity check failed (OPT-1429)设置工作环境必须使用set_operating_condition命令显式为每个场景定义工作环境而不能使用默认工作环境推导这在常规流程中是允许的否则会出现以下错误Error: Either no operating condition has been applied for the current design (warning MV-028), or the libraries have improper operating condition characteristics, as reported in warnings LIBSETUP-026 or LIBSETUP-027. (LIBSETUP-029)指定约束条件就像常规流程中那样可以使用SDC命令为当前场景设置相应的设计约束使用current_scenario命令可以查看和设置当前场景。几乎所有的SDC命令都只对当前场景生效除了如set_max_area等少数SDC命令外但非SDC命令则不一定具体情况可以查看命令手册中的Multicorner-Multimode Support一栏。使用报告命令一些命令支持-scenarios选项可以对指定特定场景的信息进行报告例如report_timingreport_timing_deratereport_powerreport_clockreport_path_groupreport_extraction_optionsreport_tlu_plus_filesreport_constraintreport_netreport_clock_treereport_timing_deratereport_clock_timingreport_activityreport_qor但一些命令只能报告当前场景的信息例如report_annotated_checkreport_annotated_transitionreport_annotated_delayreport_attributereport_case_analysisreport_internal_loadsreport_clock_gating_checkreport_delay_calculationreport_delay_estimation_optionsreport_transitive_fanoutreport_disable_timingreport_power_calculationreport_timing_requirementsreport_transitive_faninreport_crprreport_saif还有一些命令不依赖场景相关的信息例如report_areareport_buffer_treereport_congestionreport_dont_touchreport_hierarchyreport_libreport_multibit_bankingreport_power_switchreport_preferred_routing_directionreport_retention_cellreport_scan_chainreport_unitsreport_size_only与set_min_library命令的区别使用多工艺角和多工作模式将在不同的场景中将同一个设计映射到不同的逻辑库可以使用report_cell命令查看不同场景中的映射情况。使用set_min_library命令设置了一组最大与最小条件的逻辑库但设计是被映射到最大条件的逻辑库只是在分析最小条件延迟时会考虑最小条件的逻辑库。流程示意脚本下面给出了一个多工艺角和多工作模式的流程示意脚本只保留了关键信息省略了一些步骤。# Basic Script to Run a Multicorner-Multimode (MCMM) Flow # ------ Path Settings ------ set search_path . $DESIGN_ROOT $lib_path/dbs $lib_path/mwlibs/macros/LM set target_library stdcell.setup.ftyp.db stdcell.setup.typ.db stdcell.setup.typhv.db set link_library [concat * $target_library \ setup.ftyp.130v.100c.db \ setup.typhv.130v.100c.db \ setup.typ.130v.100c.db] set_min_library stdcell.setup.typ.db -min_version stdcell.hold.typ.db # ------ Milkyway/NDM Library Setup ------ # ------ Load Design ------ # ------ Load UPF ------ # ------ Scenarios ------ # Scenario 1: Setup - Worst Corner create_scenario s1 set_operating_conditions WORST -library stdcell.setup.typ.db:stdcell_typ # ------ set_voltage ------ set_tlu_plus_files -max_tluplus design.tlup -tech2itf_map layermap.txt read_sdc s1.sdc set_scenario_options -scenarios s1 -setup false -hold false -leakage_power true # Scenario 2: Hold - Best Corner create_scenario s2 set_operating_conditions BEST -library stdcell.setup.ftyp.db:stdcell_ftyp # ------ set_voltage ------ set_tlu_plus_files -max_tluplus design.tlup -tech2itf_map layermap.txt read_sdc s2.sdc # Scenario 3: Nominal create_scenario s3 set_operating_conditions NOM -library stdcell.setup.ftyp.db:stdcell_ftyp # ------ set_voltage ------ set_tlu_plus_files -max_tluplus design.tlup -tech2itf_map layermap.txt read_sdc s3.sdc # ------ Set Active Scenarios ------ set_active_scenarios {s1 s2} report_scenarios # ------ Compile Report ------ compile_ultra -scan -gate_clock report_qor report_constraint report_timing -scenario [all_scenarios] # ------ Insert DFT ------ insert_dft # ------ Incremental Compile ------ compile_ultra -incremental -scan