DC使用全书(Design Compiler)_第1页
DC使用全书(Design Compiler)_第2页
DC使用全书(Design Compiler)_第3页
DC使用全书(Design Compiler)_第4页
DC使用全书(Design Compiler)_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、DC学习一-第一章基本概念作者:未知时间:2010-08-1515:02:50来自:网络转载启动文件启动文件用来指定综合工具所需要的一些初始化信息。DC使用名为“.synopsys_dc.setup的启动文件,启动时,DC会以下述顺序搜索并装载相应目录下的启动文件:、DC的安装目录;、用户的home目录;、当前启动目录。注意:后装载的启动文件中的设置将覆盖先装载的启动文件中的相同设置。下面是一个DC启动文件的实例,它包含了几乎所有重要的设置,下文将结合该实例解释启动文件中各项设置的具体含义。例1-1(一个DC启动文件):search_path=search_path+“.”,synopsys_

2、root+“/dw/sim_ver”search_path=search_path+“/risc32/synthesis/libraries”target_library=tcb773stc.dbsynthetic_library=dw_foundation.sldblink_library=“*”,dw_foundation.sldb,tcb773stc.dbsymbol_library=tcb773s.sdbsynlib_wait_for_design_license=DesignWare-Foundationaliasrt“report_timing”designer=XXXXXcomp

3、any=“ASICLab,FudanUniv.”search_path指定了综合工具的搜索路径。target_library为综合的目标库,它一般是由生产线提供的工艺相关的库。synthetic_library是综合库,它包含了一些可综合的与工艺无关的IP。dw_foundation.sldb是Synopsys提供的名为DesignWare的综合库,它包含了基本的算术运算逻辑、控制逻辑、可综合存储器等IP,在综合是调用这些IP有助于提咼电路性能和减少综合时间。link_library是链接库,它是DC在解释综合后网表时用来参考的库。一般情况下,它和目标库相同;当使用综合库时,需要将该综合库加入

4、链接库列表中。symbol_library为指定的符号库。synlib_wait_for_design_license用来获得DesignWare-Foudation的许可(license)。alias语句与UNIX相似,它定义了命令的简称。最后的designer和company项则表明了设计者和所在公司。另外,在启动文件中用符号“/*”和“*/”进行注释。设计实体在DC中,总共有8种设计实体:尢设计(Design):种能完成一定逻辑功能的电路。设计中可以包含下一层的子设计。单元(Cell):设计中包含的子设计的实例。尢尢参考(Reference):单元的参考对象,即单元是参考的实例。端口(P

5、ort):设计的基本输入输出口。尢尢管脚(Pin):单元的输入输出口。连线(Net):端口间及管脚间的互连信号。尢尢时钟(Clock):作为时钟信号源的管脚或端口。库(Library):直接与工艺相关的一组单元的集合。尢寻找设计实体在DC中使用find命令寻找设计实体,其语法为:find实体类型名称列表-hierarchy尢实体类型:上节所述的8种类型尢名称列表:用来匹配的关键词,其中可带“*”统配符尢-hierarchy:指令DC搜索所有设计层次例1-2(find命令的使用):find(cell,*U*)find(net,“*”)find(design,A_*,B_*-hierarchy)另

6、外,使用all_inputs()和all_outputs()可以得到设计所有的输入端口和输出端口。编译器指示语句有时,可以利用HDL描述中的一些特定的注释语句来控制综合工具的工作,从而弥补仿真环境和综合环境之间的差异,这些注释语句称为编译器指示语句(CompilerDirectives)o1.4.1Verilog编译器指示语句translate_off/translate_on这组语句用来指示DC停止翻译“/synopsystranslate_off”之后的Verilog描述,直至出现“/synopsystranslate_on”。当Verilog代码钟含有供仿真用的不可综合语句时,这项功能能

7、使代码方便地在仿真工具与综合工具之间移植。例1-3(translate_off/translate_on指示语句的使用):/synopsystranslate_off/*仅供仿真用语句*/synopsystranslate_on/*可综合语句*/parallel_case/full_caseDC可能使用带优先级的结构来综合Verilog的case语句,为避免这种情况,可以使用“/synopsysparallel_case”指示DC将case语句综合为并行的多路选择器结构。例1-4(parallel_case指示语句的使用):always(state)begincase(state)/synop

8、sysparallel_case2b00:new_state=2b01;2b01:new_state=2b10;2b10:new_state=2b00;default:new_state=2b00;endcaseend另外,Verilog允许case语句不覆盖所有可能情况,当这样的代码由DC综合时将产生锁存器。为避免这种情况,可以使用“/synopsysfull_case”指示DC所有可能已完全覆盖。例1-5(full_case指示语句的使用):always(selora1ora2)begincase(sel)/synopsysfull_case2b00:z=a1;2b01:z=a2;2b10

