1、第四综合Design综合是前端模块设计中的重要步骤之一,综合的过程是将行为描述的电路、RTL电路转换到门级的过程;DesignCompilerSynopsysHDL第四综合Design综合是前端模块设计中的重要步骤之一,综合的过程是将行为描述的电路、RTL电路转换到门级的过程;DesignCompilerSynopsysHDLDesignCompiler4.1综合综4.1.1综合及其在集成电路设计流程中的地综合4141(translation)(optimization)SynopsysDCgtech.db1与4.1.1.2综合在集成电路整个设计流程中的地SynopsysDCgt
2、ech.db1与4.1.1.2综合在集成电路整个设计流程中的地42HDL语言描述电路以及在综合的过程中就需要考虑电路的可测试性,在综合之4.1.2电路综合的特点与要4.1.2.1电路综合的特点1、综合是限制条件驱动的图12gtech.db的介绍可参看第四节43面积上的代价就不能明显的改善时序上的性能;同样,当面积减小到一定程度,路径延迟的增大也不能明显改上面积上的性能。2DesignCompilerDesigntimer1进行静态时序分析,按照时序分析的结果来对4.1.2.2电路综合的要求43面积上的代价就不能明显的改善时序上的性能;同样,当面积减小到一定程度,路径延迟的增
3、大也不能明显改上面积上的性能。2DesignCompilerDesigntimer1进行静态时序分析,按照时序分析的结果来对4.1.2.2电路综合的要求1综的要必须是可重用的的可重用主要有两方面的含义:1)整个电路设计过程中当后端工具提取出线负载模型2后作综合或者在布1632位,而模块的、电路中需要有时钟的定2)3、综合的时候需要指定线负载模型,用于估计连线延迟、限制模块中组合路径的输入输出延迟、限制输出的带负载能力(Loadingbudget)以及输入的驱动单元(driving延迟(inputdelay)的限制。6)、多周期路径(multicyclepath)以及路径(f
4、alsepath)2、综合结果的要violation2)、综合之后的门级网表必须已、综合之后的门级网表中应避免包含如下电路结构1DesignCompiler234.1.3前端设计的流4444.1.3前端设计的流4444RTL以后的电路测试。电路的可测试性设计(DFT)将由专门章节给出Verilog例来说明Verilog语句与库中门电路之间。SynopsysDesignCompiler2000.11版本的工4.2.1.1If语句的综合和其他高级语言一样,If语句是用于选择的控制,If语句对应的电路单元是1ifmoduleSet_If_AEqB(A,B,Z);in
5、put1:0A,B;outputZ;regZ;always(AmoduleSet_If_AEqB(A,B,Z);input1:0A,B;outputZ;regZ;always(AorB)if(A=B)Z=Z=44Synopsys44If45If(Latchif语句时没有对所有的可能情况进行判断,ifelseifelse的语句结构。2Latchmoduleif_bad(num,xval,yval,zval,dec);input1:0num;inputxval,yval,zval;outputdec;(Latchif语句时没有对所有的可能情况进行判
6、断,ifelseifelse的语句结构。2Latchmoduleif_bad(num,xval,yval,zval,dec);input1:0num;inputxval,yval,zval;outputdec;regalways(numorxvaloryvalif(num=2b00)dec=xval;elseif(num=dec=elseif(num=dec=zval;46IfLatch,num=11Ifcase3erruptoutput3:0reg3:0always012active3:0=ifactive0elseifactive1elseifactiv
7、e2elseifalways012active3:0=ifactive0elseifactive1elseifactive2elseif34.2.1.2Case句的综合CaseIfcaseDC4CaseDCCASE_BEST(num,xval,yval,zval,aval,dec);1:0num;xval,yval,zval,outputdec;regdec;always(numorxvaloryvalorzvaloraval)case2b00:dec=4848case5CASE_parallel(w,x,reg1:0b;always(worx)(2b11)/synop
8、sysparallel_caseb=2b10;b=49。为66parallelcase的电路结full_case的结对于例5中的电路,如果将/synopsysparallel_case的编译指导改为/synopsysfull_case,由于DC综合的时候忽略了w和x可能的其他情况,因此,综合出来410410fullcase由以上的综合结果可以看出,加上编译指导之后,综合的电路与实际的Verilogsynopsys的综合工具所识4.2.1.3Always语句的综合always语句是表示当事件列表中的状态发生变化时,执行语句体中的语句。7Alwaysalway
9、smodulealways_1(y,a,b,c,a,b,c,y,(aororca,b,c,y,(aororcord)y=a&b;c&tmp1|411always8alwaysmodulenbex2(q,a,b,clk,outputclk,rst_n;a,b;alwaysedgeclkornegedgeif(!rst_n)q=q=arst_n,clk.412always4.2.2算术运算符412always4.2.2算术运算符,=现,针对同一种运算符,DesignWare可能提供不同的算法,具体选择那一种是DesignWareDesignWareBasicDesi
10、gnWareFoundation,DesignWareBasic提供基本的电路,DesignWareFoundation提供性能较高的电路结构。如果需要FoundationDesignWare,需要在综合的时候设置synthetic_library3。verilogreg类型的数据是被解释成无符号数,eger类型的9】4moduleUnsignedAddinput3:0in1;input3:0output3:0assignout=in1+43Synthetic_library图4图4位无符号加法器的综合结4.2.3逻辑运算符==)modulegreater(in1,
11、in2,out);input3:0in1;input3:0output3:0reg3:0always(in1orin2)if(in1=in2)out=out=in2;414,图4位无符号数的比较电Verilog图4位无符号数的比较电Verilog122moduleshift_con(Addr,Addr_after_shift);input3:0Addr;output3:0assignAddr_after_shift=Addr2;41541520213】移位的位数由输入确定的电路综合moduleshift_var(Addrshift_varAddr_after_
12、shift);input3:0Addr;input3:0output3:0assignAddr_after_shift=Addrshift_var;416图4-3DesignCompiler综合的过4.3.1DesignCompiler的启动与退4.3.1.1DesignCompiler的启对于2000.11图4-3DesignCompiler综合的过4.3.1DesignCompiler的启动与退4.3.1.1DesignCompiler的启对于2000.11版的DesignCompiler,用户可以通过三种方式运行Design1、2、”就可以进入该方式运行。可
13、以进入的交互模式),或者可以在启动fscript)-t命令行方的时候直接调的dLanguage后面章节将有介绍)Designs-t”来运行该方式。该方式的运行环境也是本界面。可以进入-t的交互模式-t),或者可以在启动-tfscript)3、-t的时候直接调用tclyzeryzer使用图形界面,如菜单、框等来实现打注意yzer的工作模式不是用于编辑电路图的,它只能用于示HDL语言描述电路的电路图htclunixtcl打注意yzer的工作模式不是用于编辑电路图的,它只能用于示HDL语言描述电路的电路图htclunixtclh模式的语因此使h书写不能直
14、接用于TCL工作模式使用书写也不能直接用h工作模式d.logyzer在启动时自动在启动目录下面创建两个日志文件:DesignCompilerdesign过的目录,包括库、源文件等,filenames.logdesigncompilerd.logchenblleRISC_CORE.dblecp-rfrisc_design目录下面有一个.synopsys_可以在该目录下面启动dc_setup的初始化文件,因此-t命令之后,如果命令成功执行,显示的418DCPronal(TM)DCExpert(TM)VHDLCompiler(TM)HDLCompiler2000.11
16、e菜单quit按钮4.3.1.2DesignCompilerh和TCL的文本工作模式下,都可以使用exit命令来退出designcompiler,使file菜单quit按钮的dwindowexit4.3.2DesignCompiler417SetdesignDesignRuleConstraDesignOpt.ConstrasDesignsReaddesignandSelectdesignOptimizethesetminyzeandresolvedesignreporttimingSavethedesign图令DefinedesignSpecifyDevelopHD
17、L文综合过程中需要设置和使用的库以DC的初始1库link_library。注意:linklibrary的设置中必须包含*,表示文综合过程中需要设置和使用的库以DC的初始1库link_library。注意:linklibrary的设置中必须包含*,表示DC或者单元电路时首先搜索已经调进DCmemory的模块和单元电路如果在linklibrary中不包含*,DCDCmemory中已有的模块,因此,会出现无法匹配的模块或单元电路的警告信息(unresolveddesignreference)。实例:link_library“*”core_slow.dbcore_
18、slow.db2、目标库_library用于设置综合时所要电路的延迟信息,DC综合时就是根据_library_libraryLink_library_library3、符号库symbol_librarySchematicyzer4、synthetic_libraryDesignWareDCDesignWarestandard.sldb用于link_library中设置相应的库以使得在DCDesignCompileretupsearch_path5、DC的初始化文件.synopsysDCDC的工作、当前用户的$HOME、DC注意:Unixlsa4本章附录中给出了一个etu
19、p行为级描述或网表并进hTCLreadformatverilogdb、vhdletcfileread_dbfile.dbread_verilogfile.vread_vhdl/h/TCL/TCLDB格式VHDL格DesignCompiler行为级描述或网表并进hTCLreadformatverilogdb、vhdletcfileread_dbfile.dbread_verilogfile.vread_vhdl/h/TCL/TCLDB格式VHDL格DesignCompilerRTLDesignyze命令和elaborateyzeHDLwork(用户也
20、可以自己指定)的目录下elaborate则在产生的中间文件中生成verilog的模块或者work当linkDesign区中的模块或实体连接起来,如果在使用link命令之后,出现designreference的警告信息,需要重etup由于用于示范的例子是.dbTCL419-t的提示符下,输入命令-4.3.2.3定义电路的工作环境和综合的环1DC命令概1)DesignCompiler限制条件施加的对loadingdbfileCurrentdesignis420(末行的1DCset_load3CLK420(末行的1DCset_load3CLKpin、portnet
21、,因此,DC无法set_load3get_netsClkset_load32)TCL3)DClib_name来查看所有在工艺库中设定的。2由于不同的工作环境所对应的单元电路的延迟也不相同,如图4-21所Loadingdbfile/export/home/student/chenbl/DC_exLoadingdbfile/usr/app/synopsys/2000.11/libraries/syn/class.dbLinkingdesign:UsingthefollowingdesignsandRISC_CORE,ssc_core_slow(library),class
22、Loadingdbfile/usr/app/synopsys/2000.11/libraries/syn/gtech.dbLoadingdbfile/usr/app/synopsys/2000.11/libraries/syn/standard.sldbLoadingdbfile/export/home/student/chenbl/DC_exLoadingdbfile/export/home/student/chenbl/DC_exLoadingdbfile/export/home/student/chenbl/DC_exLoadingdbfile/expor
23、t/home/student/chenbl/DC_exLoadingdbLoadingdbfile/export/home/student/chenbl/DC_exLoadingdbfile/export/home/student/chenbl/DC_ex图电路的工作环境一般在工艺库中都有给定。DC图电路的工作环境一般在工艺库中都有给定。DC中使用set_operating_conditions命令来设置电路的工作环境。set_operating_conditionsin_conditionmax-min_librarymin_libmax_library指定DC进
25、分析的工艺库-max_library的选项指定用于电路最小延迟分析的工艺库4)DC4223vendor可能提供多个不同的工艺库,用于分析电路的时序,这些5参看set_input_delayUsingoperatingconditionsslow_125_1.62foundinlibraryssc_core_slowset_min_librarymax_librarymin_library|-max_library用于分析电路的最大延迟,min_library用于分析电路的最小延迟designcompiler需要计算路径的最小set_min_librarymax_library
26、min_library|-max_library用于分析电路的最大延迟,min_library用于分析电路的最小延迟designcompiler需要计算路径的最小延迟时先在max_library中找到单元电路,如果在min_library中有和该单元电路有相同名称、相同的引nonemin_library3)librarymin_library对应的4report_timingnets置0,这是因为在做综合之前,工具使用的线负载模型是比floorplan,然后提取出现负载模型来供给综合工具使用,以便更加准确的估计连线延迟。Synopsys的另physicalcompile
27、rfloorplan跟综合放在一起做。name_namelib_namelibrarymax2)auto_wire_load_selectiontrue,setauto_wire_load_selection-maxmin的选项同上,分别用于指定该模型用于估计最大路径延迟和最小路径延迟。-lib_name指定包含该线负载模型的工艺库。:0sAverageCapStd1234545该模型ssc_core_slow3、4913是按照连线的扇出来估计连线长度,从而估计4)RISC_CORE的电路,由于它的规模约为50K,可以设置线负载模型为80KGATES的模型,使用如下命令-t
28、name4245enclosed指定模块互连线延迟的估计使用包含该连线的最小模块的segmentedmodetop、enclosed、成功执行该命令时,DC16timeset_driving_cell是假定一transtiontime该命令用于设置输入端口或者双向端口上的电阻值,该电阻值是用动能力。_valuemaxminriseDesignRISC_CORE:Usingwire_loadm80KGATESfoundinlibraryssc_core_slow.Time=arrive_time+drive*net_loadTime=arrive_time+drive*net_
29、load7set_drive命令基本相同,set_driving_cell是指set_driving_celllib_cellbuf1a3pinYResetbuf1a3Y引脚的驱动能力相同。RISC_COREbuf1a3Yall_inputsget_ports425driving_celldriving_cell约束之后,相当与人为的给很多引脚加上了设计8DC需要知道输出电路驱动的所有负载。set_loadload_of(ssc_core_slow/buf1a2/A)即使用ssc_core_slow库中buf1a2单元A引脚的电容负载来计算所有1)DC14.3.2.4
31、为基准虚拟时钟(VirtualClock),clockportorclocknet。主要Clockset_clock_uncertay来指定实clock_skew。网络上的大负载,即不用在综合的时候在时钟网络上加buffer来驱动。使用set_dont_touch_network命令来实现create_clock同时也定义了时钟的波形,-waveform的选项是用于指定上升沿和下定义好时钟之后,缺省情况下会产生一个路径组(pathgroup,即以该时钟为路对于RISC_CORE,要求设置电路的工作频率为250MHz,因此时钟周期为4ns,create_clockp
32、eriod4namecore_clkget_ports命令成功执行,DC1使用create_clock产生一个时钟之后需要用y命令来模拟时RISC_CORE命令成功执行,DC1y0.3get_clocks2buffer或者反相器,以使floorplanset_dont_touch_network2buffer或者反相器,以使floorplanset_dont_touch_network信号,enable信号,test_clock对时钟设置此属性时,不能使用set_dont_touch命令,因为布线完成之后,会对时set_dont_touch会在布线之后的综合中找不到重新命名
34、RISC_CORE1.5ns,all_inputsget_portsClkDC1图time42054205set_output_delayclockclk_namemaxmax_value:图图图1.5nsset_output_delaymax1.5clockcore_clkDC16set_max_area1)DCRISC_CORE5060Kgates,设置其面积的限制50000,使用如下命令:set_max_areaRISC_CORE5060Kgates,设置其面积的限制50000,使用如下命令:set_max_area17set_max_delayresetreset信
35、号set_max_delay5fromresetINOUTset_min_delay10fromINto8set_false_path命令用于给出异步电路或者逻辑上不存在的电路,优化的reset_path命令。set_false_pathfromwrite_ento如图,CLKACLKB是属于不同的时钟晶振,因此,CLKACLKB的路径是异步电路。set_false_pathfromget_clocksCLKAtoget_clocks4.3.2.5选择综合方1、自顶向下的综合方案(top-set_dont_touchDC3set_dont_touchDC3423D子模块采用自顶向下底
36、综合,B子模块采用自底向上底综合。图4.3.2.6综合的其他问题1、子模块的多422DC会认为图1)uniquify得模块的各可以针对他们图1)uniquify得模块的各可以针对他们不同的环境分别进行优化,达到最好效果。uniquify-tcurrent_design-TOP4-25。该方法的缺点是占用的图问题的示意图(方法2)compile-once-dont-touchset_dont_touchDC留该子模块,例如,假定通过U4U4的要求比较高,则使用如下命令:current_designTOPcharacterizeU4current_designCset_
37、dont_touchU3U4:C设图留该子模块,例如,假定通过U4U4的要求比较高,则使用如下命令:current_designTOPcharacterizeU4current_designCset_dont_touchU3U4:C设图问题的示意图(2、Violation最大的模块的处characterizecharacterize命令之后,DC4.3.2.7综的分析与综合问题的解决方案reportreportPathtypemaxlibraryFFsetuptime5的工作情况,可能会出现Holdtimeviolation.这时可用set_fix_holdall_clocks,之后再compile来让DCholdtimeviolation进行5的工作情况,可能会出现Holdtimeviolation.这时可用set_fix_holdall_clocks,之后再compile来让DCholdtimeviolation进行6slackslack;如果slack比较大,通过综