收藏 分销(赏)

DCAstro设计流程初级手册.doc

上传人:精*** 文档编号:3015399 上传时间:2024-06-13 格式:DOC 页数:9 大小:40KB 下载积分:6 金币
下载 相关 举报
DCAstro设计流程初级手册.doc_第1页
第1页 / 共9页
DCAstro设计流程初级手册.doc_第2页
第2页 / 共9页


点击查看更多>>
资源描述
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、pad和ram的milkyway库拷贝到P-R/ref_lib下,把布局布线的脚本拷贝到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进行实时调整,诸如此类的细节问题有待读者自己日后再做深入的学习。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服