




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
时,每个公司都有自己的一套术…时,每个公司都有自己的一套术…利用DC进行综合设计(2012-03-2517:45:10)转载▼标签:dc综合杂谈DC的综合术语用于设计的ASIC的EDA工具往往是一套很复杂的软件,包括大量的工具和文档。同©Logie rtimrng,worseareaC2L)RopIication2bettertiming,wcf£aTirea®Replieationzbetl^r power^■)Cel3count:r«ducearea.be-tte-rpew«r(J^Cnlltypc:bc-ttQrtiming,wo-rsopower@Cutr«dund白n亡y:□色⑦Cui^undartcy:bettertiming,l>ett电rpower®CeHsize:betterarea^be-tterpower设置约束设定工艺库liiil_Library设定工艺库liiil_Library牛讥ol_libr:xryejtlthe11■:_!iTir:elty设计忧化策晤ereate_clccks@t_clock_l!±t2口匚卩PUt :ig:=Lt已d_cl■?・;kset_cl*ck_transiticnset_irLput_de1ay畧色t_m_itpu+_ii^l:=LVset汕且英:±re:i设计规则约朿Eet_m!±!{_tr!iiLsitione&t_eax_±:=LiLi:mt弓屯t_ITi:=d!_e:=Lf:=lC1t:=lTlq色读沢设计希定设计环诸选择編译策曙自顶向下.吕底向上checl;_ilesignreportcdtls七匕方:血t读沢设计希定设计环诸选择編译策曙自顶向下.吕底向上checl;_ilesignreportcdtls七匕方:血treport_arearepoit_timirug壽祐设计数据屋■ I一、预备知识1.1、DC的综合术语用于设计的ASIC的EDA工具往往是一套很复杂的软件,包括大量的工具和文档。同时,每个公司都有自己的一套术语。只有理解了这些术语的含义才能很好的掌握这些工艺。1设计和设计对象设计是实现一定逻辑功能的电路的描述。设计对象就是在设计中被DC命令、属性和约束操作或控制的对象。常用的设计中包括元件、网络、端口、引脚和时钟。另外,一个设计可能包括某个相同子设计或库元件的多个例化这时候被例化的设计或库元件称作参考。在一个设计中查找某个对象的命令:find,这是在DC命令中很常用的命令。如:列出当前设计的所有端口(ports):Dc_shell>findportORfind(port,"*”)列出所有包含”DW”字母的元件:dc_shell>find(cell,”*DW*”)列出cba_core库中的AN2门的所有接脚:dc_shell>find(pin,cba_core/AN2Read-formatvhdl./src/rtl/timer_tugw.vhdRead-formatvhdl./src/rtl/test_top.vhdCheck_error-vIf(dc_shell_status==1){exit1}Current_designtest_topLinkCheck_error-vIf(dc_shell_status==1){exit1}Includepass0/constraint/test_top.conCheck_error-vIf(dc_shell_status==1){exit1}Set_max_area0.0000Set_flattenfalseEcho”***doingfullcompileforthepartition‘test_top'***”Shdate;Compile-map_effortmediumCheck_error-vIf(dc_shell_status==1){exit1}Shdate;Check_designCompile_top_acs_partion=tureCompile_top_all_paths=trueEcho”***doingboundarycompileforthepartition‘test_top'***”Shdate;Compile-topUniquifyCheck_error-vIf(dc_shell_status==1){exit1}Shdate;Current_designtest_topWrite-formatdb-hierarchy-outputpassO/db/test_top.dbWrite-formatverilog-hierarchy-outputpassO/db/test_top.vWrite-formatvhdl-hierarchy-outputpass0/db/test_top.vhdReport_timing>pass0/report/test_top.timReport_area>pass0/report/test_top.areaReport_constraints>pass0/report/test_top.cstrReport_qor>pass0/report/test_top.qorReport_constraints-all_violators-verbose>pass0/report/test_top.vioquit脚本文件可以使用任何一个文本编辑工具产生或修改,也可以在dc_shell中执行write_scirpt命令产生。如,下面的命令就是将设计的属性和约束等信息保存到名为test.scr的脚本文件。Dc_shell>write_>test.scr脚本文件的语法应该符合djshell命令的语法。DC提供了一个语法检查工具和一个上下文检查工具,他们可以检查脚本文件的语法和脚本文件的错误,并提供相应的错误信息。语法检查工具检查脚本文件的语法,但是不执行其中的命令。语法检查实现的功能包括:检查预先定义的命令参数是否正确,检查必须的参数是否存在、文件重定向问题、检查引用文件中的命令的语法、按照dc_shell正常的使用方式执行赋值。要使用语法检查,我们必须对该功能进行使能,此后每次引用或执行脚本前就会首先进行语法检查。在dc_shel1中使能语法检查功能的方法如下:Dc_shell>syntax_checktrueSyntaxcheckon.上下文检查工具检查上下文的错误。在执行一个脚本文件前,我们应该对其进行上下文检查。上下文检查在检查每个命令的语法的同时,还会读入设计、检查设计和库文件是否有效、文件设法齐全等。其执行具体的功能包括:检查设计对象和属性的合法性,检查用户定义的属性,检查变量是否存在,检查条件语句的条件,检查循环语句,读入需要读入的文件,根据命令重定向文件,检查库和库对象。要使用上下文检查,我们必须对该功能进行使能,此后每次引用或执行脚本文件前就会进行上下文检查。使能命令如下。Dc_shell>context_checktrueContextcheckon.最后,脚本文件的执行是比较简单的,可以通过两种方法:在dc_shell中,应该使用include命令执行脚本文,include<filename>在启动dc_shell时,可以使用-f选项执行脚本文件,dc_shell-fvfilename〉在执行脚本前,如果我们激活了脚本语法检查和上下文检查,那么就会先进行相应的检查。二、准备HDL文件输入DC的文件通常是HDL文件,HDL的代码质量将直接影响综合的效果,因此在编码中必须考虑设计数据管理、设计划分和HDL代码的风格2.1、数据文件管理首先,由于综合过程中需要大量的数据和多种文件,因此数据的管理就显得非常重要。这种管理通常设计两个部分,设计数据控制和数据组织。控制设计数据主要是控制数据的创建维护、覆盖和删除等。这和软件工程中的版本控制是基本一致的。在DC中对于不同类型的的文件,一般有约定的扩展名。在控制数据的同时还必须注意对数据合理有效的组织,一般,在使用DC综合的时候,我们都会使用层次化的目录结构来存放数据文件。相对于不同的综合策略,我们也有两种不同的目录结构。可以看出,在应用自顶向下的综合策略时,由于综合是从顶层模块开始一次到各个模块,所以只需要一个综合目录。而自底向上的综合则现对各个模块进行综合,因此可能有多个综合目录。2.2、设计划分对设计的合理划分可以改善综合的结果,减少操作的时间,简化约束文件和脚本文件。划分直接影响设计中模块的大小,如果模块太小,相当于人为的制造了一个界限,将限制DC有效的进行优化。另一方面,如果划分的模块太大,则会增加综合消耗的时间。在划分的时候还要考虑设计的重用性,主要应该注意以下几点:详细定义并记录设计的接口,尽可能使接口标准化,编写参数化的代码。通常,我们设计的划分一般使用以下策略:(1) 将相关的组合逻辑划分在一起(2) 消除胶连逻辑(3) 模块的输出都应该使用寄存器(4) 按照设计目标进行划分按照编译技术划分,将设计中使用不同编译技术的部分划分到不同的模块。特别使当设计中既有高度结构化的逻辑(ALU),又有随机逻辑时,应当将他们分开。因为对于结构化的逻辑应该使用结构化编译,而对随机逻辑,应该使用扁平化的编译。可以将共享的资源划分到一起将用户定义的资源和他们驱动的逻辑划分到一起,用户定义的资源包括用户定义的函数、过程、宏单元和designware元件。DC对于这些资源无法自动实现共享和复制。因此,将他们和它们所驱动的逻辑放在一起,我们就可以手工的插入多个元件来增大驱动能力。把顶层逻辑分成至少3级,将一些特殊的功能独立出来,如管脚、时钟、边界扫描和异步逻辑等。如下图所示,一般情况下,设计的最顶层是I/O管脚。下一层包括边界扫描、时钟处理、异步逻辑和核心逻辑。增加这一层是为了I/O管脚例化的灵活性•将时钟处理独立出来是为了对这部分进行详细的分析仿真。将异步逻辑独立出来是为了可测性和静态时序分析的问题限制设计划分的方法分为HDL划分和DC中的划分。HDL的划分就是根据上面一些原则通过HDL代码对设计进行划分。而DC中的划分是在DC中通过使用专门的命令,改变HDL中的划分和层次的结构。DC中提供了两个与此相关的命令:group,ungroup。三、确定设计库综合之前必须设定链接库、目标库、符号库和综合库。连接和目标库属于工艺库,它们定义了半导体生产厂的工艺元件和其它信息。符号库定义用于designvision或designanalyzer中的元件的符号表示确定这些库是使用DC进行综合的前提条件,因此我们必须掌握DC中库的命令的使用,以便DC可以正确的使用库中的数据。3.1、 工艺库工艺库包括描述每个单元的功能和特性的信息。工艺库由半导体厂商提供和维护。元件库包括元件名称、元件接脚名称、面积、时延信息、接脚负载。同时工艺库还定义了实现设计功能必须满足的条件。这些条件也可以称作设计规则约束。除此之外,工艺库还确定了工艺的工作条件和线载模型。工艺库在DC中有下面一些用途:实现设计的功能,在de综合过程中要将设计映射到某个工艺库,他们称作目标库。目标库包括了所有用于生产网表的元件以及设计工作条件的定义。解析元件参考,在de中用于解析元件参考的工艺库称为链接库。链接库中除了工艺库外还可能包括设计文件。计算时延和路径延时,链接库还定义了用于计算时延值和路径延时的时延模型计算消耗的功率3.2、 设置库变量在使用de综合之前我们必须对库进行设置。具体的方法是使用de_shell中的变量来确定各种库。变量和库文件的定义见下表变量a默认值玄 "文件扩展名屮目标库户谁接库门{“秤「取威J迫斑沁禹心'Dbp符导库门 JDesignware库门⑴:-在确定库的位置的时候,我们可以使用完整的路径也可以只用文件名。如果只确定了文件名,DC会在search_path变量确定的搜索路径中查找这个文件。在设置工艺库和链接库的时候要注意:链接库包括了工艺库和设计文件。因此,link_library变量的值是工艺库加上一个星号“*”,表示链接时,DC既搜索工艺库,也搜索调入内存中的设计文件。除了设置库变量,DC还支持各种对库的操作,如:读入和保存库,列出使用的库,显示库的内容,确定库的对象甚至直接对库对象进行操作。如下为一个工艺库的例子:Cell(AND23)//元件名称(area:8.000;〃元件面积Pin(Y)(direction:output;Timing()(Related_pin:”A”;Timing_sence:positive_unate;Rise_propagation(drive_3table_l)(values(“0.2626,0.2607 ”))//接脚延时Fall_progpagation(drive_3_table_3)(values(“0.1316,0.1331"))))Timing()(related_pin:”B”;):”A&B”;〃接脚的功能描述Max_capatiance:0.00220Min_capatiance:0.00220//输出引脚的设计规则)Pin(A)(direction:input;Capacitance:0.012000;)Pin(B)(direction:input;〃输入引脚的电器特性Capacitance:0.010000;))四、DC对设计的一些操作4.1、读入文件下表列出了DC支持的所有文件类型描述心关键字Q扩展名丰数据库骼式屮D畑电子设计交换格式屮Equation屮Syncipsys等式格式屮Equation屮3LSIlogiccorporaEon圈袁格式心.netQMentorsMentorrisfte:'!do恪式t只作背输出)卩Mentor*3•爾+■*Mentorint-ermediateformat(只作黄]输•哪Starttables驗鱷瓯状态表客式屮TDUTerrasdesignlanguage厕表移式心Id!/1潮加Vr?tiloghdl搐式口.何Vhcll洛式心WrYYYrVyw湎卩XiliiLK刚表榕式护•恥PL■加Berkeley魄格式Q对于设计文件,可以使用两种方法读入。使用read_file命令或使用analyze和elaborate命令。这两种方法有一些区别。简单的说,前一种适用于各种类型的文件,而后一种主要用于综合VHDL和verilog文件。但是使用后者有一些特殊的功能。具体说来,analyze的功能包括读入HDL源文件,检查错误,产生独立于HDL的中间类型的HDL库对象,存储中间文件。如果一个设计执行的analyze命令,只需要在这个设计改变之后再执行该操作。Elaborate命令根据analyze产生的中间文件产生一个与工艺无关的设计。这个操作还将HDL中的算术操作用于DESIGNWARE库中的元件替代,同时确定总线的宽度。当设计读入内存之后,它将转换为synopsys内部数据库的格式。DC之后的综合优化过程都是对内存中的设计执行的。(1)链接对于一个完整的设计,必须把所有的库元件和他们对应的设计参考链接起来。对于每一个设计,还必须有一个参考来衔接子设计和链接库。这一过程称为链接设计或参考解析。换句话说,链接就是要在链接库中找到设计中使用的所有元件和子设计,保证设计的完整。如果不能正确的链接,则无法进行以后的综合等操作。DC通过一下步骤完成参考解析:首先,它确定哪个库元件和子设计在当前的设计中被使用。然后,它在链接库中定位这些参考。最后,把定位好的参考和设计链接起来。如图。链接的操作可以自动进行,也可以手工完成。当使用一些DC命令,如compile时会自动进行链接。如果需要,也可以使用link命令进行手工链接。
2)对设计和设计对象的操作这些操作时DC中的一些基本操作,和其它EDA软件中的操作类似,如生成新设计、拷贝设计、重新命名等。其中比较重要的有以下几种:设置当前设计。在DC中,我们应当注意当前设计的概念,因为大多数的命令都是针对当前设计进行的。一般说来,如果成功的读入了一个设计之后,这个设计就会作为当前设计。另外,如果指定了一个当前设计,可以使用current_design命令。列出设计和设计对象。使用list_designs命令来列出内存中的设计,其中带“*”为当前设计。下表也列出了显示设计对象信息的一些命令。对象口•命篡p功能"烈说inEtan洱口酣规顷它们的蔘苦嗨盂養苇freferetKi.e^*5辰示夢考的信息y端口(卩血)肩显示端口和总线端口的信息,返區所有的输挝输出谎口屮网络(net)中显示网貉和总绩网络的信息心时钟clock^1為話显示时钟信息和返回所有时钟心寄存器register^,返回所有寄存器屮改变设计的层次,在DC中我们可以改变HDL所描述的设计层次关系。首先,使用report_hierarchy命令可以显示设计当前的层次关系。然后,使用group可以将一些元件或子设计组合起来,增加一个逻辑层次。或使用ungroup名去掉一个逻辑层次。编辑设计,使用下表列出的命令可以对设计对象进行编辑,如生成,删除等。Creat_cell生成一个元件Remove_cell删除一个元件Create_net生成一个网络Connect_net连接一个网络Disconnect_net断开一个网络Remove_net删除一个网络Create_port生成一个端口Remove_port删除一个端口Create_bus生成一个总线Remove_bus删除一个总线4.2、属性的处理属性描述了设计数据库中对象逻辑的电气、物理和其它特性。一个属性通常都是附加给一个设计对象并存储于设计数据库中。DC中,我们可以设置和使用以下一些对象的属性整个设计设计对象,如时钟,网络和端口设计中的子设计或元件的例化工艺库,库元件属性有自己的名称、类型和值。属性一般有以下几种类型:串、数或是逻辑。属性可以是DC预设的,这些属性可以被DC识别;也可以是用户定义的。一些属性是只读的,其值由DC设置,用户无法修改,另一些是用户可以自己修改的。例如,我们经常使用“dout_touch”属性,它可以付给网络,单元,端口或设计。而当我们需要设置这个属性的时候,需要专门的命令:set_dont_touch而对于一般的属性,可以使用命令set_attribute来设置。DesignCompiler综合脚本常用命令和模板(2012-03-2517:47:12)转载▼标签:分类:微电子dc综合script杂谈参照自己的设计,以及自己的工艺信息,适当修改下面的Constraints和RunScript等的脚本,添加一些相关的约束语句,就可以运行了详细…参照自己的设计,以及自己的工艺信息,适当修改下面的Constraints和RunScript等的脚本,添加一些相关的约束语句,就可以运行了详细的命令请参照DC的官方UserGuide等相关资料。InvokingDesignCompilerUnix%design_vision#InteractiveGUI,WLMmodeUnix%design_vision-topographical #InteractiveGUI,TopographicalmodeUnix%dc_shell-t#Interactiveshell,WLMmodeUnix%dc_shell-t-topographical #Interactiveshell,TopographicalmodeUnix%dc_shell-t-fRUN.tcl|tee-imy.log#Batchmode.synopsys_dc.setupsetsearch_path“$search_pathlibsconsunmappedrtl”setsynthetic_librarydw_foundation.sldbsettarget_library65nm.dbsetlink_library“*$target_library$synthetic_libraryIP.db”setsymbol_library65nm.sdbdefine_design_libWORK-path./workset_svf<my_filename.svf>set_vsdc<my_filename.vsdc>historykeep200setsh_enable_page_modefalsesetcache_write.setcache_read$cache_writesuppress_message{LINT-28LINT-32LINT-33UID-401}setalib_library_analysis_path[get_unix_variableHOME]aliashhistoryaliasrc“report_constraint-all_violators”TCLCommandsandConstructssetPER2.0#Defineavariableanditsvalueecho$PER#Variablesubstitutiona2.0setMARG0.95expr$PER*$MARG#expr:*,/,+,-,>,<,=,<=,>=setpci_ports[get_portsA]#Imbeddedcommandsetpci_ports[get_ports“Y??MZ*”]#Wildcardsecho“EffctvP=\#Softquotesa1.9[expr$PERIOD*$MARGIN]”echo{EffctvP=\#Hardquotes[expr$PERIOD*$MARGIN]}#aEffctvP=[expr$PER*$MARG]#CommentlinesetCOMMENTin_line;#In-linecommentsetMY_DESIGNS{B1.v...B26.v} #foreachloopforeachDESIGN$MY_DESIGNS{read_verilog$DESIGN}for{seti1}{$i<27}{incri}{#forloopread_verilogBLOCK_$i.v}HelpfulUNIX-likeDC-shellcommandspwdcdlshistory!!!7!reportsh<UNIX_command>printenvget_unix_variableARCHConstraintsreset_designset_max_area0create_clock-period2-nameMain_Clk[get_portsClkl]create_clock-period2.5-waveform{23.5}[get_portsClk2]create_clock-period3.5-nameV_Clk;#VIRTUALclockset_clock_uncertainty-setup0.l4[get_clocks*]set_clock_uncertainty-setup0.2l-from[get_clocksMain_Clk]-to[get_clocksClk2]set_clock_latency-max0.6[get_clocksMain_Clk]set_clock_latency-source-max0.3[get_clocksMain_Clk]set_clock_transition0.08[get_clocksMain_Clk]set_input_delay-max0.6-clockMain_Clk[all_inputs]set_input_delay-max0.3-clockClk2-clock_fall-add_delay[get_ports“BE”]set_input_delay-max0.5-clock-network_latency_includedV_Clk[get_ports“ACF”]set_output_delay-max0.8-clock-source_latency_includedMain_Clk[all_outputs]set_output_delay-maxl.l-clockV_Clk[get_ports“OUT2OUT7]set_max_capacitancel.2[all_inputs]set_load0.080[all_outputs]set_load[expr[load_ofslow_proc/NAND2_3/A]*4][get_portsOUT3]set_load0.l2[all_inputs]set_input_transition0.l2[remove_from_collection[all_inputs][get_portsB]]set_driving_cell-lib_cellFDl-pinQ[get_portsB]set_operating_conditions-maxWCCOMsetauto_wire_load_selectionfalseset_wire_load_model-namel.6MGatesset_wire_load_modeenclosedset_wire_load_model-name200KGates[get_designs“SUB1SUB2”]set_wire_load_model-name3.2MGates[get_portsIN_A]set_port_fanout_number8[get_portsIN_A]set_false_path-from[get_clocksAsynch_CLKA]-to[get_clocksAsynch_CLKB]set_multicycle_path-setup4-from-fromA_reg-throughU_Mult/Out-toB_regset_multicycle_path-hold3-from-fromA_reg-throughU_Mult/Out-toB_regset_isolate_ports-typeinverter[all_outputs]set_ideal_network[get_portsreset*select*]set_ideal_network[get_pinsFF_SET_reg/Q]set_ideal_network-no_propagate[get_netsCTRL]set_ideal_latencyl.4[get_portsreset*select*]set_ideal_transition0.5[get_pinsFF_SET_reg/Q]set_scan_configuration-style<multiplexed_flip_flop|clocked_scan|lssd|aux_clock_lssd>CheckingandRemovingConstraintsandDirectivesreport_clock;report_clock-skewreport_designreport_port-verbosereport_wire_loadreport_path_groupsreport_timing_requirements(-ignored)report_auto_ungroupreport_isolate_portswrite_script-output<constraints.tcl>check_timingreset_path-fromFF1_regremove_clockremove_clock_transitionremove_clock_uncertaintyremove_input_delayremove_output_delayremove_driving_cellremove_wire_load_modelSyntaxCheckingUnix%dcprocheckconstr_file.conPhysicalConstraints-TopographicalModeset_aspect_ratioset_utilizationset_placement_areaset_rectilinear_outlineset_port_sideset_port_locationset_cell_locationcreate_placement_keepoutMisc.Reports#GenerateAlibraryreportfileread_dblibrary_file.dblist_libsredirect-filereports/lib.rpt{report_lib<libname>}report_hierarchy[-noleaf]#Arithmeticimplementationand#resource-sharinginforeport_resources#Listareaforallcellsinthedesignreport_cell[get_cells—hier*]RunScriptread_verilog{A.vB.vTOP.v}orread_vhdl{A.vhdB.vhdTOP.vhd}orread_ddcMY_TOP.ddcoracs_read_hdlMY_TOPoranalyze-formatverilog{A.vB.vTOP.v}elaborateMY_TOP-parameters“A_WIDTH=8,B_WIDTH=16”current_designMY_TOPlinkif{[check_design]==0}{echo“CheckDesignError”exit#ExitsDCifacheck-designerrorisencountered}#ContinueifNOproblemsencounteredwrite-fddc-hier-outunmappedd/TOP.ddcredirect-tee-filereports/precompile.rpt{source-echo-verboseTOP.con}redirect-append-tee-filereports/precompile.rpt{check_timing}source<Physical_Constraints_TCL_file>or#Sourcetclconstraints,ifavailable,orextract_physical_constraints<DEF_file>#Extractandapplyfromanexisting#DEFfloorplanfilegroup_path-nameCLK1-critical_range<10%ofCLK1Period>-weight5group_path-nameCLK2-critical_range<10%ofCLK2Period>-weight2group_path-nameINPUTS-from[all_inputs]group_path-nameOUTPUTS-to[all_outputs]group_path-nameCOMBO-from[all_inputs]-to[all_outputs]set_fix_multiple_port_nets-all-buffer_constantsk1*k1****InsertExpert,UltraorACScompileflowhere***k1*k1*k1*k1*k1*k1*check_designreport_constraint-all_violatorsreport_timing-delay-to-from-through-input_pins-max_paths\-nworst-nets-cap-sig-groupreport_area
report_qorsetverilogout_no_tritruechange_names-ruleverilog—hierwrite—fverilog—hier—outmapped/TOP.vwrite-fddc-hier-outmapped/TOP.ddcwrite_sdcTOP.sdcwrite_scan_def—outTOP_scan.defwrite_physical_constraints—outputTOP_PhysConstr.tclexitObjectRetrievalandManipulation(CollectionCommands)get_ports,get_pins,get_designsget_cells,get_nets,get_clocksget_nets—of_objects[get_pinsFF1_reg/Q]get_libs<lib_name>get_lib_cells<lib_name/cell_names>get_lib_pins<lib_name/cell_name/pin_names>all_inputs,all_outputs,all_clocks,all_registersall_connectedall_fanin,all_fanoutall_ideal_netsa{pci_lpci_2...}apci_1pci_2...a{pci_lpci_2...}apci_1pci_2...#a37query_objects$pci_portsget_object_name$pci_portssizeof_collection$pci_portssetpci_ports[add_to_collection$pci_ports\[get_portsCTRL*]]setall_inputs_except_clk[remove_from_collection\[all_inputs][get_portsCLK]]compare_collectionsindex_collectionsort_collectionforeach_in_collectionmy_cells[get_cells-hier*\-filter“is_hierarchical==true”]{echo“Instance[get_object_name$cell]ishierarchical”}#Filteringoperators:==,!=,>,<,>=,<=,=~,!~filter_collection[get_cells*]“ref_name=~AN*”get_cells*-filter“dont_touch==true”get_clocks*-filter“period<10”#Listallcellattributesandredirectoutputtoafileredirect-filecell_attr\{list_attributes-application-classcell}#Grepthefileforcellattributesstartingwithdont_UNIX%grepdont_cell_attr|moreListthevalueoftheattributedont_touchget_attribute<cell_name>dont_touchUltraCompileFlow-TopographicalorWLMModeUltra+DesignWareandDFTClicensesavailableIn“topo”mode(dc_shell-t-topo)specifyMilkywayreferenceanddesignlibrariescreate_mw_lib-tech<technology_file>-mw_reference_library<mw_reference_libraries>\<mw_design_library_name>open_mw_lib<mw_design_library_name>set_tlu_plus_files-max_tluplus<max_tluplus_file>-tech2itf_map<mapping_file>setcompile_auto_ungroup_delay_num_cells99999999setcompile_auto_ungroup_count_leaf_cellstruesetcompile_auto_ungroup_override_wlmtrueset_ungroup<top_level_and/or_pipelined_blocks>falseOPTIONAL:Disableunconditionalauto-ungroupingofDesignWarehierarchy(notusuallyrecommended)setcompile_ultra_ungroup_dwfalseIfdesigncontainspipelinedsub-designsandthepipelineregistersaregroupedtogetherattheinputoroutput,relaxtimingset_multicycle_path-setup<#_stages>-fromU_Pipeline/R3_reg*-toU_Pipeline/R7_reg*In“topo”mode,ifthefloorplanisavailable,applyorextractthephysicalconstraintssource<physical_constraints_file> ORextract_physical_constraints<DEF_file>OPTIONAL:Excludespecificcells/designfromadaptiveretiming(-retime)set_dont_retime<cells_or_designs>trueFirstcompilecompile_ultra-scan-retime-timing|-areaThedesignhierarchymayhavechangedduetoauto-ungrouping/-uniquifyingreset_path-fromU_Pipeline/R3_reg*-toU_Pipeline/R7_reg*OPTIONAL:Maintainregisteredpipelineoutputsifrequiredset_dont_touch[get_cellsU_Pipeline/R12_reg*]trueOptimizeregistersifpipelineviolatestiming;Skipifnopipelineissues:set_optimize_registerstrue-designMy_Pipeline_Subdesignoptimize_registers—only_attributed_designsContinueifdesignisNOTmeetingallconstraints:Applymorefocusonviolatingcriticalpaths,asnecessarygroup_path-name<group_name>-from<path_start>-to<path_end>\-criticalrange<10%ofmaxdelaygoal>-weight5SelectappropriatesecondcompileIn“topo”modeinDCv2006.06,oranymodeinDCv2007.03orlatercompile_ultra-scan-incremental#In“WLM”modeinDCv2006.06set_ultra_optimizationtruecompile-boundary-scan-map_efforthigh-incremental(-area_effortmedium|low|none)#In“topo”modepriortoDCv2007.03:Writeoutupdatedphysicalconstraintswrite_physical_constraints-outputPhysConstr.tclDFTFlow-ExpertorUltraDFTClicenseavailablePriortothefirstcompilesetthescancellstyleset_scan_configuration-style..Performthefirsttest-readycompilecompile-boundary-maphigh-scan#ORcompile_ultra-timing-scanContinuebeforethenextcompile:Readinthescanspecificationfilesourcescan_spec.tclCheckforDFTruleviolationsdft_drcPreviewthescanchainspreview_dftInsertandoptimizescaninsert_dft**ExecuteadditionalUltra/Expertoptimization*techniques,asneeded ***#AfterthefinalcompilechecktheDFTQoR#andwriteoutthescanDEFfiledft_drc—coverage_estimatewrite_scan_def-out<my_design.def>SomeScanSpecificationCommandsset_scan_statetest_readyset_dft_configuration...set_dft_signal...set_scan_path...set_scan_configuration...create_test_protocolExpertCompileFlowNoUltralicenseavailable;DFTClicenseavailablecompile-boundary-scan—map_efforthighContinueifNOTmeetingconstraintsNote:-scanrequiresDFTClicensecompile-boundary-scan-map_efforthigh-incremental\(-area_effortmedium|low|none)ContinueifNOTmeetingconstraints:Increasemax-delaypriorityifOKtopostponeDRCfixingset_cost_priority-delayNote:Thedesignhierarchymayhavechangedduetoauto-uniquifyingApplymorefocusonviolatingcriticalpaths,asnecessarygroup_path-name<group_name>-from<path_start>\-to<path_end>-criticalrange<10%ofmaxdelaygoal>-weight5Repartitionifdesignispoorlypartitionedgroup-design<NEW_DESIGN>-cell_name<U_NEW_CELL>\{U2U7...}ungroup-start_level2U_NEW_CELLcompile-boundary-scan-map_efforthigh-incremental\(-area_effortmedium|low|none)Or,canungroupallhierarchyinlieuofgroup/ungroupcommandswith-ungroup_allcompile-boundary-scan-map_efforthigh-incremental\(-area_effortmedium|low|none)-ungroup_all“PseudoUltra”CompileFlowUltralicenseavailable;NoDesignWarelicenseavailablesetcompile_auto_ungroup_delay_num_cells99999999setcompile_auto_ungroup_area_num_cells99999999setcompile_auto_ungroup_count_leaf_cellstruesetcompile_auto_ungroup_override_wlmtrueset_ungroup<top_level_and/or_pipelined_blocks>false#OPTIONAL:Disableunconditionalauto-ungrouping#ofDesignWarehierarchy(notusuallyrecommended)setcompile_ultra_ungroup_dwfalse#Ifdesigncontainspipelinedsub-designsandthepipelineregisters#aregroupedtogetherattheinputoroutput,relaxtimingset_multicycle_path-setupv#_stages>\-fromU_Pipeline/R3_reg*-toU_Pipeline/R7_reg*EnableUltraoptimizationsavailableforcompileset_ultra_optimization-no_auto_dwlibtruesethlo_disable_datapath_optimizationtruesetcompile_slack_driven_bufferingtruecompile-boundary-scan-map_efforthigh-auto_ungroupdelay|area\(-area_effortmedium|low|none)Note:Thedesignhierarchymayhavechangedduetoauto-ungroupingandauto-uniquifyingreset_path-fromU_Pipeline/R3_reg*-toU_Pipeline/R7_reg*OPTIONAL:Maintainregisteredpipelineoutputsifrequiredset_dont_touch[get_cellsU_Pipeline/R12_reg*]trueOptimizeregistersifpipelineviolatestiming;Skipifnopipelineissues:set_optimize_registerstrue-designMy_Pipeline_Subdesignoptimize_registers-only_attributed_designsContinueifdesignisNOTmeetingallconstraints:compile-boundary-scan-map_efforthigh-incremental\(-area_effortmedium|low|none)ContinueifNOTmeetingallconstraints:set_cost_priority-delayUngroupDesignWarecomponentsamidcombinationallogicungroup<DesignWare_components>Applymorefocusonviolatingcriticalpaths,asnecessarygroup_path-name<group_name>-from<path_start>-to<path_end>\-criticalrange<10%ofmaxdelaygoal>-weight5compile-boundary-scan-map_efforthigh-incremental\(-area_effortmedium|low|none)DC脚本示例及解释(2012-03-2517:48:31)转载▼标签:分类:微电子dc综合script杂谈#scriptforDesignCompiler#Language:TCL#Usage:#1)makesurethelibinthecurrentdirectory#2)ifyouhavethefile.synopsys_dc.setup,# setsynopsys_dc_setup_file1,# ifnot,setsynopsys_dc_setup_file0#3)changeStep3:Variablestowhatyouwant#Especially:topmodulename,clockname,#resetname,allfilesname,andperiod#4)typingdc_shell-t-frun_72.tcl|tee-irun.log##=====================================================setsynopsys_dc_setup_file0# #Step1:#SettingUppathandlibrary:#Ifyouhaveeditedthefile.synopsys_dc.setup,thenyoucanskipoverthisstep# if{$synopsys_dc_setup_file==0}{setsearch_path[list/home/chanshi/dc/library/smic/home/chanshi/dc/rfid/source/home/chanshi/dc/script]settarget_library{typical.db}#settarget_library{CSM35OS142_typ.db};#ifyouwantusetypicallibrary,changetotypical.db#setlink_library[list{*}ram_interp_typical_syn.dbram_458_typical_syn.dbtypical.db]setlink_library[list{*}$target_library]}#setsymbol_library{csm18ic.sdbcsm18io.sdb}#setsynthetic_library{dw_foundation.sldb};#DesignWaresetcommand_log_file"command.log"# #Step2:#CompileSwithes# #setverilogout_no_tritrue;#ifinoutused,trinetwillbeused#通过将三态(tri)逻辑声明成线网(wire)来确保网表中不会出现三态逻辑,因为一些布线工具很难读取包含tri、tran源语、assign语句的网表,对于“inout"类型的port,DC产生triwire语句和tran源语,对于tri,还会产生assign语句settest_default_scan_stylemultiplexed_flip_flop#设置扫描链的类型,还可以通过set_scan_configuration-style来设置setlink_force_case case_insensitive#设置link命令是否区分大小写,默认是check_referenee,就是根据产生referenee的模块格式来判断是否大小写敏感,如果是vhdl格式就是不敏感,如果是verilog就敏感define_name_rulesVLSI_NET-allowed"a-zA-Z0-9_"-first_restricted"0-9_"-typenet-max_length256define_name_rulesVLSI_CELL-allowed"a-zA-Z0-9_"-first_restricted"0-9_"-typecell-max_length256define_name_rulesVLSI_PORT-allowed"a-zA-Z0-9_"-first_restricted"0-9_"-typeport-max_length256define_name_rulesTAN_RULE-allowed"a-zA-Z0-9_"-first_restricted"0-9_\[]"-max_length256-map{{{"*cell*","mycell"},{"*-return","myreturn"}}};sethdlin_check_no_latch"true"#设置如果推断出锁存器,是否报warning,默认是false,即不报。sethdlin_merge_nested_conditional_statements"true"#顾名思义,是否把嵌套的if融合,默认值是false,就是对于嵌套的条件语句(if或case语句)中的每一个if和case都推断出一个选择器,这种做法有利于把某些迟到的条件判断信号(latearrivingsignals)安排到离输出最近的选择器上(进而有利于减小延迟),如果设成true,就会把这些选择器融合成一个大的选择器,这样所有的选择信号到输出的距离都是相同的# Step3:DefineVariables setactive_design"whole_modules";Topmodulenamesourcefiles.tcl;AllRTLsource_files(verilog)setclock_name"clk";Nameofclocksetreset_name"reset";Nameofresetsetclk_period70.0#设置时钟周期,注意带小数点,这样计算出的值都带小数点,不然小于1的数都显示为0DesiredClockPeriod=1000/Frequencesetclk_uncertainty_setup[expr$clk_period/200];#设置时钟不确定性,这里只设置了相对于建立时间的不确定性,就是时钟上升沿有可能提前clk_uncertainty_setup(时钟偏差和时钟抖动之和)到来,dc要提前clk_uncertainty_setup检查建立时间是否满足Uncertaintyofclocksetclk_latency[expr$clk_period/10];#设置时钟延迟,是时钟信号从其实际时钟原点到设计中时钟定义点的传输时间NetworkLatencyofclock考虑reg1+combo1 combo2_input+reg2+combo2_output combo3+reg3的模型来解释input_delay和output_delay,中间的combo2_input+reg2+combo2_output是要综合的模块setinput_delay[expr$clk_period/4];#设置输入延迟,设置一个外部输入(组合逻辑combol)用了多少时间(即从时钟上升沿到输入数据到来经历的延迟),dc计算还有多少时间留给内部组合逻辑combo2_input,例如时钟周期为10ns,input_delay是4ns,则还有(6-tsu)留给内部组合逻辑combo2_inputInputDelayofallinputportsexceptclocksetoutput_delay[expr$clk_period/4];#设置输出延迟,设置一个外部输出(组合逻辑combo3)用了多少时间(即外部组合逻辑的延迟),dc计算有多少时间留给内部组合逻辑combo2_output,例如时钟周期为10ns,output_delay为4ns,则还有(6-Tclk2Q)留给内部组合逻辑combo2_outputOutputDelayofalloutputportssetarea_desired0;#设置面积的期望值,用于set_max_area
setwire_load_model"smic18_wl20";#为了精确地计算设置线载模型(DC支持三种模式:以此来决定如何选择用于跨层次边界的网线的线载模型),用于计算时序路径的延迟,用于set_wire_load_model#Modeloftheintranetsetoutput_load"typical/NAND2BX1/AN";#为了精确地计算输出电路的时间,需要设置端口负载(输出或输入的外部电容负载),就是为所有输出端口指定一个负载,综合时de就会认为这里有一个这样的负载(并不是说综合时在这里强制添加一个电容),dc综合时就会选择满足这个负载的器件,例如假设已经知道某输出端口要驱动的是一个反相器,那么把输出负载设置成这个反相器的输入负载即可当然可以设置成很大,这样de就会用驱动能力很大的器件,来满足所有单元被驱动。这个指令的作用是在布图前综合过程中设置模块输出端口的容性负载和往连线上反标注布图后提取的电容信息,这里选取某一器件的某一引脚的负载作为outputload,也就是de认为所有输出端口要达到能驱动这个引脚#modeloftheoutput_loadsetsynthesis_reports{/home/ehanshi/de/report};#指定综合报告的输出目录#nameofreportdireetoryshmkdir$synthesis_reports;settiming_report "$synthesis_reports/$aetive_design\_timing.rpt"settiming_max20_report"$synthesis_reports/$aetive_design\_timing_max20.rpt"setarea_report "$synthesis_reports/$aetive_design\_area.rpt"setreferenees_report"$synthesis_reports/$aetive_design\_referenees.rpt"seteell_report"$synthesis_reports/$aetive_design\_eell.rpt"seteonstraint_report"$synthesis_reports/$aetive_design\_eonstraint.rpt"setpower_report"$synthesis_reports/$aetive_design\_power.rpt"seteheek_syntax_report"$synthesis_reports/$aetive_design\_eheek_design.rpt"setsynthesis_netlist{/home/ehanshi/de/result};#指定网表和sdf/sde/db文件输出目录,本de不支持生成db文件#nameofoutfiledireetoryshmkdir$synthesis_netlist;#创建目录setout_netlistsetout_dbsetout_sdfsetout_sde$synthesis_netlist/$aetive_design.v";$synthesis_netlist/$aetive_design.db";$synthesis_netlist/$aetive_design.sdf";"$synthesis_netlist/$aetive_design.sde";setout_netlistsetout_dbsetout_sdfsetout_sde$synthesis
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年江苏省常州市新北区外国语学校英语八年级第二学期期中学业质量监测试题含答案
- 体育理论考试试题及答案
- 2025年婚姻性格分歧处理协议书
- 2025年餐饮企业信息保密协议规定
- 2025年租赁合同定金协议书范本
- 2025年学生租赁协议官方文本
- 2025年标准评估协议案例
- 2025年地质环境监测设备购销协议
- 企业合并与收购中的风险识别
- 供应链管理中的合规监管与风险管控
- JC∕T 2637-2021 水泥制品行业绿色工厂评价要求
- 老年人营养筛查与评估
- 部编版二年级下册第八单元口语交际课件
- 海洋生物活性成分的提取、分离与结构分析
- 案场考试题库
- 医药代表培训医院微观市场管理教学课件
- 火力发电企业作业活动风险分级管控清单(参考)
- 如何构建印刷企业的安全文化
- 肺痿肺痈咳嗽上气病脉证治第七
- EN779-2012一般通风过滤器——过滤性能测定(中文版)
- 双横臂独立悬架设计
评论
0/150
提交评论