第十一讲数字后端电路实现 布局布线与验证ppt课件.ppt

上传人:小飞机 文档编号:1417818 上传时间:2022-11-21 格式:PPT 页数:74 大小:2MB
返回 下载 相关 举报
第十一讲数字后端电路实现 布局布线与验证ppt课件.ppt_第1页
第1页 / 共74页
第十一讲数字后端电路实现 布局布线与验证ppt课件.ppt_第2页
第2页 / 共74页
第十一讲数字后端电路实现 布局布线与验证ppt课件.ppt_第3页
第3页 / 共74页
第十一讲数字后端电路实现 布局布线与验证ppt课件.ppt_第4页
第4页 / 共74页
第十一讲数字后端电路实现 布局布线与验证ppt课件.ppt_第5页
第5页 / 共74页
点击查看更多>>
资源描述

《第十一讲数字后端电路实现 布局布线与验证ppt课件.ppt》由会员分享,可在线阅读,更多相关《第十一讲数字后端电路实现 布局布线与验证ppt课件.ppt(74页珍藏版)》请在三一办公上搜索。

1、第十一讲 数字后端电路实现布局布线与验证,清华大学微电子所李福乐 黎征,目录,布局布线引言用一个数字分频器设计的例子来说明数字电路的基本布局布线过程设计介绍(数字分频器设计)逻辑综合(Synopsys DC)布局布线 (Cadence Soc Encounter)Cell-based DRC & LVS,Typical Cell-based flow,可综合代码,逻辑仿真,逻辑综合,Verilog,Verilog-xl(NC verilog),Design Compiler,仿真Ok?,TimingOk?,前端设计,系统定义,行为建模,仿真Ok?,C/HDL/MATLAB,Y,N,Y,N,Y,

2、N,Typical Cell-based flow,DRC和LVS,RC参数提取,Tape out,布局布线,dracula,Soc Encounter,TimingOk?,N,后端设计,Cell-based ASIC,?,怎样实现自动布局布线?对标准单元有什么要求?综合出来的网表对应于哪个部分?还缺少什么?,Cell-based ASIC,简单的布局布线流程,时序驱动的布局布线流程,设计介绍设计要求,数字分频器输入输出时钟周期满足:Tout = 2(N+1) Tin用于DPLL(数字锁相环)电路中纯数字电路实现,数字分频器,Clock IN,Clock OUT,分频系数N,设计介绍Veril

3、og实现,module divder (clkin, rst, divcnt, enable, clkout);input clkin, rst, enable;input 3:0 divcnt;output clkout;reg 3:0 cnt;reg 3:0 divcntreg;reg clkout;always (posedge clkin or posedge rst) begin if (rst = 1b1) begin cnt = 4b0; divcntreg = 4b0; clkout = 1b0; end else,begin if (divcntreg != divcnt)

4、end end end endmodule,设计介绍前仿真,编写testbench文件仿真波形如下图所示,随着分频系数的不同,输出时钟频率成倍变化,逻辑综合准备文件,准备库文件在.synopsys_dc.setup中加入综合库的位置查阅库中doc目录下的相关pdf文件,选择合适的输入输出和时钟pad准备打包文件top.v,给源程序加上输入输出的pad,以便综合工具优化驱动和负载,设计打包,?,核心设计在何时打包, 即加上I/O PAD,结构描述,逻辑综合top.v,include divider.vmodule top(clkin, rst, divcnt, enable, clkout);

