第十一讲 数字后端电路实现-布局布线与验证
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• • • • • • • • 读取库文件和门级网表 版图布局和电源布局 放置标准单元 时钟树综合 添加填充 电源布线和布线 寄生参数提取和时序分析 保存结果
布局布线——准备文件
• *.LEF: Library Exchange Format
– 厂家工艺库lef文件,含有标准单元库的布局布 线信息;
DEF文件内容
DESIGN NAME ; 顶层模块名 UNITS DISTANCE MICRONS 100 ; COMPONENTS 8 ; - pad_dirty_VDD pcxvd2 ; 定义电源地PAD和 - pad_dirty_VSS pcxvs2 ; CORENER PAD - pad_core_VDD pcxvd1 ; - pad_core_VSS pcxvs1 ; 为何这么定义,与 - pad_CORNER1 PADCORNER ; 版图怎么对应? - pad_CORNER2 PADCORNER ; - pad_CORNER3 PADCORNER ; PAD的选择基于什 - pad_CORNER4 PADCORNER ; 么考虑? END COMPONENTS 对于大设计,怎么 …
逻辑综合——tcl脚本文件
(接上页) write -output top.db -hier write_script -full_path_lib_name -output top.constr write_constraints -format sdf-v2.1 -max_path_timing -max_paths 1000 -output top_constr.sdf set verilogout_single_bit "true" write top -format verilog -output top_post.v -hier write_sdf -context verilog top.sdf
逻辑综合——约束条件
• 用tcl方式启动dc
– >dc_shell-t
• 读取top.v,设置当前综合模块 • 把时钟信号和Pad设置成为不被综合
– 时钟树在下一步布局布线时处理 – Pad没有逻辑功能、仅提供输入输出负载
• 设置连线负载 • 设置时钟约束
逻辑综合——综合并保存结果
• • • • 用compile命令进行综合 保存设计库文件 保存综合后门级网表 保存时序信息
设计介绍——设计要求
• 数字分频器 • 输入输出时钟周期 满足: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
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
设计打包
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;
以上命令在dc_shell-t>的状态下执行
逻辑综合——补充
• 编写脚本文件后,可以直接执行
– dc_shell-t>source 脚本文件名
• 除了tcl方式,还可以采用其他方式使用DC • 对于综合后的网表和时序,应当进行仿真 • 使用man、help、sold获取dc使用的帮助
布局布线——流程综述
?
改进?Leabharlann Baidu
… SPECIALNETS 5 ; - gnd! ( pad_* gnd! ) ( pad_*_VSS core ) + USE GROUND ; - vdd! ( pad_* vdd! ) ( pad_*_VDD core ) + USE POWER ; - gnd1! ( pad_* gnd1! ) + USE GROUND ; - vdd1! ( pad_* vdd1! ) + USE POWER ; - gnd2! ( pad_* gnd2! ) + USE GROUND ; END SPECIALNETS END DESIGN - gnd1! ( pad* gnd1! ) + USE GROUND ; - gnd2! ( pad* gnd2! ) + USE GROUND ; - gnd! ( pad* gnd! ) ( pad_*_VSS core ) + USE GROUND ; - vdd1! ( pad* vdd1! ) + USE POWER ; - vdd! ( pad* vdd! ) ( pad_*_VDD core ) + USE POWER ;
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]));
• TLF时序信息文件
– csmc06core_un.tlf 和 csmc06pad_un.tlf – 作用:包括了lef文件中对应的各种延时信息。
• SDF时序约束文件
– DC综合后生成,告诉encounter时序约束信息
布局布线——设计导入电源
布局布线——设计导入完成
• 可以在Design Import 对话框中选择Save存 储导入的设置 • 导入完成如图所示, 信号PAD、标准单元 都有了。但是缺少电 源PAD,需要导入含 有电源PAD信息的 DEF文件
后端设计
布局布线 Soc Encounter
DRC和LVS
RC参数提取
dracula
N
Timing Ok?
Tape out
Cell-based ASIC
怎样实现自动布局布线?对标准单元有什么要求?
?
综合出来的网表对应于哪个部分? 还缺少什么?
Cell-based ASIC
简单的布局布线流程
时序驱动的布局布线流程
• *.DEF: Design Exchange Format
– 厂家给了对电源和CORNER PAD进行声明的 DEF文件
• *.CTLF: Compiled Timing Library Format
– 厂家工艺库tlf文件,含有布局布线时序信息
LEF内容
一个标准单 元的定义
MACRO AN02D1 CLASS CORE ; SYMMETRY X Y ; FOREIGN AN02D1 0.00 0.00 ; ORIGIN 0.00 0.00 ; SIZE 11.50 BY 23.00 ; SITE standard ; PIN vdd! USE POWER ; SHAPE FEEDTHRU ; DIRECTION INOUT ; PORT LAYER metal1 ; RECT 0.00 18.80 11.50 21.60 ; END END vdd! … PIN A DIRECTION INPUT ; PORT LAYER metal2 ; RECT 0.40 8.25 1.90 9.75 ; END END A OBS LAYER metal1 ; RECT 0.00 0.00 11.50 23.00 ; END END AN02D1
设计介绍——前仿真
• 编写testbench文件 • 仿真波形如下图所示,随着分频系数的不同,输 出时钟频率成倍变化
逻辑综合——准备文件
• 准备库文件 • 在.synopsys_dc.setup中加入综合库的位置 • 查阅库中doc目录下的相关pdf文件,选择 合适的输入输出和时钟pad • 准备打包文件top.v,给源程序加上输入输 出的pad,以便综合工具优化驱动和负载
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
布局布线——启动
• 在工作目录命令行输 入:
encounter
• 图形界面从菜单 design 选择 菜单项 design import • 在design import对话 框中填入相应文件
布局布线——文件说明
• 综合后网单文件:*.v和顶层模块名 • LEF工艺文件
– 依次读入:csmc06tech_un.lef, csmc06core_un.lef, csmc06pad_un.lef – 作用:其中定义了标准单元的大小,几何形状,管脚 位置,以及布局布线所用的线宽、layout层号、所用通 孔大小。
第十一讲 数字后端电路实现 ——布局布线与验证
清华大学微电子所 李福乐 黎征
目录
• 布局布线引言 • 用一个数字分频器设计的例子来说明数字 电路的基本布局布线过程
– 设计介绍(数字分频器设计) – 逻辑综合(Synopsys DC) – 布局布线 (Cadence Soc Encounter)
• Cell-based DRC & LVS
– 作为综合后仿真的时序参数 – 作为布局布线的时钟约束
逻辑综合——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 (下页续)
布局布线——准备文件
• *.LEF: Library Exchange Format
– 厂家工艺库lef文件,含有标准单元库的布局布 线信息;
DEF文件内容
DESIGN NAME ; 顶层模块名 UNITS DISTANCE MICRONS 100 ; COMPONENTS 8 ; - pad_dirty_VDD pcxvd2 ; 定义电源地PAD和 - pad_dirty_VSS pcxvs2 ; CORENER PAD - pad_core_VDD pcxvd1 ; - pad_core_VSS pcxvs1 ; 为何这么定义,与 - pad_CORNER1 PADCORNER ; 版图怎么对应? - pad_CORNER2 PADCORNER ; - pad_CORNER3 PADCORNER ; PAD的选择基于什 - pad_CORNER4 PADCORNER ; 么考虑? END COMPONENTS 对于大设计,怎么 …
逻辑综合——tcl脚本文件
(接上页) write -output top.db -hier write_script -full_path_lib_name -output top.constr write_constraints -format sdf-v2.1 -max_path_timing -max_paths 1000 -output top_constr.sdf set verilogout_single_bit "true" write top -format verilog -output top_post.v -hier write_sdf -context verilog top.sdf
逻辑综合——约束条件
• 用tcl方式启动dc
– >dc_shell-t
• 读取top.v,设置当前综合模块 • 把时钟信号和Pad设置成为不被综合
– 时钟树在下一步布局布线时处理 – Pad没有逻辑功能、仅提供输入输出负载
• 设置连线负载 • 设置时钟约束
逻辑综合——综合并保存结果
• • • • 用compile命令进行综合 保存设计库文件 保存综合后门级网表 保存时序信息
设计介绍——设计要求
• 数字分频器 • 输入输出时钟周期 满足: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
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
设计打包
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;
以上命令在dc_shell-t>的状态下执行
逻辑综合——补充
• 编写脚本文件后,可以直接执行
– dc_shell-t>source 脚本文件名
• 除了tcl方式,还可以采用其他方式使用DC • 对于综合后的网表和时序,应当进行仿真 • 使用man、help、sold获取dc使用的帮助
布局布线——流程综述
?
改进?Leabharlann Baidu
… SPECIALNETS 5 ; - gnd! ( pad_* gnd! ) ( pad_*_VSS core ) + USE GROUND ; - vdd! ( pad_* vdd! ) ( pad_*_VDD core ) + USE POWER ; - gnd1! ( pad_* gnd1! ) + USE GROUND ; - vdd1! ( pad_* vdd1! ) + USE POWER ; - gnd2! ( pad_* gnd2! ) + USE GROUND ; END SPECIALNETS END DESIGN - gnd1! ( pad* gnd1! ) + USE GROUND ; - gnd2! ( pad* gnd2! ) + USE GROUND ; - gnd! ( pad* gnd! ) ( pad_*_VSS core ) + USE GROUND ; - vdd1! ( pad* vdd1! ) + USE POWER ; - vdd! ( pad* vdd! ) ( pad_*_VDD core ) + USE POWER ;
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]));
• TLF时序信息文件
– csmc06core_un.tlf 和 csmc06pad_un.tlf – 作用:包括了lef文件中对应的各种延时信息。
• SDF时序约束文件
– DC综合后生成,告诉encounter时序约束信息
布局布线——设计导入电源
布局布线——设计导入完成
• 可以在Design Import 对话框中选择Save存 储导入的设置 • 导入完成如图所示, 信号PAD、标准单元 都有了。但是缺少电 源PAD,需要导入含 有电源PAD信息的 DEF文件
后端设计
布局布线 Soc Encounter
DRC和LVS
RC参数提取
dracula
N
Timing Ok?
Tape out
Cell-based ASIC
怎样实现自动布局布线?对标准单元有什么要求?
?
综合出来的网表对应于哪个部分? 还缺少什么?
Cell-based ASIC
简单的布局布线流程
时序驱动的布局布线流程
• *.DEF: Design Exchange Format
– 厂家给了对电源和CORNER PAD进行声明的 DEF文件
• *.CTLF: Compiled Timing Library Format
– 厂家工艺库tlf文件,含有布局布线时序信息
LEF内容
一个标准单 元的定义
MACRO AN02D1 CLASS CORE ; SYMMETRY X Y ; FOREIGN AN02D1 0.00 0.00 ; ORIGIN 0.00 0.00 ; SIZE 11.50 BY 23.00 ; SITE standard ; PIN vdd! USE POWER ; SHAPE FEEDTHRU ; DIRECTION INOUT ; PORT LAYER metal1 ; RECT 0.00 18.80 11.50 21.60 ; END END vdd! … PIN A DIRECTION INPUT ; PORT LAYER metal2 ; RECT 0.40 8.25 1.90 9.75 ; END END A OBS LAYER metal1 ; RECT 0.00 0.00 11.50 23.00 ; END END AN02D1
设计介绍——前仿真
• 编写testbench文件 • 仿真波形如下图所示,随着分频系数的不同,输 出时钟频率成倍变化
逻辑综合——准备文件
• 准备库文件 • 在.synopsys_dc.setup中加入综合库的位置 • 查阅库中doc目录下的相关pdf文件,选择 合适的输入输出和时钟pad • 准备打包文件top.v,给源程序加上输入输 出的pad,以便综合工具优化驱动和负载
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
布局布线——启动
• 在工作目录命令行输 入:
encounter
• 图形界面从菜单 design 选择 菜单项 design import • 在design import对话 框中填入相应文件
布局布线——文件说明
• 综合后网单文件:*.v和顶层模块名 • LEF工艺文件
– 依次读入:csmc06tech_un.lef, csmc06core_un.lef, csmc06pad_un.lef – 作用:其中定义了标准单元的大小,几何形状,管脚 位置,以及布局布线所用的线宽、layout层号、所用通 孔大小。
第十一讲 数字后端电路实现 ——布局布线与验证
清华大学微电子所 李福乐 黎征
目录
• 布局布线引言 • 用一个数字分频器设计的例子来说明数字 电路的基本布局布线过程
– 设计介绍(数字分频器设计) – 逻辑综合(Synopsys DC) – 布局布线 (Cadence Soc Encounter)
• Cell-based DRC & LVS
– 作为综合后仿真的时序参数 – 作为布局布线的时钟约束
逻辑综合——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 (下页续)