一、绪论
集成电路
- 集成电路,英文为Integrated Circuit,缩写为IC;顾名思义,就是把一定数量的常用电子元件,如电阻、电容、晶体管等,以及这些元件之间的连线,通过半导体工艺集成在一起的具有特定功能的电路。
- 超大规模集成电路(Very Large Scale Integration,简称VLSI)是指将大量的晶体管(通常在百万级以上)集成到一个半导体晶片上,形成具有特定功能的电路。如Intel Core i9处理器的芯片集成度达到了220亿个晶体管。
超大规模集成电路(VLSI)
VLSI的一些主要特征:
- 集成度高:VLSI可以将大量的晶体管集成到一个半导体晶片上,从而实现更复杂的功能。
- 性能高:VLSI可以实现更高的速度、更低的功耗和更高的可靠性。
- 成本效益高:VLSI可以降低集成电路的制造成本,从而提高性价比。
VLSI的典型应用包括:
- 微处理器:用于计算机、手机等电子设备
- 存储器:用于存储数据和程序
- 图形处理器:用于图形处理
- 通信芯片:用于数据通信
- 传感器:用于环境感知
- 医疗设备:用于医疗诊断和治疗
集成电路产业发展
芯片被称为“现代工业的心脏”,集成电路行业是全球前瞻性最强、竞争最激烈、社会贡献最大的领域之一。
- 摩尔定律:集成电路上可容纳的晶体管数量每隔18-24个月便会增加一倍,性能也将提升一倍。
- 后摩尔时代:设计理念正向Chiplet(小芯片)转变。
电子设计自动化(EDA)
EDA全称是Electronic Design Automation,也就是电子设计自动化,是指利用计算机辅助设计(CAD)软件,来完成超大规模集成电路(VLSI)芯片的功能设计、综合、验证、物理设计(包括划分、布图规划、布局、布线等)等流程的设计方式。EDA被誉为“芯片之母”,是电子设计的基石产业。
EDA行业竞争格局
全球EDA行业竞争格局较为集中,目前由Synopsys、Cadence Design Systems、Siemens EDA三大巨头占据主导地位。2021年,这三家公司合计占据全球EDA市场份额的69.6%。
- Synopsys是全球EDA行业的领军企业,其产品线涵盖了EDA行业的各个领域,包括逻辑设计、物理设计、验证、系统设计、制造等。Synopsys在EDA行业拥有深厚的技术积累和丰富的客户资源,是全球众多领先半导体公司的首选EDA供应商。
- Cadence Design Systems是全球EDA行业的另一家巨头,其产品线与Synopsys相似,涵盖了EDA行业的各个领域。Cadence在EDA行业拥有强大的竞争优势,其产品在全球半导体行业具有广泛的应用。
- Siemens EDA是德国西门子集团旗下的EDA公司,其产品线主要集中在物理设计、验证和制造等领域。Siemens EDA在EDA行业拥有较强的技术实力,其产品在全球半导体行业得到了广泛的应用。
国产EDA面临的挑战与机遇
中国EDA行业也正在快速发展,涌现出一批具有竞争力的本土企业,如华大九天、概伦电子、芯禾科技等。这些企业在EDA行业的各个领域都取得了一定的成绩,正在逐步缩小与国际巨头的差距。根据中国半导体行业协会预测,2025年中国EDA市场规模将达到184.9亿元。
VLSI设计流程
- 系统规范:定义系统的总体目标和需求。
- 功能设计:每个模块的功能和连接关系。
- 逻辑和电路设计:根据设计规划,进行逻辑电路的设计,包括逻辑门电路、时序电路等。
- 物理设计:将逻辑电路转化为物理结构,并对布局和连线进行优化。
- 制造:根据物理结构生成掩膜图形,并通过光刻技术将其转移到硅片上,然后进行一列加工。
- 封装:将芯片封装成最终产品,并进行功能测试和可靠性测试。
VLSI物理设计——划分
由于一个芯片动辄包含上千万个晶体管,加之受计算机存储空间和计算能力的限制,通常我们把整个电路划分成若干个模块,将处理问题的规模缩小。划分时要考虑的因素包括模块的大小、模块的数目和模块之间的连线数等。
VLSI物理设计——布图规划
布图规划是根据模块包含的器件数估计其面积,再根据该模块和其它模块的连接关系以及上一层模块或芯片的形状估计该模块的形状和相对位置。
VLSI物理设计——布局
布局的任务是要确定模块在芯片上的精确位置,其目标是在保证布通的前提下使芯片面积尽可能小。
VLSI物理设计——布线
布线阶段的首要目标是完成模块间的互连,其次是在完成布线的前提下进一步优化布线结果,如提高电性能、减小通孔数等。
版图设计规则(DR)
- 尺寸规则:几何图形的最小宽度
- 间距规则:几何图形外边界最小间距
- 覆盖规则:最小覆盖
算法和复杂性
由于我们面对的处理对象可能是上千万个,甚至是上亿个器件。哪怕是二次方量级的算法时间都可能是无法实现的。
- 基本算法问题
- 算法复杂性
- 最优化问题
- 可行解问题
- NP-困难问题
基本数据结构
- 版图数据的基本操作:点查找、邻接查找、区域搜索、模块插入、模块删除、推移、压缩、建立通道。
- 哈希表、邻接链表、角勾链、二叉排序树、R树。
基本算法
- 图论算法:DFS、BFS、最佳优先搜索、拓扑排序、最短路径、最小生成树、斯坦纳树算法、匹配算法、网络流问题
- 计算几何算法:扫描线算法
- 基于运筹学的算法:线性规划、整数规划、动态规划、非线性规划
- 启发式搜索:模拟退火法
- 人工智能方法:群智能、机器学习
图论术语
图大量用于物理设计算法描述和表示版图拓扑结构。因此,基本理解图论术语,对于理解优化算法工作原理来说至关重要。
图论术语——图
图G(V, E)由两个集合组成——顶点(元素)的集合,表示为V;边的集合(两个元素之间的关系),表示为E。节点的度是与它连接的边的数量。
图论术语——超图
超图由节点和超边组成,其中,超边是两个或者更多节点的子集。注意:如果一个图是超图,那么它的超边基数为2。超边通常用于表示电路超图中的多引脚网或者多点连接。
图论术语——有向图
有向图是一种图,其边的方向表示两节点之间的特殊序关系。例如,一个信号可能在一个门的输出引脚产生,流向另一个门的输入引脚。
图论术语——斯坦纳树
Steiner树是一种泛化的生成树,除了原始节点,还有Steiner点,使用Steiner点可以减少树的边代价。
EDA术语
- 组件是有基本功能的电路元件。例如晶体管、电阻和电容。
- 模块是一个电路划分或者一部分构件的集合。
- 单元是用不同构件建立的逻辑或者功能单位。在数字电路中,单元通常指门。
- 引脚是一个电子终端,用于连接给定的构件到它的外部环境。在模块到模块连接(集成电路内部)一级,I/O引脚存在低级金属层。
- 层是制造工艺等级,在这个等级中,设计构件在芯片上成型。在物理设计中,电路构件分配到不同层。
- 过孔是金属层之间的连接,通常用来连接不同层的布线结构。
- 线网或信号是必须在相同电势下连接的引脚或者终端的集合。
- 线网权重是一个数(典型的整数)值,用来表示线网的重要性或关键性。
- 网表是在设计中连接的所有信号网和构件的集合。
二、网表和系统划分
引言
术语
划分目标
- 给定图G(V, E),节点数为|V|,边数为|E|,节点v ∈ V和边e ∈ E
- 每个顶点的面积/权重s(v),每条边的权重为w(e)
- 划分是将图G划分为k个不相交的子图,使得达到划分目标
划分的主要目标:
- 不同块之间的连接数尽量少
- 每个部分满足设计约束(规模,外部连接数……)
- 每个块尽量平衡
如何达到目标:
- NP-hard问题
- 启发式算法:迭代改进算法、多级划分算法、低阶多项式时间算法等
划分算法
Kernighan-Lin(KL)算法
给定:一个含2n个节点的图,假设所有的节点权重相同。
目标:得到一个划分(partition),将图分为不交的两个部分A和B,使得|A|=|B|=n,使得割边数最少。术语
例子
扩展的Kernighan-Lin算法
- 块规模不同
- 应用 KL 算法对 min(|A|, |B|) 节点进行交换
- 顶点权重不同
- 顶点权重转化为整数值
- 维持平衡约束
- k路划分(产生k个块)
- 对所有可能的子集应用 KL 算法进行二路划分
- 递归划分(一般k是2的幂次方)
- 直接k路划分
Fiduccia-Mattheyses(FM)算法
- 单点移动取代一对顶点的交换——适用更广
- 每个节点的权重可以不同
- 适用于不同规模的块划分
- 割边计算扩展到超图
- 线网可以有 2+ 个引脚
- FM最小化基于线网,更适用于集成电路的划分
给定:超图 G(V, H),划分数
目标:将节点划分到不同的块中,在满足平衡约束的基础上,使得被割的超边权重和最小
样例
KL & FM 的对比
划分算法的运行时间:
- KL 与节点和边数规模关联
- FM 与节点和线网(超边)关联
划分算法的复杂度:
- KL 每轮需要n的3次方
- FM 每轮需要线性时间
三、布图规划
布图规划介绍
布图规划的优化目标
- 全局边界框的面积和形状
- 全局边界框是包含所有的布图模块的最小矩形
- 全局边界框是代表顶层布图的面积
- 总线长
- 长互连线可能会增加信号的传播延迟
- 面积 area(F) 和总线长 L(F) 的组合
- 最小化 a ∙ area(F) + (1 – a) ∙ L(F)
其中 0 ≤ a ≤ 1 表示 area(F) 和 L(F) 的相对重要性
- 最小化 a ∙ area(F) + (1 – a) ∙ L(F)
- 信号时延
- 采用静态时序分析来确定关键路径上的互联
术语
- 矩形划分 是将芯片面积划分为一组块或非重叠矩形的集合
- 二划分
- 通过不断对矩形进行划分
- 水平或垂直割线
- 二划分树 或者 二划分布图规划树 是一个有 k 个叶子节点 和 k – 1 个内部节点的二叉树
- 每个叶子代表一个块
- 每个内部节点代表了一条水平或垂直割线
- 垂直约束图(VCG),节点权重表示相应块的高度
- 两个节点 vi 和 vj ,相应的块 mi 和 mj ,如果 mi 在 mj 下面,则这两个节点被一条从 vi 到 vj 的有向边连接
- 水平约束图(HCG),节点权重表示相应块的宽度
- 两个节点 vi 和 vj ,相应的块 mi 和 mj ,如果 mi 在 mj 左边,则这两个节点被一条从 vi 到 vj 的有向边连接
- VCG/HCG中的最长路径相当于布图所需要的最小高度/宽度
- 约束图对是一个布局对应的2个方向的约束图,可以获取模块之间的相对位置
布图的表示
从布图到一个约束图对
从布图到一个序列对
从序列对到一个布图
布图规划算法
目标:在满足布图面积上限的条件下,最小化互连线总长度;同时优化总线长和面积
布图尺寸变化
算法:
该算法对一个给出的二划分布图问题,可在多项式时间内,找出最小布图面积。对于不可二划分的布图,该问题成为NP困难问题
- 构造所有块的形状函数
- 自底向上:确定顶层布图的形状函数,顶层布图的形状函数源于每个独立块的形状函数
- 自顶向下:小面积布图总是在形状函数的角点上。在找到最小面积的角点后,每个独立块的尺寸和相对位置就可以从布图的形状函数回溯到块的形状函数来得到
例子
群生长
模拟退火
四、全局和详细布局
引言
优化目标
总线长
最大割数
布线拥挤度
信号时延
全局布局
最小割布局
例子
端点传播
解析布局
二线长布局
力矢量布局
模拟退火
现代布局算法
合法化和详细布局
五、总体布线
引言
术语和定义
优化目标
区域布线的表示
总体布线流程
单网布线
直线布线
启发式Steiner最小树
连通图中的总体布线
Dijkstra算法求解最短路
定义
Dijkstra 算法用于在给定的图中找到两个特定节点之间的最短路径。它的输入包括:
- 图 G(V, E),其中 V 是图中节点的集合,E 是图中边的集合,W 是图中边权重的非负集合
- 源节点 s
- 目标节点 t
该算法维护三个节点组:
- 组 1:包含尚未访问的节点
- 组 2:包含已访问但尚未找到从源节点到该节点的最短路径成本的节点
- 组 3:包含已访问且已找到从源节点到该节点的最短路径成本的节点
一旦目标节点 t 位于组 3 中,该算法将通过回溯找到最短路径。
例子
A*算法找最短路径
全网布线
整数规划布线
例子