1 / 74

自动布局布线软件

自动布局布线软件. 2012 年 04 月 18 日. 功能要求. 功. 能. 要. 求. 系统建模. 系统建模. 行为设计. 不满足. Verilog. /. VHDL. (. ). 不满足. 电路仿真. 行为仿真. 满足. 满足. 综合. 、. 优化. 手工设计. 网表. 版图. 不满足. 不满足. 时序仿真. 满足. 后仿真. 版图自动. 满足. 布局. 、. 布线. 流片. 、. 封装. 、. 测试. 不满足. 后仿真. 满足. 流片. 、. 封装. 、. 测试. IC 典型流程.

Download Presentation

自动布局布线软件

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 自动布局布线软件 2012年04月18日

  2. 功能要求 功 能 要 求 系统建模 系统建模 行为设计 不满足 Verilog / VHDL ( ) 不满足 电路仿真 行为仿真 满足 满足 综合 、 优化 手工设计 网表 版图 不满足 不满足 时序仿真 满足 后仿真 版图自动 满足 布局 、 布线 流片 、 封装 、 测试 不满足 后仿真 满足 流片 、 封装 、 测试 IC典型流程 数字VLSI 流程 模拟IC 流程 Matlab Matlab Modelsim, Questasim, Muxplus II Spectre Virtuoso, laker Design Compiler Astro, Encounter Spectre Calibre Modelsim, Questasim, Muxplus II

  3. 主要内容 • 自动布局布线基本概念 • 自动布局布线工具介绍 • Astro工具使用 • 后仿真 • 演示

  4. 自动布局布线基本概念 • 版图,GDS,(Graphic Data System),用来控制集成电路光掩膜绘制 。 • 自动布局+自动布线=画完版图

  5. 自动布局布线工具介绍 1.Synopsys的Astro。2002年以前叫Apollo,2007年以后软件名称改为IC Compiler(ICC) 。 2. Cadence的SOC Encounter

  6. 两个工具比较 工艺库格式不同,Astro需要二进制db格式,Encounter需要ASCII形式的.lef文件 Astro一个进程可以打开多个cell,命令行不占用Terminal,而Encounter一个进程只能打开一个cell,命令行占用Terminal。 Astro能读入GDS,支持CEL view,Encounter不支持读入GDS。 Astro没有提供Calibre的接口,不能读入Calibre DRC的结果,Encounter可以直接读入Calibre的运行结果

  7. 参考库 时序约束文件 IO管脚排列文件 工艺文件 门级网表 数据输入 布局规划 布线 布局 静态时序分析,后仿真 时钟综合 DRC、LVS 流片 Astro自动布局布线流程

  8. 数据输入 • 工艺库文件--是Foundry或IP提供商提供的各种库(标准单元库、IO库、SRAM库和IP库)和工艺文件 --网站下载 • 设计文件—网表文件(.sv文件)和时序约束文件(.sdc文件)--都是DC综合得到 • 管脚排列文件(.tdf文件)--手动编写,保存成XXX.tdf到任意你能找到目录里。 • 课件中是在软件启动目录下创建了一个data目录来保存tdf文件

  9. IO管脚排列文件 • IO顺序 • 插入一些特殊的IO单元: • IO电源 • IO地 • Corner

  10. IO管脚排列文件--tdf 注意空格 • ;1.1V digital core power/ground • insertPad "VDD" "PVDD1RN" "VDD" "VDD" • insertPad "VSS" "PVSS1RN" "VSS" "VSS" • ;3.3V digital IO power/ground • dbCreateCellInst (geGetEditCell) "" "PVDD2RN" "VDD_IO" "0" "No" '(0 0) "fsk0323" • dbCreateCellInst (geGetEditCell) "" "PVSS2RN" "VSS_IO" "0" "No" '(0 0) "fsk0323" • ;Corner cell • dbCreateCellInst (geGetEditCell) "" "PCORNERRN" "CORNER1" "0" "No" '(0 0) "fsk0323" • dbCreateCellInst (geGetEditCell) "" "PCORNERRN" "CORNER2" "0" "No" '(0 0) "fsk0323" • dbCreateCellInst (geGetEditCell) "" "PCORNERRN" "CORNER3" "0" "No" '(0 0) "fsk0323" • dbCreateCellInst (geGetEditCell) "" "PCORNERRN" "CORNER4" "0" "No" '(0 0) "fsk0323" • tdfPurgePadConstr • pad "CORNER1" "Bottom" • pad "CORNER2" "Right" • pad "CORNER3" "Top" • pad "CORNER4" "Left" • pad "VDD_IO" "left" 1 • pad "VSS_IO" "left" 2 • pad "data_in_block" "top" 1 • pad "fsk_out_block" "top" 2 • pad "VDD" "right" 1 • pad "VSS" "right" 2 • pad "clk_block" "bottom" 2 • pad "en_block" "bottom" 1 insertPad 使用方法: insertPad netName padCellName padName connectPin dbCreateCellInst 使用方法: dbCreateCellInst cellId childLibName chlidCellName chilidInstName rotationStr mirrorStr Points topCellName

  11. 工具启动 • 创建软件启动目录 mkdir astro • 进入软件启动目录 cd astro • 创建保存tdf文件的目录 data • source /opt/demo/synopsys.env • astro_shell &

  12. 工具界面 命令输入 例如:help “insertPad” 查看insertPad 命令使用方法

  13. 创建设计库 Technology File: /home/smic/smic_40/SCC40NLL_HS_RVT_V0p1a/astro/tf/scc40nll_hs_7lm_1tm.tf

  14. 打开设计库

  15. 任意名 设计文件导入1/3 逻辑综合后得到的网表的顶层模块名

  16. 设计文件导入2/3 • 设置 电源线VDD 地线VSS

  17. 设计文件导入3/3 /home/smic/smic_40/SCC40NLL_HS_RVT_V0p1a/astro/SCC40NLL_HS_RVT_V0p1 /home/smic/smic_40/SP40NLLD2RN_3P3V_V0p2/apollo/SP40NLLD2RN_3P3V_V0p1_7MT_1TM/ • 添加两个参考库 • 一个是标准单元 • 一个是IO

  18. 打开设计单元(Cell)

  19. 布局规划 • 确定芯片的尺寸、 • 模块的位置、 • 标准单元的排列形式、 • IO单元及宏单元的位置放置、 • 电源和地线的分布

  20. 布局规划--流程 1.装载IO管脚排列文件 整体规划 2.芯片面积、标准单元布局方式的选择 3.宏单元放置 1.将标准单元、IO单元和宏单元的电源、地端口与电源线、地线相连。 电源/地线规划 2.在核(Core)和IO单元之间加入电源/地环(ring)。 3.加Strap。 4.将芯片的Ring连接到电源/地IO的电源、地端口。 加Pad Filler 加布局障碍

  21. 整体规划—装载IO管脚排列文件

  22. 整体规划—标准单元布局 芯片面积受两方面因素决定: • pad限制的设计 (Pad Limited Design), IO数量较多。 • core限制的设计(Core Limited Design),标准单元和宏单元(SRAM和IP)的数量较多。

  23. 整体规划—标准单元布局 在设计窗口中选择 Design Setup->setup floorplan

  24. IO摆放 • IO之间的间距 取决于封装厂封 装水平

  25. 电源/地线规划 • 电源/地线网络分布在整个芯片,其作用: • 为每一个单元提供稳定的电压 • 直接关系到芯片的性能 • 一个完整的电源/地网络的设计还应考虑: • 电压降(lR Drop) • 电迁移(EM,Electromigration)

  26. 电源/地 环规划 • 在核(Core)和IO单元之间加入电源/地环(ring)。 • 连接内部电源/地和电源/地IO的纽带。 • 电源/地环上的电流是最大的,因此它的线宽也最大。(一般是1mA/um ) • 在设计窗口中选择PreRoute->Rectangular

  27. 电源/地线规划 • 将标准单元和宏单元的电源、地端口与电源线、地线进行逻辑相连。 • 在设计窗口中选择Pre Route->Connect Ports to P/G

  28. 电源/地线规划 VDD 的net type是 Power VSS 的net type 是 Ground

  29. 再连接VSS 电源/地 环 与电源/地Pad 连接

  30. 加Pad Filler • 加Pad Filler是为了填充IO单元与IO单元之间的间隙,使IO连在一起。在设计窗口中选择PostPlace->Add Pad Fillers • 在Filler栏填写Filler单元名称时要注意填写顺序,要求宽度大的填在前面。 • 40nm 库中得pad filler 有以下几种: PFILL20RN, PFILL10RN, PFILL5RN, PFILL2RN, PFILL1RN, PFILL01RN, PFILL001RN,

  31. 创建电容查找表模型

  32. 布局 • 布局(Placement)是确定每个标准单元位置的过程。一个合理的布局要求: • 每个标准单元都放在有效的位置上 • 单元间没有重叠。 • 布局的好坏影响: • 芯片的面积, • 芯片的性能、 • 布通率 • 整个后端设计的时间

  33. 装载时序约束文件(Load SDC) 时序设置(Timing Setup) 布局选项设置(Set Placememt Optiom) 预布局(Pre Place ) 布局(In Place) 布局后的第一次优化(Post Place) 布局流程

  34. 布局流程—装载时序约束文件 • 时序约束文件(top_pad.sdc是逻辑综合软件DC产生的)主要定义了: • 芯片的工作时钟频率,时钟歪斜、抖动 • 输入输出延时以及输出负载

  35. 布局流程—时序设置 • 在设计窗口中选择Timing-> Timing Setup,在弹出的窗口中进行用于静态时序分析的选项设置。 0.1

  36. 布局流程—布局选项设置 在设计窗口中选择InPlace->Placement Common Options,在弹出菜单的“Optimiaztion Mode”一栏中选择“Congestion”和“Timing”,表示选用时序和拥塞共同驱动的布局。其他选项可以缺省。

  37. 布局流程—预布局及时序分析 • 预布局阶段主要是对高扇出网线进行优化: 1.在设计窗口中选择InPlace->Auto Place, 2.在弹出窗口的“Stage”一栏选择“Pre-place”,并点击菜单中的“Detail Options”按钮, 3.在“Pre-Place optimization”一栏中选择“Cell Down Size”,其他选项缺省

  38. Slack 为负表示不满足,需要再优化 布局流程—预布局及时序分析

  39. 布局流程—布局及时序分析

  40. 布局流程—布局后第一次优化

  41. 时钟树综合 • 时钟树综合的主要目的是减小时钟偏差。 • 时钟偏差是指从时钟源点(Source)到各时钟汇点(Sink)的最大延时时间的差值。

  42. 时钟树综合 • 时钟树综合:在时钟网络中插入时钟缓冲器(buffer) 。 • 在布局之后布线之前,这时: • 每个单元的位置确定 • 电源/地已预布线, • 关键时序路径上的单元已被优化, • 不存在建立时间上的时序违反,

  43. 时钟树综合—时钟选项 • 时钟树综合前,首先要设置时钟树选项。这些选项包括: • 环境 (最好、最坏及典型)、 • 时钟偏差类型 (全局时钟偏差、局部时钟偏差及有用时钟偏差)、 • 优化程度、 • 时钟定义、 • 时钟缓冲器及倒相器定义、 • 时钟树结构和时钟树优化方式以及目标的设置。 • 在设计窗口中选择Clock->Clock Common Options,在窗口中进行相关选项的设置 。

  44. 时钟树综合—时钟选项

  45. 时钟树综合—时钟树综合

  46. 时钟树综合—时钟偏差分析 • 时钟树综合后,分析时钟偏差、最小插入延时是否符合设计要求。在设计窗口中选择Clock->Skew analysis。

  47. 时钟树综合—重新时序分析 • 时钟树综合之前,所有的静态时序分析都是基于一个理想的时钟网络(时钟偏差为0)来分析的。 • 时钟树综合后,需要考虑Clock Skew后再次进行静态时序分析,因此需要重新设置时序选项。 (tcl “set_propagated_clock [all_clock]”)

  48. 做到这一步,setup slack 一定要为正,hold slack最好也为正,不过如果slack为-0.0X也可以,等布线完再优化。 时钟综合后的布局优化及时序分析

  49. 布线 • 布线工具根据单元的连接关系及时序约束进行自动布线,使关键路径上的连线尽量短。布线包括: • 时钟布线 • 普通信号布线 • 布线主要分: • 全局布线(Global Route) • 布线通道分配(Track Assignment) • 详细布线(Detail Route) • 布线修补(Search & Refine)

More Related