Encounter使用入门教程.docx

上传人:b****4 文档编号:6586476 上传时间:2023-05-10 格式:DOCX 页数:82 大小:4.72MB
下载 相关 举报
Encounter使用入门教程.docx_第1页
第1页 / 共82页
Encounter使用入门教程.docx_第2页
第2页 / 共82页
Encounter使用入门教程.docx_第3页
第3页 / 共82页
Encounter使用入门教程.docx_第4页
第4页 / 共82页
Encounter使用入门教程.docx_第5页
第5页 / 共82页
Encounter使用入门教程.docx_第6页
第6页 / 共82页
Encounter使用入门教程.docx_第7页
第7页 / 共82页
Encounter使用入门教程.docx_第8页
第8页 / 共82页
Encounter使用入门教程.docx_第9页
第9页 / 共82页
Encounter使用入门教程.docx_第10页
第10页 / 共82页
Encounter使用入门教程.docx_第11页
第11页 / 共82页
Encounter使用入门教程.docx_第12页
第12页 / 共82页
Encounter使用入门教程.docx_第13页
第13页 / 共82页
Encounter使用入门教程.docx_第14页
第14页 / 共82页
Encounter使用入门教程.docx_第15页
第15页 / 共82页
Encounter使用入门教程.docx_第16页
第16页 / 共82页
Encounter使用入门教程.docx_第17页
第17页 / 共82页
Encounter使用入门教程.docx_第18页
第18页 / 共82页
Encounter使用入门教程.docx_第19页
第19页 / 共82页
Encounter使用入门教程.docx_第20页
第20页 / 共82页
亲,该文档总共82页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

Encounter使用入门教程.docx

《Encounter使用入门教程.docx》由会员分享,可在线阅读,更多相关《Encounter使用入门教程.docx(82页珍藏版)》请在冰点文库上搜索。

Encounter使用入门教程.docx

Encounter使用入门教程

Encounter使用入门教程

本教程介绍一下自动布局布线工具Encounter的使用知识,开始以一个简单的十进制计数器版图的自动实现为例子,之后介绍包含block模块的复杂的版图自动实现。

在DesignerCompiler使用入门教程中,笔者设计了一个十进制计数器,并经过DesignCompiler对其进行综合后获得了门级综合网表文件以及约束文件,根据这两个文件,我们就可以使用SOCEncounter实现十进制计数器的物理版图设计了。

首先,我们要准备使用Encounter进行版图自动设计时所需要的数据:

时序库文件:

,,

物理库文件:

,

门级网表文件:

时序约束文件:

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));

PDIDGZPAD_RESET(.PAD(reset_n),.C(top_reset));

PDIDGZPAD_IN_ENA(.PAD(in_ena),.C(top_in_ena));

PDO02CDGPAD_CARRY_ENA(.I(top_carry_ena),.PAD(carry_ena));

PDO02CDGPAD_CNT_0(.I(top_cnt[0]),.PAD(cnt[0]));

PDO02CDGPAD_CNT_1(.I(top_cnt[1]),.PAD(cnt[1]));

PDO02CDGPAD_CNT_2(.I(top_cnt[2]),.PAD(cnt[2]));

PDO02CDGPAD_CNT_3(.I(top_cnt[3]),.PAD(cnt[3]));

endmodule

说明:

关于PAD如何例化,首先要查看厂家提供的工艺库中的关于PAD的verilog文件,如本例子中使用tsmc18工艺库,描述PAD的verilog文件为973g,这个文件是PAD文件的verilog描述,包括输入输出的端口等信息。

编写好加入PAD的十进制计数器网表后,从新使用DC对其进行综合,关于综合这里就不做介绍了,下面把新的综合脚本给出,由于加入了PAD,所以在设计约束文件时,输入驱动和输出负载约束就不需要了,考虑到后面布局布线后还要进行LVS检查,在设计约束中加入了大小写敏感设置,详细的综合脚本内容如下:

#Setthecurrent_design#

read_verilog{}

current_designCnt10_PAD

link

set_operating_conditions-maxslow-max_libraryslow-minfast-min_libraryfast

set_wire_load_modeenclosed

set_wire_load_model-nametsmc18_wl10-libraryslow

set_local_link_library{}

set_max_area0

set_max_fanout5[get_portsreset_n]

set_max_fanout4[get_portsclk]

set_max_fanout4[get_portsin_ena]

set_max_transition[get_portsreset_n]

set_max_transition[get_portsclk]

set_max_transition[get_portsin_ena]

create_clock[get_portsclk]-period10-waveform{05}

set_clock_latency1[get_clocksclk]

set_clock_latency-source1[get_clocksclk]