9、:z=a1&a2;endcaseend1.4.2VHDL编译器指示语句translate_off/translate_on作用同Verilog,注意需要使用符合VHDL语法的注释:-synopsystranslate_off-synopsystranslate_on也可以使用:-pragmatranslate_off-pragmatranslate_on需要注意的是,在VHDL中使用了以上编译指示语句后,DC仍会对translate_off/on之间的描述进行语法检查,若想避免这一点,可以改变以下变量的值:hdlin_translate_off_skip_text=truesynthesis_

10、off/synthesis_on其作用和语法均类似于translate_off和translate_on,只是它的作用不受上述变量控制。DC学习-第二章设计入口作者:未知时间:2010-08-1515:04:19来自:网络转载2.1软件的启动在UNIX下执行dc_shell即可启动DC的命令行界面,执行design_analyzer&即可启动相应的图形界面。启动以后的图形界面如图2-1所示。Help蠲0!封TljdJdSetwFile罢it岂efk能朮艸辿皿1硏】呼卫用宙MiddleButton:ftdd/liodify:SelectRigjitButton:Ifenu图工jDesignAna

11、lyzer的主界砾在图形界面中若需要执行命令行,可以用Setup-CommandWindow菜单打开命令行功能,如图2-2所示。CeNwdWLndhuStMp-File:话d:::芯计汕HMMHMDeslgrifits护erCTHJehwLQr-$LKfr&FcwjWJDCEptfturn?WU叭fflFlwfP#!WILGpiJertTH)I3LCi*pih广CTH)LdbT-BryCdiLltf-1MP-DMffrtoepiLerDFiCallerCtH)TKtCwpilerTtCCMplICiPIU*BSDCwp-LlerT孚HItevulc?W氏引脚门粗STtt阳tgp.E】审1$tf

