Encounter使用入门教程
Encounter使用入门教程
本教程介绍一下自动布局布线工具Encounter的使用知识,开始以一个简单的十进制计数器版图的自动实现为例子,之后介绍包含block模块的复杂的版图自动实现。
在Designer Compiler使用入门教程中,笔者设计了一个十进制计数器,并经过Design Compiler对其进行综合后获得了门级综合网表文件counter.sv以及约束文件counter.sdc,根据这两个文件,我们就可以使用SOC Encounter实现十进制计数器的物理版图设计了。首先,我们要准备使用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、编写IO Assignment File
这里,pad_counter.sv是加入PAD后综合得到的门级网表。工程项目中设计制作完成后的芯片要进行封装,PAD就是芯片在封装时连接封装引线的地方。一般信号输入/输出PAD即I/O PAD要在综合前添加进入网表中,电源电压PAD可以在综合时添加也可以在综合后添加。接下来就先介绍一下如何在网表中加入PAD,其实给网表加入PAD就是一般的module例化,和Verilog中一般的module模块例化是一样的。
这里介绍在综合时给设计中加入I/O PAD。十进制计数器的Verilog源程序如下: module Cnt10(reset_n,clk,in_ena,cnt,carry_ena);
input clk;
input reset_n;
input in_ena;
output [3:0] cnt;
output carry_ena;
reg [3:0] cnt;
reg carry_ena;
always @(posedge clk or negedge reset_n)
begin
if(!reset_n)
cnt<=4'b0;
else if(in_ena && cnt==4'd10)
cnt<=4'b0;
else if(in_ena && cnt<4'd10)
cnt<=cnt+1'b1;
end
always @(posedge clk or negedge reset_n)
begin
if(!reset_n)
carry_ena<=1'b0;
else if(in_ena && cnt==4'd10)
carry_ena<=1'b1;
else
carry_ena<=1'b0;
end
endmodule
加入PAD后的十进制计数器Verilog网表如下:
module Cnt10_PAD(reset_n,clk,in_ena,cnt,carry_ena); //顶层模块
input reset_n;
input clk;
input in_ena;
output [3:0] cnt;
output carry_ena;
wire top_clk,top_reset,top_in_ena;
wire top_carry_ena;
wire [3:0] top_cnt;
Cnt10
CNT10(.reset_n(top_reset),.clk(top_clk),.in_ena(top_in_ena),.cnt(top_cnt),.carry_ena(top_carry_ena)); //这里是对Cnt10 module的例化
//下面是I/O PAD module的例化
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]));
PDO02CDG PAD_CNT_1(.I(top_cnt[1]),.PAD(cnt[1]));
PDO02CDG PAD_CNT_2(.I(top_cnt[2]),.PAD(cnt[2]));
PDO02CDG PAD_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内容如下:
# Set the current_design #
read_verilog {counter_pad.v counter.v}
current_design Cnt10_PAD
link
set_operating_conditions -max slow -max_library slow -min fast -min_library fast set_wire_load_mode enclosed
set_wire_load_model -name tsmc18_wl10 -library slow
set_local_link_library {slow.db fast.db}
set_max_area 0
set_max_fanout 5 [get_ports reset_n]
set_max_fanout 4 [get_ports clk]
set_max_fanout 4 [get_ports in_ena]
set_max_transition 0.3 [get_ports reset_n]
set_max_transition 0.3 [get_ports clk]
set_max_transition 0.5 [get_ports in_ena]
create_clock [get_ports clk] -period 10 -waveform {0 5}
set_clock_latency 1 [get_clocks clk]
set_clock_latency -source 1 [get_clocks clk]
set_clock_uncertainty -setup 0.5 [get_clocks clk]
set_clock_uncertainty -hold 0.4 [get_clocks clk]
set_dont_touch_network [get_clocks clk]
set_clock_transition -fall 0.3 [get_clocks clk]
set_clock_transition -rise 0.3 [get_clocks clk]
set_input_delay -clock clk -max 3 [get_ports in_ena]
set_output_delay -clock clk -max 4 [get_ports cnt]
set_output_delay -clock clk -min 0.5 [get_ports cnt]
set_output_delay -clock clk -max 4 [get_ports carry_ena]
set_output_delay -clock clk -min 0.5 [get_ports carry_ena]
compile
report_timing -delay max > ./reports/pad_setup_rt.rpt
report_timing -delay min > ./reports/pad_hold_rt.rpt
report_constraint -verbose > ./reports/pad_rc.rpt
report_qor > ./reports/pad_rq.rpt
remove_unconnected_ports -blast_buses [get_cells -hierarchical *]
set bus_inference_style {%s[%d]}
set bus_naming_style {%s[%d]}
set hdlout_internal_busses true
change_names -hierarchy -rule verilog
define_name_rules name_rule -allowed {a-z A-Z 0-9 _} -max_length 255 -type cell define_name_rules name_rule -allowed {a-z A-Z 0-9 _[]} -max_length 255 -type net define_name_rules name_rule -map {{"\\*cell\\*" "cell"}}
define_name_rules name_rule -case_insensitive
change_names -hierarchy -rules name_rule
write -format verilog -hier -o ./outputs/pad_counter.sv
write -format ddc -hier -o ./outputs/pad_counter.ddc
write_sdc ./outputs/pad_counter.sdc
write_sdf ./outputs/pad_counter.sdf
设置好DC的启动文件.synopsys_dc.setup后,启动DC,在DC的 …… 此处隐藏:7097字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [外语考试]管理学 第13章 沟通
- [外语考试]07、中高端客户销售流程--分类、筛选讲
- [外语考试]2015-2020年中国高筋饺子粉市场发展现
- [外语考试]“十三五”重点项目-汽车燃油表生产建
- [外语考试]雅培奶粉培乐系列适用年龄及特点
- [外语考试]九三学社入社申请人调查问卷
- [外语考试]等级薪酬体系职等职级表
- [外语考试]货物买卖合同纠纷起诉状(范本一)
- [外语考试]青海省实施消防法办法
- [外语考试]公交车语音自动报站系统的设计第3稿11
- [外语考试]logistic回归模型在ROC分析中的应用
- [外语考试]2017-2021年中国隔膜泵行业发展研究与
- [外语考试]神经内科下半年专科考试及答案
- [外语考试]园林景观设计规范标准
- [外语考试]2018八年级语文下册第一单元4合欢树习
- [外语考试]分布式发电及微网运行控制技术应用
- [外语考试]三人行历史学笔记:中世纪人文主义思想
- [外语考试]2010届高考复习5年高考3年联考精品历史
- [外语考试]挖掘机驾驶员安全生产责任书
- [外语考试]某211高校MBA硕士毕业论文开题报告(范
- 用三层交换机实现大中型企业VLAN方案
- 斯格配套系种猪饲养管理
- 涂层测厚仪厂家直销
- 研究生学校排行榜
- 鄱阳湖湿地景观格局变化及其驱动力分析
- 医学基础知识试题库
- 2010山西省高考历年语文试卷精选考试技
- 脉冲宽度法测量电容
- 谈高职院校ESP教师的角色调整问题
- 低压配电网电力线载波通信相关技术研究
- 余额宝和城市商业银行的转型研究
- 篮球行进间运球教案
- 气候突变的定义和检测方法
- 财经大学基坑开挖应急预案
- 高大支模架培训演示
- 一种改进的稳健自适应波束形成算法
- 2-3-鼎视通核心人员薪酬股权激励管理手
- 我国电阻焊设备和工艺的应用现状与发展
- MTK手机基本功能覆盖测试案例
- 七年级地理教学课件上册第四章第一节