5、input clkin, rst, enable; input 3:0 divcnt; output clkout; wire clkin_core, rst_core, enable_core, clkout_core; wire 3:0 divcn_core; pcxd00 pad_rst (.PAD(rst), .C(rst_core); pcxd00 pad_enb (.PAD(enable), .C(enable_core);(下页续),(接上页) pcxd00 pad_cn0 (.PAD(divcnt0), .C(divcn_core0); pcxd00 pad_cn1 (.PAD

6、(divcnt1), .C(divcn_core1); pcxd00 pad_cn2 (.PAD(divcnt2), .C(divcn_core2); pcxd00 pad_cn3 (.PAD(divcnt3), .C(divcn_core3); pcxc32 pad_cki (.CLK(clkin), .CP(clkin_core); pcxc52 pad_cko (.CLK(clkout_core), .CP(clkout); divider udiv (.clkin(clkin_core), .rst(rst_core), .divcnt(divcn_core), .enable(ena

7、ble_core), .clkout(clkout_core); endmodule,逻辑综合top.v,逻辑综合约束条件,用tcl方式启动dcdc_shell-t读取top.v,设置当前综合模块把时钟信号和Pad设置成为不被综合时钟树在下一步布局布线时处理Pad没有逻辑功能、仅提供输入输出负载设置连线负载设置时钟约束,逻辑综合综合并保存结果,用compile命令进行综合保存设计库文件保存综合后门级网表保存时序信息作为综合后仿真的时序参数作为布局布线的时钟约束,逻辑综合tcl脚本文件,read_verilog top.vcurrent_design topset_dont_touch get_

8、cells pad_*set_max_transition 0.5 current_designset_max_fanout 24 current_designcreate_clock -period 3 get_ports clkinset_clock_uncertainty 0.5 clkinset_dont_touch_network clkinset_wire_load_model -name 0 x150kcompile -map high -boundary_optimizationchange_names -rules asic_core_rules -hierarchychan

9、ge_names -rules asic_top_rules verbose(下页续),逻辑综合tcl脚本文件,(接上页)write -output top.db -hierwrite_script -full_path_lib_name -output top.constrwrite_constraints -format sdf-v2.1 -max_path_timing -max_paths 1000 -output top_constr.sdfset verilogout_single_bit truewrite top -format verilog -output top_post

10、.v -hierwrite_sdf -context verilog top.sdf以上命令在dc_shell-t的状态下执行,逻辑综合补充,编写脚本文件后,可以直接执行dc_shell-tsource 脚本文件名除了tcl方式,还可以采用其他方式使用DC对于综合后的网表和时序,应当进行仿真使用man、help、sold获取dc使用的帮助,布局布线流程综述,读取库文件和门级网表版图布局和电源布局放置标准单元时钟树综合添加填充电源布线和布线寄生参数提取和时序分析保存结果,布局布线准备文件,*.LEF: Library Exchange Format厂家工艺库lef文件,含有标准单元库的布局布线信

11、息;*.DEF: Design Exchange Format厂家给了对电源和CORNER PAD进行声明的DEF文件*.CTLF: Compiled Timing Library Format厂家工艺库tlf文件,含有布局布线时序信息,LEF内容,MACRO AN02D1 CLASS CORE ; SYMMETRY X Y ; FOREIGN AN02D1 0.00 0.00 ; ORIGIN 0.00 0.00 ; SIZE 11.50 BY 23.00 ; SITE standard ; PIN vdd! USE POWER ; SHAPE FEEDTHRU ; DIRECTION IN

12、OUT ; PORT LAYER metal1 ; RECT 0.00 18.80 11.50 21.60 ; END END vdd!PIN A DIRECTION INPUT ; PORT LAYER metal2 ; RECT 0.40 8.25 1.90 9.75 ; END END A OBS LAYER metal1 ; RECT 0.00 0.00 11.50 23.00 ; ENDEND AN02D1,一个标准单元的定义,布局布线启动,在工作目录命令行输入:encounter图形界面从菜单design 选择 菜单项design import在design import对话框中填

13、入相应文件,布局布线导入设计和库,布局布线文件说明,综合后网单文件:*.v和顶层模块名LEF工艺文件依次读入:csmc06tech_un.lef, csmc06core_un.lef, csmc06pad_un.lef作用:其中定义了标准单元的大小,几何形状,管脚位置,以及布局布线所用的线宽、layout层号、所用通孔大小。TLF时序信息文件csmc06core_un.tlf 和 csmc06pad_un.tlf作用:包括了lef文件中对应的各种延时信息。SDF时序约束文件DC综合后生成,告诉encounter时序约束信息,布局布线设计导入电源,布局布线设计导入完成,可以在Design Imp

14、ort对话框中选择Save存储导入的设置导入完成如图所示,信号PAD、标准单元都有了。但是缺少电源PAD,需要导入含有电源PAD信息的DEF文件,DEF文件内容,DESIGN NAME ;UNITS DISTANCE MICRONS 100 ;COMPONENTS 8 ;- pad_dirty_VDD pcxvd2 ;- pad_dirty_VSS pcxvs2 ;- pad_core_VDD pcxvd1 ;- pad_core_VSS pcxvs1 ;- pad_CORNER1 PADCORNER ;- pad_CORNER2 PADCORNER ;- pad_CORNER3 PADCOR

15、NER ;- pad_CORNER4 PADCORNER ;END COMPONENTS,顶层模块名,定义电源地PAD和CORENER PAD,?,为何这么定义,与版图怎么对应?PAD的选择基于什么考虑?对于大设计,怎么改进?,DEF文件内容,SPECIALNETS 5 ; - gnd! ( pad_* gnd! ) ( pad_*_VSS core ) + USE GROUND ;- vdd! ( pad_* vdd! ) ( pad_*_VDD core ) + USE POWER ;- gnd1! ( pad_* gnd1! ) + USE GROUND ;- vdd1! ( pad_*

16、 vdd1! ) + USE POWER ;- gnd2! ( pad_* gnd2! ) + USE GROUND ;END SPECIALNETSEND DESIGN,- gnd1! ( pad* gnd1! ) + USE GROUND ;- gnd2! ( pad* gnd2! ) + USE GROUND ;- gnd! ( pad* gnd! ) ( pad_*_VSS core ) + USE GROUND ;- vdd1! ( pad* vdd1! ) + USE POWER ;- vdd! ( pad* vdd! ) ( pad_*_VDD core ) + USE POWE

17、R ;,布局布线导入DEF文件,完成DEF文件的修改Design - Load - DEF 选择刚才修改好的DEF文件,并导入注意观察命令提示行是否导入有错。导入后的PAD重叠,需要导入IO文件,进行IO排序,布局布线I/O文件,I/O文件需要提供每个PAD的位置和方向。可以先使用Design- Save -I/O File 先保存一个I/O文件,然后在此基础上修改此文件,最后保存再导入回设计。I/O文件的格式:Version: 2Orient: orientationPad: padInstanceName side | corner cellName,布局布线I/O文件例,Version:

18、 2Orient: R180Pad: pad_CORNER1 NE PADCORNEROrient: R0Pad: pad_rst NOrient: R0Pad: pad_dirty_VSS N pcxvs2Orient: R0Pad: pad_enb NOrient: R270Pad: pad_CORNER4 NW PADCORNEROrient: R90Pad: pad_cn1 WOrient: R90Pad: pad_cn0 WOrient: R90Pad: pad_core_VSS W pcxvs1,Orient: R0Pad: pad_CORNER3 SW PADCORNEROrie

19、nt: R180Pad: pad_core_VDD S pcxvd1Orient: R180Pad: pad_cn2 SOrient: R180Pad: pad_cn3 SOrient: R90Pad: pad_CORNER2 SE PADCORNEROrient: R270Pad: pad_cko EOrient: R270Pad: pad_dirty_VDD E pcxvd2Orient: R270Pad: pad_cki E,布局布线I/O文件导入完成,Design-Load-I/O File 选择导入修改好后的I/O文件选择工具栏上的重绘按钮(Redraw)或者使用快捷键Ctrl+R重

20、绘版图,可以发现所有PAD已经添加并摆放得当。,布局布线布局初始化,选择Floorplan - Specify Floorplan在窗口中设置I/O到core的距离、标准单元行的利用率(core utilization)、布线通道(row space)大小、是否隔行翻转等说明:这是决定芯片面积大小,能否布局布线成功最关键的一步。OK确定,可以观察到版图的进一步变化,布局布线布电源环,选择Power- Power Planning - Add rings布电源环只布core电源,电源环尽量宽一些。作用:在数字标准单元区域的周围放置power ring,用于提供数字部分的电源和地,布局布线时序约束

21、下的布局,Place - Standard Cells and Blocksencounter将所有系统包含的标准单元cell都放到芯片上,通常尽可能保证互相连线多而且连线复杂的cell放置在一起。,布局布线放置单元后,选中观察物理视图,库中的标准单元被放置在了相应的位置上,注:在Place的时候选择Advance标签的Congestion effort可以使得布局更加优化,布局布线准备时钟树文件,时钟树文件ctstch中包含了设计对于时钟的要求。encounter按照这个文件设定的时钟特性,自动产生时钟树的布局布线,插入buffer提高时钟树的驱动能力,改善时钟信号延时特性。时钟树的起始点需

22、要设置成为时钟输入pad的时钟pin端时钟buffer是库中专门的buffer,需要在文件中指定。(上华库的专用时钟buffer不符合encounter要求,用普通buffer代替),时钟树约束的含义,布局布线时钟树文件样例,# Sample Gated CTS CommandAutoCTSRootPin pad_cki/CPMaxDelay 1nsMinDelay 0nsSinkMaxTran 300psBufMaxTran 500psMaxSkew 500psNoGating risingMaxDepth 10DetailReport NORouteClkNet YESPostOpt YE

23、SBuffer NI01D1 NI01D2 NI01D3 NI01D4End,布局布线时钟树生成,Clock-Specify Clock Tree 选择相应文件Clock- Synthesize Clock Tree 开始时钟树生成时钟树连接了所有时序元件的时钟端,布局布线填充单元,命令:菜单Place filler Add 说明:将标准单元行中,没有被标准单元占据的空白位置,填充上空白单元在弹出的表单中,模型(Model)和前缀(Prefix)均设定为FEEDTHRU,布局布线布电源线,Route - Special Route 布电源线,布局布线全局布线,Route - NanoRoute

24、 - Route一定要选中Timing Driven说明:全局预布线预先对一些长的连线进行布线,以保证最后的布通率;最终布线进行芯片内所有连线的布线,这是全部布局布线中最消耗时间和运算量的一步,特别是当开始的布局初始化时,如果留的布线通道过小,或者要求的芯片利用率太高,都可能导致布线失败可以通过监视信息输出窗口,窗口中不断报告布线进度。,布局布线布线后的结果,布局布线检查连接性,命令:菜单Verify Verify Connectivity说明:检查最终的布局布线结果,是否和最初输入的verilog网表一致。看监视窗口的输出信息和输出文件能够发现是否有布线错误。没有连接上的地方core电源和地

25、的pad in与电源环 (手动添加)core电源和地与pad ring (库不全造成),布局布线手动添加gnd!,检查pad_core_vss的core pin和电源环gnd!的net属性和所在的金融层选择工具栏上的Add wire或者快捷键A按e选择连线的金属层、宽度和net在版图中连线。同样的方法连接 vdd!,布局布线参数提取和分析,提取RC寄生参数Timing - Specify Analyze Condition - Specify RC Extraction Mode选中Detail和Special Net 然后确定Timing - Extract RC选中Save Cap to

26、和 Save SPEF to 完成后,你可以查看相应的输出文件,注:SPEF Standard Parasitic Exchange File,布局布线参数提取和分析,延时信息Timing - Specify Analyze Condition - Specify Delay Calculation Mode选中FE-DC模式Timing - Calculate Delay不要选中Ideal Clock完成后获得了布局布线后延时信息,布局布线保存成果,Design-Save-Netlist保存网单Design-Save-GDS保存GDS文件Mapfile栏填写库中gds2_un.map还要填写

27、顶层模块和输出到cadence的库名等Design -Save Design保存整个设计可以在Cadence的icfb中查看版图Import- Stream 导入相应文件后打开cellview由于对于单元,只能看到外面的框,而不能看到其内部的版图,这是因为厂商没有提供底层版图的缘故;这个文件已经可以提交给厂商,由厂商进行merge,Cell-based DRC & LVS,这部分的内容由于设计文件不全,故只介绍cell-based DRC和LVS的概念,而没有继续对前面的例子所得到的布局布线结果进行具体的DRC和LVS的过程!,Cell-based DRC,对于cell-based设计来说,D

28、RC主要关心布线中的设计规则违反问题,如金属与金属、金属与过孔等规则对于我们前面导出的GDS2版图,可以交给流片组织结构或厂商,由他们去merge底层单元的版图并做DRC检查,Black-box LVS,一种分层LVSBlack-box LVS将单元库中的每个单元视为一个black boxBlack-box LVS检查库单元之间的连接关系,而不检查单元内部设计者无须了解单元的具体版图设计显著加快LVS的速度,管级LVS与单元级LVS的比较,Dracula black-box LVS flow,Netlisting flow,Using Hierarchical LOGLVS,:CASE ;tu

29、rn case sensitive on :CEL cell.tab ;compile H-CELL table file :CIR filename ; compile spice/cdl netlist file:ver verilog.v ;read verilog file:link ;expand the logic network for verilog:CON cellname ;convert from the top cell name:SUM ;print ELEMENT summary:X ; EXIT,Black-box LVS准备文件,Layout GDS2 file

30、,当然也可以直接对verilog文件进行编译,准备CDL netlist,通过转换工具,如calibre的v2lvs或者,将verilog结构描述转换为schematic,然后再 Cdl out在Cadence的集中命令控制窗口 icfb,菜单File import Verilog 填写弹出的表单,设定输入的verilog文件,要生成的库,参考库等等在icfb窗口,菜单File Export Cdl 从生成的schematic view导出CDL网表。,导入verilog文件,CDL out,例:门级CDL网表,声明全局信号与全局PIN,调用基本库单元,调用子电路,导入verilog文件,?,

31、File import Verilog ,何为参考库?,导入verilog文件,当module中含有行为描述语句时,不能综合出schematic view,一般为functional view,注意要理解所生成的schematic view中的单元的symbol和schematic view是怎么来的。,导入verilog文件,module AO07D2 (YN, A1, A2, A3, B1, B2);input A1, A2, A3, B1, B2;output YN;endmodulemodule AO08D2 (YN, A1, A2, A3, B);input A1, A2, A3,

32、B;output YN;endmodule,参考库:以上华工艺为例,我们可修改其verilog库文件,令其变成纯端口描述形式,然后用上面导入verilog文件的方法先行得到参考库,注意此时导入时的reference libraries按默认情况即可,这样参考库的内容为各个单元的schematic和symbol view.,单元verilog描述,schematic view,Clock,fsm,在处理时钟树时插入的门,满足当时设定的最小延时约束,导出CDL,*.GLOBAL vdd!+ gnd!*.PIN vdd!*+ gnd!* *Library Name: vinreflib* Cell

33、Name: pcxo51* View Name: schematic*.SUBCKT pcxo51 I PAD*.PININFO I:I PAD:O.ENDS,来自参考库,所有用到的单元的子电路定义描述,故对于这个例子,无须的Pseudo spice文件!,导出CDL,(续上).SUBCKT top_fsm pad_A pad_Clock pad_K1 pad_K2 pad_Reset*.PININFO pad_A:I pad_Clock:I pad_Reset:I pad_K1:O pad_K2:OXpadK2 core_K2 pad_K2 / pcxo51XpadK1 core_K1 pa

34、d_K1 / pcxo51XpadClock_L6_I1 padClock_L5_I1_6 padClock_L6_I1_5 / IN01D1XpadClock_L7_I1 padClock_L6_I1_5 padClock_L7_I1_4 / IN01D1XpadClock_L10_I1 padClock_L9_I1_2 padClock_L10_I1_1 / IN01D1Xfsm1 core_A padClock_L10_I1_1 core_K1 core_K2 core_Reset / fsm.ENDS,调用子电路,Black-box LVS准备文件,Hcell(Hierarchical

35、 cell)文件Hcell文件在HLVS中用来声明哪些单元将作为hcell在HLVS中,hcell内部的电路不做检查,dracula只做hcell之间或hcell与其他元件之间的互连关系Hcell文件的例子,ad01d1 ad01d1ad01d2 ad01d2,Black-box LVS准备文件,Pseudo spice文件,*.GLOBAL vdd gnd*.PIN vdd gnd.SUBCKT ad01d1 S CO AB CI.ENDS.SUBCKT ad01d2 S CO A B CI.ENDS ad01d2.SUBCKT an02d1 Z A1 A2,Global pin: vdd!

36、 & gnd!,Black-box LVS准备文件,Black-box文件,;Purpose: BLACK-BOX file for hierarchical black box LVSVdd x=10.5 y=11.7 ATTACH=METAL1 ad01d0 w=21.4 h=1.8Gnd x=18.825 y=0.9 ATTACH=METAL1 ad01d0 w=4.75 h=1.8S x=17.5 y=4.2 ATTACH=METAL2 ad01d0 w=0.5 h=0.5CO x=20.3 y=8.4 ATTACH=METAL2 ad01d0 w=0.5 h=0.5CO x=20.3

37、 y=7 ATTACH=METAL2 ad01d0 w=0.5 h=0.5CO x=20.3 y=2.8 ATTACH=METAL2 ad01d0 w=0.5 h=0.5CI x=10.5 y=5.6 ATTACH=METAL2 ad01d0 w=0.5 h=0.5CI x=11.9 y=5.6 ATTACH=METAL2 ad01d0 w=0.5 h=0.5B x=16.1 y=7 ATTACH=METAL2 ad01d0 w=0.5 h=0.5A x=2.1 y=5.6 ATTACH=METAL2 ad01d0 w=0.5 h=0.5A x=3.5 y=5.6 ATTACH=METAL2

38、ad01d0 w=0.5 h=0.5,Black-box LVS准备文件,HLVS Command file,*descriptionsystem= gds2primary = top_fsmindisk= fsm_routed.gds2HCELL-FILE = csmc.hcellBLACKBOX-FILE = csmc.blackboxSCHEMATIC= LVSLOGIC.DAT*operationHEDTEXT = csmc.blackbox,填加指定hcell和blackbox文件的命令,其他与LVS command file一样,关于上华cell-based后端流程,上华的MPW流片组织结构ICC对于cell-based后端流程如右图ICC没有提供单元底层版图,以及hcell、blackbox等文件对于大作业的数字部分,要求做到布局布线即可,用户布局布线,导出GDS2verilog,单元merge,DRC,LVS等,正确?,Tape out,N,ICC,USER,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号