12、eslgfMi】卓bincludejynopsygdc.seUpf骼令行菓单的骼令行窗口3DesignAnalyzer的崙苓行功能a在软件启动时,启动文件中所定义的变量均已加载,若希望改变其他变量的值,可以在Setup-Variable中进行,如图2-3所示。Tbu5_infereinc_iiKecndingscrtbutinfprence_5-ty0bu5_iiflU4sty)ubu念.紳讥ipLe/ewrctpr專炖血bus构耳sepoEterJtuleJw0rdh*otiLoct*EVeri-flbles:甸变屋菜单(b变屋機改对话题图2-3DesignAnafyz&r枣椽改变呈的協畑说

13、怙firg牟:Hsm:?bus_ftMing_tylfiVisridbltiliwi:Value:I,IaESMDefaults*Varlles*LicenseExecuteScript*ScriptsCommandHindoo.*tgiI2.2设计的读入设计的读入有两种方法:analyze+elaborate和read。analyze+elaborateanalyze命令用以分析、翻译RTL代码,并将中间结果存入指定的库中。其语法为:analyze-library库名称-format文件类型文件名列表-library尢库名称指定中间结果所存放的库,即UNIX下的一个目录,缺省为当前目录(WO

14、RK)-format尢文件类型:RTL源文件的类型,即Verilog或vhdl尢文件名列表所有需要分析的源文件名,若有多个文件,则用“”括起例2-1(将直接数字频率合成器的所有设计源文件读入libl库中):hdlin_enable_presto=false/*禁止Presto编译器功能*/define_design_liblib1-path“./lib1”/*将目录./lib1映射为一个设计库*/analyze-librarylibl-formatverilogcroma.v,cromb.v,ddfs.v,froma.v,fromb.v在图形界面中,选择File-Analyze,在弹出的Ana

15、lyzeFile对话框的File域中填入源文件名,并在Library域中填入“libl”,选中“CreateNewLibraryifitDoesntExist”复选框,点OK即可(如图2-4所示)。(b)文件分析釈话屈AIololTIfidElaborate命令用于为设计建立一个结构级的与工艺无关的描述,为下一步的工艺映射做好准备。命令的一般格式为:elaborate设计名-library库名称-architecture构造体名-parameters参数列表-update尢设计名:需要描述的设计-library尢库名称:设计的分析结果所在的库-architecture尢构造体名:需要分析的构造

16、体,针对VHDL描述中同一个实体对应多个构造体的情况;对于Verilog描述,改选项可缺省或为verilog尢-parameters参数列表:在这里给设计中的参数重新赋值,若省略则参数使用缺省值尢-update:要求综合器自动更新所有过期的文件例2-2(将先前读入的设计产生结构级描述,并设置相应的参数值):elaborateddfs-librarylibl-architecture“verilog-parameters“PAL_sub=32h20098ACB,NTSC_sub=32h06F07BD6”-update由于重置了参数值,顶层的设计名称变为“ddfs_20098acb_06f07bd

17、6”,为方便起见,将顶层设计名改为“ddfs”:rename_designddfs_20098acb_06f07bd6ddfs在图形界面中,选择File-Elaborate菜单,在弹出的“ElaborateDesign对话框的Library域中选择libl,在Design域中选择ddfs,填入相应的参数值并选择“Re-AnalyzeOut-of-DateLibraries复选框后点OK(如图2-5所示)。lylolTIJhJll”,De扌ign:ddrtMrILoI何發计蟲逑对送唇2-5在DesisnAnatvzer中进行设计的结构级描述卫完成以上步骤后,即可看到所有成功读入的设计模块,如前所

18、述,利用命令行将顶层设计名改为“ddfs”。在图形界面中,双击ddfs设计即可看到该设计的符号描述(如图2-6所示);点击界面左栏中的与门标志按钮即可看到电路级描述(如图2-7所示),该描述是由DC生成的与工艺无关的中间结果,将来用户通过Compile命令将该结果映射到相应的工艺库上。点击界面左栏中的芯片标志按钮又可回到符号描述。SyjdKrlViewIICurrentDesign;ddf3蟲劃剑国JRightMiddleButton:Add/HodifySelect.2-6DDF$设詁的符号需谑3SynopsysteilgrrAnaibjCJirrentDesign:ddfsjchewati

19、匸ViewHelpSetupFileEditVitwAttributesAnalysisIwolsLeftButton:SelectMiddleButton:Add/ModifySelectRight2-7DDFg设进的虫窺級擔漆read命令使用read命令可以一步完成analyze+elaborate的工作,并且read命令还可以用来读取db、EDIF等格式的设计(analyze+elaborate仅能用于VHDL和verilog)。但是,read命令无法支持参数修改、VHDL中的构造体选择等功能。该命令的语法为:read-format文件类型文件列表-format尢文件类型:源文件的类型,

20、如verilog,vhdl,edif,db等尢文件列表:所有需要读入的源文件名,若有多个文件,则用“”括起例2-3(利用read命令将读取直接数字频率合成器的所有设计源文件):read-formatverilogcroma.v,cromb.v,ddfs.v,froma.v,fromb.v在图形界面中,选择File-Read菜单,在弹出的“ReadFile对话框中选择相应的文件打开即可(如图2-8所示)。sloll勺創RudFileFilecroM.vcro*ti.vfrtms.vfrwib快Director:f*e/1abLraflr/kxu/caTtesVsre/ticifs/vsri.闻c

21、raw.*crcmb.vFrgb”图2-8在DesignAna/yz&r中读入设计文件2.3链接在进一步工作之前,需要将设计中调用的子模块与链接库中定义的模块建立对应关系,这一过程叫做链接。这一过程可以利用link命令显式地完成,也可以将来综合时利用compile命令隐式地进行。推荐每次设计读入以后都用link命令执行一次链接。注意:由于该命令以及以后提到的大部分命令均对当前设计(current_design)进行操作,所以在执行该命令前应正确设置current_design变量。例2-4(链接直接数字频率合成器的顶层设计:ddfs):current_designddfs/*将ddfs设置为当

22、前设计*/link在图形界面中,单击选中ddfs模块,选择Analysis-LinkDesign菜单即可看到设计链接对话框。对话框中的“SearchPath”和“LinkLibrary”域就是用户在启动文件中定义的值。选中“SearchMemoryFirst复选框将指示DC首先搜索内存来匹配相应的模块。设计链接菜单和对话框如图2-9所示。IBSearchPMi;,+/apps/3tRWpsnE/yn/lLbr/jpps/SyrLinkLibrary:*d:i_f-uLndet,iontsdbtc.b773st.厂SearchMemoryFirst(ajLinkDesign菜单图2-9(b)设计

23、遵接忝送题在DssignAnafy-zer申谖行设计链傑一般有两种情况可能导致链接过程出错:1)、设计中所调用子模块的描述文件没有读入;2)、设计中使用了工艺库中的单元,但该工艺库没有加入链接库(link_library)或因为搜索路径(search_path)设置有误而导致DC无法正确定位链接库。2.4实例唯一化当设计中的某个子模块被多次调用时就要对设计进行实例唯一化。实例唯一化就是将同一个子模块的多个实例生成为多个不同的子设计的过程。之所以要进行实例唯一化是因为DC在综合时可能使用不同的电路形式来实现同一个子模块的不同实例,从而这些实例在DC看来是一些不同的设计(尽管它们来源于同一个模块并

24、且具有相同的逻辑功能)。使用uniquify命令可以完成实例唯一化的工作(该命令对当前设计有效)。例2-5(将ddfs设计进行实例唯一化):current_designddfsuniquify在图形界面中,选中ddfs模块,选择Edit-Uniquify-Hierarchy菜单即可完成实例唯一化(如图2-10所示)。IlLl畅y寿sDwiyifin丘SetupFileEdit:VewAttributesllysisAIOI51TI血型图2-2在DEg也山曲y吗申遴行实銅醴一俗注意:若设计中不存在同一子模块被多次调用的情况(比如上例中的ddfs设计),可不必进行实例唯一化,但仍推荐进行。DC学习

