已阅读5页,还剩31页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基本后端流程 漂流基本后端流程 漂流 input clk clr input 7 0 data1 data2 output reg 15 0 dataout always posedge clk begin if clr begin dataout 0 end else begin dataoutmux v 输入约束文件 File excute script verti con 之后会产生 mux sv mux sdc mux sdf mux ddc 等文件 4 时序分析 综合以后我们需要分析一下时序 看时序是否符合我们的要求 综合实际上是一个 setup 时间的满足过程 但是我们综合的时候 连线的负载只是库提供的 即上面的 wire load 并不是实际的延时 所以一般做完综合以后 时间余量 slack 应该为时钟 的 30 经验值 以便为后面实际布局布线留下充足的延时空间 因为如果 slack 太小 甚至接近于 0 虽然我们看起来是没有时序违规的 但是实际布局以后 时序肯定无法满 足 使用 report timing 命令 可以查看时序分析报告 Report timing path full delay max max paths 1 sort by group Design mux Version D 2010 03 SP1 Date Fri Jul 2 12 29 44 2010 Operating Conditions typical Library typical 模型库 Wire Load Model Mode enclosed Startpoint data2 4 input port clocked by clk Endpoint dataout reg 15 rising edge triggered flip flop clocked by clk Path Group clk Path Type max Des Clust Port Wire Load Model Library mux tsmc18 wl10 typical 线载模型及库 Point Incr Path clock clk rise edge 0 00 0 00 clock network delay ideal 0 00 0 00 input external delay 0 50 0 50 f data2 4 in 0 01 0 51 f mult 14 b 4 mux DW mult uns 0 0 00 0 51 f mult 14 U131 Y INVX1 0 54 1 05 r mult 14 U161 Y NOR2X1 0 14 1 18 f mult 14 U39 S CMPR42X1 0 68 1 87 f mult 14 U12 CO ADDFX2 0 32 2 19 f mult 14 U11 CO ADDFX2 0 23 2 42 f mult 14 U10 CO ADDFX2 0 23 2 65 f mult 14 U9 CO ADDFX2 0 23 2 88 f mult 14 U8 CO ADDFX2 0 23 3 10 f mult 14 U7 CO ADDFX2 0 23 3 33 f mult 14 U6 CO ADDFX2 0 23 3 56 f mult 14 U5 CO ADDFX2 0 23 3 79 f mult 14 U4 CO ADDFX2 0 23 4 02 f mult 14 U3 CO ADDFX2 0 23 4 25 f mult 14 U2 CO ADDFX2 0 22 4 47 f mult 14 product 15 mux DW mult uns 0 0 00 4 47 f dataout reg 15 RN DFFTRXL 0 00 4 47 f data arrival time 4 47 clock clk rise edge 10 00 10 00 clock network delay ideal 0 30 10 30 clock uncertainty 0 10 10 20 dataout reg 15 CK DFFTRXL 0 00 10 20 r library setup time 0 19 10 01 data required time 10 01 data required time 10 01 data arrival time 4 47 slack MET 5 55 我们来看以上报告 dc 报告的时候会显示出关键路径 即延时最大的路径 时序分析 包括两段 前面一段是信号的延迟时间 即data arrival time 为 4 47 下面是计算要 求时间 也即相对于时钟 设计所能忍受的最大延时 由于到达寄存器 clk 端延时 即 clock network delay 所以设计增加了 0 30 的余量 同样由于时钟的不确定度 可能提前也可能延后 0 1 我们取最坏情况 就是时钟超前 0 1 则时间余量减去 0 1 最后一个是门的建立时间要求 是 0 19 最后得到数据的要求时间 Slack 是要求时间减去到达时间的差值 slack 越大越好 越大说明留给布局布线 的时序越宽松 从报告中我们看出 时序余量为 5 55 说明时序达到了要求 足够满 足我们以后布局布线的时序要求 当然 我们有专门的时序分析工具 primetime 下面会稍微介绍 2 形式验证形式验证 1 怎么保证综合前和综合后的网表逻辑功能是一致的呢 对门级网表进行动态仿真 又 太浪费时间 于是 一款强大的验证工具 formality 给了我们很好的帮助 2 形式验证数据准备 综合前 RTL 代码 综合后的网表 综合所用到的库 3 验证过程如下 1 首先我们打开 formality 命令为 fm shell 命令行界面 formality 图形界面 初学 者一般使用图形界面 使用图形界面的时候 工具会自动产生一个 log 文件 记录命令 我们可以将这个文件内容做一个 fms 格式 这样在下次验证的时候可以使用命令界面 2 打开 formality 如下 第一步 首先我们加入原 RTL 代码 reference read design file verilog mux v 选择好 以后 load file 第二步 然后选择库 没加库之前 FM 会自动加载与工艺无关的库 所以我们要自己把 自己的目标库加上去 reference read DB libarary DB 选择 typical db 第三步 设置 top 名 reference set top design 我们选择 mux 为 top 名 同样的方法对网表进行设置 第二个菜单栏 implementation 然后转到第四栏 点击 run matching 最后转到第五栏 verify 如果网表无错 会显示验证通过 3 静态时序分析静态时序分析 静态时序分析主要针对大型 ASIC 设计 4 自动布局布线自动布局布线 1 数据准备 第一 需要综合后的网表以及时序约束文件 mux sv mux sdc 第二 需要自动布局布线的物理库 lef 文件 这里用到 tsmc18 6lm cic lef tsmc18 6lm antenna cic lef 为了能够了解 lef 文档的作用 这里对 lef 做简单的介绍 lef 一般分为两种 一种是技术物理库 主要包含工艺信息 设计规则信息 金属通孔信息等 下例是对金属 一层的定义 TYPE 指明 METAL1 是可布线层 WIDTH 定义的是 METAL1 的默认布线宽 度 SPACING 用于设定 METAL1 布线间距 DIRECTION HORIZONTAL 指明 METAL1 是用于水平走线 当然这并不意味着它不能垂直走线 在一些布线资源较少的区域 还是 可以选择垂直布线的 具体介绍 可以参考相关技术文档 LAYER METAL1 TYPE ROUTING WIDTH 0 230 MAXWIDTH 9 9 AREA 0 202 SPACING 0 230 SPACING 0 6 RANGE 10 0 0 PITCH 0 560 DIRECTION HORIZONTAL EDGECAPACITANCE 9 1090e 05 END METAL1 另外一种就是单元物理库 定义了单元库中各单元的信息 文件又有两部分一种是 SITE 语句对布局 placement 最小单位的定义 另一部分是采用 MACRO 语句对单元属性及几 何形状的描述 下例是对一个与门为例来看看 lef 是如何描述它的 MACRO 是单元定义的 关键字 每一个 MACRO 代表一个单元 CLASS core 说明该单元是用于芯片的核心区 SIZE 确定了单元的面积大小 比如 5 04 是代表该单元的高度 后面我们做单元供电 route 的时候 可以看到它们的宽度就是这个数值 再后面就是定义引脚 A B Y VDD VSS 等 MACRO AND2X1 CLASS CORE FOREIGN AND2X1 0 000 0 000 ORIGIN 0 000 0 000 LEQ AND2XL SIZE 2 640 BY 5 040 SYMMETRY x y SITE tsm3site PIN Y DIRECTION OUTPUT PORT LAYER METAL1 RECT 2 355 2 380 2 500 2 660 END END Y PIN B DIRECTION INPUT PORT LAYER METAL1 RECT 0 800 2 315 1 215 2 895 END END B PIN A DIRECTION INPUT PORT LAYER METAL1 RECT 0 150 1 820 0 565 2 315 END END A PIN VSS DIRECTION INOUT USE ground SHAPE ABUTMENT PORT LAYER METAL1 RECT 1 790 0 400 2 640 0 400 RECT 1 450 0 400 1 790 0 575 RECT 0 000 0 400 1 450 0 400 END END VSS PIN VDD DIRECTION INOUT USE power SHAPE ABUTMENT PORT LAYER METAL1 RECT 1 755 4 640 2 640 5 440 END END VDD OBS LAYER METAL1 RECT 1 835 1 935 1 885 2 355 END END AND2X1 第三 时序库文件 typical lib 也就是时序文件 定义了门的各种时序信息 某种意义来 讲 这个和综合使用的 db 库是等价的 2 布局布线过程 第一步 打开 encounter 把数据输入 另外在 advanced 栏的 Power 相应位置填上 VDD 和 VSS 如下图 设置完以后 记得把设置的配置文件做一个 save 以便于下次使用 第二步 打开以后 我们可以看到芯片区域 左边粉红色的就是标准单元 中间那个就是 我们要设计的区域 64 是指 cell 面积的占有率 一般来说控制在 70 左右 布线的时候 不会引起拥塞 另外我们需要对芯片进行稍微的更改 Floorplan specify floorplan 将 core to IO 那些项都 填上 45 留给电源环的放置 第三步 添加电源环 设置如下图 NET 填写 VDD 和 VSS layer 选择顶层的两层金属 宽度设置为 20 这个不定 可以根据 实际设计来定 offset 选择 center in channel 则电源环会被设置在 IO 与 core 之间 之后电源环就加进去了 当然这是一个小电路 电源规划比较简单 对于一个复杂的电路 还需要横竖添加 stripes 降低 IRdrop 第四步 自动布局以及布置标准单元 因为此设计较小 并没有 block 所以可以直接进行 标准单元的放置 Place standard cells and blocaks OK 然后我们发现标准单元已经被加进去了 第五步 布置好了以后 我们需要将电源 地 等接口先连接起来 首先我们在 floorplan 中选择 global net connection 分别将 VDD VSS 等都连接起来 然后我们需要 specify route 将电源和地线先连接起来 选择 route specify route 因为我们这个设计只有标准单元 所以我们只要选择标准单元的布线即可 完成以后 点击 OK 会得到下面的图 每行的 row 都有线连接到外面的电源环 第六步 时钟树综合 CTS 这是一个 APR 设计中最重要的一环 为什么要进行时钟树 综合呢 简单地说 因为信号传输的延时 我们需要让相应路径的时钟路径的也具有同样 的延时 通过添加时钟缓冲器的方法 来消除各路径的建立时间 具体请参考相关书籍和 资料 添加好时钟树以后的版图如下 加了时钟树以后的版图密集了很多 因为加了很多 buf 时钟树的脚本 AutoCTSRootPin clk Period 10ns MaxDelay 500ps set clock latency MinDelay 0ps set clock latency MaxSkew 100ps SinkMaxTran 400ps BufMaxTran 400ps Obstruction NO DetailReport YES PadBufAfterGate NO RouteClkNet NO PostOpt YES OptAddBuffer YES OptAddBufferLimit 100 NoGating NO Buffer CLKBUFX1 CLKBUFXL CLKBUFX2 CLKBUFX3 CLKBUFX4 CLKBUFX8 CLKBUFX12 CLKBUFX16 CLKBUFX20 CLKINVXL CLKINVX1 CLKINVX2 CLKINVX3 CLKINVX4 CLKINVX8 CLKINVX12 CLKINVX16 CLKINVX20 END 然后将脚本选中 并进行时钟树综合 第七步 优化设计 命令 optDesign postCTS 然后 report timing 查看时序报告 确定无 违规 再进行完全布线 第八步 完全布线 route nanoroute route 之后得到的版图如下所示 第九步 保存设计 提取需要的数据 这里特别注意提取 gds 文件的时候 需要指定库文件中的 streamOut map 文件 和 merge gds tsmc18 core gds 文件 如图所示 保存网表 并将此版图提取的网表做一次 formality 与原代码匹配成功 再提取 def 文件 保存为 mux def 5 第二次静态时序分析第二次静态时序分析 用版图实际提取的延时文件进行用版图实际提取的延时文件进行 6 APR 后仿真后仿真 用 modelsim 对版图提取的网表和 sdf 文件进行仿真 7 用用 calibre 对版图进行对版图进行 DRC 及其及其 LVS 验证验证 在做这步之前 我们需要把相关的文档拷贝到 icfb 的工作目录下 Encounter 导出的 gds 文档 这里是 mux8 gds 注意 merge 库的 map 文件 技术文档如 0 18um Virtuoso4 4 tf 可以在厂家提供的库中去找 显示文件 display drf Caliber 验证文件 drc lvs 文档 第一步 将 encounter 的版图数据导入 virtuoso 打开 icfb 这里我们引用了新的逻辑 注意这个 mux 1 和之前的 没半点关系 只是为了体现调用关系随便加的一个而已 input clk clr input 7 0 a b output 15 0 y reg 15 0 y always posedge clk begin if clr begin y 0 end else begin y a b end end endmodule module PAD clk pcb clk core clr pcb clr core data1 pcb data1 core data2 pcb data2 core d ataout core dataout pcb 这是 PAD 模块 注意结合前面的框图是想想是如何加的 input clk pcb clr pcb output clk core clr core input 7 0 data1 pcb data2 pcb output 7 0 data1 core data2 core input 15 0 dataout core output 15 0 dataout pcb PDIDGZ PAD CLK PAD clk pcb C clk core PDIDGZ PAD CLR PAD clr pcb C clr core PDIDGZ PAD DATA1 0 PAD data1 pcb 0 C data1 core 0 PDIDGZ PAD DATA1 1 PAD data1 pcb 1 C data1 core 1 PDIDGZ PAD DATA1 2 PAD data1 pcb 2 C data1 core 2 PDIDGZ PAD DATA1 3 PAD data1 pcb 3 C data1 core 3 PDIDGZ PAD DATA1 4 PAD data1 pcb 4 C data1 core 4 PDIDGZ PAD DATA1 5 PAD data1 pcb 5 C data1 core 5 PDIDGZ PAD DATA1 6 PAD data1 pcb 6 C data1 core 6 PDIDGZ PAD DATA1 7 PAD data1 pcb 7 C data1 core 7 PDIDGZ PAD DATA2 0 PAD data2 pcb 0 C data2 core 0 PDIDGZ PAD DATA2 1 PAD data2 pcb 1 C data2 core 1 PDIDGZ PAD DATA2 2 PAD data2 pcb 2 C data2 core 2 PDIDGZ PAD DATA2 3 PAD data2 pcb 3 C data2 core 3 PDIDGZ PAD DATA2 4 PAD data2 pcb 4 C data2 core 4 PDIDGZ PAD DATA2 5 PAD data2 pcb 5 C data2 core 5 PDIDGZ PAD DATA2 6 PAD data2 pcb 6 C data2 core 6 PDIDGZ PAD DATA2 7 PAD data2 pcb 7 C data2 core 7 PDO04CDG PAD DATAOUT 0 I dataout core 0 PAD dataout pcb 0 PDO04CDG PAD DATAOUT 1 I dataout core 1 PAD dataout pcb 1 PDO04CDG PAD DATAOUT 2 I dataout core 2 PAD dataout pcb 2 PDO04CDG PAD DATAOUT 3 I dataout core 3 PAD dataout pcb 3 PDO04CDG PAD DATAOUT 4 I dataout core 4 PAD dataout pcb 4 PDO04CDG PAD DATAOUT 5 I dataout core 5 PAD dataout pcb 5 PDO04CDG PAD DATAOUT 6 I dataout core 6 PAD dataout pcb 6 PDO04CDG PAD DATAOUT 7 I dataout core 7 PAD dataout pcb 7 PDO04CDG PAD DATAOUT 8 I dataout core 8 PAD dataout pcb 8 PDO04CDG PAD DATAOUT 9 I dataout core 9 PAD dataout pcb 9 PDO04CDG PAD DATAOUT 10 I dataout core 10 PAD dataout pcb 10 PDO04CDG PAD DATAOUT 11 I dataout core 11 PAD dataout pcb 11 PDO04CDG PAD DATAOUT 12 I dataout core 12 PAD dataout pcb 12 PDO04CDG PAD DATAOUT 13 I dataout core 13 PAD dataout pcb 13 PDO04CDG PAD DATAOUT 14 I dataout core 14 PAD dataout pcb 14 PDO04CDG PAD DATAOUT 15 I dataout core 15 PAD dataout pcb 15 PVDD1DGZ vdd1 现在不用加的 PVDD1DGZ vdd2 PVDD1DGZ vdd3 PVDD1DGZ vdd4 PVSS1DGZ vss1 PVSS1DGZ vss2 PVSS1DGZ vss3 PVSS1DGZ vss4 PCORNERDG c1 PCORNERDG c2 PCORNERDG c3 PCORNERDG c4 endmodule 顶层模块 module top clock clear da1 da2 dataout out input clock clear input 7 0 da1 da2 output 15 0 dataout out wire clk core clr core wire 7 0 data1 core data2 core wire 15 0 dataout core wire 15 0 y PAD PAD TOP clk pcb clock clk core clk core clr pcb clear clr core clr core data1 pcb da1 data1 core data1 core data2 pcb da2 data2 core data2 core d ataout core dataout core dataout pcb dataout out mux 1 mux 1 clk clk core clr clr core a data1 core b data2 core y y mux mutiple clk clk core clr clr core data1 y 15 8 data2 y 7 0 dataout dataout core 这里是对硬核的调用 endmodule 第三步 逻辑综合 注意的是 我们在逻辑综合之前 需要加如 mux 的 db 库文件 此文件由 encounter 布局布 线以后产生的延时文件再经过 pt 静态时序分析以后产生 我们给顶层模块加如约束 Current design top link create clock period 10 get ports clock set clock latency source max 0 2 get ports clock set clock latency max 0 1 get ports clock set clock uncertainty setup 0 01 get ports clock set input delay max 0 5 clock clock all inputs set output delay max 0 5 clock clock all outputs set driving cell lib cell INVX4 all inputs set load pin load 0 all outputs set wire load model name tsmc18 wl10 library typical set wire load mode enclosed set dont touch mux 注意此处 就是综合的时候不针对 mux 进行综合 综合工具会自 动跨越边界对其他逻辑进行综合 set dont touch network all clocks compile boundary change names rule verilog hier write format verilog hier output top sv write format ddc hier output top ddc write sdf top sdf write sdc top sdc 第四步 布局布线 用综合得到的网表 top sv 和约束文件 sdc 并将之前的 mux 模块的 lef 文档准备好 这里碰到了一个问题 在逻辑综合之前的代码我已经加如了 PAD 的 VDD VSS 和 corner 但是综合完以后就不见了 原因不明 这时在布局之前就要手动添加上去 数据准备 顶层模块网表文件 mux sv 物理库文件 tsmc18 6lm cic lef tech 以及 std 的 lef mux block lef 和 PAD 的 lef 时序文件 对应于上面的 lib 文件 typical lib block 的 lib 由 PT 产生 PAD 的 lib Io 文件 可以自己定义顶层端口的位置 下面会介如何做 io 文件 Sdc 文件 综合后产生的约束文件 Io 文件的设置 主要由四个方向决定 N W S E 就和我们英文里的四个方向的首字母一样 当然还有 NW WS SE NE 四个角 是用与 corner 的摆放 该设计有 34 个口 外加 8 个供 电 PAD 加上四个 CORNER 总共有 46 个 PAD 主要的是 42 个 PAD 我们可以将这 42 个 PAD 放到自己想设置的位置 对于一个真正的设计 要考虑以后连线的长度 内部模块 摆放位置等 来合理安排 io 的位置 如图所示为该设计的 PAD 布局图 DATA OUT 15 DATA OUT 14 DATA OUT 13 DATA OUT 12 DATA OUT 11 DATA OUT 10 DATA OUT 9 DATA OUT 8 vss1 vdd1 DATA OUT 7 DATA OUT 6 DATA OUT 5 DATA OUT 4 DATA OUT 0 DATA OUT 1 DATA OUT 2 DATA OUT 3 PAD CLR vss4 vdd4 DATA2 4 DATA2 5 DATA2 6 DATA2 7 DATA2 0 DATA2 1 DATA2 2 DATA2 3 DATA1 0 DATA1 1 DATA1 2 DATA1 3 DATA1 4 DATA1 5 DATA1 6 DATA1 7 PAD CLK vss3 vdd3 vss2 vdd2 TOP 根据此布局图 我们对此设计的 io 文件编辑如下 io 文件对应实际布局中的规则是 N 是 由 io 文件列表的顺序从左到右的放置 W 方向是由下到上的放置 S 同 N E 同 W Pad PAD TOP PAD DATAOUT 12 N Pad PAD TOP PAD DATAOUT 13 N Pad PAD TOP PAD DATAOUT 14 N Pad PAD TOP PAD DATAOUT 15 N Pad PAD TOP PAD CLK N Pad PAD TOP vss2 N Pad PAD TOP vdd2 N Pad PAD TOP PAD DATA1 0 N Pad PAD TOP PAD DATA1 1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年护理质控培训模拟试题(含答案)
- 2026年护理学导论考查模拟试题(含答案)
- 2026年茶艺师模拟试题(含答案)
- 2026年申论a类历年模拟题及答案详解
- 2026年土木工程检测模拟题及答案详解
- 2026年内部控制模拟题及答案详解
- 2026年费用类模拟试卷(含答案)
- 2026年电大物流模拟试卷(含答案)
- 2026年环保局环保模拟试题(含答案)
- 2026年安徽操作系统模拟试题(含答案)
- 头发移植课件
- 《深度学习与神经网络》全套教学课件
- GB/T 9535.2-2025地面用光伏组件设计鉴定和定型第2部分:试验程序
- 煤矿安全生产风险分级管控和隐患排查治理双重预防体系建设培训课件
- 全国民用爆炸物品信息管理系统领用发放手持机用户手册
- Colles骨折课件教学课件
- 委托检测服务合同协议书
- 长期总代理协议书范本
- 大学生职业规划大赛成长赛道
- NB-T+33008.1-2018电动汽车充电设备检验试验规范 第1部分:非车载充电机
- (正式版)SHT 3045-2024 石油化工管式炉热效率设计计算方法
评论
0/150
提交评论