版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2024/11/91逻辑综合工具DCPart1设计约束与脚本编写集成电路EDA技术实验2024/11/92LevelsofAbstractionPhysicalDeviceSillionRegisterTransferArchitecturalHDLOurfocuswillbehereIdeaIdeacapturedonbackofenvelopeFunctionalGraphicalortextualdescriptionBehavioralHDLandsimulationlanguageGate-LevelNetlistGate-LevelNetlist2024/11/93TargetLibraryVariableTheTargetLibraryisthelibraryusedbyDCforbuildingacircuit.Duringmapping,DCwillchoosefunctionally-correctgatesfromthislibrarycalculatethetimingofthecircuitusingvendor-suppliedtimingdataforthesegatestarget_libraryisareservedvariableinDCSetittopointtothelibraryfile(s)providedbyyoursiliconvendor2024/11/94Targetlibrary&Symbollibrary目标库是DC在mapping时将设计映射到特定工艺所使用的库,即使用目标库中的单元综合成设计的门级网表。符号库(symbol_library):是工艺库元件的图形符号表示,用来图形化显示生成的门级网表。2024/11/95LinkLibraryUsedtoresolvedesignreferences
FirstDCsearchesthememoryandthenthelibraryfilesspecifiedinthelink_libraryvariable
SecondDCsearchestheallpathsdefinedinthesearch_pathvariable2024/11/96Link的概念链接库提供门级网表实例化的基本单元,即门级网表中实例化的元件或单元都来自链接库。对于一个完整的设计,必须把所有库元件和其对应的设计reference链接起来;对于每个子设计,还必须有一个参考链接子设计和链接库。链接就是要在链接库中找到设计中使用的所有元件和子设计,保证设计的完整。2024/11/97链接库和目标库的区别target_library定义为标准单元的db格式的库;link_library是提供门级网表实例化的基本单元,也就是门级网表实例化的元件或单元都来自该库。链接库定义为标准单元的db格式的库文件加上paddb格式的库文件,加上ROM,RAM等宏单元库文件等。综合工具在综合时不会综合生成pad,而是把pad直接例化到门级网表中去。link_library
有一个“*”号,表示链接时,DC既搜索工艺库,也搜索调入内存中的设计文件。2024/11/98设计对象设计对象设计(Design):一种能完成一定逻辑功能的电路,可以是独立的,也可以是层次化的设计。(当前设计)单元(Cell):设计中包含的子设计的实例,也称为instance。
参考(Reference):所指向的设计原型,即单元是参考的实例。
端口(Port):设计的基本输入、输出和双向的输入输出。
引脚(Pin):单元的输入输出和双向的输入输出。
线网(Net):端口和引脚间及引脚和引脚间的连线。
时钟(Clock):作为时钟信号源的引脚或端口。
库(Library):直接与工艺相关的一组单元的集合,是生成门级网表的基本单元或设计中被实例化的单元。2024/11/99DesignObjects2024/11/910DesignObjects:SchematicPerspective2024/11/911SynthesisisConstraint-Driven2024/11/912My_DesignSynthesisisPath-BasedAclkQDesignCompilerusesStaticTimingAnalysis(STA)tocalculatethetimingofthepathsinthedesign.HowmanytimingpathsdoyouseeinMY_DESIGN??DQclkDQclk2024/11/913DesignCompilerInterfaces2)dc_shell(DCSH)3)DesignAnalyzer4)Designvisionin2000.11release1)dc_shell-t(DC-Tcl)2024/11/914CONTENTS
Synopsys工艺库层次划分与编码风格设计约束与脚本编写设计优化2024/11/915Synopsys工艺库Synopsys工艺库格式是事实上的库标准。对库格式和延时计算方法的基本理解是成功综合的关键。Synopsys工艺库可分为两大类:逻辑库:包含仅与综合过程有关的信息且通过DC用于设计的综合和优化。如pin到pin的时序、面积、引脚类型等。.lib.db物理库:包含单元的物理特征,如物理尺寸、层信息、单元方位等。2024/11/916Synopsys工艺库——逻辑库库类库级属性环境描述单元描述2024/11/917Synopsys工艺库——逻辑库库类:指定库名library(smic18_tt){/*startoflibrary*/……<librarydescription>……}/*endoflibrary*/2024/11/918Synopsys工艺库——逻辑库库级属性:作用于整个库,包含库的各种特征,如工艺类型、日期、版本和用于整个库的默认值。library(smic18_tt){delay_model:table_lookup;in_place_swap_mode:match_footprint;time_unit:"1ns";voltage_unit:"1V";current_unit:"1uA";pulling_resistance_unit:"1kohm";leakage_power_unit:"1nW";capacitive_load_unit(1,pf);nom_process:1;nom_voltage:1.8;nom_temperature:25;revision:2.1;date:"ThuJul2417:21:41CST2003";comment:"Copyright2003byVerisiliconMicroelectonics(Shanghai)Co.,Ltd.";……2024/11/919Synopsys工艺库——逻辑库环境描述:用于对PVT的偏差建模。工作条件(operatingconditions)线负载模型(WLM,wireloadmodel)时序范围模型2024/11/920Synopsys工艺库——逻辑库工作条件(operatingconditions):指定了工艺、温度、电压以及RC树模型,用于设计的综合和时序分析。例如:operating_conditions(typical){process:1;voltage:1.8;temperature:25;}operating_conditions(best){process:1;voltage:1.98;temperature:0;}operating_conditions(worst){process:1;voltage:1.62;temperature:125;}2024/11/921Synopsys工艺库——逻辑库线负载模型(WLM,wireloadmodel):包含DC在设计的布图前阶段估计互连线延迟的信息,用来估算电路中互连线的长度和扇出数对电阻、电容和面积的影响。wire_load("reference_area_1000000"){resistance:0.00038;capacitance:0.00025;slope:42.1286;fanout_length(1,27.619);fanout_length(2,56.6667);
……fanout_length(19,710.476);fanout_length(20,752.381);}2024/11/922Synopsys工艺库——逻辑库单元描述:描述了单元的功能、时序等属性信息2024/11/923设计规则检查(DRC,DesignRuleCheck)的属性,定义了库单元安全工作的条件,违反这些条件将对单元的正常工作产生严重影响,可导致最终的芯片失效。max_transition属性通常用于输入引脚,用来定义任何转换时间大于负载引脚max_transition的连线不能连接到该引脚;max_capacitance属性通常用于输出引脚,用来指定驱动单元的输出引脚不能和总电容大于等于该值的互连线相连。若发生DRC违例,则需替换相应单元。注意,capacitance属性和max_capacitance属性是不同的capacitance属性只用于进行延时计算max_capacitance属性则用于设计规则检查Synopsys工艺库——逻辑库2024/11/924Synopsys工艺库——逻辑库延时计算Synopsys支持的延迟模型有:CMOS通用的延迟模型CMOS分段的线性延迟模型非线性的查找表延迟模型DSM的设计,前两种延迟模型不常用,非线性延迟模型以输入的跃迁时间和输出的容性负载为参变量计算延迟的时间值,其结果以表格的形式列出供DC查找。2024/11/925lu_table_template(delay_template_6x6){ /*查找表延迟模型
variable_1:total_output_net_capacitance;variable_2:input_net_transition;index_1("1000.0,1001.0,1002.0,1003.0,1004.0,1005.0");index_2("1000.0,1001.0,1002.0,1003.0,1004.0,1005.0");}Synopsys工艺库——逻辑库2024/11/926Synopsys工艺库——逻辑库z=A+Bx+Cy+Dxy可以计算得出四个系数A、B、C、D,继而可以求出U1的延时值。0.227=A+B·0.098+C·0.03+D·0.098·0.030.234=A+B·0.098+C·0.06+D·0.098·0.060.323=A+B·0.587+C·0.03+D·0.587·0.030.329=A+B·0.587+C·0.06+D·0.587·0.06计算可得A=0.2006,B=0.1983,C=0.2399,D=0.0677,因此U1的单元延时为:0.2006+0.1983·0.32+0.2399·0.05+0.0677·0.32·0.05=0.2752024/11/927Synopsys工艺库——逻辑库设计人员了解工艺库,在于正确使用和理解逻辑库,而不在于与库设计者相关的细节上。RETURN2024/11/928设计约束与脚本编写工作环境工作条件(operatingconditions)线负载模型(WLM,wireloadmodel)系统接口驱动能力或扇出能力设置时间约束面积约束2024/11/929设计约束与脚本编写1启动dc_shell的dcsh模式。%dc_shelldc_shell>2启动dc_shell的Tcl模式%dc_shell-tdc_shell-t>在后续命令的执行过程中,命令成功完成会反馈回一个数字“1”;否则返回“0”。1、工具启动2024/11/930设计约束与脚本编写1analyze&elaborate2、读入与链接1)analyze命令用以分析HDL代码,在为设计建立通用库上的逻辑结构前检查设计的错误,并将中间结果存入指定的库中。语法格式为:analyze[-librarylibrary_name][-formatverilog|vhdl|sverilog]file_list
-library:指定中间结果存放的库,即Linux系统下的一个目录,默认为当前目录,也可以用define_design_lib命令指定。-format:HDL源文件的类型,即verilog或vhdl或sverilog。file_list:源代码文件名列表,文件名的指定可以通过TCL的链表命令{}、“”、[listfile_name]等三种方法之一完成。dc_shell-t>analyze-fverilog[listctrl_0723.v、datapath_0723.v、ram16s.v、ram16x1s.v、regfile.v、xram16.v、xr16.v、memctrl.v、vga.v、xsoc.v]2024/11/931设计约束与脚本编写analyze&elaborate2、读入与链接2)elaborate命令用于建立设计的与工艺无关、即GTECH库上的结构级描述,为后续的优化和映射做好准备,支持参数传递;对设计进行描述,需要对各个设计单独进行。语法格式为:elaboratedesign_name[-librarylibrary_name][-parametersparam_list]deisgn_name:指需要进行描述的设计。-library:用于保存设计的结构级描述。-parameters:指定给设计传递的参数,若省略则参数使用缺省值;参数用“”括起来。dc_shell-t>elaboratedesign_name–parameters“N=8,M=3”2024/11/932设计约束与脚本编写2read2、读入与链接read命令可以一步完成analyze&elaborate的工作,并且read命令还可以用来读取db、EDIF等格式的设计(analyze+elaborate仅能用于VHDL和verilog)。但是,read命令无法支持参数传递以及VHDL中的构造体选择等功能。语法格式为:read_file[-formatformat_name]file_list-format:指定设计读入的格式,可以ddc、db、verilog、vhdl、sverilog、edif、equation、pla、st等,对应不同格式命令可以替换为read_db、read_edif、read_verilog、read_vhdl、read_sverilog等。file_list:源代码文件名列表,文件名的指定可以通过TCL的链表命令{}、“”、[listfile_name]等三种方法之一完成。dc_shell-t>read_verilog{ctrl_0723.v、datapath_0723.v、ram16s.v、ram16x1s.v、regfile.v、xram16.v、xr16.v、memctrl.v、vga.v、xsoc.v}2024/11/933设计约束与脚本编写2、读入与链接设计读入之后、工作环境设置之前通常进行链接和实例唯一化,相应命令为:dc_shell-t>current_designxsoc ——设置顶层设计为当前设计dc_shell-t>link ——链接dc_shell-t>uniquify ——实例唯一化注意:若设计中包含PAD模块,应在uniquify之前对PAD模块设置dont_touch属性。dc_shell-t>set_dont_touch[get_designsPAD_INS]——PAD_INS为PAD模块名称2024/11/934设计约束与脚本编写3、设置工作环境在读入设计后,需要指定设计的工作环境,包括电路的工作条件,线负载模型以及I/O端口属性如输入驱动、输出负载等情况2024/11/935设计约束与脚本编写1工作条件在设置工作条件前可通过list_libs命令查看可用的工艺库。dc_shell-t>list_libs由于在逻辑综合阶段以最大化建立时间为目标,所以工作条件通常设为最坏情况。对应命令为:set_operating_conditionsdc_shell-t>set_operating_conditionsWORST3、设置工作环境2024/11/936设计约束与脚本编写2线负载模型线负载模型用于估算电路中互连线的长度和扇出对电阻、电容和面积等的影响,DC采用线负载模型中指定的数字计算互连线延时和电路的工作速度。线负载模型可以显式指定也可以由工具自动选择。显式指定通过命令set_wire_load_model完成,其语法格式为:set_wire_load_model–namemodel_name[-librarylib]-name:线负载模型的名称-library:包含所指定线负载模型的库名称,若当前读入的目标库唯一,则该选项可省略。3、设置工作环境假定选择的线负载模型的名称为:reference_area_20000,则对应的命令为:dc_shell-t>set_wire_load_model–namereference_area_20000若由工具自动选择线负载模型,则需设置变量auto_wire_load_selection为true,其命令为:dc_shell-t>setauto_wire_load_selectiontrue2024/11/937工作环境线负载模型的工作模式顶层模式(top)——所有层次子模块的wire_load和top-level相同;包含模式(enclosed)——子模块net的wire_load和enclosed它的最小模块相同;分段模式(segmented)——子模块之间net的wire_load和enclosed该net的模块相同。dc_shell-t>
set_wire_load_modeenclosed2024/11/938工作环境系统接口驱动或扇出能力的约束包括输入端口的驱动能力约束、输出端口的扇出负载能力约束、设计的连线或端口的电容负载、以及设计规则约束等。驱动强度:用电阻值表示,阻值越小驱动能力越大。set_driveset_driving_celldc_shell-t>
set_driving_cell-lib_celland2a0[get_portsIN1]2024/11/939工作环境dc_shell-t>set_load[expr[load_ofsmic18_tt/BUFHD1X/A]*6][all_outputs]扇出负载:定义了一根连线驱动的所有输入引脚的输出负载的总和。set_loadset_fanout_load2024/11/940工作环境set_operating_condition-max_librarysmic18_ss-maxworst-min_librarysmic18_ff-minbestset_load0.3[all_outputs]set_drive0[get_clocksclk]set_driving_cell-lib_cellBUFHD1X-librarysmic18_tt-pinZ$ain_portssetauto_wire_load_selectiontrueset_wire_load_modeenclosed2024/11/941时间约束之时钟网络的定义DC中的时钟真实时钟(realclock),其时钟源可以分为:理想时钟:在时钟树上不会引起延时,但可以通过设定skew、uncertainty等来得到期望的时序。传播时钟:会引起延时,不需设定另外的约束条件,DC会动态将延时加入进来。虚拟时钟(virtualclock),没有时钟源,使用虚拟时钟可以定义组合逻辑的相对延迟约束条件。2024/11/942时间约束时钟延迟有三种:sourcelatency、networklatency、uncertaintysourcelatency是从时钟源到时钟定义位置的延迟networklatency是从时钟定义位置到触发器时钟输入端的延迟。Uncertainty为时钟到不同触发器时的时间间隔。在timing报告中时钟的延迟为sourcelatency与networklatency、Uncertainty的和。2024/11/943时间约束Pre_layout
由于时钟树没有布好,相应要定义时钟的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论