Encounter使用方法分析和总结.docx

  1. 1、本文档共68页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

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.sdc

IO位置放置文件: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);

input clk;input reset_n;input in_ena;

output[3:0]cnt;outputcarry_ena;reg[3:0]cnt;

regcarry_ena;

always@(posedgeclkornegedgereset_n)

begin

if(!reset_n)

cnt=4b0;

elseif(in_enacnt==4d10)

cnt=4b0;

elseif(in_enacnt4d10)cnt=cnt+1b1;

end

always@(posedgeclkornegedgereset_n)

begin

if(!reset_n)

carry_ena=1b0;

elseif(in_enacnt==4d10)carry_ena=1b1;

endmodule

end

else

carry_ena=1b0;

加入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的例化

PDIDGZ PAD_CLK(.PAD(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_cnt[0]),.PAD(cnt[0]));

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

文档评论(0)

tianshidechibang + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档