1、Encounter使用入门教程Encounter使用入门教程本教程介绍一下自动布局布线工具Encounter的使用知识,开始以一个简单的十进制计数器版图的自动实现为例子,之后介绍包含block模块的复杂的版图自动实现。在Designer Compiler使用入门教程中,笔者设计了一个十进制计数器,并经过Design Compiler对其进行综合后获得了门级综合网表文件以及约束文件,根据这两个文件,我们就可以使用SOC Encounter实现十进制计数器的物理版图设计了。首先,我们要准备使用Encounter进行版图自动设计时所需要的数据:时序库文件:,物理库文件:,门级网表文件:时序约束文件:
2、IO位置放置文件: eset_n(top_reset),.clk(top_clk),.in_ena(top_in_ena),t(top_cnt),.carry_ena(top_carry_ena); AD(clk),.C(top_clk); PDIDGZ PAD_RESET(.PAD(reset_n),.C(top_reset); PDIDGZ PAD_IN_ENA(.PAD(in_ena),.C(top_in_ena);( PDO02CDG PAD_CARRY_ENA(.I(top_carry_ena),.PAD(carry_ena); PDO02CDG PAD_CNT_0(.I(top_c
3、nt0),.PAD(cnt0); PDO02CDG PAD_CNT_1(.I(top_cnt1),.PAD(cnt1); PDO02CDG PAD_CNT_2(.I(top_cnt2),.PAD(cnt2); PDO02CDG PAD_CNT_3(.I(top_cnt3),.PAD(cnt3);endmodule说明:关于PAD如何例化,首先要查看厂家提供的工艺库中的关于PAD的verilog文件,如本例子中使用tsmc18工艺库,描述PAD的verilog文件为973g,这个文件是PAD文件的verilog描述,包括输入输出的端口等信息。编写好加入PAD的十进制计数器网表后,从新使用DC对其
4、进行综合,关于综合这里就不做介绍了,下面把新的综合脚本给出,由于加入了PAD,所以在设计约束文件时,输入驱动和输出负载约束就不需要了,考虑到后面布局布线后还要进行LVS检查,在设计约束中加入了大小写敏感设置,详细的综合脚本内容如下:# Set the current_design #read_verilog current_design Cnt10_PAD;linkset_operating_conditions -max slow -max_library slow -min fast -min_library fastset_wire_load_mode enclosedset_wire_
5、load_model -name tsmc18_wl10 -library slowset_local_link_library set_max_area 0set_max_fanout 5 get_ports reset_nset_max_fanout 4 get_ports clkset_max_fanout 4 get_ports in_ena(set_max_transition get_ports reset_nset_max_transition get_ports clkset_max_transition get_ports in_enacreate_clock get_por
6、ts clk -period 10 -waveform 0 5set_clock_latency 1 get_clocks clkset_clock_latency -source 1 get_clocks clkset_clock_uncertainty -setup get_clocks clkset_clock_uncertainty -hold get_clocks clkset_dont_touch_network get_clocks clkset_clock_transition -fall get_clocks clkset_clock_transition -rise get
7、_clocks clkset_input_delay -clock clk -max 3 get_ports in_enaset_output_delay -clock clk -max 4 get_ports cntset_output_delay -clock clk -min get_ports cntset_output_delay -clock clk -max 4 get_ports carry_enaset_output_delay -clock clk -min get_ports carry_enacompilereport_timing -delay max ./repor
8、ts/report_timing -delay min ./reports/,report_constraint -verbose ./reports/report_qor ./reports/remove_unconnected_ports -blast_buses get_cells -hierarchical *set bus_inference_style %s%d set bus_naming_style %s%dset hdlout_internal_busses true change_names -hierarchy -rule verilogdefine_name_rules
9、 name_rule -allowed a-z A-Z 0-9 _ -max_length 255 -type celldefine_name_rules name_rule -allowed a-z A-Z 0-9 _ -max_length 255 -type netdefine_name_rules name_rule -map *cell* celldefine_name_rules name_rule -case_insensitivechange_names -hierarchy -rules name_rulewrite -format verilog -hier -o ./ou
10、tputs/write -format ddc -hier -o ./outputs/write_sdc ./outputs/write_sdf ./outputs/设置好DC的启动文件.后,启动DC,在DC的命令行输入处运行命令:design_vision-xg-t source 等待DC完成综合后就可以在指定的目录中看到输出文件、等文件了。进行布局布线前,在网表中加入电源PAD和拐角连接PAD,如下图所示:)图1 添加电源PAD和拐角PAD添加好后保存文件,到此就完成了给设计加入PAD了。一般在设计导入到Encounter时,为了实现既定的PAD位置放置,都会在设计导入的时候同时指定设计中
11、各个PAD在Encounter中具体的位置,这可以通过在导入设计的同时导入分配PAD位置的文件来完成。如果不指定PAD的分配文件,则设计在输入Encounter后PAD的具体位置是随机分配的。IO Assignment File可以自动产生或手动编写,本例的文件内容如下:Version: 1pad: PAD_CLK Npad: PAD_RESET Npad: PAD_IN_ENA Npad: PAD_CARRY_ENA Npad: PAD_CNT_0 Spad: PAD_CNT_1 Spad: PAD_CNT_2 Spad: PAD_CNT_3 Spad: PAD_VDD1 Wpad: PAD
12、_VDD2 Wpad: PAD_VSS1 Epad: PAD_VSS2 Epad: CORNER1 NWpad: CORNER2 NEpad: CORNER3 SEpad: CORNER4 SW其中S/N/W/E分别是PAD在Core的南/北/西/东,四个角分别是CORNER1、2、3、4。)二、十进制计数器的APR新建一个目录,将准备好的文件放入对应目录下面,启动Encounter。启动Encounter图形界面的方式如下,在终端中输入下面的命令:$ encounter然后按回车,Encounter软件将被打开,下图显示的是SOC Encounter软件正常启动显示的信息:图2 Encoun
13、ter软件的启动SOC Encounter软件正常启动后的界面如下图所示:图3 Encounter启动后的界面上图是对Encounter软件图形界面的介绍,图中介绍了Encounter软件图形界面的各部分的名称,先做一个初步的了解。1、导入设计文件在Encounter图形界面中选择DesignDesign Import打开导入设计对话框,如图:图4 Design Import对话框按照图示填好相应的设计文件,然后切换到Advanced项,如下图:图5 Advanced Tab选择Power选项,如图中所示填入VDD和VSS。设置好后,点击OK,设计被导入Encounter中,如下图所示:图6
14、设计导入到Encounter2、设计布局选择FloorplanSpecify Floorplan打开Specify Floorplan对话框,如下图:%图7 Specify Floorplan按图所示进行设置,完成后点击OK,指定布局后的效果如下:图8 Specify Floorplan后的效果3、添加电源环选择PowerPower PlanningAdd Rings打开Add Rings对话框:图9 Add Rings对话框在Net(s):处填入VSS VDD,其它要设置的地方如上图所示,Offset处要选择Center in channel,否则后面电源线连接时会出现连接不上的情况。设置完
15、成后,点击OK完成设置,设置后在Core四周放置好了电源环如下:(图10 Add Rings后的效果4、放置标准单元设计导入Encounter后,数据都是存储在Memory中的,需要人为操作进行放置,当然最终还是软件根据特定算法自己自动放置的。在菜单栏中选择PlaceStandard Cells and Blocks打开Place设置框:图11 Place1在Basic Tab中取消选择Run Timing Driven Placement和Reorder Scan Connection项,转到Advanced Tab中,在Congestion Effort中选择Medium项,如图:图12
16、Place2设置好以上条件后,点击OK,Encounter执行Place命令,标准单元就被放入Core中了。5、Global net connection下面要连接设计中所有的global net,包括所有标准单元的power/ground pin连接到VDD/VSS,以及把单元里连接1的连接到VDD,把和0连接的连接到VSS。选择FloorplanGlobal net connections项,打开Global Net Connections设置框,按下图所示进行设置:;图 13 Global Net ConnectionsConnect处选择Pins,里面填入VDD,Scope处选择Und
17、er Module,然后在To Global Net:处填入VDD,之后点击Add to List后,在Connection List中第一行就设置好了,其他进行类似操作,都设置完成后,先点击Apply按钮,然后点击Check,最后点击Close关闭Global Net Connections设置框,完成设置。6、Routing the power/ground Nets选择RouteSpecial Route,打开SRoute设置框,如下进行设置:图14 SRoute设置在Route处,去选Block pins、Pad rings、Stripes(unconnected)项,其它的使用默认设
18、置即可,然后点击OK完成设置,设置完成后的效果如下图所示:图15 SRoute后的效果7、时钟树综合!选择ClockCreate Clock Tree Spec打开Create Clock Tree Spec对话框,如下图:图16 Create Clock Tree Spec按图中所示进行设置,完成后点击OK。然后选择ClockSpecify Clock Tree选项打开Specify Clock Tree设置框,在Clock Tree File处选择我们刚才创建的文件,然后点击OK完成设置。最后选择ClockSynthesize Clock Tree命令进行时钟树综合。这一步完成后,检查设计
19、是否有时序问题,在终端中输入report_timing,查看显示信息,如果没有时序问题,就可以进行下一步的详细布线了。8、详细布线NanoRoute选择RouteNanoRouteRoute打开NanoRoute对话框,如下图所示:图17 NanoRoute设置按图中进行设置,完成点击OK,该项命令执行后的效果如下:图18 NanoRoute后的视图9、添加IO Filler在终端中执行如下命令:$ addIoFiller cell PFEED50 prefix IOFILLER$ addIoFiller cell PFEED35 prefix IOFILLER$ addIoFiller ce
20、ll PFEED20 prefix IOFILLER$ addIoFiller cell PFEED10 prefix IOFILLER$ addIoFiller cell PFEED5 prefix IOFILLER$ addIoFiller cell PFEED2 prefix IOFILLER$ addIoFiller cell PFEED1 prefix IOFILLER$ addIoFiller cell PFEED01 prefix IOFILLER fillAnyGap-$ redraw这样就在I/O PAD之间加入了IO Filler,可以拉看到原先PAD之间的缝隙被填充了,如
21、下图所示:图19 添加IO Filler后的效果10、保存设计选择DesignSave Design保存当前设计,这样在下次要进行其他操作时可以直接打开该设计,使其处于当前的设计状态。选择DesignSaveGDS导出版图设计为,保存设计如下所示:设置完成后点击OK,保存版图信息。保存用于后面LVS的网表文件。选择DesignSaveNetlist打开保存Netlist对话框,在保存的文件名处填入,然后点击OK保存版图对应的网表信息。三、版图后的DRC和LVS;1、版图导入到IC5141工具中需要的文件有Encounter输出文件的工艺文件、Virtuoso显示设置文件、DRC和LVS规则文件
22、:25a,Calibre-lvs-cur_soce,新建一个目录,将这些文件放入此目录下,从终端中打开IC5141:。$ icfb&启动IC5141后在CIW中,选择FileImportStream,在Stream In form里input file处点击Browse选择,Top Cell Name中填Cnt10_PAD,ASCII Technology File Name处点击Browse,选择文件: 图21 版图导入到Virtuoso中完成设置后,点击OK,这样就把版图导入到版图设计工具中了。如图所示:图22 版图成功导入在Library Manager中找到pad_counter,然后
23、在其中找到Cnt10_PAD,双击layout,打开设计的版图:图23 十进制版图刚打开的版图显示需要设置一下才会如上图所示,在视图中选择OptionsDisplay打开显示设置对话框,如图:图24 显示设置按照图中所示进行设置后就可以看到图23所示的显示效果。2、DRC检查选择CalibreRun DRC打开DRC设置框如下所示:图25 Rules设置在Rules项中设置DRC规则文件13a25a,然后点击Run DRC项,运行DRC检查,运行结果显示如下图:图26 DRC结果图中显示中大红叉的地方显示有7个Results,这7个Results是由于材料密度问题引起的,一般是有芯片制造商去解
24、决的,因此本设计DRC没有错误。2、LVS检查在做LVS检查时,可以不在IC5141里面做,我们这里在终端中通过执行命令来完成。首先需要把Encounter输出的文件转换为Calibre做LVS认识的文件文件,即是要先将.v文件转换为.spi文件。在终端中运行如下命令:$ v2lvs v l o s c cic_ -n这条命令执行完后,会在当前工作目录下生成文件,即hspice网表文件。然后打开Calibre-lvs-cur_soce文件修改里面的内容如下图所示:图27 修改Calibre-lvs-cur_soce文件修改后保存。在终端中运行如下命令:$ calibre lvs spice h
25、ier auto Calibre-lvs-cur_soce这条命令执行完后会在当前目录下生成LVS报告文件及其其他一些LVS报告文件,打开查看LVS报告:图28 查看LVS报告可以看到,报告结果显示LVS是CORRECT的,也就是版图与电路原理图是一致的。到此,一个以十进制计数器的版图自动设计就完成了,当然这是没有实际意义的,仅仅是为了介绍使用Encounter进行自动版图设计的流程。实际的版图设计中要经过很多其他的详细的操作,一个芯片版图的实现也远远不止这么容易。接下来将以一个复杂的包含IP模块的设计来进一步深入的学习一下Encounter在APR时可能要进行的步骤,也介绍一下一个版图应当进
26、行那些检查设计。四、使用Encounter进行包含Block核的版图设计文件准备:DTMF数据包文件,网上有下载,、设计文件和数据文件导入Encounter将输入文件导入到Encounter中如图所示:图在verilog netlist中指定DC输出的门级网表文件:所有的.v文件在Timing Libraries中指定相应的时序库: fast 、slow在LEF Files 中指定.lef文件在Timing Constraint file:指定.sdc文件在IO Assignment File中指定.io文件:点击advanced,进如如图所示界面,会出现11项设置,填其中的5项即可,图下一步
27、,完成Power Page 的填写,如图所示,填入电源、地的节点名称以便创建电源、地环。图下一步,完成RC Extraction 页的填写,如图所示。在Capacitance Table File 栏中指定cap table file文件,以便后面步骤中的信号完整性分析。图$图最后一步,完成SI Analysis page的填写,如上图所示。添加 the CeltIC DB (cdB) noise library,该库用于 CeltIC crosstalk analysis。到现在为止,我们已经对设计的输入、同时也指定了物理库、工艺规则文件、时序库、时序约束文件。将这些配置保存到文件中,下次操
28、作时,只须load 该文件,工具将自动进行以上配置。图完成以上步骤后点击OK键,出现如图所示的界面。图2、Floorplanning对窗口Specify Floorplan form进行设置,来指定 the core box ,IO box,die box 的尺寸大小。步骤如下:FloorplanEdit FloorplanSpecify Floorplan在Aspect Ratio中,使用默认值选项Core Margins选择Core to IO Boundary,键入 Core to Left: 100键入 Core to Right: 100键入 Core to Top: 100键入 C
29、ore to Bottom: 100Click “ Apply”按钮。完了后,IO PAD 自动调整到离the core box边界100微米处。(该距离根据设计要求决定)图在也可对the core box的高宽比率进行调整,在ratio(H/W)中将默认值:1设置成,则the core box的高是宽的2倍了。3、 Creating a floorplan with Relative Floorplan对于芯片版图的布局来说,block的布局起非常重要的作用。下面对四个blocks进行布局。FloorplanRelation FloorplanEdit Constraint.,首先对DTMF
30、_INST/ARB_INST/ROM_512x16_0_INST进行放置,完成如图所示的填写点击Apply。图图然后以同样的方法对DTMF_INST/RAM_256x16_TEST_INST/RAM_256x16_INST Block进行放置如图所示:图%然后以同样的方法对DTMF_INST/RAM_128x16_TEST_INST/RAM_128x16_INST Block进行放置如图所示:图然后以同样的方法对DTMF_INST/PLLCLK_INST Block进行放置如图所示:图注意:如果你不想这样方式对4个blocks进行布局,可以通过DesignLoadFloorplan, load文件。Encounter会根据该文件所定义的位置对4个blocks进行自动布局。也可将手动布局保存到该文件以便下次调用。布局完成后的效果如下:图如果不想显示黄色指示箭头,可以如上图进行设置。图4、 Creating block halos当对blocks进行布局后,接下来创建block halos。其目的为了在对标准单元进
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2