您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 电子设计/PCB > Encounter使用入门教程
Encounter使用入门教程本教程介绍一下自动布局布线工具Encounter的使用知识,开始以一个简单的十进制计数器版图的自动实现为例子,之后介绍包含block模块的复杂的版图自动实现。在DesignerCompiler使用入门教程中,笔者设计了一个十进制计数器,并经过DesignCompiler对其进行综合后获得了门级综合网表文件counter.sv以及约束文件counter.sdc,根据这两个文件,我们就可以使用SOCEncounter实现十进制计数器的物理版图设计了。首先,我们要准备使用Encounter进行版图自动设计时所需要的数据:时序库文件:fast.lib,slow.lib,tpz973gwc.lib,tpz973gbc.lib物理库文件:tsmc18_6lm_cic.lef,tpz973g_5lm_cic.lef,tsmc18_6lm_antenna_cic.lef门级网表文件:pad_counter.sv时序约束文件:pad_counter.sdcIO位置放置文件:pad_counter.io//在设计导入Encounter中指定PAD的放置位置文件,不是必须文件还有其它一些文件在后面用到时进行介绍。一、网表中添加PAD、编写IOAssignmentFile这里,pad_counter.sv是加入PAD后综合得到的门级网表。工程项目中设计制作完成后的芯片要进行封装,PAD就是芯片在封装时连接封装引线的地方。一般信号输入/输出PAD即I/OPAD要在综合前添加进入网表中,电源电压PAD可以在综合时添加也可以在综合后添加。接下来就先介绍一下如何在网表中加入PAD,其实给网表加入PAD就是一般的module例化,和Verilog中一般的module模块例化是一样的。这里介绍在综合时给设计中加入I/OPAD。十进制计数器的Verilog源程序如下:moduleCnt10(reset_n,clk,in_ena,cnt,carry_ena);inputclk;inputreset_n;inputin_ena;output[3:0]cnt;outputcarry_ena;reg[3:0]cnt;regcarry_ena;always@(posedgeclkornegedgereset_n)beginif(!reset_n)cnt=4'b0;elseif(in_ena&&cnt==4'd10)cnt=4'b0;elseif(in_ena&&cnt4'd10)cnt=cnt+1'b1;endalways@(posedgeclkornegedgereset_n)beginif(!reset_n)carry_ena=1'b0;elseif(in_ena&&cnt==4'd10)carry_ena=1'b1;elsecarry_ena=1'b0;endendmodule加入PAD后的十进制计数器Verilog网表如下:moduleCnt10_PAD(reset_n,clk,in_ena,cnt,carry_ena);//顶层模块inputreset_n;inputclk;inputin_ena;output[3:0]cnt;outputcarry_ena;wiretop_clk,top_reset,top_in_ena;wiretop_carry_ena;wire[3:0]top_cnt;Cnt10CNT10(.reset_n(top_reset),.clk(top_clk),.in_ena(top_in_ena),.cnt(top_cnt),.carry_ena(top_carry_ena));//这里是对Cnt10module的例化//下面是I/OPADmodule的例化PDIDGZPAD_CLK(.PAD(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文件为tpz973g.v,这个文件是PAD文件的verilog描述,包括输入输出的端口等信息。编写好加入PAD的十进制计数器网表pad_conter.v后,从新使用DC对其进行综合,关于综合这里就不做介绍了,下面把新的综合脚本给出,由于加入了PAD,所以在设计约束文件时,输入驱动和输出负载约束就不需要了,考虑到后面布局布线后还要进行LVS检查,在设计约束中加入了大小写敏感设置,详细的综合脚本pad_run.con内容如下:#Setthecurrent_design#read_verilog{counter_pad.vcounter.v}current_designCnt10_PADlinkset_operating_conditions-maxslow-max_libraryslow-minfast-min_libraryfastset_wire_load_modeenclosedset_wire_load_model-nametsmc18_wl10-libraryslowset_local_link_library{slow.dbfast.db}set_max_area0set_max_fanout5[get_portsreset_n]set_max_fanout4[get_portsclk]set_max_fanout4[get_portsin_ena]set_max_transition0.3[get_portsreset_n]set_max_transition0.3[get_portsclk]set_max_transition0.5[get_portsin_ena]create_clock[get_portsclk]-period10-waveform{05}set_clock_latency1[get_clocksclk]set_clock_latency-source1[get_clocksclk]set_clock_uncertainty-setup0.5[get_clocksclk]set_clock_uncertainty-hold0.4[get_clocksclk]set_dont_touch_network[get_clocksclk]set_clock_transition-fall0.3[get_clocksclk]set_clock_transition-rise0.3[get_clocksclk]set_input_delay-clockclk-max3[get_portsin_ena]set_output_delay-clockclk-max4[get_portscnt]set_output_delay-clockclk-min0.5[get_portscnt]set_output_delay-clockclk-max4[get_portscarry_ena]set_output_delay-clockclk-min0.5[get_portscarry_ena]compilereport_timing-delaymax./reports/pad_setup_rt.rptreport_timing-delaymin./reports/pad_hold_rt.rptreport_constraint-verbose./reports/pad_rc.rptreport_qor./reports/pad_rq.rptremove_unconnected_ports-blast_buses[get_cells-hierarchical*]setbus_inference_style{%s[%d]}setbus_naming_style{%s[%d]}sethdlout_internal_bussestruechange_names-hierarchy-ruleverilogdefine_name_rulesname_rule-allowed{a-zA-Z0-9_}-max_length255-typecelldefine_name_rulesname_rule-allowed{a-zA-Z0-9_[]}-max_length255-typenetdefine_name_rulesname_rule-map{{\\*cell\\*cell}}define_name_rulesname_rule-case_insensitivechange_names-hierarchy-rulesname_rulewrite-formatverilog-hier-o./outputs/pad_counter.svwrite-formatddc-hier-o./outputs/pad_counter.ddcwrite_sdc./outputs/pad_counter.sdcwrite_sdf./outputs/pad_counter.sdf设置好DC的启动文件.synopsys_dc.setup后,启动DC,在DC的命令行输入处运行命令:design_vision-xg-tsourcepad_run.con等待DC完成综合后就可以在指定的目录中看到输出文件pad_counter.sv、pad_counter.sdc等文件了。进行布局布线前,在pad_counter.sv网表中加入电源PAD和拐角连接PAD,如下图所示:图1添加电源PAD和拐角PAD添加好后保存pad_counter.sv文件,到此就完成了给设计加入PAD了。一般在设计导入到Encounter时,为了实现既定的PAD位置放置,都会在设计导入的时候同时指定设计中各个PAD在Encounter中具体的位置,这可以通过在导入设计的同时导入分配PAD位置的文件pad.io来完成。如果不指定PAD的分配文件,则设计在输入Encounter后PAD的具体位置是随机分配的。IOAssignmentFile可以自动产生或手动编写,本例的pad_counter.io文件内容如下:Version:1pad:PAD_CLKNpad:PAD_RESETNpad:PAD_IN_ENANpad:PAD_CARRY_ENANpad:PAD_CNT_0Spad:PAD_CNT_1Spad:PAD_CNT_2Spad:PAD_CNT_3Spad:PAD_VDD1Wpad:PAD_VDD2Wpad:PAD_VSS1Epad:PAD_VSS2Epad:CORNER1NWpad:CORNER2NEpad:CORNER3SEpad:CORNER4SW其中S/N/W/E分别是PAD在Core的南/北/西/东,四个角分别是CORNER1、2、3、4。二、十进制计数器的APR新建一个目录,将准备好的文件放入对应目录下面,启动Encounter。启动Encounter图形界面的方式如下,在终端中输入下面的命令:$encounter然后按回车,Encounter软件将被打开,下图显示的是SOCEncounter软件正常启动显示的信息:图2Encounter软件的启动SOCEncounter软件正常启动后的
本文标题:Encounter使用入门教程
链接地址:https://www.777doc.com/doc-6737646 .html