set_clock_uncertainty-setup[get_clocksclk]

set_clock_uncertainty-hold[get_clocksclk]

set_dont_touch_network[get_clocksclk]

set_clock_transition-fall[get_clocksclk]

set_clock_transition-rise[get_clocksclk]

set_input_delay-clockclk-max3[get_portsin_ena]

set_output_delay-clockclk-max4[get_portscnt]

set_output_delay-clockclk-min[get_portscnt]

set_output_delay-clockclk-max4[get_portscarry_ena]

set_output_delay-clockclk-min[get_portscarry_ena]

compile

report_timing-delaymax>./reports/

report_timing-delaymin>./reports/

report_constraint-verbose>./reports/

report_qor>./reports/

remove_unconnected_ports-blast_buses[get_cells-hierarchical*]

setbus_inference_style{%s[%d]}

setbus_naming_style{%s[%d]}

sethdlout_internal_bussestrue

change_names-hierarchy-ruleverilog

define_name_rulesname_rule-allowed{a-zA-Z0-9_}-max_length255-typecell

define_name_rulesname_rule-allowed{a-zA-Z0-9_[]}-max_length255-typenet

define_name_rulesname_rule-map{{"\\*cell\\*""cell"}}

~

define_name_rulesname_rule-case_insensitive

change_names-hierarchy-rulesname_rule

write-formatverilog-hier-o./outputs/

write-formatddc-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位置放置,都会在设计导入的时候同时指定设计中各个PAD在Encounter中具体的位置,这可以通过在导入设计的同时导入分配PAD位置的文件来完成。

如果不指定PAD的分配文件,则设计在输入Encounter后PAD的具体位置是随机分配的。

IOAssignmentFile可以自动产生或手动编写,本例的文件内容如下:

Version:

1

pad:

PAD_CLKN

pad:

PAD_RESETN

pad:

PAD_IN_ENAN

pad:

PAD_CARRY_ENAN

pad:

PAD_CNT_0S

pad:

PAD_CNT_1S

pad:

PAD_CNT_2S

pad:

PAD_CNT_3S

pad:

PAD_VDD1W

pad:

PAD_VDD2W

pad:

PAD_VSS1E

pad:

PAD_VSS2E

pad:

CORNER1NW

pad:

CORNER2NE

pad:

CORNER3SE

pad:

CORNER4SW

其中S/N/W/E分别是PAD在Core的南/北/西/东,四个角分别是CORNER1、2、3、4。

二、十进制计数器的APR

新建一个目录,将准备好的文件放入对应目录下面,启动Encounter。

启动Encounter图形界面的方式如下,在终端中输入下面的命令:

$encounter

然后按回车,Encounter软件将被打开,下图显示的是SOCEncounter软件正常启动显示的信息:

图2Encounter软件的启动

SOCEncounter软件正常启动后的界面如下图所示:

图3Encounter启动后的界面

上图是对Encounter软件图形界面的介绍,图中介绍了Encounter软件图形界面的各部分的名称,先做一个初步的了解。

1、导入设计文件

}

在Encounter图形界面中选择Design→DesignImport…打开导入设计对话框,如图:

图4DesignImport对话框

按照图示填好相应的设计文件,然后切换到Advanced项,如下图:

图5AdvancedTab

选择Power选项,如图中所示填入VDD和VSS。

设置好后,点击OK,设计被导入Encounter中,如下图所示:

图6设计导入到Encounter

2、设计布局

选择Floorplan→SpecifyFloorplan打开SpecifyFloorplan对话框,如下图:

%

图7SpecifyFloorplan

按图所示进行设置,完成后点击OK,指定布局后的效果如下:

图8SpecifyFloorplan后的效果

3、添加电源环

选择Power→PowerPlanning→AddRings…打开AddRings对话框:

图9AddRings对话框

在Net(s):

处填入VSSVDD,其它要设置的地方如上图所示,Offset处要选择Centerinchannel,否则后面电源线连接时会出现连接不上的情况。

设置完成后,点击OK完成设置,设置后在Core四周放置好了电源环如下:

图10AddRings后的效果

4、放置标准单元

设计导入Encounter后,数据都是存储在Memory中的,需要人为操作进行放置,当然最终还是软件根据特定算法自己自动放置的。

在菜单栏中选择Place→StandardCellsandBlocks…打开Place设置框:

图11Place1

在BasicTab中取消选择RunTimingDrivenPlacement和ReorderScanConnection项,转到AdvancedTab中,在CongestionEffort中选择Medium项,如图:

图12Place2

设置好以上条件后,点击OK,Encounter执行Place命令,标准单元就被放入Core中了。

