当前位置:首页 >> 信息与通信 >>

DC、Astro设计流程初级手册


DC、Astro 设计流程初级手册

DC、Astro 设计流程初级手册
第一部分 逻辑综合 这一部分主要在目录 syn 下进行。 第一节 数据准备(此部分已完成,下面的文字仅作说明,无需操作) 首先把 stand cell、pad 和 ram 的 db 库拷贝到 syn/library 下,把源代码(.v)拷贝到了 syn/source 下, 把

dc 的 setup 文件 (.synopsys_dc.setup)拷贝到 syn 下, 把综合的脚本 (包括约束脚本) 拷贝到 syn/scripts 下,并且创建了 syn/output 和 syn/reports 准备接收综合结果。 第二节 运行 Design Compiler 进行逻辑综合 进入 syn 目录,在 tcl 模式下启动综合器: %dc_shell-t 调用 tcl 脚本进行综合: dc_shell-t>source scripts/run.tcl 这一步可以自动完成整个综合过程。具体细节可参见 syn/ scripts 下的 run.tcl 和 cons.tcl 文件。完成 以后,可以看到 syn/output 和 syn/reports 目录下有相应的文件输出。 退出 dc_shell-t。 第三节 数据分析 综合过程中在 syn/output 下产生了 4 个文件,其中 sdf 是标准延时文件,用于仿真时的时序反标,sdc 是 标准的约束文件,用于约束后面的布局布线。 在 syn/reports 目录下产生了时序和面积的报告。 从报告文件中可以看出, 时间上, 最大的 slack 为-0.51ns, 相对于时钟周期 8ns 较小,基本上可以进行布局布线。总面积约为 0.228um2,且大部分为 pad 所占。这是 我们进行下一步布局布线的依据。 说明: 1、因为 setup timing 往往是比较关键的,我们综合时使用了 slow 库作为目标库。 2、综合时,把 stand cell(sc)的库设为 target_library,把 sc、io、ram 以及 sythetic_library 通通 设为 link_library。 3、输入驱动和输出负载使用 pad 模型模拟实际的驱动和负载。 4、input_delay 通常设为时钟周期的 60%左右,output_delay 大约设为时钟周期的 30%。 5、把设计中 pad 和 ram 相应的 cell 设为 don’t_touch。 6、主要是考虑到我们加的约束比较严,因此可以接受-0.51ns 的 slack 作为布局布线的起点。 第二部分 布局布线 这一部分主要在目录 P-R 下进行。 第一节 数据准备(黑体字部分需要操作完成) 首先, stand cell、 和 ram 的 milkyway 库拷贝到 P-R/ref_lib 下, 把 pad 把布局布线的脚本拷贝到 P-R/script 下,把和工艺相关的文件拷贝到 P-R/star_rcxt 和 P-R/tech 下,把层次定义文件拷贝到 P-R/map 下,并且 创建了 P-R/design_data 和 P-R/report 两个空目录。 另外,我们还需要将综合得到的 syn/output 目录下的 fifo_mapped.v 和 fifo_mapped.sdc 文件拷贝到 P-R/design_data 目录下。 第二节 布局布线 1、创建 milkyway 设计库(参见 Astro 培训教材 lab 5a 的 task1 和 task2) 1)在 P-R 目录下启动 Astro。 2)在 Astro 界面中选择菜单 Tools -> Data Prep,此时可以看到 Astro 菜单栏的条目发生了变化。 3)选择菜单 Library -> Create…,弹出对话窗口。