25、-第三章设计环境作者:未知时间:2010-08-1515:07:55来自:网络转载设计环境是指电路工作时的温度、电源电压等参数,以及输入驱动、输出负载、线上负载等情况。设置电路的工作环境一般的工艺库将温度、电源电压、工艺偏差、互连模型等参数的影响均归结为工作环境(operating_conditions),采用report_lib命令可以列出工艺库中的各项参数(包括工作环境)。例3-1(列出工艺库tcb773stc中的各项参数):report_libtcb773stc生成报告的头部如下所示(其中黑体部分就是该工艺库中定义的工作环境):*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x

26、*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*Report:libraryLibrary:tcb773stcVersion:2000.05-1Date:Jun3012:14:582002*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*LibraryType:TechnologyToolCreated:1998.08DateCreated:FriAug2714:02:39EAT1999LibraryVersion:210Comm

27、ents:CopyrightTSMCTimeUnit:1nsCapacitiveLoadUnit:1.000000pfPullingResistanceUnit:1kilo-ohmVoltageUnit:1VCurrentUnit:1mAPowerUnit:1pWLeakagePowerUnit:1pWBusNamingStyle:%s%d(default)OperatingConditions:NameLibraryProcessTempVoltInterconnectModelWCCOMtcb773stc1.30125.003.00worst_case_treeNCCOMtcb773stc

28、1.0025.003.30balanced_treeBCCOMtcb773stc0.760.003.60best_case_tree注意:WCCOM是“Worst-Case-COMmercial的缩写;NCCOM是“Normal-Case-COMmercial的缩写;BCCOM是“Best-Case-COMmercial”的缩写。set_operating_conditions命令用来设置设计的工作环境(该命令对当前设计有效),其语法为:set_operating_conditions-library库名称工作环境名-library尢库名称:定义工作环境的库,若当前仅读入唯一的目标库,则改选项

29、可省略尢工作环境名:设置的工作环境例3-2(将ddfs设计的工作环境设为“WCCOM”):current_designddfsset_operating_conditions-librarytcb773stcWCCOM在图形界面中,选中ddfs设计,选择Attributes-OperatingEnvironment-OperatingConditions菜单,即弹出工作环境对话框。在此对话框中即可选择相应的工作环境(此例中选择WCCOM)。这一过程如图3-1所示。叶飢屬L二亠:-(b)王伟环潼设置的送屈CjHwtrAL-htsNCC4WtcbJZSstc:J设置连线负载连线负载用来估算设计内部

30、互连线上的寄生参数,从而估计由于连线造成的时间延迟,使得综合结果能够尽量接近实际中的物理情况。DC中的连线负载设定包括两部分:连线负载大小和连线负载模式。设置连线负载大小一般的工艺库通过设计的规模来表征连线负载的大小,在使用时,根据实际设计的规模选用相应的连线负载即可。下文所示的是对tcb773stc运行report_lib而生成报告的一部分,他描述了该库中可供选择的连线负载大小的种类以及各自对应的设计规模,例如:设计面积在360000m2到810000m2之间则对赢得连线负载为TSMC16K。此外,相同的设计规模所对应的连线负载还有保守的(Conservative)和激进的(Aggressi

31、ve)之分。WireLoadingModelSelectionGroup:Name:WireAreaConSelectionWireloadnameminareamaxarea0.00360000.00TSMC8K_Conservative360000.00810000.00TSMC16K_Conservative810000.001690000.00TSMC32K_Conservative1690000.003240000.00TSMC64K_Conservative3240000.005760000.00TSMC128K_ConservativeWireLoadingModelSelect

