资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,DC综合流程,1,综合概述,技术库概述,综合基本步骤,提纲,2,综合概念,逻辑综合:决定设计电路逻辑门的相互连接。,逻辑综合的目的:决定电路门级结构、寻求时序和与面积的平衡、寻求功,耗与时序的平衡、增强电路的测试性。,逻辑综合的过程:Translation、map、optimization,Translation是指把设计的HDL描述转化为GTECH库元件组成的逻辑电路,Mapping是指将GTECH库元件映射到某一特定的半导体工艺库上,此时,的电路网表包含了相关的工艺参数,Optimization是根据设计者设定的时延、面积、线负载模型等综合约束条,件对电路网表进一步优化的过程,3,综合库,综合库中定义了operation condition、wire_load model、Gate(输入输出,功能,时序参数,面积等等);,operating_conditions(typical),process:1;,temperature:25;,voltage:1.8;,tree_type:balanced_tree,wire_load(smic18_wl10),resistance:8.5e-8;,capacitance:1.5e-4;,area:0.7;,slope:66.667;,fanout_length(1,66.667);,4,综合步骤,5,综合步骤,1,:源文件准备,源文件的准备主要是检查rtl的书写规范,时钟域划分是否合理,一般有专业的工具进行检查,6,综合步骤,2,:指定综合库,目标库设定使用target_library和link_library变量来指定符号库。,符号库设定使用symbol_library变量来指定符号库。,target_library:,综合用的目标库,它一般是由生产线提供的工艺相关的库,如slow.db是smic0.18um最坏情况下的目标库。,synthetic_library:,综合库,它包含了一些可综合的与工艺无关的IP。,link_library:,链接库,DC不使用该库中的cells进行映射,它是DC在读入综合后网表时用来参考的库,RAM,ROM,PAD,macros都应包含在这个库,目标库和综合库也必须包含在其中。,symbol_library:,指定的符号库,使用GUI时会调用。,search_path:,指明库文件的位置,这样在添加上面的库时就不用写绝对路径。,set target_library typical.db sp018N.db“,7,综合步骤,3,:读入源码,read与analyze&elaborate都可以用来读入RTL代码。推荐使用analyze&elaborate,analyze&elaborate允许设计者在设计的GTECH建立之前,首先去分析设计的语法错误和进行HDL代码转换。GTECH由“soft macros”比如adders,comparators等组成,这些组件来自synopsys 的synthetic lib,每种组件具有多种结构。Analyze做语法的检查并产生一个“.syn”文件,存储于work路径下的定义的设计库内,可供后来elaborate使用。对于一个analyzed过的设计,只需用elaborate重新输入,节省时间。Read就不行。以下是两个命令的比较:,类别,analyze&elaborate,read,格式,verilog,或,VHDL,verilog,、,VHDL,、,EDIF,、,db,等所有格式,用途,综合,verilog,或,VHDL,的,RTL,设计,读网表,设计预编译,设计库,用,-library,选项定义设计库名,存储,“,.syn,”,文件,用缺省的设置,不能存储中间结果,Generics(vhdl),可以对,parameter,进行操作,不能对,parameter,进行操作,Architecture(vhdl),可以进行结构化的操作,不可用,8,综合步骤,4,:,design environment,设计环境包括,operating condition,、,wire load,和,system interface,三部分,9,综合步骤,4,:,design environment,1、operating condition,operating condition包括工作温度、工作电压、制造工艺,通过命令set_operating_condition来设定,命令set_operating_conditions min BEST max WORST用于指示DC对WORST和BEST条件,同时优化。WORST用于对setup-time进行优化,BEST用于对hold-time进行优化,当BEST和WORST都满足时,TYPICAL也就可以满足。,例:set_operating_conditions-min fast_1v32cm40-max slow_1v08c125,通过命令report_lib lib_name查看使用的库信息。,10,综合步骤,4,:,design environment,2、wire load,set_wire_load_model,用于设置线负载模型估计连线负载,线负载模型是根据cell的扇出数查表得到线长,再用线长乘以单位线长的电阻和电容值得到的负载电阻电容值的,,11,综合步骤,4,:,design environment,2、wire load,set_wire_load_mode,三种模式top、enclosed、segmented,top:所有层次子模块的wire_load和top-level相同,综合策略为top-down可选择此模式编译子模块。,enclosed:子模块net的wire_load和enclosed 它的最小模块相同,推荐用于在layout后logical and physical hierarchy相似的设计;,segmented:子模块之间net的wire_load和enclosed该net的模块相同,需技术库提供segmented wire_load,一般用于跨层次的net;,12,综合步骤,4,:,design environment,2、wire load,对于wire load mode三种模式示意图,13,综合步骤,4,:,design environment,3、system interface,set_drive:,用来指定input port的驱动强度,它指定的是一个阻抗值,用来计算从这个port到被它驱动的cell之间的路径延时,0表示最大驱动,通常用于clock ports。,例:set_drive 0$PROCLK,set_driving_cell:,用来模拟驱动input port的cell的驱动阻抗,用于计算输入信号的transition time做DRC的检查,一般在分模块综合时使用,顶层则设置为PAD或用buffer隔离。,例:set_driving_cell-lib_cell DFFRX2-no_design_rule get_ports RX_DDC_PDC_SDAT_16B,选项-no_design_rule是指DFFRX2自身的DRC检查不做。,set_load:,用于定义net或port的电容负载,保证输出路径的时序,主要用input port和output port,在顶层则设置为PAD的电容值或用buffer隔离,在库中获得。,14,综合步骤,5,:综合策略,综合策略包括top-down和bottom-up综合策略,Top-down综合策略优点:,1、仅需top_level的约束;,2、将整个设计作为整体优化,可获得较好的结果;,Top-down综合策略缺点,1、编译时间长;,2、子模块的改变需要整个设计在综合;,3、如果设计包含多个时钟或生成时钟逻辑,则不能很好执行。,Bottom-up综合策略的优点:,1、每一个子模块都由自己的Scripts文件,便于管理;,2、子模块的改变不需要整个设计全部重新综合;,3、不需要关心设计类型,如:多时钟或产生时钟;,4、一般来说,可获得好的结果;,Bottom-up综合策略的缺点,1、需要更新维护多个scripts;,2、Top的关键路径也许在子模块并非关键路径;,3、需要incrementally编译。,15,综合步骤,6,:设计约束,设计约束包括rule constraints和optimization constraints两种,rule contraints:,1、,set_max_transition:,2、,set_fanout_load:,对design,net,output port进行操作,设定的不是具体的电容值,3、,set_max_capacitance:,定义输出管脚可以驱动的最大电容值,optimization contraints:,1、,create_clock:,用于定义时钟的周期和波形,2、,set_input_delay:,定义信号相对于时钟的到达时间,3、,set_output_delay:,定义从输出端口数据不可用开始距离后一个时钟沿的时间,16,综合步骤,7,:优化设计,1、多次使用同一模块进行综合时,有两种方法解决同一模块多次使用的问题:uniquify方法与compile-once-dont-touch方法。,Uniquify方法操作步骤:,1、uniquify设计;,2、compile设计。,dc_shell current_design top,dc_shell uniquify,dc_shell compile,17,综合步骤,7,:优化设计,1、compile-once-dont-touch方法操作步骤:,1、charactirize 环境最差的一个子模块;,2、在此环境下综合此模块;,3、使用set_donot_touch命令设置所有的此模块例化得模块;,4、综合;,dc_shell current_design top,dc_shell characterize U2/U3,dc_shell current_design C,dc_shell compile,dc_shell current_design top,dc_shell set_dont_touch U2/U3 U2/U4,dc_shell compile,18,综合步骤,7,:优化设计,2、综合,利用compiler命令启动Design Compiler的综合和优化进程,有几个可选的编译选项。特别的map_effort选项可以设置为low、mediu或high。,初步编译,如果你想对设计面积和性能有一个快速的概念,将map_effort设置为low;默认编译,如果你在进行设计开发,将map_effort设置为medium;当在进行最后设计实现编译时,将map_effort设置为high。通常设置map_effort为medium。,Compile-map_effort low/medium/high,19,综合步骤,8,:分析修改设计,通常Design Compiler根据设计综合和优化的结果生成众多的报告。根据诸如面积、约束和时序报告来分析和解决任何设计问题,或者改进综合结果。,需要的报告:,report_design:报告用户的综合环境,包括operating condition、wire load,report_constraint:用户定义的constraint,report_timing-nworts num:所有路径中最差的路径。,20,综合步骤,8,:生成网表及,sdc,文件,利用write命令来保存综合过的设计,Design Compiler在退出时并不自动保存设计,保存的文件包括网表、.sdc、.sdf、.db等。,生成网表:,write -format verilog -output name.v,生成synopsys internal database format,write -format ddc -output name.v,生成延迟文件,write_sdf name.sdf,生成约束文件,write_sdc name.sdc,21,22,
展开阅读全文