ICC_lab总结——ICC_lab2:设计规划
PS:字丑,禁止转载!!!
首先先写出大概的流程,然后是一些教材的理论知识总结,最后是进行lab2的一些流程概述。
教材的理论知识总结主要是:数字集成电路物理设计学习总结——布图规划和布局
-->数据准备(设置)、加载设计并切换到floorplan模式
--> 创建拐角(Corner)和电源地(P/G)单元并定义他们pad的位置
-->创建floorplan
-->在电源/接地信号和I / O焊盘,宏和标准单元的所有电源/接地引脚之间建立“逻辑”连接
-->创建pad的电源环,保存电源环创建后的设计
-->验证当前虚拟平面放置策略选项是否具有默认设置
-->设置sliver 的尺寸,防止标准单元放置在宏单元之间的狭窄通道
-->使用“无层次结构重力”(选项)来执行 时序驱动的虚拟平台放置
-->进行宏单元布局约束
-->检查设置
-->所有宏单元周围设置10微米的硬限制边距
-->再次进行宏单元布局,锁定所有的宏,保存IO、宏单元布局规划后的设计
-->在宏单元周围创建P/G环
-->电源网络综合:对核心电源环、宏单元环、垂直以及水平环带进行约束、提交电源计划、连接所有宏单元上的电源引脚,并创建标准单元电源轨道(power rail)、保存这一阶段的设计
-->检查时序
-->写出DEF文件
-->为布局做准备而创建第二遍(布局规划)设计
上面是理论知识,下面是lab实践:
首先就进行数据设置,数据建立(设置)之后,保存为orca_setup
数据设置的过程在lab2实验中是没有详细叙述的,也就是说只给出了数据建立的结果:orca_setup
本次workshop实验需要准备/用到的数据为:
需要说明的是,圈圈的文件,在数据设置阶段就已经准备好了,其他方框的则是本次实验需要准备的。
下面就是正式过程了:
一、加载设计
启动ICC后,加载orca_setup这数据设置阶段产生的阶段设计,然后执行时序优化的控制脚本:
source scripts/opt_ctrl.tcl
然后在layout窗口中切换到design planning模式下:
File --> Task --->Design Planning
二、初始化平面图(floorplan),也是创建布局规划
1、创建拐角(Corner)和电源地(P/G)单元并定义他们pad的位置:
因为逻辑综合的网表里面没有上面的这些物理单元,我们需要自己创建,才能进行放置他们的位置,创建只要执行下面的脚本:
source –echo scripts/pad_cell_cons.tcl
pad_cell_cons.tcl脚本里面的内容主要是:
·创建Corners pad和power/group pads
·定义Corner pad 的位置
·定义signal pad 和 power pad的位置(主要是分为左边、右边、顶层和底层)
2、初始化floorplan
需要注意的是,icc2013.3以后(包括),初始化floorplan不能用initial_floorplan,而是用create_floorplan(也就是进行布局规划).
3、插入pad fillers,填充pad之间的间隙
执行命令:
source ./scripts/insert_pad_filler.tcl
这个脚本文件主要定义要插入的filler cells
4、在电源/接地信号和I / O焊盘,宏和标准单元的所有电源/接地引脚之间建立“逻辑”连接(无物理布线),也就是执行前面数据设置中没有进行的第6步:
source –echo scripts/connect_pg.tcl
5、创建pad的电源环:
create_pad_rings
6、保存电源环创建后的设计
save_mw_cel –as floorplan_init
三、将连接到IOpad的宏单元进行预布置(也就是布置好宏单元到核心区)
这里可以通过手动,也可以用脚本进行:
source –echo scripts/preplace_macros.tcl
这个脚本就是进行对三个宏单元的位置进行规划
四、执行虚拟平面放置
1、验证当前虚拟平面放置策略选项是否具有默认设置:
report_fp_placement_strategy (个人理解也就是查看各种放置默认信息)
2、设置sliver 的尺寸,防止标准单元放置在宏单元之间的狭窄通道(sliver size <10)中:
set_fp_placement_strategy -sliver_size 10
3、使用“无层次结构重力”(选项)来执行 时序驱动的虚拟平台放置(以确保“逻辑层次结构”不会影响此非层次结构或平面布局的放置):
create_fp_placement –timing_driven -no_hierarchy_gravity
上面的这个命令的效果就是把宏单元的位置放好(在核心区域上)
4、把一些宏转换成数组,电源和接地带和宏单元环的布线可以更容易。将宏单元置于尽可能接近芯片的边缘,将宏尽可能多地组合在一起、打开虚拟IPO以模仿时序优化(并防止不必要的布局优化)、限制某些RAM的合法布局方向,上面的四个操作通过执行脚本完成:(宏单元布局约束脚本)
source –echo scripts/macro_place_cons.tcl
5、检查设置:
report_fp_placement_strategy
report_fp_macro_options
6、 所有宏单元周围设置10微米的硬限制边距。 这样容易在宏单元周围创建P / G环,并避免拥塞以及宏单元周围的信号布线DRC错误:
source -echo scripts/keepout.tcl
7、再次进行宏单元布局:
create_fp_placement -timing_driven -no_hierarchy_gravity
可以进行拥塞分析
8、锁定所有的宏:
set_dont_touch_placement [all_macro_cells]
9、保存IO、宏单元布局规划后的设计:
save_mw_cel -as floorplan_placed
五、在宏单元周围创建P/G环
P/G环的创建方式(或者依据内容)主要有
·定义包含一组宏的粗略“区域”
·定义block ring layers,宽度和偏移量
·创建(提交)金属布线
通过执行脚本创建宏单元的P/G环:
source ./scripts/macro_pg_rir ngs.tcl
六、电源网络综合
1、对核心电源环、宏单元环、垂直以及水平环带进行约束
·电源带约束
·对核心的电源带约束
·为没有电源环的PLL定义宏单元环
·进行全局约束
执行脚本:
scripts / pns.tcl
2、提交电源计划:
commit_fp_rail
3、连接所有宏单元上的电源引脚,并创建标准单元电源轨道(power rail):
preroute_instances
preroute_standard_cells –fill_empty_rows \
-remove_floating_pieces
创建完之后,可以进行IR drop分析
4、保存这一阶段的设计
save_mw_cel -as floorplan_pns
七、检查时序
1、PNS在METAL4和METAL5上产生了许多电源带,这些带放在标准单元上。可以有利地防止标签单元放置在带下 - 这降低了沿带的拥塞的可能性,并且减少了对电源网络的串扰影响。 在带上应用“完整”电源网(pnet)阻塞,然后再次运行虚拟平面放置以考虑pnet设置:
set_pnet_options -complete "METAL4 METAL5"
create_fp_placement -timing_driven -no_hierarcI hy_gravity
2、通过执行实际布线进行检查时序:
route_zrt_global
3、使用“view,查看”过程生成最大延迟(建立时间)时序报告(更新时序和生成报告需要几秒钟):
v report_timing
如果有时序违规,则可以重新进行优化布线:
optimize_fp_timing –fix_design_rule
4、保存设计
save_mw_cel -as floorplan_complete
八、写出DEF文件
删除所有放置的标准单元,然后以DEF格式写出floorplan文件。这个DEF平面规划文件将被Design Compiler Topographical 使用来再次综合;然后在ICC再次读入再次综合后的网表后,再用ICC进行布局规划:
下面是删除所有放置的标准单元,然后以DEF格式写出floorplan文件:
remove_placement -object_type standard_cell
九、为布局做准备而创建第二遍(布局规划)设计
假装这个设计是从RTL代码使用DC的拓扑模式重新综合的,重新综合的过程使用上一步生成的DEF文件。这是我们得到第二遍网表ORCA_2.v以及更新后的约束文件ORCA_2.sdc。
1、使用新的ORCA网表和约束执行数据设置:
source -echo scripts/2nd_pass_setup.tcl
这个脚本进行了标准的数据设置准备。
2、读入上一个步骤写出的def文件:
read_def design_data/ORCA.def
3、新应用的电源网络合成后应用的pnet选项。这些设置不在DEF文件中定义:
set_pnet_options -complete "METAL4 METAL5"
4、将设计保存为ready_for_placement:
save_mw_cel -as ready_for_placement
ICC的设计规划实验大概流程就是这样了,其中主要跑脚本,脚本的内容才是设计规划的内容,要把脚本的内容参透才真正把这个实验的内容参透。时间问题,这里就不仔细去看了,主要学习流程.
-->数据准备(设置)、加载设计并切换到floorplan模式
--> 创建拐角(Corner)和电源地(P/G)单元并定义他们pad的位置
-->创建floorplan
-->在电源/接地信号和I / O焊盘,宏和标准单元的所有电源/接地引脚之间建立“逻辑”连接
-->创建pad的电源环,保存电源环创建后的设计
-->验证当前虚拟平面放置策略选项是否具有默认设置
-->设置sliver 的尺寸,防止标准单元放置在宏单元之间的狭窄通道
-->使用“无层次结构重力”(选项)来执行 时序驱动的虚拟平台放置
-->进行宏单元布局约束
-->检查设置
-->所有宏单元周围设置10微米的硬限制边距
-->再次进行宏单元布局,锁定所有的宏,保存IO、宏单元布局规划后的设计
-->在宏单元周围创建P/G环
-->电源网络综合:对核心电源环、宏单元环、垂直以及水平环带进行约束、提交电源计划、连接所有宏单元上的电源引脚,并创建标准单元电源轨道(power rail)、保存这一阶段的设计
-->检查时序
-->写出DEF文件
-->为布局做准备而创建第二遍(布局规划)设计
ICC_lab总结——ICC_lab2:设计规划的更多相关文章
- ICC_lab总结——ICC_lab1:数据设置和基本流程
ICC_lab总结 最近在学习后端的流程,做lab是最好不过了.但是有时候做过了lab,过了一段时间之后就会忘记,因此需要自己总结一下,加强印象. ICC_lab1:数据设置和基本流程 数据设置: 一 ...
- ICC_lab总结——ICC_lab3:布局
PS:字丑,禁止转载. 做到了ICC workshop的第三个实验,理论与实践相结合,于是,先放一张总结图,这张总结图来自前面的博客,放在这里用来体现理论和实践的联系: 这个就是布局的理论部分,在IC ...
- ICC_lab总结——ICC_lab4:时钟树综合
时钟树综合的理论知识总结在这里:http://www.cnblogs.com/IClearner/p/6580034.html 下面是实践环节:使用ICC进行时钟树综合. 这个实验的目标是: ·设置C ...
- ICC_lab总结——ICC_lab6:版图完成
ICC_workshop的最后一个实验了.在这次的实验中,由于我使用ICC的版本与workshop的lab不是同一个版本,因此在后面的实验过程不是很顺利,主要是在LVS的过程中,最后的LVS没有通过. ...
- ICC_lab总结——ICC_lab5:布线&&数字集成电路物理设计学习总结——布线
字丑,禁止转载! 这里将理论总结和实践放在一起了. 布线的理论总结如下所示: 下面是使用ICC进行实践的流程: 本次的布线实验主要达成的目标是: ·对具有时钟树布局后的设计进行可布线性检查 ·完成布线 ...
- FPGA设计千兆以太网MAC(2)——以太网协议及设计规划
上篇该系列博文中通过MDIO接口实现了PHY芯片的状态检测,验证其已处于1000M 全双工工作模式.在设计MAC逻辑之前,要先清楚MAC与PHY之间的接口以及以太网协议细节,这样才能保证网络的兼容性. ...
- tp框架之模板继承
模板继承是一项更加灵活的模板布局方式,模板继承不同于模板布局,甚至来说,应该在模板布局的上层.模板继承其实并不难理解,就好比类的继承一样,模板也可以定义一个基础模板(或者是布局),并且其中定义相关的区 ...
- [Architecture] 系统架构正交分解法
[Architecture] 系统架构正交分解法 前言 随着企业成长,支持企业业务的软件,也会越来越庞大与复杂.当系统复杂到一定程度,开发人员会发现很多系统架构的设计细节,很难有条理.有组织的用一张大 ...
- 我心中的MySQL DBA
原文网址链接:http://wangwei007.blog.51cto.com/68019/1718311 MySQL是一个跨平台的开源关系型数据库管理系统,目前MySQL被广泛地应用在Interne ...
随机推荐
- C#中let字句
应用场景: 在查询表达式中,存储子表达式的结果有时很有用,这样可以在随后的子句中使用. 可以使用 let 关键字完成这一工作,该关键字可以创建一个新的范围变量,并且用您提供的表达式的结果初始化该变量. ...
- C++编程练习(2)----“实现简单的线性表的链式存储结构“
单链表采用链式存储结构,用一组任意的存储单元存放线性表的元素. 对于查找操作,单链表的时间复杂度为O(n). 对于插入和删除操作,单链表在确定位置后,插入和删除时间仅为O(1). 单链表不需要分配存储 ...
- ArcGIS Pro 简明教程(2)基础操作和简单制图
ArcGIS Pro 简明教程(2)基础操作和简单制图 By 李远祥 本章主要介绍ArcGIS Pro如何加载数据并进行简单的地图制作,以基本的操作为主. 上一章节介绍过,ArcGIS Pro是可以直 ...
- CSS的兼容性与BUG处理
骨灰级清除浮动 .clearfix:after { content: "."; display: block; height: 0; clear: both; visibility ...
- 移动HTML5前端性能优化总结
概述 1. PC优化手段在Mobile侧同样适用 2. 在Mobile侧我们提出三秒种渲染完成首屏指标 3. 基于第二点,首屏加载3秒完成或使用Loading 4. 基于联通3G网络平均338KB/s ...
- http协议详解(超详细)
http1. 基础概念篇 1.1 介绍 HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写.它的发展是万维网协会(World Wide Web Consorti ...
- Linux 6.4 partprobe出现warning问题
今天在给服务器做LVM的时候(服务器的系统是CentOS 6.3),用fdisk分区之后,用w写入分区表的时候,就提示Command (m for help): wThe partition tabl ...
- table中td的宽度不随文字变宽
1.设置了table的宽度后,宽度仍然不固定,td的内容一多,很容易吧table撑变形.有些时候我们需要设置固定的宽度. 解决办法 table的css 加入样式 table-layout:fixed ...
- HL-340编译驱动
make -C /lib/modules/3.4.39/build SUBDIRS=/home/linaro/Desktop/ch341_drv modulesmake: *** /lib/modul ...
- 一个web应用的诞生(7)--结构调整
现在所有的Py代码均写在default.py文件中,很明显这种方法下,一旦程序变的负责,那么无论对于开发和维护来说,都会带来很多问题. Flask框架并不强制要求项目使用特定的组织结构,所以这里使用的 ...