32、ionGroup:Name:WireAreaAgrSelectionWireloadnameminareamaxarea0.00360000.00TSMC8K_Aggresive360000.00810000.00TSMC16K_Aggresive810000.001690000.00TSMC32K_Aggresive1690000.003240000.00TSMC64K_Aggresive3240000.005760000.00TSMC128K_AggresiveWireLoadingModelMode:segmented.使用set_wire_load_model命令来设置连线负载,其语法

33、为:set_wire_load_model-name连线负载名-library库名称对象列表-name尢连线负载名:设定的连线负载-library尢库名称:定义工作环境的库,若当前尽读入唯一的目标库,则改选项可省略尢对象列表:设定连线负载的对象例3-3(将ddfs的连线负载设为TSMC8K_Conservative):set_wire_load_model-nameTSMC8K_Conservative-librarytcb773stcddfs在图形界面中,选中ddfs设计,选择Attributes-OperatingEnvironment-WireLoad菜单,即弹出连线负载设置对话框。在此

34、对话框中即可选择所需的连线负载(此例中选择TSMC8K_Conservative)这一过程如图3-2所示。|ftulysksTmlsCiceksOperatingEnvircmenL卜QptlMkzatlon口敵片期讯伴OptiltiatlOn世gttWiphp试t*!W!.吵字.讯曲时出匚期曲叭OperMlngiCondmcrn也厲LwrfliningRs吟r*暨E3ddFsTr口侶I-.-IUiraLoad血isnWane:WireLoadMode!:CfluservatieFarDftJSMC16*iMCorirervative(tcb773stc)TSMC32K.Conservi9t1

35、ve(tcb773stc)TSJCBCmservat.1vetcb773$tc)tcb773stt;)UK(aWireLoadfb)设置逢线负.载对送屈图3-2在DesignAtiafyzer中设蜃连耀负撫设置连线负载模式连线负载模式规定了跨越多个模块层次的连线其连线负载的计算方式,DC供支持三种连线负载模式:尢top:某一模块的连线负载设为top模式意味着该模块及其子模块中所有连线的连线负载大小均取该模块的值尢enclosed:某一模块的连线负载设为enclosed模式意味着该模块及其子模块中所有连线的连线负载大小的取值与恰好能完全包含该连线的最底层模块的连线负载大小一致。segmented

36、:这是一种分段模式,意味着一根连线上不同段的连线负载不同,某一段地连线负载与恰好包含该段的最底层模块的连线负载大小一致。尢set_wire_load_mode命令用来设置连线负载模式(该命令对当前设计有效),该命令的格式如下:set_wire_load_mode尢模式名:连线负载模式的名称,为“top、“enclosed、“segmented中的一项例3-4(将ddfs的连线负载模式设为top):current_designddfsset_wire_load_modetop注意:该功能无法通过图形界面实现3.3设置输出负载为了更精确地计算电路的延时,DC需要知道设计的输出端驱动的负载大小(主要

37、是电容)。用户可以通过set_load命令来为输出端设置负载(该命令对当前设计有效),其语法为:set_load尢负载电容值:设定的负载电容值,必须为非负数,其单位在库文件中定义尢对象列表:设定负载电容的对象,可以是输出口、输出管脚、互连线等例3-5(将ddfs的所有输出口的输出负载设为0.1pF)current_designddfsset_load0.1all_ouputs()在图形界面中,进入ddfs设计的符号描述,选中一组输出端口,选择Attributes-OperatingEnvironment-Load菜单。在弹出的Load对话框的Capacitiveload域中填入1.00即可(如

38、图3_3所示)。Clockscos_dataL9:01100Faneut1口日dCapacitiweloadCmstrfllfitsOptiRkzaticnDirectivess9何皿交菜单fb)设置輪出煲醱对送耀图3-3在DesignAnatyz&r申设蚩输出傍细蝕al涉托ThSeFL阳,驗皆范pwlgn檢的諾rddfsDpwat蜩Cfi喃tLOftj.,HireLoath-ningRonta.IIpKJIf-yji*1*3.4设置输入驱动为了精确计算电路的延时,DC还需知道设计输入端的驱动能力的情况。用户可以利用set_driving_cell命令来指定一个驱动设计输入端的外部单元(该命令

39、对当前设计有效),该命令的格式如下:set_driving_cell-lib_cell库单元名-library库名称-pin管脚名-no_design_rule端口名列表-lib_cell尢库单元名用于驱动设计输入端的外部单元名称-library尢库名称:上述单元所在库的名称,若当前仅读入唯一的目标库且驱动单元就在该库中,则改选项可省略-pin尢管脚名:用于驱动设计输入端的外部单元管脚的名称尢-no_design_rule:改选项要求DC忽略外部驱动单元管脚上的设计规则尢端口名列表设置驱动的设计端口例3-6(将ddfs的所有输入端的驱动单元设置为DFF1的管脚Q,并忽略该管脚上的设计规则)cu