在 Library Name 中填入 fifo,在 Technology File Name 中填入 tech/umc18_6lm.tf,打开"Set Case Sensitive"选项,点击”OK”。(忽略 warning,下同)之后可以发现多了 P-R/fifo 目录,这就是当前设 计库所在目录。 4)Library -> Add Ref… Library Name 填入 fifo,Ref Library Name 填入 ref_lib/sc,点击 Apply。 Ref Library Name 填入 ref_lib/io,点击 Apply。 Ref Library Name 填入 ref_lib/ram,点击 OK。 5)Library -> Show Refs… Library Name 填入 fifo,点击 OK。可以看到 sc、io 和 ram 的库已经绑定到设计库了。 6)Netlist In -> Verilog In… Verilog File Name 填入 design_data/fifo_mapped.v Library Name 填入 fifo Net Name for 1'b0 填入 GND Net Name for 1'b1 填入 VDD 点击 OK 这一步将 fifo 综合得到的门级网单绑定到设计库中。 7)Netlist In -> Expand… Library Name 填入 fifo Unexpanded Cell Name 填入 fifo_with_pads.NETL Expanded Cell Name 填入 fifo_with_pads.EXP 点击 Global Net Options 按钮,弹开新的对话窗口 Net Name 和 Port Name 都填入 GND,点击 Apply,可以看到 Number Defined 由 0 变为 1 Net Name 和 Port Name 都填入 VDD,点击 Apply,可以看到 Number Defined 由 1 变为 2 点击 Hide 关闭子窗口,回到原来的对话窗口,点击 OK 等效地,也可以在 Astro 命令输入栏中直接输入命令 load “script/1_data_prep.cmd” 完成整个操作过程 至此,整个设计库创建完毕。可以进入 P-R/fifo 中观察所得结果。 2、创建设计单元(参见 Astro 培训教材 lab 5a 的 task3、task4 和 task5) 1)Tools -> Astro,回到普通工作模式下。 2)Library -> Open… Library Name 填入 fifo,点击 OK 3)Cell -> Create… Cell Name 填入 fifo_with_pads,点击 OK 4)Design Setup -> Netlist: Bind Netlist… Net Cell 填入"fifo_with_pads.EXP",点击 OK 5)Cell -> Hierarchy Preservation: Initialize Hierarchy Information… Flattened Cell Name 填入 fifo_with_pads.CEL Hierarchical Net Cell Name 填入 fifo_with_pads.NETL 点击 OK 6)Cell -> Hierarchy Preservation: Mark Module Instances Preserve… Flattened Cell Name 填入 fifo_with_pads.CEL,点击 OK

7)Cell -> Save As… Cell Name 填入 2_design_setup,点击 OK 等效地,也可以在 Astro 命令输入栏中直接输入命令 load “script/2_design_setup.cmd” 完成整个操作过程 至此,整个设计单元创建完毕。进入 P-R/fifo/CEL 目录中可以看到里面有 design_setup 单元。 3、初始化布局(参见 Astro 培训教材 lab 6a 的 task1、2、3、4) 从综合的结果看,本设计属于 pad-limited 类型,即芯片面积主要由 pad 决定。我们做布局规划的时候主 要考虑 pad 的摆放。源设计中总共有 14 个 pad,分 4 边摆放,每边最多 4 个。此外,每边还要另加两个电 源 pad(分别给 pad 和 core 供电,即后边即将提到的 PVDDR 和 PVDDC)和两个地 pad(PVSSR 和 PVSSC)。 因此,每边最多 8 个 pad,外加 2 个 corner pad。每个 pad 的尺寸是 194.90 um×60.12um,每个 corner pad 的尺寸是 194.90 um×194.90 um,摆放时给 pad 和 pad 之间留大约 20um 的间距,则由此可得每边的长度 大约为 60×8+20×9+200×2=1060um。Pad 环往内每边再留 100um 布电源环,则最终可得 core 的尺寸为 460um×460um。 1)导入 pad 信息 Design Setup -> TDF: Load TDF… TDF File Name 填入 script/io.tdf,点击 OK 2)初始化布局 Design Setup -> Floorplan: Set Up Floorplan… 打开 width & height 选项 Row/Core Ratio 填入"0.7" (标准单元所占面积不大,可以适当降低 core 的利用率) Core Width 填入 460 Core Height 填入 460 打开 Double Back 和 Flip first row 选项 Core To Left 填入 100 Core To Bottom 填入 100 Core To Right 填入 100 Core To Top 填入 100 点击 OK 此时刷新 cell 窗口,可以得到下图所示的布局: 3)填充 pad filler PostPlace -> Filler Cell: Add Pad Fillers…,弹出对话框 在 Astro 命令栏里输入 load "script/set_pad_fillers.cmd" 回到对话框,点击 OK 4)把 ram 摆放到 core 的左下角 在 Astro 命令栏里输入 load "script/place_macros.cmd" 刷新窗口,得到下图。 5)保存设计为 3_initialized_floorplan 上述过程可直接利用 Astro 命令 load “script/3_floorplan_initial.cmd” 一步完成。 4、电源规划(参见 Astro 培训教材 lab 6a 的 task5、6、7)

