




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2024/11/91逻辑综合工具DCPart3设计优化集成电路EDA技术实验2024/11/92CONTENTS
Synopsys工艺库层次划分与编码风格设计约束与脚本编写设计优化2024/11/93设计优化总的时间违反TNS时序违例编译策略自顶向下层次化编译时间预算编译CCWSR方法多个实例解析优化方法编译设计展平和构造消除层次优化时钟面积优化2024/11/94总的时间违反TNS最差时间违反(worstnegativeslack):指一个信号从路径起点到终点所需时间超过约束最严重的情况。总的时间违反(totalnegativeslack):指每个路径终点对应的最差时间违反之和。DD-6ns-2ns-3nsclkoutin2in12024/11/95时间约束之非同步设计的时间约束伪路径多周期路径最大延时最小延时2024/11/96伪路径set_false_path[-fromfrom_list][-throughthrough_list][-toto_list]-from:伪路径的起点列表。-through:伪路径经过的节点列表。-to:伪路径的终点列表。伪路径也称为虚假路径,指时序分析时不需要关心的路径。DC不能自动识别伪路径,故需要显示指定。set_false_path命令用于去掉特定路径上时序约束,对异步逻辑和逻辑上的虚假路径非常有用。比如设定从ff1的CP端经单元U1和U2的Z端到达ff2的D端的路径为伪路径,则命令为:dc_shell-t>set_false_path-from[get_pinsff1/CP]–through[listU1/ZU2/Z]-to[get_pinsff2/D]2024/11/97伪路径如果设计中有多个时钟,那么由一个时钟域到另一个时钟域之间的路径为伪路径,需要一一标示,可以重复调用set_false_path命令,也可以采用如下的脚本命令:foreach_in_collectionclk1[all_clocks]{foreach_in_collectionclk2[remove_from_collection[all_clocks][get_clocks$clk1]]{set_false_path-from[get_clocks$clk1]-to[get_clocks$clk2]}}2024/11/98多周期路径set_multicycle_pathpath_multiplier[-setup][-hold][-fromfrom_list][-throughthrough_list][-toto_list]path_multiplier:指定路径的时钟周期数。-setup:指定该路径针对建立时间检查。-hold:指定该路径针对保持时间检查。-from:多周期路径的起点列表。-through:多周期路径经过的节点列表。-to:多周期路径的终点列表。多周期路径指两级相邻寄存器之间的组合逻辑延时较大,不能在1个时钟周期完成。因此需要设定为多周期路径,由set_multicycle_path命令完成。2024/11/99多周期路径图示设计中,时钟周期为10ns,而其中一级加法器的延时近60ns,那么约束方法为:dc_shell-t>create_clock-period10[get_clocksclk]dc_shell-t>set_multicycle_path6-setup-to[get_pinsc_reg[*]/D]多周期路径的另一个应用是:对于电平敏感的设计,设计者希望时钟周期为0,可通过该命令实现。2024/11/910最大延时对于纯组合逻辑,一般使用set_max_delay和set_min_delay进行约束,当然也可以使用虚拟时钟,虚拟时钟的创建和前面理想时钟的讨论相同。比如设定从U0的CP端经单元U1和U2的Z端到达U3的A端的最大延时为5.0ns,则命令为:set_max_delay5.0–from[get_pinsU0/CP]–through[listU1/ZU2/Z]–to[get_pinsU3/A]set_max_delay用于在当前设计中指定从任意起点到任意终点的最大延时。语法格式为:set_max_delaydelay_value[-fromfrom_list][-throughthrough_list][-toto_list][-group_pathgroup_name]delay_value:指定最大延时的值,单位由工艺库决定,一般为ns。-from:延时约束的起点列表。-through:延时路径经过的节点列表。-to:延时约束的终点列表。-group_path:建立一个时序关键路径的组,用于重点优化。该选项对编译时间有较大影响,而且该组优化的优先级高,可能会导致其他的时序违例。因此该选项(或单独使用group_path命令)通常作为综合优化的最后手段使用。2024/11/911最小延时比如设定从U0的CP端经单元U1和U2的Z端到达U3的A端的最小延时为3.0ns,则命令为:set_min_delay3.0–from[get_pinsU0/CP]–through[listU1/ZU2/Z]–to[get_pinsU3/A]set_min_delay用于在当前设计中指定路径的最小延时,与set_max_delay相对,该命令与set_fix_hold命令配合使用修正电路的保持时间,如果发生min_delay违规,在不增大max_delay的情况下综合工具会自动添加合适的延时单元来修复违规。语法格式为:set_min_delaydelay_value[-fromfrom_list][-throughthrough_list][-toto_list]delay_value:指定最小延时的值,单位由工艺库决定,一般为ns。-from:延时约束的起点列表。-through:延时路径经过的节点列表。-to:延时约束的终点列表。2024/11/912约束实例在该设计中,4个时钟的时钟周期分别为:clk1=30ns,clk2=20ns,clk3=10ns,clk4=15ns。clk1和clk2的networklatency分别为0.5ns和0.6ns,翻转时间都是1.0ns。时钟clk3和clk4与顶层设计top异步,其他信息表示在图中。#Createclockscreate_clock-period30[get_portsclk1]create_clock-period20[get_portsclk2]#Generatevirtualclocksforclk3andclk4create_clock-period10-nameclk3create_clock-period15-nameclk4#Constrainuncertainty,transition,andlatencyset_clock_uncertainty0.35[get_clocksclk1]set_clock_uncertainty0.40[get_clocksclk2]set_clock_transition1.0[get_clocks“clk1clk2”]set_clock_latency0.5[get_clocksclk1]set_clock_latency0.6[get_clocksclk2]#Constraininputsandoutputsbyinputandoutputdelayset_input_delay2.5-clockclk3[get_portsdata_in]set_output_delay3.0-clockclk4[get_clocksdata_out]#TimingExceptionsset_false_path-from“clk3clk4”-to“clk1clk2”set_false_path-from“clk1clk2”-to“clk3clk4”
2024/11/913编译策略
通常设计中都包括多个层次结构和多个子设计,如何选择编译策略会影响到编译时间好优化结构。自顶向下层次化编译时间预算编译CCWSR方法2024/11/914自顶向下层次化编译指对顶层设计和所有的子设计同时进行编译,所有的源码被一次性读入,然后在顶层施加约束,进而执行编译。优点:只需要顶层约束由于在整个设计上进行优化,可得到更优的结果缺点:编译时间长对子模块的增量改变需要重新综合整个设计使用:把子模块组合在一起并打平它们以改善时序。2024/11/915时间预算编译设计者根据技术规范定义的各个子模块的时序要求为每一个子模块编写综合脚本,然后从最底层开始处理每一个和每个层次的模块,直到完成整个设计的综合处理,最后分析综合结果是否满足时序和面积要求。优点:由于是单个脚本所以易于控制设计对子模块的增量改变不需要重新综合整个设计由于以单个模块为目标,因而优化效果更好2024/11/916时间预算编译缺点:需要更新并维护多个脚本顶层所见的关键路径在底层可能不是关键的使用:设计人员已对整个设计进行了时间预算,包括模块间的时序要求。2024/11/917CCWSR方法Compile-Characterize-Write-Script-Recompile方法:适用于不具有明确的模块间规范的中等至超大规模设计。要求在设计的顶层施加约束,并且要预编译每个子模块,然后使用顶层约束来表征子模块,即从顶层向子模块传播所要求的时序信息,通过write_script命令为每个子模块产生约束文件,然后用这些约束文件重新编译设计的每个模块。2024/11/918CCWSR方法优点:占用内存少由于进行模块间的优化而产生较好的结果产生可有用户修改的单个脚本缺点:生成的脚本可读性不好会遇到乒乓效应,即达到模块间的收敛可能会有困难较底层模块的改变通常需要整个设计的重新综合2024/11/919ThecharacterizeCommandcharacterize
calculatestheactualattributesandconstraintsimposedonadesignbyitssurroundings
characterizethenplacesthoseconstraintsonthedesigncurrent_designTOPcharacterize-constraints[get_cellsU2]2024/11/920ViewingResultsofcharacterize
write_scriptoutputsascriptcontainingallofthecostraintsthathavebeensetonthecurrent_design######################################################Createdbywrite_script()-formatdctclonWedMay310:50:512006######################################################Setthecurrent_design#current_designFIFO_MEM_BLKcreate_clock-name"my_clk"-period4-waveform{02}[get_ports{clk}]set_dont_touch_network[get_clocks{my_clk}]set_input_delay0-min[get_ports{data_in[0]}]set_input_delay1-add_delay-max-clock"my_clk"[get_ports{data_in[0]}]set_input_delay0-min[get_ports{data_in[1]}]set_input_delay1-add_delay-max-clock"my_clk"[get_ports{data_in[1]}]set_input_delay0-min[get_ports{data_in[2]}]2024/11/921RecompileHDLSourceaftercharacterizecurrent_designTOPcharacterize-consU2current_designBwrite_script-oB_w.tclremove_design-hierBread_verilogB.vcurrent_designBlinksourceB_w.tclcompilewrite-hier-oB.dbcurrent_designTOPlink2024/11/922characterizeLimitationscharacterizecanonlybeusedwhenallblocksaremappedtogatescharacterizecanonlybedoneoneblockatatimeOnceablockhasbeencharacterizedandrecompiled,thereare“new”cellsdriving/loadingothersubblockscharacterize“pushesaway”anymarginthatmayexistonblock-blockinterface2024/11/923优化方法优化方法编译设计结构优化逻辑优化门级优化消除层次优化时钟面积优化2024/11/924编译设计Compile命令进行设计或模块的编译,将HDL代码映射到指定的目标库。其选项可用于设计的映射优化。2024/11/925编译设计-map_effort<low|medium|high>
只有在编译达不到目标时,才使用-map_efforthigh,该选项使DC围绕关键路径进行逻辑的重新构造和重新映射来满足指定的约束。通常,编译时间很长。-incremental_mapping只用在门级。增量编译时,DC进行各种映射优化以改善时序。2024/11/926编译设计-boundary_optimizationOptimizesacrossallhierarchicalboundariesinthedesign.结构优化结构优化,有时也称为high-level优化,是根据设计约束、针对RTL编码风格进行的优化。该步骤执行的操作包括:选择DesignWare实现(DesignWareImplementationSelection)共享公共的子表达式(SharingCommonSubexpressions)共享资源(ResourceSharing)操作符重排序(ReorderingOperators)2024/11/927if(enable)z<=A+B;elsez<=C+D;
逻辑优化逻辑优化针对结构优化得到的GTECH网表进行,也可以称为是对布尔方程的控制,一般包括两个过程:展平和构造。2024/11/9282024/11/929展平展平(Flattening):展平是把组合逻辑变成一种两级积之和(SOP:sum-of-products)的形式。展平是独立于约束的,在展平过程中,DC把设计中的所有中间变量去掉,可以提高速度但会增加面积。但需要注意:1、受限于工艺库的影响,扁平也许不能保证把设计映射成SOP形式;2、扁平操作并不影响设计的层次结构,其命令是set_flatten,与消除层次的命令ungroup不同。set_flattentrue2024/11/930构造构造(Structuing):构造是基于约束的,通过给设计添加中间变量和逻辑结构,使得逻辑共享,可以减少设计的面积。构造过程中,DC在设计中寻找最有可能减少逻辑的子设计,将其设为中间变量,从设计表达式中提取出来。其命令为set_structure。set_structuretrue门级优化门级优化产生目标库上的最终网表。一般包括:映射、延时优化、设计规则修正和面积优化。2024/11/931逻辑优化和门级优化都通过命令compile完成,但满足所有约束、或用户中断、或DC无法满足约束但也无法进一步优化时,编译就会停止。2024/11/932消除层次####################flattenthewholedesignforareareducingcurrent_designprbs_topungroup-flatten-all综合在默认情况下是保持设计的层次结构的,尽管可以让DC跨越边界优化,但为了去掉不必要的层次,可以采用ungroup打平设计,这与前面讨论的展平不同。比如要彻底消除某设计xsoc内部的层次关系,可以采用如下命令:2024/11/933限制使用某些单元####################donotusescancellsetSCAN_FF1smic13_ss/FFS*set_dont_use$SCAN_FF1有些情况下,不希望综合结果采用目标库中的特定单元,可以采用set_dont_use命令实现。比如,限制使用带scan的触发器,可以采用如下命令进行设置:2024/11/934时序优先group_path建立一个时序关键路径的组,用于重点优化。该选项对编译时间有较大影响,而且该组优化的优先级高,可能会导致其他的时序违例。因此group_path命令通常作为综合优化的最后手段使用。使用ungroup去除不必要
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中外教育史试题及答案
- 中医消化内科试题及答案
- 浙江省安吉县上墅私立高级中学2024-2025学年高二生物第二学期期末调研试题含解析
- 西宁市重点中学2025届数学高二下期末考试试题含解析
- 矿业临时彩钢房设计与安全监管合同范本
- 绿色建筑财务代理与节能减排合同
- 精养肉牛代养服务合同
- 采棉机操作员安全责任合同书
- 车辆销售与广告宣传合作合同
- 智能家居产品采购合同知识产权及用户隐私保密协议
- 歌曲《花非花》教案设计
- 2024年江西省中考生物试卷(含答案)
- 办公楼室内装饰工程施工设计方案技术标范本
- 2024年无锡市滨湖区名小六年级毕业考试语文模拟试卷
- 校服供货服务方案
- 中职语文基础模块下册第六单元测试卷-【中职专用】(高教版2023基础模块下册)解析版
- C6150车床主轴箱箱体加工工艺及夹具说明书
- 健康与免疫智慧树知到期末考试答案2024年
- 新媒体视频节目制作 课件 学习领域1 新闻短视频制作
- 矿山应急救援钻探技术规范
- 秦始皇帝陵的物探考古调查863计划秦始皇陵物探考古进展情况的报告
评论
0/150
提交评论