40、rrent_designddfsset_driving_cell-lib_cellDFF1-pinQ-no_design_ruleall_inputs()注意:该项功能无法通过图形界面实现。由于通常情况下,设计的时钟和复位端都由驱动能力很大的单元或树形缓冲来驱动,所以可以用set_drive命令将这两个端口的驱动设为无穷大(该命令对当前设计有效),命令语法为:set_drive阻抗端口名列表尢阻抗非负的驱动阻抗,该值越小表示驱动能力越大尢端口名列表设置驱动能力的端口名例3-7(将ddfs的时钟和复位端的驱动设为无穷大,即驱动阻抗设为零):current_designddfsset_drive0

41、clk,reset在图形界面中,进入ddfs设计的符号描述,选中其中一个输入端口,选择Attributes-Operating域都设为0即可(如图3-4所示)。设置驱鲂體度拆港唇IRtXr】奧号|鉀lyn嘗ToclsEnvironment-DriveStrength菜单。弹出DriveStrength对话框后,将RiseStrength和FallStrengthfiiWonMrrt卜QpfMtonConstraints*0ptiM3f4tiqriBirtCtivtfDC学习-第四章设计约束作者:未知时间:2010-08-1515:09:34来自:网络转载设计约束描述了设计的目标,这里所说的设计

42、目标主要包括时延目标和面积目标两部分,相应的,设计约束也由时延约束和面积约束两部分组成。时序电路的时延约束时序电路的时延约束主要包括时钟主频、输入延时、输出延时等内容。创建时钟在DC中使用create_clock命令创建系统时钟(该命令对当前设计有效),该命令的语法如下:create_clock端口名-period周期-waveform边沿列表端口名:设计的时钟端口-period周期:时钟周期,单位一般为ns-waveform边沿列表:时钟上升沿和下降沿的时刻,从而决定时钟信号的占空比。一般上升沿的时刻设为0例4-1(为ddfs设计创建一个5ns的时钟,时钟端口为elk,占空比为1:1)cur

43、rent_designddfscreate_clockelk-period5-waveform02.5由于时钟端的负载很大,DC会使用Buffer来增加其驱动能力。但是一般情况下,设计者都使用布局布线工具来完成这项工作,所以有必要指示DC不要对时钟网络进行修改,可以使用以下命令:set_dont_touch_networkclk在图形界面中,进入ddfs的符号描述,选中其时钟端(elk),选择Attributes-Clocks-Specify菜单。在弹出的SpecifyClock对话框的Period域中填入指定的周期值(本例中是10),并选择DontTouchNetwork复选框即可(如图4T

44、所示)。完成以上步骤后,可以在ddfs的clk端口上看到红色的方波标志(如图4-2所示)。Vieu世通ToolsClucksr沁纵JOfiertingEnvironment*tiwjzitLanDirscttvs-qnalywrdkCS-node匚esetI2ddfsrCco-str(a)SpscijyClock(b)创屋聪钟着送屈4-1在Des證世Anahzs.r中叙建看納设置输入延时输入延时的概念可用图4-3来解释。在图4-3中,假设时钟周期为Tc,外部逻辑中,触发器的传输延时为Td,组合逻辑M的延时为TM,待综合的逻辑中,组合逻辑N的延时为TN,触发器的建立时间为TS。则有:Tc=Td+

45、TM+TN+Ts(1)即:TN+Ts=Tc-(Td+TM)(2)当系统时钟设置完毕后,Tc已经确定,对待综合模块的输入部分加以约束(即设定TN+Ts的值),可以通过设定Td+TM来实现。这里的Td+TM就是DC定义的(对于待综合模块的)输入延时。若外部逻辑是寄存器直接输出,则TM=0,输入延时就是外部逻辑触发器的延时,一般为Ins或更小。在DC中,可以使用set_input_delay命令来设置输入延时(该命令对当前设计有效),其命令格式如下:set_input_delay-clock时钟名-max-min延时值端口名列表-clock时钟名:输入延时所参考(关联)的时钟-max:指定输入延时的

