第十一讲 数字后端电路实现-布局布线与验证剖析
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
逻辑综合——约束条件
• 用tcl方式启动dc
– >dc_shell-t
• 读取top.v,设置当前综合模块 • 把时钟信号和Pad设置成为不被综合
– 时钟树在下一步布局布线时处理 – Pad没有逻辑功能、仅提供输入输出负载
• 设置连线负载 • 设置时钟约束
逻辑综合——综合并保存结果
• • • • 用compile命令进行综合 保存设计库文件 保存综合后门级网表 保存时序信息
– 作为综合后仿真的时序参数 – 作为布局布线的时钟约束
逻辑综合——tcl脚本文件
read_verilog top.v current_design top set_dont_touch [get_cells pad_*] set_max_transition 0.5 [current_design] set_max_fanout 24 [current_design] create_clock -period 3 [get_ports clkin] set_clock_uncertainty 0.5 clkin set_dont_touch_network clkin set_wire_load_model -name 0x150k compile -map high -boundary_optimization change_names -rules asic_core_rules -hierarchy change_names -rules asic_top_rules –verbose (下页续)
设计介绍——设计要求
• 数字分频器 • 输入输出时钟周期 满足:Tout = 2(N+1) Tin • 用于DPLL(数字锁相 环)电路中 • 纯数字电路实现
Clock IN Clock OUT
分频系数N
数字分频器
设计介绍——Verilog实现
module divder (clkin, rst, divcnt, enable, clkout); input clkin, rst, enable; input [3:0] divcnt; output clkout; reg [3:0] cnt; reg [3:0] divcntreg; reg clkout; always @(posedge clkin or posedge rst) begin if (rst == 1'b1) begin cnt <= 4'b0; divcntreg <= 4'b0; clkout <= 1'b0; end else begin if ((divcntreg != divcnt) && (enable == 1'b1)) begin cnt <= 4'b0; divcntreg <= divcnt; clkout <= 1'b0; end else begin if (cnt == divcntreg) begin clkout <= ~clkout; cnt <= 4'b0; end else cnt <= cnt + 4'b1; end end end endmodule
后端设计
布局布线 Soc Βιβλιοθήκη Baiduncounter
DRC和LVS
RC参数提取
dracula
N
Timing Ok?
Tape out
Cell-based ASIC
怎样实现自动布局布线?对标准单元有什么要求?
?
综合出来的网表对应于哪个部分? 还缺少什么?
Cell-based ASIC
简单的布局布线流程
时序驱动的布局布线流程
设计打包
Pad_vdd
Core
Pad_in
Pad_out
Pad_vss
Chip
结构描述
?
核心设计在何时打包, 即加上I/O PAD
逻辑综合——top.v
`include "divider.v"
module top(clkin, rst, divcnt, enable, clkout); input clkin, rst, enable; input [3:0] divcnt; output clkout; wire clkin_core, rst_core, enable_core, clkout_core; wire [3:0] divcn_core;
pcxc32 pad_cki (.CLK(clkin), .CP(clkin_core)); pcxc52 pad_cko (.CLK(clkout_core), .CP(clkout)); divider udiv (.clkin(clkin_core), .rst(rst_core), .divcnt(divcn_core), .enable(enable_c ore), .clkout(clkout_core)); endmodule
第十一讲 数字后端电路实现 ——布局布线与验证
清华大学微电子所 李福乐 黎征
目录
• 布局布线引言 • 用一个数字分频器设计的例子来说明数字 电路的基本布局布线过程
– 设计介绍(数字分频器设计) – 逻辑综合(Synopsys DC) – 布局布线 (Cadence Soc Encounter)
• Cell-based DRC & LVS
设计介绍——前仿真
• 编写testbench文件 • 仿真波形如下图所示,随着分频系数的不同,输 出时钟频率成倍变化
逻辑综合——准备文件
• 准备库文件 • 在.synopsys_dc.setup中加入综合库的位置 • 查阅库中doc目录下的相关pdf文件,选择 合适的输入输出和时钟pad • 准备打包文件top.v,给源程序加上输入输 出的pad,以便综合工具优化驱动和负载
pcxd00 pad_rst (.PAD(rst), .C(rst_core)); pcxd00 pad_enb (.PAD(enable), .C(enable_core)); (下页续)
逻辑综合——top.v
(接上页) pcxd00 pad_cn0 (.PAD(divcnt[0]), .C(divcn_core[0])); pcxd00 pad_cn1 (.PAD(divcnt[1]), .C(divcn_core[1])); pcxd00 pad_cn2 (.PAD(divcnt[2]), .C(divcn_core[2])); pcxd00 pad_cn3 (.PAD(divcnt[3]), .C(divcn_core[3]));
Typical Cell-based flow
前端设计
系统定义 行为建模 可综合 代码 Verilog
N
仿真 Ok? Y N
逻辑仿真 Verilog-xl
C/HDL/MATLAB
(NC verilog) 仿真 Ok? Y Design 逻辑综合 Compiler
Timing Ok? Y
N
Typical Cell-based flow