第十一讲 数字后端电路实现-布局布线及验证_第1页
第十一讲 数字后端电路实现-布局布线及验证_第2页
第十一讲 数字后端电路实现-布局布线及验证_第3页
第十一讲 数字后端电路实现-布局布线及验证_第4页
第十一讲 数字后端电路实现-布局布线及验证_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

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

文档简介

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

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

3、ivcnt, 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 elsebegin if (divcntreg != divcnt) & (enable = 1b1) begin cnt = 4

4、b0; divcntreg = divcnt; clkout = 1b0; end else begin if (cnt = divcntreg) begin clkout = clkout; cnt = 4b0; end else cnt dc_shell-t 读取top.v,设置当前综合模块 把时钟信号和Pad设置成为不被综合 时钟树在下一步布局布线时处理 Pad没有逻辑功能、仅提供输入输出负载 设置连线负载 设置时钟约束逻辑综合综合并保存结果 用compile命令进行综合 保存设计库文件 保存综合后门级网表 保存时序信息 作为综合后仿真的时序参数 作为布局布线的时钟约束逻辑综合tcl脚本

5、文件read_verilog top.vcurrent_design topset_dont_touch get_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_optim

6、izationchange_names -rules asic_core_rules -hierarchychange_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_si

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

8、布局布线准备文件 *.LEF: Library Exchange Format 厂家工艺库lef文件,含有标准单元库的布局布线信息; *.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 ;

9、SITE standard ; PIN vdd! USE POWER ; SHAPE FEEDTHRU ; DIRECTION INOUT ; 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一个标准单元的定义布局布线启动 在工作目录命令行

10、输入:encounter 图形界面从菜单design 选择 菜单项design import 在design import对话框中填入相应文件布局布线导入设计和库布局布线文件说明 综合后网单文件:*.v和顶层模块名 LEF工艺文件 依次读入:csmc06tech_un.lef, csmc06core_un.lef, csmc06pad_un.lef 作用:其中定义了标准单元的大小,几何形状,管脚位置,以及布局布线所用的线宽、layout层号、所用通孔大小。 TLF时序信息文件 csmc06core_un.tlf 和 csmc06pad_un.tlf 作用:包括了lef文件中对应的各种延时信息。

11、 SDF时序约束文件 DC综合后生成,告诉encounter时序约束信息布局布线设计导入电源布局布线设计导入完成 可以在Design Import对话框中选择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 ;-

12、 pad_CORNER1 PADCORNER ;- pad_CORNER2 PADCORNER ;- pad_CORNER3 PADCORNER ;- 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 ) + U

13、SE POWER ;- gnd1! ( pad_* gnd1! ) + USE GROUND ;- vdd1! ( pad_* 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! ) +

14、 USE POWER ;- vdd! ( pad* vdd! ) ( pad_*_VDD core ) + USE POWER ;布局布线导入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: orientati

15、onPad: padInstanceName side | corner cellName布局布线I/O文件例Version: 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: pa

16、d_core_VSS W pcxvs1Orient: R0Pad: pad_CORNER3 SW PADCORNEROrient: 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

17、-Load-I/O File 选择导入修改好后的I/O文件 选择工具栏上的重绘按钮(Redraw)或者使用快捷键Ctrl+R重绘版图,可以发现所有PAD已经添加并摆放得当。布局布线布局初始化 选择Floorplan - Specify Floorplan 在窗口中设置I/O到core的距离、标准单元行的利用率(core utilization)、布线通道(row space)大小、是否隔行翻转等 说明:这是决定芯片面积大小,能否布局布线成功最关键的一步。 OK确定,可以观察到版图的进一步变化布局布线布电源环 选择Power- Power Planning - Add rings布电源环 只布c

18、ore电源,电源环尽量宽一些。 作用:在数字标准单元区域的周围放置power ring,用于提供数字部分的电源和地布局布线时序约束下的布局 Place - Standard Cells and Blocks encounter将所有系统包含的标准单元cell都放到芯片上,通常尽可能保证互相连线多而且连线复杂的cell放置在一起。布局布线放置单元后选中观察物理视图库中的标准单元被放置在了相应的位置上注:在Place的时候选择Advance标签的Congestion effort可以使得布局更加优化布局布线准备时钟树文件 时钟树文件ctstch中包含了设计对于时钟的要求。encounter按照这个

19、文件设定的时钟特性,自动产生时钟树的布局布线,插入buffer提高时钟树的驱动能力,改善时钟信号延时特性。 时钟树的起始点需要设置成为时钟输入pad的时钟pin端 时钟buffer是库中专门的buffer,需要在文件中指定。(上华库的专用时钟buffer不符合encounter要求,用普通buffer代替)时钟树约束的含义布局布线时钟树文件样例# Sample Gated CTS CommandAutoCTSRootPin pad_cki/CPMaxDelay 1nsMinDelay 0nsSinkMaxTran 300psBufMaxTran 500psMaxSkew 500psNoGati

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

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