46、最大值-min:指定输入延时的最小值延时值:输入延时的大小,单位一般为ns端口名列表:设定输入延时的端口例4-2(将ddfs设计的mode输入端的输入延时最大值设为1ns,最小值设为0,参考(关联)时钟为clk):current_designddfsset_input_delay-clockelk-max1find(port,“mode)set_input_delay-clockelk-min0find(port,“mode)在图形界面中,进入ddfs的符号描述,选中mode端口,选择Attribute-OperatingEnvironment-InputDelay菜单。在弹出的InputDe

47、lay对话框的关联时钟选择框中选择clk,在Max域中填入1.00,在Min域中填入0.00,并选中SameRiseandFall复选框即可(如图4-4所示)。设置输出延时输出延时的概念可以用图4-5来说明。在图4-5中,假设时钟周期为Tc,外部逻辑中,触发器的建立时间为TS,组合逻辑M的延时为TM,待综合的逻辑中,组合逻辑N的延时为TN,触发器的传输延时为Td。则有:Tc=Td+TN+TM+Ts(1)即:Td+TN=Tc-(TM+Ts)(2)当系统时钟设置完毕后,Tc已经确定,对待综合模块的输出部分加以约束(即设定Td+TN的值),可以通过设定TM+Ts来实现。这里的TM+Ts就是DC定义的

48、(对于待综合模块的)输出延时。若待综合模块是寄存器直接输出,则TN=0,又由于触发器的传输延时(Td)基本固定,所以待综合模块的输出部分可以不必约束,既可以不设输出延时。在DC中,可以使用set_output_delay命令来设置输出延时(该命令对当前设计有效),其命令格式如下:set_output_delay-clock时钟名-max-min延时值端口名列表所有参数、开关含义均与set_input_delay命令相同例4-3(将ddfs设计所有输出端的输出延时最大、最小值设为4ns,参考时钟为elk):current_designddfsset_output_delay-clockelk4a