5、Globalnetconnection

下面要连接设计中所有的globalnet,包括所有标准单元的power/groundpin连接到VDD/VSS,以及把单元里连接1的连接到VDD,把和0连接的连接到VSS。

选择Floorplan→Globalnetconnections…项,打开GlobalNetConnections设置框,按下图所示进行设置:

图13GlobalNetConnections

Connect处选择Pins,里面填入VDD,Scope处选择UnderModule,然后在ToGlobalNet:

处填入VDD,之后点击AddtoList后,在ConnectionList中第一行就设置好了,其他进行类似操作,都设置完成后,先点击Apply按钮,然后点击Check,最后点击Close关闭GlobalNetConnections设置框,完成设置。

6、Routingthepower/groundNets

选择Route→SpecialRoute…,打开SRoute设置框,如下进行设置:

图14SRoute设置

在Route处,去选Blockpins、Padrings、Stripes(unconnected)项,其它的使用默认设置即可,然后点击OK完成设置,设置完成后的效果如下图所示:

图15SRoute后的效果

7、时钟树综合

选择Clock→CreateClockTreeSpec…打开CreateClockTreeSpec对话框,如下图:

图16CreateClockTreeSpec

按图中所示进行设置,完成后点击OK。

然后选择Clock→SpecifyClockTree…选项打开SpecifyClockTree设置框,在ClockTreeFile处选择我们刚才创建的文件,然后点击OK完成设置。

最后选择Clock→SynthesizeClockTree命令进行时钟树综合。

这一步完成后,检查设计是否有时序问题,在终端中输入report_timing,查看显示信息,如果没有时序问题,就可以进行下一步的详细布线了。

8、详细布线NanoRoute

选择Route→NanoRoute→Route…打开NanoRoute对话框,如下图所示:

图17NanoRoute设置

按图中进行设置,完成点击OK,该项命令执行后的效果如下:

图18NanoRoute后的视图

9、添加IOFiller

在终端中执行如下命令:

$addIoFiller–cellPFEED50–prefixIOFILLER

$addIoFiller–cellPFEED35–prefixIOFILLER

$addIoFiller–cellPFEED20–prefixIOFILLER

$addIoFiller–cellPFEED10–prefixIOFILLER

$addIoFiller–cellPFEED5–prefixIOFILLER

$addIoFiller–cellPFEED2–prefixIOFILLER

$addIoFiller–cellPFEED1–prefixIOFILLER

$addIoFiller–cellPFEED01–prefixIOFILLER–fillAnyGap

-

$redraw

这样就在I/OPAD之间加入了IOFiller,可以拉看到原先PAD之间的缝隙被填充了,如下图所示:

图19添加IOFiller后的效果

10、保存设计

选择Design→SaveDesign…保存当前设计,这样在下次要进行其他操作时可以直接打开该设计,使其处于当前的设计状态。

选择Design→Save→GDS…导出版图设计为,保存设计如下所示:

设置完成后点击OK,保存版图信息。

保存用于后面LVS的网表文件。

选择Design→Save→Netlist…打开保存Netlist对话框,在保存的文件名处填入,然后点击OK保存版图对应的网表信息。

三、版图后的DRC和LVS

;

1、版图导入到IC5141工具中

需要的文件有Encounter输出文件的工艺文件、Virtuoso显示设置文件、DRC和LVS规则文件:

25a,

Calibre-lvs-cur_soce,

新建一个目录,将这些文件放入此目录下,从终端中打开IC5141:

$icfb&

启动IC5141后在CIW中,选择File→Import→Stream…,在StreamInform里inputfile处点击Browse…选择,TopCellName中填Cnt10_PAD,ASCIITechnologyFileName处点击Browse…,选择文件:

图21版图导入到Virtuoso中

完成设置后,点击OK,这样就把版图导入到版图设计工具中了。

如图所示:

图22版图成功导入

在LibraryManager中找到pad_counter,然后在其中找到Cnt10_PAD,双击layout,打开设计的版图:

图23十进制版图

刚打开的版图显示需要设置一下才会如上图所示,在视图中选择Options→Display打开显示设置对话框,如图:

^

图24显示设置

按照图中所示进行设置后就可以看到图23所示的显示效果。

2、DRC检查

选择Calibre→RunDRC打开DRC设置框如下所示:

图25Rules设置

在Rules项中设置DRC规则文件13a25a,然后点击RunDRC项,运行DRC检查,运行结果显示如下图:

图26DRC结果

图中显示中大红叉的地方显示有7个Results,这7个Results是由于材料密度问题引起的,一般是有芯片制造商去解决的,因此本设计DRC没有错误。

