版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
集成电路EDAICCII简介
物理设计的挑战先进工艺的挑战EDA工具的发展在原有的框架基础上进行改进:稳定性、学习成本低、后期效果差。重新设计新的框架:学习成本提高、初期的阵痛(PPA差且bug多)、后期效果好。两个方向ICCICCIIICCompilerII芯片后端设计
6.61.块(Block)和设计库块是设计数据的容器。read_verilog为Verilog网表创建块,基本的块操作命令被命名为*_block,例如:open_block,save_block。即Blocks是Verilog网表的容器,而DesignLibrary是Blocks和其他一些库级数据的容器。create_libread_verilog...save_block/save_libcloselib6.6.1
基本概念2.ObjectsICCII由很多对象(Objects)种类组成,有design/port/cell/pin…ICCII支持一整套与设计相关的对象和TCL命令,用于创建、查询、修改和删除这些对象,包括类型:逻辑对象,如:cells,ports与nets;TimingData对象,如:modes与corners;物理对象,如:shapes,vias,tracks与blockage;单元库对象,如:libraries,librarycells与librarypin。命令get_*用于搜索设计中所用到的对象。要获取对象类型的完整列表,使用命令:icc2_shell>get_defined_attributes-return_classes可以使用帮助命令:help_attributes工具支持create,get,与remove特定类型的对象的命令。report_attributes-application[get_selection]6.6.1
基本概念3.ApplicationOptions应用程序选项控制ICCII命令的行为和功能,应用程序选项使用命名约定:category.sub_category.option_name与时间相关的应用程序选项从时间开始。例如要报告所有与时间相关的应用程序选项,使用report_app_optionstime.*命令。全局的应用选项:set_app_options-list-nameGlobalValue会覆盖系统默认的Value。报告那些被修改的Global的AppOptions:report_app_options-non_default-global包含GlobalApplicationOptions的设置,在工具启动之前就设置好。6.6.1
基本概念4.ICCII图形界面GUI可以交互式创建脚本,可以执行整个脚本或一个选择,可以将脚本保存到文件中。1)NDM(NewDataModel)具有统一的数据结构(图6.50)。TimingView可以理解为db,包含时序的信息及功耗的信息等;LayoutView包含物理形状信息,无连接信息,相当于GDS,用于产生GDS;DesignView相当于做Design,包含物理形状以及Pin和连接信息,可以用来产生FrameView;FrameView包含物理信息的抽象形式。6.6.1
基本概念6.6.1
基本概念图6.50ICCIINDMdesigndesigndesignlayoutlayoutlayoutframeframeframeAN2timingtimingtimingOR2INVLibraryCatalogLibrary-LevelData…2)BlockLibrary中有各种视图(图6.51)DesignView(.design)是一个完整的物理视图,包含单元的全部设计信息,包括放置的块实例和布线网格,这是默认的视图类型;FrameView(.frame)是一个有限的物理视图,仅包含执行块作为实例的放置和布线到实例端口所需的信息;AbstractView(.abstract)仅包含子设计接口信息的简化视图,用于设计下一个更高级别的布局和时序分析;OutlineView是一个大型子块的简化视图,用于平面图创建。
AbstractView比较重要,是一个简化版的DesignView,Top实现的时候用的就是AbstractView,把接口的物理信息以及时钟树上的物理信息提取出来。6.6.1
基本概念ReferenceLibrarylistTechnologydata…my_des_libraryblock_topdesignviewblock_Adesignviewframeviewabstractviewblock_Bdesignviewframeview6.6.1
基本概念图6.51BlockLibrary3)新的基础架构ICCII是基于新的框架结构,全并行引擎,多级物理层次,先进工艺的Rule支持,MCMM优化,可以进行更多数量的mode/corner组合,LibraryManager工具专门产生NDM。4)多级物理层次(图6.52)ICCII支持透明层次结构。支持直接在任意物理层次查询、修改和创建对象,无需切换到对应的Block中。可以获取相对于顶层坐标系的物理信息。6.6.1
基本概念6.6.1
基本概念图6.52多级物理层次5)可扩展Timer(图6.53)Timer可进行时序运行,ICCII是基于Mode而不是Scenario,一个Mode对应的库有不同的PVT,这样就可以对不同的PVT进行插值,从而增加灵活性。6.6.1
基本概念图6.53可扩展Timer6)ICCII并行优化(图6.54)可同时使用多种优化方法:Re-synthesis,Re-buffering,Cloning,Re-ordering,Decomposition。6.6.1
基本概念图6.54ICCII并行优化7)在ICCII中可以直接调用Redhawk的引擎(图6.55)使设计人员可以引入电源完整性分析和修复功能,能在同一环境中分析和修改设计,能够解锁更好的PPA。6.6.1
基本概念图6.55ICCII中直接调用RedhawkECOfusionflow(ICCStarRCPT的融合流程),见图6.56。6.6.1
基本概念图6.56ECOFusion6.6.2ICCIIDesignSetup用ICCII进行一个设计的最基本步骤(图6.57):1.NDM库生成;2.设计和时序设置。图6.57ICCII进行一个DesignFlow1.DesignLibrary包括Block、CellLibraries(NDM形式的标准单元库和IP单元库)、TechnologyLibrary(NDM形式)。通过ICCIILibraryManager产生NDM,NDM中包含了的信息如图6.58所示。有了NDM后,就可以进行Design和TimingSetup。6.6.2ICCIIDesignSetup图6.58ICCIILibraryManager首先创建工作区以构建NDM,读取技术文件。从LEF,GDS,.frame,.db文件读取输入数据,读取物理和时序数据等PVT条件到工作区。之后检查工作区,验证输入数据,识别和自动纠正问题,创建框架视图(图6.59)。create_workspaceread_dbread_lefcheck_workspacecommit_workspace-outputLIB_hvt.ndm#保存NDM6.6.2ICCIIDesignSetup图6.59ICCII_LM_SHELL库管理器流程CreateaworkspaceReadinputdatafromLEF,GDS,.frame,.dbCreatetheworkspaceOK?CommittheworkspaceNDMUser-drivenProblemsolving2.Design和TimingSetup包括:创建设计库(需要指定技术与单元库);加载网表和功耗示意图(UPF);应用平面图;加载扫描链定义(Scan-DEF);执行MCMM设置;应用时序和优化控制。如果使用-use_technology_lib,则必须在-ref_libs中列出技术库。create_libORCA.dlib\-use_technology_libabc_tach.ndm\-ref_libs{abc_tech.ndm}附加搜索路径,读网表生成block。lappendsearch_path./netlistread_verilog-topORCAORCA.vlink_block6.6.2ICCIIDesignSetup现在的芯片会在很多种模式(正常工作模式、高性能模式、低功耗模式、测试模式、待机模式)以及不同的PVT角(Hi-TSlow,Lo-TSlow,lo-TFast,Hi-TFast,MaxLeakage)运作。模式、角与场景的建立。先定义模式和角,然后模式和角组合在一起就是场景。create_modeM1create_modeM2create_cornerC1create_scenario-modeM1-cornerC1-nameM1_C1create_scenario-modeM2-cornerC2-nameM2_C16.6.2ICCIIDesignSetup得到场景之后,需要把一些约束文件读进来。current_scenarioM1_C1current_scenarioM2_C1read_sdcC1_corner.sdcread_sdcM2_mode.sdcread_sdcM1_mode.sdcread_sdcM2_C1_scenario.sdcread_sdcM1_C1_scenario.sdcread_sdcglobal_constraints.sdc6.6.2ICCIIDesignSetup定义PVT,针对每一个场景去指定相应的process/voltage/temperature,为了清楚,建议使用直接法:set_process_number0.99set_voltage0.7-object_listVDDset_temperature1256.6.2ICCIIDesignSetup指定TLUplus寄生RC模型,添加提取寄生参数的模型,读入针对每个角所对应的TLUplus文件。read_parasitic_tech-tlup$TLUPLUS_MAX_FILE\-namemaxTLUread_parasitic_tech-tlup$TLUPLUS_MAX_FILE\-nameminTLUset_parasitic_parameters-cornerc_slow\-library$(techlib)-early_specmaxTLU\-late_specmaxTLUset_parasitic_parameters-cornerc_fast\-library$(techlib)-early_specminTLU\-late_specminTLU6.6.2ICCIIDesignSetup控制场景分析/最佳化。create_scenario命令创建一个场景,使其处于活动状态,并启用以下分析类型:建立和保持时间,泄漏和动态功率,最大Transition以及最大和最小电容。布局、CTS和布线优化在所有活动场景上同时发生。6.6.2ICCIIDesignSetup6.6.3布局规划Floorplan自动布局布线(AutomaticPlaceandRoute,APR)流程如图6.60所示。布局规划Floorplan位于后端设计的最前端。把元素摆放好后进行电源网络设计。定义了:大小和形状、电压域的形状和位置、宏(Macro)的位置、I/OPin的位置、创建Power网络、输出信息。为了避免拥堵,可能使用一些标准单元的Blockages,产生电源网络(PowerNetworkSynthesis,PNS),写出Floor。Design&TimingSetupSynthesisFloorplanDefinitionPlacement&OptimizationCTS&OptimizationRouting&OptimizationSignoffICCompilerII6.6.3布局规划Floorplan自动布局布线(AutomaticPlaceandRoute,APR)流程:1.定义大小用initialize_floorplan命令,例如:initialize_floorplan\-side_size_controlratio-shapeU\-side_ratio{312212}-core_offset{40}\-core_utilization0.7-aspect_ratio1Floorplan平面图初始化定义核心区域内的标准单元布局点阵列,支持各种Core的形状:矩形、L-形状、T形状、U形状以及自定义形状。.6.3布局规划Floorplan6.6.3布局规划Floorplan自动布局布线(AutomaticPlaceandRoute,APR)流程:2.电压域的形状和位置ICCII会自动创建一个VA(VoltaeArea),是根据UPF(UnifiedPowerFormat)定义的顶层模块的PowerDomain来创建的。用户需要自己创建VoltageAreas。create_voltage_area-power_domains…VA并不需要在shape_blocks之前创建。可以在这个电压域周围,定义一个“HardKeepoutMargin”,称为警戒带(GuardBand)。set_shaping_options-guard_band_size106.6.3布局规划Floorplan自动布局布线(AutomaticPlaceandRoute,APR)流程:3.标准单元和宏单元的放置在Floorplan阶段进行标准单元和宏单元的粗略放置(CoarsePlacement)。create_placement-floorplan[-congestion…]布局可以被plan.place.*以及plan.macro.*这些ApplicationOptions进行配置。set_macro_constraintsset_macro_relative_locationcreate_macro_arraycreate_macro_relative_location_placement在运行place_opt之前,Fix所有宏的位置:set_fixed_objects[get_flat_cells\-filter“is_hard_macro”]摆完了Macro之后需要摆I/OPins。6.6.3布局规划Floorplan自动布局布线(AutomaticPlaceandRoute,APR)流程:4.I/OPin的位置三种PinConstraints:BlockPin,IndividualPin,BundlePin。通常会把Macro摆在Block的边上,摆Pin时需要注意,有时候Block之间会有一些交互,故可能会有对PinBlock摆放的约束。或者针对特殊的Pin,比如信号Pin、Clock、差分信号Pin等的摆放有些特殊要求,如果有要求,在摆Pin之前需要把它读进来,用place_pins-self把所有的Pin摆放到正确的位置上。set_block_pin_constraints–self\-allowed_layers"M3M4"…create_pin_constraint-typeindividual-portsclk…place_pins-self-allowed_layers…5.创建Power网络以及输出保存Floorplan电源规划的挑战(PowerPlanningChallenges):数字和模拟逻辑混合可能需要复杂的CoreRings,很多设计具有多个电压区域,每个区域都需要独特网络结构,特殊的P/G模式。构建电源网络首先定义P/G区,定义模式结构(金属层、间距和宽度等),定义P/G拓扑策略,需要指定打哪些Net,比如VDD、VSS等。这样做的好处是,可以灵活适应平面图变化(不会有固定坐标的方式),当Floorplan后续有一些变化时,就很灵活,不需要手动修改这些数值。6.6.3布局规划Floorplan5.创建Power网络以及输出保存Floorplan基于模式的(Pattern_based)PNS(PowerNetworkSynthesis)电源网络综合:定义P/G区,定义模式结构,定义金属层间距与宽度等属性,根据Floorplan进行灵活的调整,编译电网等。6.6.3布局规划Floorplan分析全局的布线拥塞情况route_global-floorplantrue\-congestion_map_onlytrue拥塞潜伏在宏单元的周围。标准单元的布线,经常在靠近引脚丛以及宏单元的角落,比较困难。在输出Floorplan之前,需要将已经放置好的MacroCellFix。set_fixed_objects[get_flat_cells\-filter"is_hard_macro"]6.6.3布局规划Floorplan6.输出信息捕获所有平面图信息write_floorplan-output[filename]如果送到前端DC综合的话,是不需要包含标准单元的Placement的,DC在综合的时候会重新考虑Macro的摆放。write_floorplan-formaticc-output[filename]\-net_types{powerground}\-include_physical_status{fixedlocked}带着ICCII提供的Floorplan再次用DC进行综合。#在DC中write_icc2_files6.6.3布局规划Floorplan6.6.4布局与优化Placement&Optimization在布局之前,需要进行布局准备的检查,一次性的设计和流程需求设置,拥塞、时序、功耗还有面积的QoR(QualityofResults)的设置,QoR设置主要分为Congestion-focused设置、Timing-focused设置和Power/Area-focused设置三部分。最后才是placement&optimization。布局优化命令place_opt(集成好的命令)执行标准单元的布局和优化。默认place_opt会执行所有的5个阶段。1.布局和逻辑优化place_opt的5个阶段1)初始粗定位(InitialCoarsePlacement,initial_place)2)HFN缓冲(HFNBuffering,initial_drc)3)初始优化(InitialOptimization,initial_opto)4)最终布局(FinalPlacement,final_place)5)最终优化(FinalOptimization,final_opto)6.6.4布局与优化Placement&Optimization2.布局前的准备布局之前要做一些检查。使用get_design_checks罗列出所有可用的检查,在布局之前运行下面的指令:check_design-checkpre_placement_stage1)物理约束检查check_design-checkphysical_constraints#对Floorplan的Objects执行数条检查,包含layers、bounds、placement等。2)先进的技术节点(AdvancedNodes)专属设置先进的技术节点需要更复杂的设置,去控制RC参数提取(Extraction)、布局(Placement)、合法化(Legalization)以及通孔梯子(Vialadders)。很多设置不同的工艺节点,都是不一样的。例如:set_technology-node76.6.4布局与优化Placement&Optimization2.布局前的准备3)先进合法化引擎AdvanceLegalizerset_technology指令会使用7nm节点以及其他先进工艺节点的AdvanceLegalizer。4)满足特定QoRStrategyset_qor_strategy-stagepnr-metrictiming除了timing之外,还可以是leakagepower等,不同选项优先级不同。5)为优化的MCMM创建场景(Scenarios)并发的MCMM的优化需要创建场景。6.6.4布局与优化Placement&Optimization6)配置place_opt为SPGFlow如果网表是通过DC-GSPG综合生成的,那么在ICCII中最好也是用SPG的布局流程。set_app_options-list{place_opt.flow.do_spgtrue}7)高扇出综合端口穿孔(PortPunching)做DFT时高扇出综合以及插Buffer都发生在place_opt的initial_drc阶段。set_freeze_ports-data|-clock|-all[get_cellscellA]8)自动均匀分配冗余的单元综合后的网表中会包含多余的单元SpareCells。多余的单元会和整齐的标准单元一起放置,会自动的均匀扩散出去。6.6.4布局与优化Placement&Optimization9)加入没有存在于网表中的SpareCellsadd_spare_cells-num_instance20-cell_name\SPARE_NAME-lib_cell{NOR2NAND2}legalize_placement-incrementalset_placement_statuslegalizer_only\[get_flat_cells-filleris_spare_cell]10)移除掉不需要的Ideal_networks能够使用report-ideal_network去报告所有的ideal_networks,移除掉所有的IdealNetwork约束。remove_ideal_network-all6.6.4布局与优化Placement&Optimization11)LibcellPurpose每个LibCell都有四个Purpose。建议使用以下的LibCellPurpose:Optimizationsetup/holdPower,逻辑设计规则的优化,CTS时钟树综合,HoldPurposeBehaveLikeOptimization,Power目的优化可配置。限制一些特定单元的用处在CTS期间或者其他逻辑优化的期间,基于时序、拥塞以及Power的一些考虑,可能会想要限制一些特定单元的用处,一些单元不建议使用。例如一些功耗比较大的Cell不到万不得已不会使用。命令:set_lib_cell_purposereport_lib_cells6.6.4布局与优化Placement&Optimization12)布线前的PowerOptimization默认ICCII不会执行功耗的优化。可用的功耗优化的类型:Leakage、Dynamic、Total。set_app_options-list\{opt.power.modenone|leakage|dynamic|total}set_scenario_status{func.tt_60c}-leakage_powertrue\-dynamic_powertrueLeakagePower的优化:set_app_options-nameopt.power.mode-valueleakage|totalDynamicPower的优化,当优化选项设置成dynamic或者total时会执行。set_app_options-list{opt.power.modedynamic|total}TotalPower的优化:在高级的工艺节点中,在一个电压域中Leakage和DynamicPower有不同的变化趋势。6.6.4布局与优化Placement&Optimization13)Power的计算需要开关的活动率(SwitchingActivity)需要SAIF(SwitchingActivityInterchangeFormate)文件,计算Power的精确翻转率。set_scenario_status-dynamic_powertrue-leakage_powertruefunc.tt_60cread_saifdesign_sim.saif-scenariofunc.tt_60c默认开关的活动率会自动繁衍至整个设计。通过set_switching_activity设置的局限性。主要控制信号(resetenable)在使用set_switching_activity时,会继承默认开关活动率的值。infer_switching_activity能够对控制信号应用一个合适的静态值,以及给时序输出一个更好的更合适的翻转率。infer_switching_activity定义必要的节点去推算翻转率。set_scenario_status-dynamictruefunc.tt_60cinter_switching_activity-scenariosfunc.tt_60c\-sci_basedall-apply-output…6.6.4布局与优化Placement&Optimization14)SwitchingActivity覆盖率使用report_activity-driver确保重要节点有接近100%开关活动率的覆盖率。报告会将活动率分成以下几类:simulated、annotated、derived、calculated、default。15)多比特Banking(打包)根据一些条件,将单比特的寄存器合并成多比特的寄存器。条件包括:更小的面积/功耗,由于共享晶体管以及优化过的晶体管级的Layout,减少总的时钟网络的长度。集成的多比特Banking。多比特banking/debanking被集成到了place_opt指令中。解组(Debanking)在final_opto阶段被执行。
place_opt.flow.enable_multibit_bankingplace_opt.flow.enable_multibit_debanking配置多比特Banking:set_multibit_options-exclude#指定一些单元避免被打包6.6.4布局与优化Placement&Optimization16)追踪设计的变化(Transformation)追踪设计的变化会造成逻辑定价性检查的问题,而且并不是自动捕获的。set_svfMY_SVF.svf17)布局吸引(PlacementAttraction)将实现同一逻辑功能的一组单元或者Module放在一起,能够避免Module的撕裂。PlacementAttraction的用法和建议:对于有超大规模Cells或者Module的设计非常合适,使用Bounds应用于一小组的Cells。create_placement_attraction-namerisc_module\-effortmedium…place_opt在布局组中的Cells会互相靠在一起,但是这个布局组能够被放置在Core内的任何位置,或者说是Floating的。根据需要,使用-region选项可以指定一个点、一个边界、或者一个多边形区域为CellAttract的区域。6.6.4布局与优化Placement&Optimization18)专注于拥塞的设置步骤(QoR相关)在执行完place_opt之后分析拥塞和Cell/Pin的密度。DRC修复主要涉及到在芯片设计过程中,通过一系列的技术和方法来解决设计规则检查(DRC)中发现的问题。在成熟节点的定制IC设计中,版图设计人员需要将大量时间花费在修复DRC错误上。通过采用实时DRC反馈,设计人员能够提高DRC生产率,同时通过实施优化设计,提高版图设计的质量。6.6.4布局与优化Placement&Optimization19)全局布线拥塞分析在执行任何布局指令之后,首先就要分析拥塞。route_global-congestion_map_onlytrue-effort_levellow提高Placement/Congestion的effort_level。提高final_place的effort_level可能会减轻拥塞,也可能提高Timing。set_app_options-nameplace_opt.place.congestion_effort\
-valuehighset_app_options-nameplace_opt.final_place.effort\
-valuehigh基于全局布线DRC修复应该是在GlobalRoute阶段。利于initial_drc步骤(是为no_SPG流程准备的)。set_app_options-nameplace_opt.initial_drc.global_route_based-valuetrue6.6.4布局与优化Placement&Optimization20)KeepoutMargins和PlacementBlockage应用新的或者修改已经存在的KeepoutMargins以及PlacementBlockage。21)CellPin的密度分析ICCII有强大分析Cell/Pin密度的工具,帮助理解拥塞产生的原因,是否高Cell密度导致拥塞。#定义一个利用率80不允许寄存器的区域create_placement_blockage\-boundary{{1020}{100160}}\-typeregister-blocked_percentage206.6.4布局与优化Placement&Optimization22)优化PinAccess在粗布局期间,打开PinDensityAwareness。ICCII会自动基于设计计算最大的PinDensity,并在布局期间考虑PinDensity的问题。place.coarse.pin_density_aware在Legalization期间打开PinOptimization选项。通过重新分配单元提高高PinDensity区域的可布线性。place.legalize.optimize_pin_access_using_cell_spacingtrue23)拥塞模型增强ICCII通过增强布线模型,以及CellExpansion的行为,优化了全局的拥塞情况。6.6.4布局与优化Placement&Optimization24)支持SoftCongestionMap的布线器GRcongestionmap包含了布线资源的软需求,包括用户添加的SoftNDRs,LayerOptimization的需要,和布线的DRCs一起,都会影响到最后的DetailRouting。通过以下option打开softcongestion:route.global.export_soft_congestion_maps一旦打开,布局就会使用GRmaps执行单元扩展为布线资源创建足够空间。双向的单元扩展单元扩展布局器会扩张单元的面积,创建空的区域,为后期附加布线资源留出空间。现在的布线器,可以对单元进行双向的扩展。place.coarse.congestion_expansion_direction6.6.4布局与优化Placement&Optimization25)时钟数据恢复(ClockandDataRecovery,CDR)拥有复杂AOI/OAI逻辑结构的设计,会造成很多线网的交叉,因此会造成内核区域拥塞的Hotspots。CDR会标记那些被输入引脚交叉的线网。palce.coarse.cong_restruct26)聚焦时序的设置(QoR相关)一旦拥塞的情况可以接受,接下来就是分析时序和逻辑DRCs。执行以下的设置步骤去提高时序:使用DesignFusion;自动的时序控制;BufferingAware的布局;打开two-pass的布局流程;控制单元的最大密度;StreamLegalization;打开ICG的优化。6.6.4布局与优化Placement&Optimization27)Timing和DRC的QoR报告report_qor-summaryreport_timingreport_constraint-all获得综合的设计指标create_qor_snapshot-nameplace_optreport_qor_snapshot-displayquery_qor_snapshot-name6.6.4布局与优化Placement&Optimization28)针对timing、area、power的DesignFusion逻辑重构执行设计逻辑重构,确保面积、时序、功耗能得到最好结果。mon.advanced_logic_restructuring_mode\-valuenone重构的动作可以通过下面的选项修改:mon.advances_logic_restructuring_wirelength_costing\-valuehigh打开自动的密度控制place.coarse.enhance_auto_density_control-valuetrue6.6.4布局与优化Placement&Optimization29)TwoPassPlacementFlow对于宏单元主导的设计,打开two-passinitialplacement,附加到GR-opto能够显著提高时序和拥塞情况。set_app_options\-list{place_opt.initial_drc.global_route_basedtrue\place_opt.initial_place.two_passtrue}30)legalization最小化大的移动在legalization期间,单元可能被移动到很远的位置,会影响到时序。StreamLegalization的目的就是最小化这个移动。用多步、小的移动去代替大的移动。place.legalize.stream_palce-valuefalseplace.legalize.stream_effort-valuelowplace.legalize.stream_effort_limit-value106.6.4布局与优化Placement&Optimization31)优化时钟门使能逻辑(Pre-CTS相关)在CTS之前,默认ICG(IntergratedClockGating)时钟引脚会和寄存器时钟引脚声明相同的Latency,这会造成:使能逻辑的优化是乐观的,可能会在CTS之后造成ICG时序的违例。一般的解决方法:应用修改的ICG时钟引脚的Latencies等。这些方法的缺点:消耗时间且易于产生错误,应用的值是静态的。整个时钟树的动态功耗会占整个设计动态功耗的30%-40%,所以加ICG,即门控时钟。32)集成时钟门的延迟估计在place_opt期间默认是打开的,估计的结果会集合到pre_CTS的优化流程中,为了确保ClockLatency的精确计算,在每个关键步骤都会进行更新。placementmultibitbankingclockgateoptimization6.6.4布局与优化Placement&Optimization33)Latency的估计为了使用CTS的设置做Latency的估计,需要在palce_opt之前设置:set_clock_routing_rule指定CTS的buffer和inverter的库单元:set_lib_cell_purpose-includects不要使用TrialClockTree或Optimize-ICG的特性,它会关闭ICGLatency的估计。reset_app_options{place_opt.flow.optimize_icgs\place_opt.flow.trial_clock_tree}Report估计的Latency。6.6.4布局与优化Placement&Optimization34)减少功耗和面积执行以下步骤:提高功耗和面积的优化effort_level;打开布线前的layeroptimization;打开布线驱动的extraction;打开低功耗的布局选项。35)功耗分析与面积分析report_powerreport_power_calculationreport_design通过移动单元减少高翻转信号线的长度,来减少动态功耗,它在布局的所有步骤中都是可用的,包括InitialPlacement。读入SAIF文件会得到更好的优化结果。6.6.4布局与优化Placement&Optimization36)Pre-route和Post-route的相互关系place_opt会使用两层的虚拟布线,去计算线网的长度,默认使用平均RC,但是先进节点在层与层之间存在很大的RC的变化,而且预测需要的通孔也是困难的,会造成post-route的结果和pre-route的结果相差很大。37)pre_routelayer优化在final-opto阶段自动为时序关键的线网,分配使用更小的Layer约束更高层的Layers,这个特性是默认常开的。减少相同路径所需要的Buffer的数量。也会将事先Promoted升层的线网Demote到更低的层次中。6.6.4布局与优化Placement&Optimization38)优化的RDE(RouteDrivenEstimation)RDE在已经布局好的设计上使用全局布线去获取以下的信息:超过最大/最小层使用量的详细层占用率信息,通道布线(ChannelRouting,GR)拓扑和长度,Via的电阻,单元Pin的形状。一旦信息获取到之后所有的虚拟布线会使用通道布线的RC模型去做RC参数的提取,确保当前设计更接近寄生参数和时序的关系,并不会提高整个流程的运行时间。在整个pre-route的流程中RDE会发生两次:在place-opt和clock-opt的一开始。RDE的信息会随着设计保存,在子优化中重复使用。RDE在16nm及以下工艺中是默认打开的。查看以下优化选项:mon.enable_rde6.6.4布局与优化Placement&OptimizationExampleScript6.6.5从create_ndm开始设计设置1.NDM库(CellLibrarys)ICCII中使用NDM新的数据模型。使用的标准单元和宏单元都是NDM格式的,被称作CLIBs。整个NDM库包含四部分,每一个CLIB都包含完整的布局布线优化需要的物理、逻辑、时序、功耗的定义。逻辑、时序、功耗的信息保存在TimingView中,物理信息保存在FrameView中。CLIB可选择性的包含设计以及LayoutView的信息,CLIB和特定的工艺是相联系的。6.6.5从create_ndm开始设计设置1.NDM库(CellLibrarys)在CLIB创建之后,指令:get_libsget_lib_cellsget_lib_pinsget_lib_timing_arcs都接受.db库的名字,以及NDM库的名字作为参数。当.db库的名字被使用,NDM库的名字需要被bereturned。6.6.5从create_ndm开始设计设置2.libraryconfigurationexample(自动的CLIB创建)lappendsearch_pathlib_data/DBlib_data/FRAMEset_app_varlink_library\"ABC14_ff_1p16v_n40c.db..."create_libORCA.dlib-technologyABC4_9m.tf\-ref_libs{ABC4_svt.frame...}组建好的CLIBs默认会储存为了以后的使用。库的配置允许一个Central和一个Local库的缓存。指定link_library的变量值.frames还有一个CentralCellLibrary的位置。6.6.5从create_ndm开始设计设置2.libraryconfigurationexample(自动的CLIB创建)库配置的例子:set_app_varsearch_path…set_app_options-namelib.configuration.cdpl_host\-value…set_app_options-list{lib.configuration.local_output_dir…lib.configuration.central_output_dir…}set_app_options-namecess_lable_mapping...set_app_varlink_library...create_libORCA.dlib-technologyABC4.tf-ref_libs...6.6.5从create_ndm开始设计设置3.预组建(pre_assembled)与新生成的组合除了生成全部的CLIBs(.db+.frame),使用预组建的CLIBs,生成新的CLIBs是可行的。.ndmforstandardcelland.db+.frameformacro&IP使用更新的db文件:lappendsearch_path…create_libORCA.dlib-technologyABC4_9m.tf-ref_libs{ABC4_std.ndm…}analyze...lappendsearch_path/x/y/sram_db/x/y/sram_framesetlink_library"ABC4_sram_12c.db"set_ref_libs{ABC4_std.ndmABC4_ls.ndm…}report_ref_libs4.LibraryManagerflow创建一个Workspace去创建NDM库读入工艺文件。将需要的PVT条件下的物理和时序读入Workspace中来。检查工作区。验证输入的数据,识别和自动更正错误,创建FrameView。将组合数据以NDM参考库的方式写入硬盘,并将Workspace移除。自动单元库创建ExplorationFlow是一个自动化的创建单元库的流程。使用命令加载所有单元的逻辑以及物理库,包括标准单元IP核,在所有可用的PVTs和电压域的库信息。选择希望设计工作的PVT参数。然后让LibraryManager做剩下的工作:组合正确的逻辑和物理库信息;检查库的一致性;为所有加载的单元创建FrameView;创建NDM单元库。6.6.5从create_ndm开始设计设置5.PVT的配置使用PVT的配置,能够让ICCII根据指定的PVT从所有导入的DBs中找到正确的时序库。create_workspaceEXPLORE-flowexploration-technologytech.tfset_pvt_configuration-voltage{0.951.16}-temperatures{125-40}read_db[glob./libs/DB/*.db]foreachframe[glob./libs/frames/*.frame]group_libswrite_workspace-filelib_template.tclprocess_workspace6.6.5从create_ndm开始设计设置5.PVT的配置#group1create_workspace"LIB_hvt_ff_c"\-tech./LIB_nm_1p9m_ft.tfread_dbff0p95v125cread_dbff1p16v40cread_ndmhvt_1p9m.framecheck_workspacecommite_workspace-outputhvt_ff_c.ndm6.6.5从create_ndm开始设计设置6.分离的参考库(SeparateReferenceLibrary)每一个参考库都是独立的,需要独立的去指定和打开,需要知道哪一个单元在哪一个库中,参考库的SearchOrder在设计库创建的时候就被定义了。6.6.5从create_ndm开始设计设置7.聚合的参考库(AggregateReferenceLibrary)一个聚合的参考库,是将独立的NDM参考库组合起来。参考脚本:create_workspacestd_lib-flowaggregateread_ndm./LIBRARIES/ndms/hvt_lib.ndmread_ndmlvt_lib.ndmget_libsreport_workspacecheck_workspaceset_lib_order{hvtrvtlvt}commit_workspace[-outputnew_std_lib.ndm]6.6.5从create_ndm开始设计设置8.DesignSetup创建一个DesignLibrary,指定Tech和CellLibraries。lappendsearch_path/x/y/libscreate_libORCA.dlib-use_technology_libabc14_9m_tech.ndm\-ref_libs{abc14_9m_tech.ndmhvt_std.ndmsvt_std.ndmlvt_std.ndmsram.ndmip.ndm}6.6.5从create_ndm开始设计设置9.工艺信息如果使用一个TechLibrary,需要确保它包含NDM数据库所需要的所有信息。create_libORCA.dlib-technologyabc14_9m_tech.tf\-ref_libs...read_parasitics_tech-tlupCmax.tlup-namemaxTLUread_parasitics_tech-tlupCmin.tlup-nameminTLUset_attribute[get_site_defsunit]is_defaulttrueset_attribute[get_layers{M1M2}]track_offset0.03set_attribute[get_layers{M1M3M5}]routing_directionhorizontalset_attribute[get_layers{M2M4M6}]routing_directionverticalset_attribute[get_site_defsunit_st]is_defaulttrue6.6.5从create_ndm开始设计设置10.Block的压缩(Compression)Block可以被压缩来节省在硬盘上的体积,如果想压缩存储的话,需要在创建DesignLibrary时做以下的设置:#所有的block都会被压缩set_app_var\-namepress_design_lib\-valuetrue#可以选择在保存Block时进行压缩的操作save_block-compresssave_lib-compress6.6.5从create_ndm开始设计设置11.执行自动的设计设置如果使用DC综合的话,考虑使用write_icc2_files创建所有ICCII必要的输入文件来实现无缝的切换。write_icc2_files-outputORCA_DC_icc2\-golden_floorplanORCA_TOP.fp/floorplan.tcl#goldenfloorplan是由ICCIIwrite_floorplan指定创建的,DC仅会写入增量的信息。6.6.5从create_ndm开始设计设置12.读入网表创建一个设计#一开始还是要注意将网表的路径添加到search_path中。read_verilog-topORCAORCA.vlink_block#block级的布局布线。设计视图在网表读入时就会产生。13.LinkingLink成功与否主要在于是否有缺失的参考。使用以下命令ReportLink的问题。report_design_mismatch-verboseget_cells-hierarchical-filteris_unbound6.6.5从create_ndm开始设计设置14.加载电源意图主要是通过加载UPF(UnifiedPowerFormat)文件来加载描述电源意图,加载交付UPF文件:load_upfTOP.upfload_upf-scopeI_BB.upf#在加载UPF之后commit_upf引用所有UPF的对象,执行主要的Power与Ground检查,为实例化的PowerManagementCells与Strategies联系起来。建议在加载UPF之后,运行commit_upf命令确保所有都被执行。commit_upf命令会在check_mv_design或者place_opt之中自动运行。6.6.5从create_ndm开始设计设置15.加载DEF的布局文件如果Floorplan使用write_def被保存下来,可使用以下命令加载保存的DEF文件:read_def-add_def_only_objectsallORCA.def16.加载Floorplan如果使用write_floorplan保存了ICCII的Floorplan。sourceORCA_TOP.fp/floorplan.tcl6.6.5从create_ndm开始设计设置17.加载DC的Spg信息DC中的write_icc2_files会创建所有必要的ICCII输入。write_icc2_files-outputORCA_DC_icc2\-golden_floorplanORCA_TOP.fp/floorplan.tclsourceORCA_DC_icc2/ORCA.floorplan/floorplan.tcl指定不使用的布线层默认ICCII会使用工艺文件中定义的所有金属层进行布线set_ignored_layers-max_routing_layerM7report_ignored_layers6.6.5从create_ndm开始设计设置18.加载扫描链定义的信息加载scan-def帮助ICCII识别扫描链的信息和Reorder,会在Placement期间使用ReorderScanchain减少拥塞。read_defORCA_scam.def#scan_def的作用主要是识别电路中哪些单元是ScanChain的部分。6.6.5从create_ndm开始设计设置19.将PGpin与SupplyNet连接综合后的网表没有Power/Ground的SupplyNet和Connection,不许明确的将P/GPin与SupplyNet相连接。P/GNet的名字会在UPF文件中定义,在没有UPF的设计中,使用port_pin_list的-net选项来查看Net的名字。这里也会将tie_high/low的Pin与P/GPin相连接。connect_pg_netcheck_mv_design6.6.5从create_ndm开始设计设置20.打开使用tie_high/lowCell的选项tie_highlow的单元会在PlacementOptimization期间插入到设计之中。set_dont_touch[get_lib_cells*/TIE*]falseset_lib_cell_purpose\-includeoptimization[get_lib_cells*/TIE*]参考库的名字取决于使用ndm后缀的库文件名字,如:std_cell.ndm前缀std_cell:get_lib_cellsstd_cell/AND3*6.6.5从create_ndm开始设计设置21.设计库包(designlibrarypackage)用处就是保存Tapout之前的各阶段信息。可以在设计流程的任何阶段PackaLibrary。write_lib_packageread_lib_package6.6.5从create_ndm开始设计设置22.pack/unpack的使用细节open_libTOP.dlibopen_blockabc...write_lib_packageTOP.packedread_lib_packageTOP.packedlsTOP.dliblib.ndmreflibsabc6.6.5从create_ndm开始设计设置6.6.6ICCII4timingsetup(MCMM的设置)1.Object执行MCMM的设置,根据分析和优化需要定义Corner、Modes、Scenarios,加载MCMM约束,应用时序以及优化控制等。zero-interconnecttimingsanitycheck#0互连的时序稳定性检查6.6.6ICCII4timingsetup(MCMM的设置)2.MCMM今天的芯片必须适应多种工作模式:待机模式(StandbyMode)、测试模式(TestMode)、低功耗模式(LowPowerMode)、高性能模式(HighPerformance)、普通的工作模式(NormalFunctionalMode)。1)并发的(Concurrent)MCMM优化工具允许在多Corner多Mode组合下的并行优化,multi-corner与multi-mode的组合称作Scenarios。6.6.6ICCII4timingsetup(MCMM的设置)2.MCMM2)创建Modes、Corners、Scenarios在定义Scenario之前,先定义Mode和Corners,然后对Mode和Corner进行合适的组合。create_modefunccreate_modetestcreate_scenario-modefunc-Cornerss125ccreate_scenario-modetest-Cornerss125ccurrentcorner+currentmode=currentscenario改变当前的Corner或者Mode就会改变当前的Scenario,反之亦然。6.6.6ICCII4timingsetup(MCMM的设置)2.MCMM3)分类的约束TimingConstraint被分为4大类:ModeSpecific:包含clock、cell等的定义。CornerSpecific:包含PVT参数的Constraints。ScenarioSpecific:具体的Delay和DrivingLoad的信息。Global:全局。6.6.6ICCII4timingsetup(MCMM的设置)2.MCMM分类后的约束指令如下:(1)mode-specific的命令:create_clockcreate_generated_clockgroup_pathset_case_analysisset_cell_modeset_clock_gating_checkset_clock_groupsset_clock_senseset_data_checkset_disable_timingset_false_pathset_latch_loop_breakerset_max_delayset_min_delayset_multicycle_pathset_generated_clockset_sense6.6.6ICCII4timingsetup(MCMM的设置)2.MCMM分类后的约束指令如下:(2)Corner-specific的命令:set_aocvm_coefficientset_extraction_optionsset_loadset_operating_conditions
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 投融资考试题及答案
- 小区安全隐患排查报告范文
- 2025年江西省基层法律服务工作者管理题库含答案
- 控制系统建模与仿真-基于MATLABSimulink的分析与实现(第2版)课件全套 姜增如 第1-11讲 MATLAB2023a基本应用- MATLAB的建模应用
- 疼痛病人的护理
- 2026年中国不锈钢双层单向过滤器市场调查研究报告
- 2026年中国三节式中平滑轨市场调查研究报告
- 2026年中国万能自动烹饪锅市场调查研究报告
- 2026年中国YCM三相异步电动机市场调查研究报告
- 2026年中国L-丙氨酰胺盐酸盐市场调查研究报告
- 污水厂清淤泥施工方案
- 第四届全省职业技能大赛技术文件-电气装置项目
- 全国行业职业技能竞赛(电力交易员)考试题库及答案
- 云南省乡村宜居农房风貌引导图集(乡村振兴版)滇中分册-0
- 高一数学教材同步知识点专题详解(苏教版必修第一册)3.2基本不等式(原卷版+解析)
- GB/T 42167-2022服装用皮革
- 人卫慕课《走进肺功能》试题答案
- 执业兽医机构聘用证明或服务协议
- 手术室护理查房人工膝关节置换术课件
- 石榴脱毒苗木繁育技术规程
- 巴蜀文化智慧树知到答案章节测试2023年四川大学
评论
0/150
提交评论