280 likes | 520 Views
模拟集成电路 版图自动布局布线技术. 2010 年 6 月 26 日. 版图基本数据结构. 链表结构( Linked List ) 占用空间小,适合存放静态数据 不显式表达空间区域,查找较慢 四叉树( Quad Tree ) 分区管理,查找时间快,适合实图形的查询和编辑 不适合推移、压缩等针对空区域的操作 角钩链( Corner Stitching ) 适合推移、压缩和通道生成等操作. 版图基本数据结构. 自动布局规划问题. 将若干电路模块放置在电路的适当位置上,并满足一定的目标函数和限制条件。 目标函数主要包括: 芯片面积 宽长比 线网长度
E N D
模拟集成电路版图自动布局布线技术 2010年6月26日
版图基本数据结构 • 链表结构(Linked List) • 占用空间小,适合存放静态数据 • 不显式表达空间区域,查找较慢 • 四叉树(Quad Tree) • 分区管理,查找时间快,适合实图形的查询和编辑 • 不适合推移、压缩等针对空区域的操作 • 角钩链(Corner Stitching) • 适合推移、压缩和通道生成等操作
自动布局规划问题 • 将若干电路模块放置在电路的适当位置上,并满足一定的目标函数和限制条件。 • 目标函数主要包括: • 芯片面积 • 宽长比 • 线网长度 • 布线拥挤度(Congestion) • 目标函数可进行归一化加权处理
布局中的线长估计 • 边界框(Bounding-Box) • 包含线网内所有引脚(Pin)的最小矩形 • 计算简单快速,但误差较大 • Steiner最小树(SMT) • 线长最小,估计精确,但生成复杂,计算量大 • 单树干Steiner树 • 树干位置是所有引脚的X(或者Y)坐标的平均值,然后从所有引脚向树干做垂线 • 兼顾精度和计算量
布局限制条件 • 限制条件主要有: • 相邻(Adjacency) • 对称(Symmetry) • 边界条件(Boundary) • 匹配(Matching) • 更复杂的布局问题 • 预设障碍布局 • 多边形模块布局 • 软模块布局
器件匹配(Matching) • CMOS器件的random mismatch计算公式: • 决定匹配质量的因素 • 器件的尺寸 • 两个器件之间的距离 • 周围环境的相似程度 • 均匀分布的位置
布局问题实例(部分) (a) no constraints (b) boundary blocks (c) adjacent blocks (d) L/T shape blocks
布局拓扑表示应考虑的因素 • 完备性–对每个布局方案都有相应的拓扑表示存在,确保搜索时不会漏掉最优解 • 有效性–每个布局方案的拓扑表示应尽量少,避免浪费时间试探多个等价的拓扑结构 • 独立性–拓扑表示应独立于模块的尺寸 • 高效性–从拓扑表示到布局方案的转换效率高 • 简洁性–拓扑表示应尽量占用较少的存储空间
布局方案的拓扑表示方法 • Non-Slicing结构 • 布局方案表示完整 • 处理特殊问题方便 • 数据结构复杂 • Slicing结构 • 数据表示方便 • 计算复杂度低 • 解决问题有局限性
Slicing结构 • 可以用二叉树和波兰表达式表示 • 下图的波兰表达式为:FE+BA+C*+GH*D+* • 由+、*符号可以得到模块间的拓扑关系,+表示上下,*表示左右
Non-Slicing结构 • 序列对(Sequence Pair)模型 • 由两组序列表+(左上至右下)和-(左下至右上)确定布局方案 • 搜索空间O(n!2) ,转换效率O(n2)
Non-Slicing结构 • O-Tree模型 • 只能表示LB-compact的布局 • 精确的布图规划拓扑结构依赖于模块的形状 • 搜索空间O(n!22n-2/n1.5) ,转换效率O(n)
Non-Slicing结构 • 角模块表(Corner Block List)模型 • 由三个数据表构成 • S:名字列表,记录模块名字和几何信息 • L:方向列表,以0/1表示相对前一个模块,当前模块的相对位置,0表示在上方,左边对齐;1表示在右方,底边对齐。 • T:修正列表,改变L List中所相对的模块,以数字(不小于0)表示当前模块位置的修正次数。L值为0时,向左修正;L值为1时,向下修正。 • 搜索空间O(n!23n-3/n1.5),转换效率O(n)
Non-Slicing结构 S =(A,B,C) L =(0,1,0) T =(0,0,1)
产生布局方案新解 • 以角模块表为例,可以使用的手段包括: • 交换S列表中任意两个模块的位置 • 旋转S列表中某个模块的方向 • 改变L列表中的某个位置的值(0→1或者1→0) • 改变T列表中的某个位置的值
布局优化算法(模拟退火) Algorithm SIMULATED_ANNEALING begin temp = INIT_TEMP; place = INIT_PLACEMENT; while (temp > FINAL_TEMP) do while (inner_loop_criterion = FALSE) do new_place = PERTURB(place); C = COST(new_place) - COST(place); if (C < 0) then place = new_place; else if (RANDOM(0, 1) < e-C/temp) then place = new_place; temp = SCHEDULE(temp); end;
布局优化算法(模拟退火) • 来源于冶炼加工中的固体退火原理 • 可以从局部优化解中解脱出来 • 在有限的时间内只能得到近似最优解 • 求解质量受降温方案(Cooling Schedule)影响
版图自动布线 • 实现策略 • 直接区域布线 • 总体布线 + 详细布线 • 数据结构 • 网格布线 • 无网格布线 • 布线算法 • 迷宫(Maze)算法 • 线探索(Line-Search)算法
布线中的限制条件 • 线网对称 • 线网匹配 • 若干条线网的长度相等 • 满足时序(Timing)要求 • 线网保护(Shielding) • 与被保护线网平行走线 • 屏蔽外来信号对关键线网的干扰
其他布线问题 • 多端线网布线 • 求解多端线网的Steiner树问题 • 电子迁移(Electromigration)问题,线网中每段金属的宽度由通过的具体电流值决定 • 多层布线 • 指定每层的走线方向 • 采用三维网格,并对网格填数方向加权 • 布线顺序和拆线重布 • 并行布线