·

2、LVS检查

在做LVS检查时,可以不在IC5141里面做,我们这里在终端中通过执行命令来完成。

首先需要把Encounter输出的文件转换为Calibre做LVS认识的文件文件,即是要先将.v文件转换为.spi文件。

在终端中运行如下命令:

$v2lvs–v–l–o–s–ccic_-n

这条命令执行完后,会在当前工作目录下生成文件,即hspice网表文件。

然后打开Calibre-lvs-cur_soce文件修改里面的内容如下图所示:

图27修改Calibre-lvs-cur_soce文件

修改后保存。

在终端中运行如下命令:

$calibre–lvs–spice–hier–autoCalibre-lvs-cur_soce

这条命令执行完后会在当前目录下生成LVS报告文件及其其他一些LVS报告文件,打开查看LVS报告:

图28查看LVS报告

可以看到,报告结果显示LVS是CORRECT的,也就是版图与电路原理图是一致的。

到此,一个以十进制计数器的版图自动设计就完成了,当然这是没有实际意义的,仅仅是为了介绍使用Encounter进行自动版图设计的流程。

实际的版图设计中要经过很多其他的详细的操作,一个芯片版图的实现也远远不止这么容易。

接下来将以一个复杂的包含IP模块的设计来进一步深入的学习一下Encounter在APR时可能要进行的步骤,也介绍一下一个版图应当进行那些检查设计。

四、使用Encounter进行包含Block核的版图设计

文件准备:

DTMF数据包文件,网上有下载,、设计文件和数据文件导入Encounter

将输入文件导入到Encounter中如图所示:

在verilognetlist中指定DC输出的门级网表文件:

所有的.v文件

在TimingLibraries中指定相应的时序库:

fast、slow

在LEFFiles中指定.lef文件

在TimingConstraintfile:

指定.sdc文件

在IOAssignmentFile中指定.io文件:

点击advanced,进如如图所示界面,会出现11项设置,填其中的5项即可,

下一步,完成PowerPage的填写,如图所示,填入电源、地的节点名称以便创建电源、地环。

下一步,完成RCExtraction页的填写,如图所示。

在CapacitanceTableFile栏中指定captablefile文件,以便后面步骤中的信号完整性分析。

$

最后一步,完成SIAnalysispage的填写,如上图所示。

添加theCeltICDB(cdB)noiselibrary,该库用于CeltICcrosstalkanalysis。

到现在为止,我们已经对设计的输入、同时也指定了物理库、工艺规则文件、时序库、时序约束文件。

将这些配置保存到文件中,下次操作时,只须load该文件,工具将自动进行以上配置。

完成以上步骤后点击OK键,出现如图所示的界面。

2、Floorplanning

对窗口SpecifyFloorplanform进行设置,来指定thecorebox,IObox,diebox的尺寸大小。

步骤如下:

Floorplan→EditFloorplan→SpecifyFloorplan

在AspectRatio中,使用默认值选项

CoreMargins选择CoretoIOBoundary,

键入–CoretoLeft:

100

键入–CoretoRight:

100

键入–CoretoTop:

100

键入–CoretoBottom:

100

Click“Apply”按钮。

完了后,IOPAD自动调整到离thecorebox边界100微米处。

(该距离根据设计要求决定)

<

在也可对thecorebox的高宽比率进行调整,在ratio(H/W)中将默认值:

1设置成,则thecorebox的高是宽的2倍了。

3、CreatingafloorplanwithRelativeFloorplan

对于芯片版图的布局来说,block的布局起非常重要的作用。

下面对四个blocks进行布局。

Floorplan→RelationFloorplan→EditConstraint...,首先对DTMF_INST/ARB_INST/ROM_512x16_0_INST进行放置,完成如图所示的填写点击Apply。

然后以同样的方法对DTMF_INST/RAM_256x16_TEST_INST/RAM_256x16_INSTBlock进行放置如图所示:

%

然后以同样的方法对

DTMF_INST/RAM_128x16_TEST_INST/RAM_128x16_INSTBlock进行放置如图所示:

然后以同样的方法对DTMF_INST/PLLCLK_INSTBlock进行放置如图所示:

注意:

如果你不想这样方式对4个blocks进行布局,可以通过Design→Load→Floorplan,load文件。

Encounter会根据该文件所定义的位置对4个blocks进行自动布局。

也可将手动布局保存到该文件以便下次调用。

布局完成后的效果如下:

如果不想显示黄色指示箭头,可以如上图进行设置。

4、Creatingblockhalos

当对blocks进行布局后,接下来创建blockhalos。

其目的为了在对标准单元进

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

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2