49、ll_outputs()在图形界面中,进入ddfs的符号描述,选中一组输出端口,选择Attribute-OperatingEnvironment-OutputDelay菜单。弹出OutputDelay对话框后,在关联时钟选择框内选择clk,在Max和Min域中填入9.00,并选中SameRiseandFall复选框即可(如图4-6所示)。对另外一组输出端口可同样设置。AttributesAnalysisTcwlsri5*e:cos”d4诂(9:。CtperatJnClwkJCLh;5X10*1Constr*intsQptiRjzationDirectives駐TWititll.Lwd.二迪gp

50、IHConditions.,岂ireLwdlitrnng巾叭&”HFdl:pAHiriFall;J4.2组合电路的时延约束由于组合电路中不带有时钟,所以对它的时延约束主要是规定其输出端到输入端的最大时延,这可以通过set_max_delay来实现(该命令对当前设计有效),该命令的格式如下:set_max_delay延时值-from起点列表-to终点列表延时值:延时的大小,单位一般为ns-from起点列表:延时约束的起点-to终点列表:延时约束的终点例4-4(将16位加法器设计所有输入端到所有输出端的最大延时设为2ns):readadder_16.v/*读入16位加法器的设计源文件*/set_m

51、ax_delay2-fromall_inputs()-toall_outputs()在图形界面中,读入源文件后进入设计的符号描述,选中所有的输出端口,选择Attributes-OptimizationsConstraints-TimingConstraints菜单,弹出TimingConstraints对话框后,在Maximum-Rise域中填入2.00,并选中SameRiseandFall复选框即可(如图4-7所示)。003(153wlysisT(wJ?知0卩刊D&mignfrialyzerTiiiLngCms.tr*fcntjrCl曲0OperjtlrBrivirwawnt-flptini

52、sticnConstraints-a15:01匚Ah1501cI匚|RpplJ|CancM|fatlimingG?s疔创辰菓单SAAAAAAAAAAAAAA口SAAAAAAAAAAAAAA4-莊Desi邓Aiicther申设蚩组合电路的时适釣束心设计的面积约束使用set_max_area命令可以对设计的最大面积进行约束(该命令对当前设计有效),其命令格式为set_max_area-ignore_tns面积值-ignore_tns:忽略负时延裕量总和(TNS)来优化面积。DC的缺省优化算法是先使TNS最小,在此基础上优化面积。使用该开关将使得DC忽略TNS而优先考虑面积优化面积值:约束面积的大小

53、,其单位由不同的工艺库决定例4-5(将ddfs设计的面积约束设为0,这将指示DC尽可能的优化面积):current_designddfsset_max_area0在图形界面中,选中ddfs设计,选择Attributes-OptimizationsConstraints-DesignConstraints,弹出DesignConstraints对话框后在MaxArea域中填入0即可(如图4-8所示)。De弘审N-ve;StmmrtiiMCcmtrikRti:岡DtFWicPoKaySynqpsysDesignMnlyzer蚯Lei出:呼Pcwijr;ttrigut白計AnalysisToolsC

54、locksOperatingpuj广MmetHOptihiiidtionCohstrmtsrOptlhiizatinDirectives険$nEonst呻nt九-*州嗨血st广酊伽terive.*附liRHjvFanmit:K(TriWrtLtl-WT|M|nFaiUl5r砒:阪_,ftrCrdtaclJTLLnsCrltk4llineal(aConstrain(b)设计纯束对送陋3巒4-8在DesignAnalyiGr申设畫面积约船DC学习-第五章设计的综合与结果报告作者:未知时间:2010-08-1515:12:15来自:网络转载设计综合设计综合使用compile命令进行(该命令对当前设计

55、有效),该命令的格式如下:compile-map_effortlow|medium|high-area_effortnone|low|medium|high-incremental_mapping-map_effort:综合器映射的努力程度,有low,medium,high三个选项,缺省为medium-area_effort:综合器面积优化的努力程度,有low,medium,high三个选项,缺省为同map_effort的值-incremental_mapping:值是综合器在前一次综合结果的基础上进行进一步优化,不改变电路结构例5-1(综合ddfs设计,各选项均使用缺省值):current_

56、designddfscompile在图形界面中,选中ddfs设计,选择Tools-DesignOptimization菜单。在弹出的对话框中点OK即可(如图5-1所示)。rHap險妙SynopsgsDesiirtwlyzerAnalysisToois:FirtitiSt琳帕lhines.,.FPGACopilr,T&$tSithesi,.HapEfFortl冒Lw4pMllpivHoreH*pQplhcmkJVerify加!dgn右戏他QLs*KadlifavM;/iECuncfary即和耐曲町如Executei-n:FflregrwndvfockgrwndQKCrotI(a)DssigfiO

57、piimizaiion(b:设汪掘佬的话抠35-1在DesignAYttfyzs.r中进行设注综合综合过程中,屏幕上会显示综合的进程,如图5-2所示。其中第一栏为综合所花费的时间;第二栏为电路面积;第三栏为负的时延裕量;第四栏为所有负的时延裕量的总和(TNS);第五栏反映了设计规则的违反程度。从图5-2中可以看出,该电路的面积为118107.5“m2,时延比约束值相差0.07ns,即时钟周期可以达到5.07ns(约束值为5ns)。0102:470:02:470:02:4fl0;02:480;02:48O:O2:+00:02:4$0102:460:02:4fi粧02:倩0:02:40:W:4S0

58、:02:0:02:490:02:U9720t(?U97Q2.5118605申1186t5.0118545.0118627.51194401183TO.0118352.511&3&0.O1侗济出118217.5118230.0118212.5118107.5CshpleteCompilerirj师沖07軒07幹卯07好丹时好闪CI7&7O7+*nJBCOOOOOOOGC0OC-O-OOT那Sferri.闻*筑爭Iddfstodatflbis?ddF轧dfa|curr?titdesignis*曲彰.1JVtI內驴丄旦寻15-2综台工具显示的综合进程例5-2(在刚才总和结果的基础上用高映射努力程度进

59、行进一步优化):current_designddfscompile-map_efforthigh-incremental_mapping在图形界面中,选中ddfs设计,打开前面提到的设计优化对话框,点击MoreMapOptions按钮,即可弹出MapOptions对话框。在其中选中IncrementalMapping复选框,点OK。在设计优化对话框中的MapEffort下选中High选项,点OK即可(如图5-3所示)。HapOptions:PMoritiseMinPathsIncrementalHappingNap】nPlaceHapitewignMapEffATti,.,Loutfetfiu

60、fli1-HightiersMapOptions.dVerifyDesigftherI旳毛评讨和*1凶vFH*Uitky机泸_1fillo*险untfaOptjwizflitSQnR-xci.it-ir:rc-ej:-EciJjiOjd创驗蚩选项君话框(b)设计掘銘对送屈这一次综合的进程如图5-4所示,可见虽然在时延上没有改进,但电路面积较上一次综合已经有所减小。5-3DesignAnalyz&r申選盲高映射努亦程度的選歩铳伽设计结果报告5.2.1报告时延信息使用report_timing命令可以报告时延信息(该命令对当前设计有效),命令的格式如下report_timing-to路径终点列表-

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论