1)创建电源环(先电源环后地环,注意有别于 Astro 实验) PreRoute -> Rectangular Rings… 点击 Default 打开 Around 右边的 Core 选项 Net Name(s)填入"VDD" L-Width、R-Width、B-Width、T-Width 均填入"20" L-Layer、R-Layer 设为 48(met2) B-Layer、T-Layer 设为 46(met1) Left、Right、Bottom、Top 均填入 20 全部设置如下图所示 点击 Apply Net Name(s)改为 GND Left、Right、Bottom、Top 均改为 10 点击 OK 至此电源和地的金属环创建完毕,形如下图: 2)创建电源带(strap) PreRoute -> Straps… 点击 Default 选择 Vertical,Start X 填入 520 Net Name(s)填入 VDD, GND(以逗号隔开) Width 填入 10 Layer 设为 48 打开 Step & Stop 选项 Step 填入 120 Stop 填入 640 Pitch within Group 填入 15 点击 Apply 选择 Horizontal,Start Y 填入 410 Step 改为 110 Stop 改为 630 Layer 改为 46 点击 Apply 选择 Vertical,Start X 填入 410 Step 改为 0 Stop 改为 410 Layer 改为 48 点击 OK 上述过程中版图的变化如下:

3)在所有 stand cell、ram 和 pad 之间建立电源、地的逻辑连接 PreRoute -> Connect Ports to P/G… 点击 Default

Net Name、Port Pattern 均填入 VDD 打开 Cell Types 中 Pad 选项 打开 Update Tie Up/Down 选项 点击 Apply,弹出一个小窗口,点击 OK 可以看到 Astro 提示:Connected 81 ports to net (VDD) through pattern VDD 点击 Apply,弹出一个小窗口,点击 OK Net Name、Port Pattern 均改为 GND Net Type 选择 Ground 点击 Apply,弹出一个小窗口,点击 OK 可以看到 Astro 提示:Connected 81 ports to net (GND) through pattern GND. 点击 Cancel 退出对话窗口 4)在 pad、ram 的电源地引脚(pin)和电源网络(ring 和 strap)之间建立物理连接 PreRoute -> Macros/Pads… 点击 Default,点击 OK 这个过程可能会花 2、3 分钟,中间的 warning 可以忽略。 从版图上可以看到,所有的核电源 pad(PVDDC、PVSSC)和 ram 都已经连接到电源网络上了。 5)检查电源连接 PreRoute -> Verify P/G Connectivity… 点击 Default Std Cell Pin Connect 选择 Ignore 点击 OK 随后可以看到 Asrto 的检查报告。没有任何错误,可以继续下一步。 6)定义软阻碍(soft blockage),为标准单元的自动摆放做准备 在 Astro 命令栏里输入 load "script/define_soft_blockages.cmd" 至此,可得如下版图: 7)保存设计为 4_power_planed 上述过程可以通过执行 Astro 脚本 4_powerplan.cmd 一步完成。 5、时序约束设置(参见 Astro 培训教材 lab2) 1)加载 tlu+延时模型 Tools -> Data Prep,进入数据准备界面 Tech File -> ITF to TLU+,进行如下配置: 点击 Sanity Check,提示 warning,没有 error,跳过。 点击 OK。 2)加载设计约束 Tools -> Asrto,重新回到普通界面 在 Astro 命令栏中输入: ataRemoveTC 清除已有的全部时序约束。 Timing -> Constrains: Load SDC… SDC File Name 填入 design_data/fifo_mapped.sdc 点击 OK,提示 SDC 加载成功。

3)配置延时估算选项 Timing -> AstroTime: Timing Setup… 选择 Model 卡片 Operating Cond 选择 Nom Delay Model 选择 elmore 点击 Apply 选择 Parasitics 卡片 Operating Cond 选择 Nom Capacitance Model 选择 TLU+ 点击 Apply 选择 Environment 卡片 打开 Enable Multi-Clocks Per Reg、Ignore Propagated Clock、Enable Ideal Network Delay 和 Include Non Propagated Nets 项 关闭 Ignore Clock Uncertainty 项 点击 Apply 点击 Hide 4)产生时序报告 在 Astro 命令栏里输入: ataReportSummary 或者 astCheckDesign 前者会把时序信息报告在 Astro 的信息栏里,后者可以产生更详细的时序报告,但需要在弹出的对话输入 文件名,把报告重定位到指定的文件里。 从时序报告中可以看到,setup slack 只有-0.001,并且只有一个;hold slack 为正。