22、和最初输入的verilog网表一致。看监视窗口的输出信息和输出文件能够发现是否有布线错误。 没有连接上的地方 core电源和地的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 Extract

23、ion Mode 选中Detail和Special Net 然后确定 Timing - Extract RC 选中Save Cap to 和 Save SPEF to 完成后,你可以查看相应的输出文件注:SPEF Standard Parasitic Exchange File布局布线参数提取和分析 延时信息 Timing - Specify Analyze Condition - Specify Delay Calculation Mode 选中FE-DC模式 Timing - Calculate Delay 不要选中Ideal Clock 完成后获得了布局布线后延时信息布局布线保存成果 D

24、esign-Save-Netlist保存网单 Design-Save-GDS保存GDS文件 Mapfile栏填写库中gds2_un.map 还要填写顶层模块和输出到cadence的库名等 Design -Save Design保存整个设计 可以在Cadence的icfb中查看版图 Import- Stream 导入相应文件后打开cellview 由于对于单元,只能看到外面的框,而不能看到其内部的版图,这是因为厂商没有提供底层版图的缘故;这个文件已经可以提交给厂商,由厂商进行mergeCell-based DRC & LVS这部分的内容由于设计文件不全,故只介绍cell-based DR

25、C和LVS的概念,而没有继续对前面的例子所得到的布局布线结果进行具体的DRC和LVS的过程!Cell-based DRC 对于cell-based设计来说,DRC主要关心布线中的设计规则违反问题,如金属与金属、金属与过孔等规则 对于我们前面导出的GDS2版图,可以交给流片组织结构或厂商,由他们去merge底层单元的版图并做DRC检查Black-box LVS 一种分层LVS Black-box LVS将单元库中的每个单元视为一个black box Black-box LVS检查库单元之间的连接关系,而不检查单元内部 设计者无须了解单元的具体版图设计 显著加快LVS的速度管级LVS与单元级LVS

26、的比较Dracula black-box LVS flowNetlisting flowUsing Hierarchical LOGLVS :CASE ;turn 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 to

27、p cell name :SUM ;print ELEMENT summary :X ; EXITBlack-box LVS准备文件Layout GDS2 file当然也可以直接对verilog文件进行编译准备CDL netlist 通过转换工具,如calibre的v2lvs 或者,将verilog结构描述转换为schematic,然后再 Cdl out 在Cadence的集中命令控制窗口 icfb,菜单File import Verilog 填写弹出的表单,设定输入的verilog文件,要生成的库,参考库等等 在icfb窗口,菜单File Export Cdl 从生成的schematic v

28、iew导出CDL网表。导入verilog文件CDL out例:门级CDL网表声明全局信号与全局PIN调用基本库单元调用子电路导入verilog文件?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;out

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

30、vdd!+ gnd!*.PIN vdd!*+ gnd!* *Library Name: vinreflib* Cell 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

31、 pad_K2:OXpadK2 core_K2 pad_K2 / pcxo51XpadK1 core_K1 pad_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_Res

32、et / fsm.ENDS调用子电路Black-box LVS准备文件 Hcell(Hierarchical cell)文件 Hcell文件在HLVS中用来声明哪些单元将作为hcell 在HLVS中,hcell内部的电路不做检查,dracula只做hcell之间或hcell与其他元件之间的互连关系 Hcell文件的例子ad01d1 ad01d1ad01d1 ad01d1ad01d2 ad01d2ad01d2 ad01d2Black-box LVS准备文件 Pseudo spice文件* *.GLOBAL vdd gnd.GLOBAL vdd gnd* *.PIN vdd gnd.PIN vdd

33、 gnd.SUBCKT ad01d1 S CO AB CI.SUBCKT ad01d1 S CO AB CI.ENDS.ENDS.SUBCKT ad01d2 S CO A B CI.SUBCKT ad01d2 S CO A B CI.ENDS ad01d2.ENDS ad01d2.SUBCKT an02d1 Z A1 A2.SUBCKT an02d1 Z A1 A2Global pin: vdd! & gnd!Black-box LVS准备文件 Black-box文件;Purpose: BLACK-BOX file for hierarchical black box LVS;Purp

34、ose: BLACK-BOX file for hierarchical black box LVSVdd x=10.5 y=11.7 ATTACH=METAL1 ad01d0 w=21.4 h=1.8Vdd 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.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.5S x=17.5 y=4.2 ATTACH=METAL2 ad01d0 w=0.5 h=0.5CO x=20.3 y=8.4 ATTACH

温馨提示

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

评论

0/150

提交评论