版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第十一讲数字后端电路实现
——布局布线与验证清华大学微电子所李福乐黎征第十一讲数字后端电路实现
——布局布线与验证清华大学微电子1目录布局布线引言用一个数字分频器设计的例子来说明数字电路的基本布局布线过程设计介绍(数字分频器设计)逻辑综合(SynopsysDC)布局布线(CadenceSocEncounter)Cell-basedDRC&LVS目录布局布线引言2TypicalCell-basedflow可综合代码逻辑仿真逻辑综合VerilogVerilog-xl(NCverilog)DesignCompiler仿真Ok?TimingOk?前端设计系统定义行为建模仿真Ok?C/HDL/MATLABYNYNYNTypicalCell-basedflow可综合逻辑仿真3TypicalCell-basedflowDRC和LVSRC参数提取Tapeout布局布线draculaSocEncounterTimingOk?N后端设计TypicalCell-basedflowDRC和LVS4Cell-basedASIC?怎样实现自动布局布线?对标准单元有什么要求?综合出来的网表对应于哪个部分?还缺少什么?Cell-basedASIC?怎样实现自动布局布线?对标准5Cell-basedASICCell-basedASIC6简单的布局布线流程简单的布局布线流程7时序驱动的布局布线流程时序驱动的布局布线流程8设计介绍——设计要求数字分频器输入输出时钟周期满足:Tout=2(N+1)Tin用于DPLL(数字锁相环)电路中纯数字电路实现数字分频器ClockINClockOUT分频系数N设计介绍——设计要求数字分频器数字分频器ClockINCl9设计介绍——Verilog实现moduledivder(clkin,rst,divcnt,enable,clkout);inputclkin,rst,enable;input[3:0]divcnt;outputclkout;reg[3:0]cnt;reg[3:0]divcntreg;regclkout;always@(posedgeclkinorposedgerst) begin if(rst==1'b1) begin cnt<=4'b0; divcntreg<=4'b0; clkout<=1'b0; end else begin if((divcntreg!=divcnt)&&(enable==1'b1)) begin cnt<=4'b0; divcntreg<=divcnt; clkout<=1'b0; end else begin if(cnt==divcntreg) begin clkout<=~clkout; cnt<=4'b0; end else cnt<=cnt+4'b1; end end endendmodule设计介绍——Verilog实现moduledivder(10设计介绍——前仿真编写testbench文件仿真波形如下图所示,随着分频系数的不同,输出时钟频率成倍变化设计介绍——前仿真编写testbench文件11逻辑综合——准备文件准备库文件在.synopsys_dc.setup中加入综合库的位置查阅库中doc目录下的相关pdf文件,选择合适的输入输出和时钟pad准备打包文件top.v,给源程序加上输入输出的pad,以便综合工具优化驱动和负载逻辑综合——准备文件准备库文件12设计打包CoreChipPad_inPad_outPad_vddPad_vss?核心设计在何时打包,即加上I/OPAD结构描述设计打包CoreChipPad_inPad_outPad_v13逻辑综合——top.v`include"divider.v"moduletop(clkin,rst,divcnt,enable,clkout);inputclkin,rst,enable;input[3:0]divcnt;outputclkout;wireclkin_core,rst_core,enable_core,clkout_core;wire[3:0]divcn_core;pcxd00pad_rst(.PAD(rst),.C(rst_core));pcxd00pad_enb(.PAD(enable),.C(enable_core));(下页续)逻辑综合——top.v`include"divider.v14(接上页)pcxd00pad_cn0(.PAD(divcnt[0]),.C(divcn_core[0]));pcxd00pad_cn1(.PAD(divcnt[1]),.C(divcn_core[1]));pcxd00pad_cn2(.PAD(divcnt[2]),.C(divcn_core[2]));pcxd00pad_cn3(.PAD(divcnt[3]),.C(divcn_core[3]));pcxc32pad_cki(.CLK(clkin),.CP(clkin_core));pcxc52pad_cko(.CLK(clkout_core),.CP(clkout));dividerudiv(.clkin(clkin_core),.rst(rst_core),.divcnt(divcn_core),.enable(enable_core),.clkout(clkout_core));endmodule逻辑综合——top.v(接上页)逻辑综合——top.v15逻辑综合——约束条件用tcl方式启动dc>dc_shell-t读取top.v,设置当前综合模块把时钟信号和Pad设置成为不被综合时钟树在下一步布局布线时处理Pad没有逻辑功能、仅提供输入输出负载设置连线负载设置时钟约束逻辑综合——约束条件用tcl方式启动dc16逻辑综合——综合并保存结果用compile命令进行综合保存设计库文件保存综合后门级网表保存时序信息作为综合后仿真的时序参数作为布局布线的时钟约束逻辑综合——综合并保存结果用compile命令进行综合17逻辑综合——tcl脚本文件read_verilogtop.vcurrent_designtopset_dont_touch[get_cellspad_*]set_max_transition0.5[current_design]set_max_fanout24[current_design]create_clock-period3[get_portsclkin]set_clock_uncertainty0.5clkinset_dont_touch_networkclkinset_wire_load_model-name0x150kcompile-maphigh-boundary_optimizationchange_names-rulesasic_core_rules-hierarchychange_names-rulesasic_top_rules–verbose(下页续)逻辑综合——tcl脚本文件read_verilogtop.18逻辑综合——tcl脚本文件(接上页)write-outputtop.db-hierwrite_script-full_path_lib_name-outputtop.constrwrite_constraints-formatsdf-v2.1-max_path_timing-max_paths1000-outputtop_constr.sdfsetverilogout_single_bit"true"writetop-formatverilog-outputtop_post.v-hierwrite_sdf-contextverilogtop.sdf以上命令在dc_shell-t>的状态下执行逻辑综合——tcl脚本文件(接上页)19逻辑综合——补充编写脚本文件后,可以直接执行dc_shell-t>source脚本文件名除了tcl方式,还可以采用其他方式使用DC对于综合后的网表和时序,应当进行仿真使用man、help、sold获取dc使用的帮助逻辑综合——补充编写脚本文件后,可以直接执行20布局布线——流程综述读取库文件和门级网表版图布局和电源布局放置标准单元时钟树综合添加填充电源布线和布线寄生参数提取和时序分析保存结果布局布线——流程综述读取库文件和门级网表21布局布线——准备文件*.LEF:LibraryExchangeFormat厂家工艺库lef文件,含有标准单元库的布局布线信息;*.DEF:DesignExchangeFormat厂家给了对电源和CORNERPAD进行声明的DEF文件*.CTLF:CompiledTimingLibraryFormat厂家工艺库tlf文件,含有布局布线时序信息布局布线——准备文件*.LEF:LibraryExcha22LEF内容MACROAN02D1CLASSCORE;SYMMETRYXY;FOREIGNAN02D10.000.00;ORIGIN0.000.00;SIZE11.50BY23.00;SITEstandard;PINvdd!USEPOWER;SHAPEFEEDTHRU;DIRECTIONINOUT;PORTLAYERmetal1;RECT0.0018.8011.5021.60;ENDENDvdd!…PINADIRECTIONINPUT;PORTLAYERmetal2;RECT0.408.251.909.75;ENDENDAOBSLAYERmetal1;RECT0.000.0011.5023.00;ENDENDAN02D1一个标准单元的定义LEF内容一个标准单元的定义23布局布线——启动在工作目录命令行输入:encounter图形界面从菜单design选择菜单项designimport在designimport对话框中填入相应文件布局布线——启动在工作目录命令行输入:24布局布线——导入设计和库布局布线——导入设计和库25布局布线——文件说明综合后网单文件:*.v和顶层模块名LEF工艺文件依次读入:csmc06tech_un.lef,csmc06core_un.lef,csmc06pad_un.lef作用:其中定义了标准单元的大小,几何形状,管脚位置,以及布局布线所用的线宽、layout层号、所用通孔大小。TLF时序信息文件csmc06core_un.tlf和csmc06pad_un.tlf作用:包括了lef文件中对应的各种延时信息。SDF时序约束文件DC综合后生成,告诉encounter时序约束信息布局布线——文件说明综合后网单文件:*.v和顶层模块名26布局布线——设计导入电源布局布线——设计导入电源27布局布线——设计导入完成可以在DesignImport对话框中选择Save存储导入的设置导入完成如图所示,信号PAD、标准单元都有了。但是缺少电源PAD,需要导入含有电源PAD信息的DEF文件布局布线——设计导入完成可以在DesignImport对话28DEF文件内容DESIGNNAME;UNITSDISTANCEMICRONS100;COMPONENTS8;-pad_dirty_VDDpcxvd2;-pad_dirty_VSSpcxvs2;-pad_core_VDDpcxvd1;-pad_core_VSSpcxvs1;-pad_CORNER1PADCORNER;-pad_CORNER2PADCORNER;-pad_CORNER3PADCORNER;-pad_CORNER4PADCORNER;ENDCOMPONENTS…顶层模块名定义电源地PAD和CORENERPAD?为何这么定义,与版图怎么对应?PAD的选择基于什么考虑?对于大设计,怎么改进?DEF文件内容DESIGNNAME;顶层模块名定义电源地29DEF文件内容…SPECIALNETS5;-gnd!(pad_*gnd!)(pad_*_VSScore)+USEGROUND;-vdd!(pad_*vdd!)(pad_*_VDDcore)+USEPOWER;-gnd1!(pad_*gnd1!)+USEGROUND;-vdd1!(pad_*vdd1!)+USEPOWER;-gnd2!(pad_*gnd2!)+USEGROUND;ENDSPECIALNETSENDDESIGN-gnd1!(pad*gnd1!)+USEGROUND;-gnd2!(pad*gnd2!)+USEGROUND;-gnd!(pad*gnd!)(pad_*_VSScore)+USEGROUND;-vdd1!(pad*vdd1!)+USEPOWER;-vdd!(pad*vdd!)(pad_*_VDDcore)+USEPOWER;DEF文件内容…-gnd1!(pad*gnd1!)30布局布线——导入DEF文件完成DEF文件的修改Design->Load->DEF…选择刚才修改好的DEF文件,并导入注意观察命令提示行是否导入有错。导入后的PAD重叠,需要导入IO文件,进行IO排序布局布线——导入DEF文件完成DEF文件的修改31布局布线——I/O文件I/O文件需要提供每个PAD的位置和方向。可以先使用Design->Save->I/OFile先保存一个I/O文件,然后在此基础上修改此文件,最后保存再导入回设计。I/O文件的格式:Version:2Orient:orientationPad:padInstanceNameside|corner[cellName]布局布线——I/O文件I/O文件需要提供每个PAD的位置和方32布局布线——I/O文件例Version:2Orient:R180Pad:pad_CORNER1NEPADCORNEROrient:R0Pad:pad_rstNOrient:R0Pad:pad_dirty_VSSNpcxvs2Orient:R0Pad:pad_enbNOrient:R270Pad:pad_CORNER4NWPADCORNEROrient:R90Pad:pad_cn1WOrient:R90Pad:pad_cn0WOrient:R90Pad:pad_core_VSSWpcxvs1Orient:R0Pad:pad_CORNER3SWPADCORNEROrient:R180Pad:pad_core_VDDSpcxvd1Orient:R180Pad:pad_cn2SOrient:R180Pad:pad_cn3SOrient:R90Pad:pad_CORNER2SEPADCORNEROrient:R270Pad:pad_ckoEOrient:R270Pad:pad_dirty_VDDEpcxvd2Orient:R270Pad:pad_ckiE布局布线——I/O文件例Version:233布局布线——I/O文件导入完成Design->Load->I/OFile选择导入修改好后的I/O文件选择工具栏上的重绘按钮(Redraw)或者使用快捷键Ctrl+R重绘版图,可以发现所有PAD已经添加并摆放得当。布局布线——I/O文件导入完成Design->Load->I34布局布线——布局初始化选择Floorplan->SpecifyFloorplan在窗口中设置I/O到core的距离、标准单元行的利用率(coreutilization)、布线通道(rowspace)大小、是否隔行翻转等说明:这是决定芯片面积大小,能否布局布线成功最关键的一步。OK确定,可以观察到版图的进一步变化布局布线——布局初始化选择Floorplan->Spec35布局布线——布电源环选择Power->PowerPlanning->Addrings布电源环只布core电源,电源环尽量宽一些。作用:在数字标准单元区域的周围放置powerring,用于提供数字部分的电源和地布局布线——布电源环选择Power->PowerPlan36布局布线——时序约束下的布局Place->StandardCellsandBlocksencounter将所有系统包含的标准单元cell都放到芯片上,通常尽可能保证互相连线多而且连线复杂的cell放置在一起。布局布线——时序约束下的布局Place->Standar37布局布线——放置单元后选中观察物理视图库中的标准单元被放置在了相应的位置上注:在Place的时候选择Advance标签的Congestioneffort可以使得布局更加优化布局布线——放置单元后选中观察物理视图库中的标准单元被放置在38布局布线——准备时钟树文件时钟树文件ctstch中包含了设计对于时钟的要求。encounter按照这个文件设定的时钟特性,自动产生时钟树的布局布线,插入buffer提高时钟树的驱动能力,改善时钟信号延时特性。时钟树的起始点需要设置成为时钟输入pad的时钟pin端时钟buffer是库中专门的buffer,需要在文件中指定。(上华库的专用时钟buffer不符合encounter要求,用普通buffer代替)布局布线——准备时钟树文件时钟树文件ctstch中包含了设计39时钟树约束的含义时钟树约束的含义40布局布线——时钟树文件样例#SampleGatedCTSCommandAutoCTSRootPinpad_cki/CPMaxDelay1nsMinDelay0nsSinkMaxTran300psBufMaxTran500psMaxSkew500psNoGatingrisingMaxDepth10DetailReportNORouteClkNetYESPostOptYESBufferNI01D1NI01D2NI01D3NI01D4End布局布线——时钟树文件样例#SampleGatedCT41布局布线——时钟树生成Clock->SpecifyClockTree选择相应文件Clock->SynthesizeClockTree开始时钟树生成时钟树连接了所有时序元件的时钟端布局布线——时钟树生成Clock->SpecifyCloc42布局布线——填充单元命令:菜单PlacefillerAdd…说明:将标准单元行中,没有被标准单元占据的空白位置,填充上空白单元在弹出的表单中,模型(Model)和前缀(Prefix)均设定为FEEDTHRU布局布线——填充单元命令:菜单Placefiller43布局布线——布电源线Route->SpecialRoute布电源线布局布线——布电源线Route->SpecialRou44布局布线——全局布线Route->NanoRoute->Route…一定要选中TimingDriven说明:全局预布线预先对一些长的连线进行布线,以保证最后的布通率;最终布线进行芯片内所有连线的布线,这是全部布局布线中最消耗时间和运算量的一步,特别是当开始的布局初始化时,如果留的布线通道过小,或者要求的芯片利用率太高,都可能导致布线失败可以通过监视信息输出窗口,窗口中不断报告布线进度。布局布线——全局布线Route->NanoRoute-45布局布线——布线后的结果布局布线——布线后的结果46布局布线——检查连接性命令:菜单VerifyVerifyConnectivity…说明:检查最终的布局布线结果,是否和最初输入的verilog网表一致。看监视窗口的输出信息和输出文件能够发现是否有布线错误。没有连接上的地方core电源和地的padin与电源环(手动添加)core电源和地与padring(库不全造成)布局布线——检查连接性命令:菜单VerifyVerify47布局布线——手动添加gnd!检查pad_core_vss的corepin和电源环gnd!的net属性和所在的金融层选择工具栏上的Addwire或者快捷键A按e选择连线的金属层、宽度和net在版图中连线。同样的方法连接vdd!布局布线——手动添加gnd!检查pad_core_vss的c48布局布线——参数提取和分析提取RC寄生参数Timing->SpecifyAnalyzeCondition->SpecifyRCExtractionMode选中Detail和SpecialNet然后确定Timing->ExtractRC选中SaveCapto和SaveSPEFto完成后,你可以查看相应的输出文件注:SPEFStandardParasiticExchangeFile布局布线——参数提取和分析提取RC寄生参数注:SPEFSt49布局布线——参数提取和分析延时信息Timing->SpecifyAnalyzeCondition->SpecifyDelayCalculationMode选中FE-DC模式Timing->CalculateDelay不要选中IdealClock完成后获得了布局布线后延时信息布局布线——参数提取和分析延时信息50布局布线——保存成果Design->Save->Netlist保存网单Design->Save->GDS保存GDS文件Mapfile栏填写库中gds2_un.map还要填写顶层模块和输出到cadence的库名等Design->SaveDesign保存整个设计可以在Cadence的icfb中查看版图Import->Stream导入相应文件后打开cellview由于对于单元,只能看到外面的框,而不能看到其内部的版图,这是因为厂商没有提供底层版图的缘故;这个文件已经可以提交给厂商,由厂商进行merge布局布线——保存成果Design->Save->Netlis51Cell-basedDRC&LVS这部分的内容由于设计文件不全,故只介绍cell-basedDRC和LVS的概念,而没有继续对前面的例子所得到的布局布线结果进行具体的DRC和LVS的过程!Cell-basedDRC&LVS这部分的内容由于设计52Cell-basedDRC对于cell-based设计来说,DRC主要关心布线中的设计规则违反问题,如金属与金属、金属与过孔等规则对于我们前面导出的GDS2版图,可以交给流片组织结构或厂商,由他们去merge底层单元的版图并做DRC检查Cell-basedDRC对于cell-based设计来说53Black-boxLVS一种分层LVSBlack-boxLVS将单元库中的每个单元视为一个blackboxBlack-boxLVS检查库单元之间的连接关系,而不检查单元内部设计者无须了解单元的具体版图设计显著加快LVS的速度Black-boxLVS一种分层LVS54管级LVS与单元级LVS的比较管级LVS与单元级LVS的比较55Draculablack-boxLVSflowDraculablack-boxLVSflow56NetlistingflowNetlistingflow57UsingHierarchicalLOGLVS:CASE;turncasesensitiveon:CELcell.tab;compileH-CELLtablefile:CIRfilename;compilespice/cdlnetlistfile:ververilog.v;readverilogfile:link;expandthelogicnetworkforverilog:CONcellname;convertfromthetopcellname:SUM;printELEMENTsummary:X;EXITUsingHierarchicalLOGLVS:CASE58Black-boxLVS准备文件LayoutGDS2file当然也可以直接对verilog文件进行编译Black-boxLVS准备文件LayoutGDS2f59准备CDLnetlist通过转换工具,如calibre的v2lvs或者,将verilog结构描述转换为schematic,然后再Cdlout…在Cadence的集中命令控制窗口icfb,菜单FileimportVerilog…填写弹出的表单,设定输入的verilog文件,要生成的库,参考库等等在icfb窗口,菜单FileExportCdl…从生成的schematicview导出CDL网表。准备CDLnetlist通过转换工具,如calibre的v60导入verilog文件CDLout…导入verilog文件CDLout…61例:门级CDL网表声明全局信号与全局PIN调用基本库单元调用子电路例:门级CDL网表声明全局信号与全局PIN调用基本库单元调用62导入verilog文件?FileimportVerilog…何为参考库?导入verilog文件?FileimportVe63导入verilog文件当module中含有行为描述语句时,不能综合出schematicview,一般为functionalview注意要理解所生成的schematicview中的单元的symbol和schematicview是怎么来的。导入verilog文件当module中含有行为描述语句时,不64导入verilog文件moduleAO07D2(YN,A1,A2,A3,B1,B2);inputA1,A2,A3,B1,B2;outputYN;endmodulemoduleAO08D2(YN,A1,A2,A3,B);inputA1,A2,A3,B;outputYN;endmodule…参考库:以上华工艺为例,我们可修改其verilog库文件,令其变成纯端口描述形式,然后用上面导入verilog文件的方法先行得到参考库,注意此时导入时的referencelibraries按默认情况即可,这样参考库的内容为各个单元的schematic和symbolview.单元verilog描述导入verilog文件moduleAO07D2(YN,65schematicviewClockfsm在处理时钟树时插入的门,满足当时设定的最小延时约束schematicviewClockfsm在处理时钟树时插66导出CDL…*.GLOBALvdd!+gnd!*.PINvdd!*+gnd!**********************LibraryName:vinreflib*CellName:pcxo51*ViewName:schematic*********************.SUBCKTpcxo51IPAD*.PININFOI:IPAD:O.ENDS…来自参考库所有用到的单元的子电路定义描述,故对于这个例子,无须的Pseudospice文件!导出CDL…来自参考库所有用到的单元的子电路定义描述,故对于67导出CDL…(续上).SUBCKTtop_fsmpad_Apad_Clockpad_K1pad_K2pad_Reset*.PININFOpad_A:Ipad_Clock:Ipad_Reset:Ipad_K1:Opad_K2:OXpadK2core_K2pad_K2/pcxo51XpadK1core_K1pad_K1/pcxo51XpadClock_L6_I1padClock_L5_I1__6padClock_L6_I1__5/IN01D1XpadClock_L7_I1padClock_L6_I1__5padClock_L7_I1__4/IN01D1XpadClock_L10_I1padClock_L9_I1__2padClock_L10_I1__1/IN01D1…Xfsm1core_ApadClock_L10_I1__1core_K1core_K2core_Reset/fsm….ENDS调用子电路导出CDL…(续上)调用子电路68Black-boxLVS准备文件Hcell(Hierarchicalcell)文件Hcell文件在HLVS中用来声明哪些单元将作为hcell在HLVS中,hcell内部的电路不做检查,dracula只做hcell之间或hcell与其他元件之间的互连关系Hcell文件的例子ad01d1ad01d1ad01d2ad01d2…Black-boxLVS准备文件Hcell(Hierar
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 急诊科疾病护理的健康教育内容
- 企业员工绩效评价管理实施制度
- 病房环境清洁消杀作业指导书
- 物业培训体系搭建执行方案
- 风力发电项目环境影响报告书(模板范文)
- 2027届甘肃省定西市渭源县高二上物理期末调研模拟试题含解析
- 通信基站配套土建施工组织设计
- 生产安全事故善后处置方案
- 公路项目运营服务质量考核制度
- 赏迷你三明治拼盘 教案-2025-2026学年高一上学期劳动技术
- 幼儿园中班数学《家里的数字》课件
- 《协商决定班级事务》课件
- 水厂卫生知识培训资料课件
- 牙科显微镜讲解
- 外科腔镜器械介绍
- 锅炉制图培训课件
- 《高速铁路概论(第2版)》高职铁路专业全套教学课件
- DB31/T 1238-2020分布式光伏发电系统运行维护管理规范
- 200句记忆高中英语3500词(语法填空练习)
- 差旅费管理办法宣贯
- 2024-2025形势与政策第五讲更好端牢能源的饭碗
评论
0/150
提交评论