注意:目前 umc 只提供 Nominal 的 TLU+模型,没有 Max 和 Min 模型,所以这里的时序估算和我们综合时有 较大的出入,推荐使用 PrimeTime 进行时序估算。
5)保存设计为 5_floorplanned_tluplus 上述过程可以通过 Astro 脚本 5_timing_setup.cmd 一步完成。 6、标准单元自动摆放(参见 Astro 培训教材 lab3) 1)使用 congestion+timing-driven 自动摆放模式 InPlace -> Placement Common Options… 点击 Default 打开 Optimization Mode 下面的 Timing 选项 点击 OK 2)设置预摆放选项 Preplace -> Pre-Placement Optimization… 点击 Default 打开 Remove Buffers 选项 点击 OK 这时如果再用 ataReportSummary 命令报告延时的话,可以发现负的 slack 已经没有了。 3)自动摆放标准单元 InPlace -> AstroPlace: Design Placement… 点击 Default 打开 In-Placement Optimization 选项 点击 OK

标准单元摆放完毕以后的版图如下所示: 图中左侧和下侧的线条表示标准单元的密集程度,越粗的地方越密集。 这时可以再做一下时序报告,看看满不满足要求。 4)在标准单元的电源地引脚(pin)和电源网络(ring 和 strap)之间建立物理连接 PreRoute -> Standard Cells… 点击 Default,点击 OK 从下面的版图上可以看到,所有标准单元的电源都已经连接到电源网络上了。 5)保存设计为 6_placed 此部分的脚本为 6_Place.cmd。 7、摆放后优化(参见 Astro 培训教材 lab3) 这一步主要是针对摆放后 timing 和 congestion 仍然不满足要求的设计进行的,对本设计来说其实并没有 必要。但为了使流程更加完整,我们仍然做进一步的优化。 1)搜索并改进 InPlace -> AstroPlace: Search and Refine… 点击 Default 点击 OK 这时可以查看一下 timing 和 congestion,基本上没有改进。 把设计单元保存为 7_1_PPSR。 2)后布局第 1 阶段优化 PostPlace -> Optimization: Post-Place Optimization Phase 1… 点击 Default 打开 Use Global Routing 选项 点击 OK 这时的 timing 和 congestion 依然没有任何改进。 把设计单元保存为 7_2_PPO1。 这一部分的等效脚本为 7_SR_PPO1.cmd。 8、时钟树综合(参见 Astro 培训教材 lab4) 1)使用默认综合选项 Clock -> Clock Common Options… 点击 Default,点击 OK 2)时钟树综合 Clock -> Clock Tree Synthesis: Clock Tree Synthesis… 点击 Default,点击 OK 3)分析时钟偏差 Clock -> Reports: Skew Analysis… 点击 Default Clock Names 填入 clk Output To 选择 File,并在 File Name 填入 report/CTS_skew.rpt 点击 OK 打开 report/CTS_skew.rpt 文件,可以发现无论是时钟树的最长路径延时还是延时偏差都很小。 4)查看整体延时信息 时钟树已经综合出来了,所以必须改变延时检查选项以采用真实的时钟树延时模型。

Timing -> AstroTime: Timing Setup… 选择 Environment 卡片 打开 Enable Multi-Clocks Per Reg、Ignore Clock Uncertainty、Enable Recovery/Removal Arcs 和 Enable Gated Clock Checks 项 关闭 Ignore Propagated Clock 和 Enable Ideal Network Delay 项 点击 Apply 点击 Hide 在 Astro 命令栏里输入 ataReportSummary 产生延时报告。 从报告中可以看出,建立和保持的 slack 都比前面有了较大的改善,这主要是因为实际的时钟树延时和延 时偏差数值比我们在约束文件中定义的数值小了很多。 保存设计单元为 8_1_CTS。 5)后布局第 2 阶段优化 PostPlace -> Optimization: Post Place Optimization… 点击 Default 打开 Remove Buffers 选项 点击 OK 可以看到 congestion 和 timing 其实都没什么改进。 保存设计单元为 8_2_PPO2。 这一部分的等效脚本为 8_CTS.cmd。 9、布线 1)设置自动布线选项 Route Setup -> Route Common Options… 点击 Default Global Routing 和 Track Assign 下均选择 Timing Driven 点击 OK 2)布时钟线 Route -> Route Net Group… 点击 Default Net Name(s) From 下选择 All clock nets 点击 OK 完成以后,对版图的某些局部放大,可以看到时钟线已经连好了。 注意:这一步最好能够使最后报告的 Violation 为 0。 3)全局布线 Route -> Global Route: Global Route… 点击 Default,点击 OK 4)全局布线优化 在 Astro 命令栏里输入 astPostRouteOpt 在弹出的对话窗口中选择 Default 在 Routing Phase 下选择 Global Route 关闭 Flow Control 下面的 Purge Filler 选项 点击 OK

4)分配连线轨道 Route -> Track Assign ! 5)轨道优化 在 Astro 命令栏里输入 astPostRouteOpt 在弹出的对话窗口中选择 Default 在 Routing Phase 下选择 Track Assign 关闭 Flow Control 下面的 Purge Filler 选项 点击 OK 6)详细布线 Route -> Detail Route: Initial Detail Route… 点击 Default Track Assignment 下选择 Skip 点击 OK 把版图局部放大,可以看到所有的单元都已经布线完毕,同时 Astro 报告 violation 为 0。 7)搜索并修补 Route -> Detail Route: Search & Repair… 点击 Default Search Repair Loop 设为 5 点击 OK 这一步主要是修复布线中产生的 violation,对本设计来说并不需要,当然也没有坏处。 保存设计单元为 9_routed。 8)设计规则检查 Verify -> DRC… 点击 Default Maximum Errors 填入 1000 打开 List Error Summary Immediately 点击 OK 稍等片刻,Astro 会弹出一个 DRC 结果报告,从中我们可以看到: metal1 notch 有 18 处违反规则 Via4 & Via5 overlap 有 193 处违反规则 这两类 DRC 错误都可以暂时忽略。metal1 notch 是下一节修复的主要对象,而本设计中的 Via4 & Via5 overlap 主要是 pad 造成的,而 pad 有另外的 DRC 规则。 10、生产预设计 (暂无,可参见 Astro 培训教材 lab8) 注意:此手册仅作入门之用,真正流片设计过程中,还有很多细节问题需要做进一步的完善。例如,dc 脚 本中需要对门级代码的 assign 语句进行处理,dc 导出的.sdc 文件也需要修改后才能为 Astro 所用,自动 摆放、时钟树综合以及布线的各步骤中需要对 timing setup 进行实时调整,诸如此类的细节问题有待读者 自己日后再做深入的学习。


相关文章:
DC、Astro设计流程初级手册
DCAstro 设计流程初级手册实验数据在 219.223.169.103 上:for_all_课件/design_flow_ralative/df_tut4sz.tar.gz Linux 解压:%tar zxvf df_tut4sz.tar....
astro
DCAstro 设计流程初级手册 实验数据在 219.223.169.103 上:for_all_课件/design_flow_ralative/df_tut4sz.tar.gz Linux 解压:%tar zxvf df_tut4sz.tar....
synopsys设计流程
VCS、3. Scirocco 设计综合 0.18-0.35um 7.DC-Expert 8. DC-Ultra 可测...Astro 0.18-0.35um 15. Apollo 功耗、电漂移、 串扰分析优化 16. Mars-...
ASIC设计流程
ASIC 设计流程项目策划 形成项目任务书(项目进度,...LeonardoSpectrum、Synopsys 公司的 DC、Synplicity ...如果你用的 是 PC +Astro 那你可用 write_milk...
Synopsys推荐设计流程
和仿真 IP 库可实现 IP ≤0.18um 设计综合 0.18-0.35um 7.DC-Expert 8...Astro 0.18-0.35um 15. Apollo 功耗、电漂移、 串扰分析优化 16. Mars-...
IC设计流程
在综合的 过程中使用的工具最主要是 Synopsys 的 DC 和 PC。 做完综合之后,...此时常用的软件有 Synopsys 的 ASTRO 和 Cadence 的 Se 工具。 自动布局布线...
ASIC设计流程及方法分析
本文结NCverilog,DesignCompile,Astro等ASIC设计所用到的EDA软件,从工艺独 立性...对于那些带有异步时钟域的模块,如果不进行约束,DC 总是试图去满足采样时钟的...
EDA设计流程
DC expert Vhdl/Verilog 混合语法和设计规范 LEDA 检查器 FPGA 综合器 Synplify...DFT Compiler、 TetraMAX、Power Compiler、Jupiter XT、Astro、Star-RCXT 和 ...
IC设计流程
设计文件 如:*.VHO,*.sdf RTL->SIM->DC->SIM-->PT-->DC---ASTRO-...这一种电路仿真又称“back-annotation simulation”(具体参见 HSPICE 用户手册)。...
数字IC设计流程
后仿真之前的输出文件忘记说了,应该是带有完整的延时信息的设计文件 如:*.VHO,*.sdf RTL->SIM->DC->SIM-->PT-->DC---ASTRO--->PT---DRC,LVS--->TA...
更多相关标签:
初级会计报名流程 | 初级会计职称报名流程 | 初级会计师报名流程 | 2017初级会计报名流程 | 初级职称评定流程 | 初级报名流程 | 2016初级护师报名流程 | 初级药师报名流程 |