以下内容总结自《深亚微米FPGA结构与CAD设计》- 作为一个读书笔记与大家共享。部分内容为AI补充,不对的地方还请指出。
目录
[1. 什么叫"非均匀型"全局布线结构?](#1. 什么叫“非均匀型”全局布线结构?)
[2. 中心/边缘通道宽度比例:Rw、Rc 模型](#2. 中心/边缘通道宽度比例:Rw、Rc 模型)
[2.1 为啥"中心更宽"没起到预期作用?](#2.1 为啥“中心更宽”没起到预期作用?)
[3. 中心加宽的几条通道:R_m 分析](#3. 中心加宽的几条通道:R_m 分析)
[4. I/O 通道:加宽有没有用,要看场景](#4. I/O 通道:加宽有没有用,要看场景)
[5. 这一章的"总大结论"](#5. 这一章的“总大结论”)
[6. 对架构和工程实践的启发](#6. 对架构和工程实践的启发)
[对做 FPGA 架构的人](#对做 FPGA 架构的人)
[对做 CAD 工具的人](#对做 CAD 工具的人)
上半部分讲了偏向型结构、引脚位置和阵列形状,得出的结论是:
均匀 + 满边 + 方形阵列,其实已经非常接近最优。
但是现实里很多 FPGA 厂商会做一些"特殊处理",比如:
- 在芯片中心把布线通道加宽
- 在 I/O 区域加宽连接 I/O 的通道
这类结构在架构介绍里听上去很有道理:
"中心最挤""I/O 固定会拉高边缘压力",那在这些区域堆一些额外布线资源,听起来完全没毛病。
但这章的实验结果,给这些"经验主义"浇了一盆冷水。
1. 什么叫"非均匀型"全局布线结构?
前面所谓"均匀型",指的是同一方向上所有通道宽度都一样 。
而"非均匀型"就是:在芯片内的不同区域,通道宽度不一样。
文中重点研究了三类非均匀结构:
- 中心 vs 边缘:中心宽、边缘窄
- 仅中心几条通道加宽(中心通道加宽)
- 仅 I/O 栏附近通道加宽(I/O 通道)
目标仍然是:
在保证 26 个基准电路都能布通的前提下,看平均每个逻辑块需要多少轨道段,跟均匀结构相比有没有实质性提升。
2. 中心/边缘通道宽度比例:Rw、Rc 模型
作者用两个参数来刻画这种结构:
- Rw = 中心区域通道宽度 / 边缘区域通道宽度
- Rc = 宽通道在所有通道中的数量比例 (比如 Rc=0.5 → 一半通道宽,一半窄)
实验中测试了多组合,例如:
- Rw = 1.33 / 2
- Rc 在 0 ~ 1 范围内连续取值
- Rc=0 或 1 恢复为"均匀结构"(全宽或全窄)
结果:
- 大多数非均匀结构,面积利用率都比均匀结构差
- 最差的情况是:Rw=2、Rc=0.5,即一半通道宽一倍,另一半保持原宽
- 极个别结构稍微好一点:
- 最中心 10% 通道加宽 33%
- 或最中心 90% 通道加宽 33%
→ 相比完全均匀结构,平均每块逻辑的轨道段数量最多也就节省不到 1%
结合工业版图代价来看:
想清楚一点:你为了那不到 1% 的布线面积节省,要付出重做中心版图的复杂度和代价,基本不划算。
2.1 为啥"中心更宽"没起到预期作用?
有两个很关键的统计图:图 5.10 和图 5.11。
-
图 5.10:
统计了 26 个电路在不同通道位置上所需的最大/平均轨道数
→ 在芯片中间 90% 区域里,需求几乎是常数,只有接近边缘时略有下降
-
图 5.11:
展示了几个代表性电路(如 alu4、sbc、C6388)的需求曲线
→ 同样看不到中心区比其他区域"明显更挤"的现象
同时还要考虑另一个现实:
- 电路中会自然形成很多"拥塞热点"(某一局部区域的轨道几乎被用满)
- 这些热点分布在芯片各处,不是都扎堆在中心
- 如果你强行在中心塞更多布线资源,优秀的布局器反而得花大力气把这些热点挪到中心去用这些轨道,这会让成本函数设计变得更复杂,计算时间也上去
书中还提了一点:
相比线性拥挤成本函数,更复杂的"非线性拥挤成本函数"对均匀结构 的改善更明显,说明把资源均匀撒开 + 把电路"均匀摊开",比"先设定一个宽中心再往里堆"这套路子更健康。
3. 中心加宽的几条通道:R_m 分析
有些 FPGA(比如文中提到的 Lucent 某些器件)会在芯片中心的几条通道上特别加宽 。
作者用参数:
R_m = 中心那几条通道宽度 / 其他通道宽度
来做实验,并对比两种布局成本模型:
- 线性拥挤成本函数
- 边界框(bounding box)成本函数
结论(图 5.13):
- 在边界框成本函数下,R_m = 1(不加宽)面积利用率最高
- 在线性拥挤成本函数下,R_m = 2 左右会出现一个拐点,效果跟 R_m = 1 差不多,但并没有明显更好
- 总体来看,"只加宽中心几条通道"这件事,很难在统计意义上带来明显面积优势
换句话说:
你如果只是在几条中心通道上加宽,不改变整体资源分布策略,基本是徒增版图复杂度。
4. I/O 通道:加宽有没有用,要看场景
另一个常见的设计是:在边缘 I/O 区域增加布线资源,比如 Xilinx 某些系列,在 I/O 行与逻辑阵列之间专门放宽通道。
作者用参数:
R_io = 边缘 I/O 通道宽度 / 内部普通通道宽度
来做分析,考虑两种情况:
- I/O 位置可自由选择(布局工具可以决定哪一个物理 I/O 对应哪个逻辑 I/O)
- I/O 位置随机固定(模拟板级约束把 I/O 固死在不太理想的位置)
关键结果(图 5.15):
-
如果 I/O 位置可以自由选择:
- R_io=1(I/O 通道和内部通道一样宽)时,平均轨道段数量最低
- 也就是均匀结构最优
-
如果 I/O 位置被随机固定:
- 整体平均布线轨道段数会比"可移动 I/O"情况增加约 12%
- 最优点从严格的 R_io=1 稍微偏移,但整体还是接近 1 这一侧,远不是"极大加宽 I/O 通道"
更细一点再看图 5.16、5.17 的分析:
- 像 alu4 这种 I/O 数量只占总 I/O 的 7% 的电路,I/O 固定几乎不影响整体布线需求曲线
- 而像 C6388、sbc 这种 I/O 数占比 30%~60% 的电路,
- I/O 固定会导致整个 FPGA 范围内轨道需求上升
- 尤其在接近边缘位置时,上升更明显
所以对 I/O 通道的设计,可以简单归纳为:
I/O 很少 → 不必在结构上给 I/O 特意预留更多通道
I/O 很多且位置刚性约束 → 可适度加宽 I/O 通道,但没必要极度"堆料"
5. 这一章的"总大结论"
书最后在 5.5 小结里,把本章结果压缩成了几条非常"反直觉但实用"的结论,大致如下:
-
最优的全局布线结构是均匀的
- 在整块芯片里,不论水平还是垂直方向,通道容量尽量均匀分布时,面积利用率最高
- 多数电路其实会"自发"地把布线需求分散到整个 FPGA,而不是某一小块特别挤
-
非均匀型结构(中心加宽、局部宽通道)并没有传说中那么神
- 在大多数测试结构里,非均匀型 FPGA 的平均轨道段需求,不仅没有显著下降,反而略有上升
- 极少数"最优非均匀结构"对面积的改善也不超过 1%,远不足以抵消在工业版图设计上带来的复杂度
-
I/O 是唯一值得特别考虑的例外场景
- 当板级或系统级约束把 I/O 位置锁死时,适度增加 I/O 通道宽度可以部分缓解压力
- 但这个"适度"差不多也就在 25% 左右,而不是倍率级地加宽
-
引脚满边 + 无偏向 + 均匀结构,在本工艺和测试集下是最优组合
- 满边引脚定位
- 水平/垂直通道宽度相等(Rn=1)
- 阵列尽量方形
- 通道容量均匀分布,不搞中心/边缘差异化
-
CAD 工具的改进,比堆结构特性更重要
- 非线性拥挤成本函数虽然计算量大,但对均匀结构的布通率提升更明显
- 优秀的 CAD 工具应该尽量分散拥塞,而不是试图把"挤的地方"全搬到某个预先加宽的"高速通道"上
6. 对架构和工程实践的启发
如果把这一章翻译成几条给架构工程师/工具工程师的建议,可以这么总结:
对做 FPGA 架构的人
- 少搞奇技淫巧,多用均匀结构
- 除了 I/O 特殊需求,大多数"中心加宽""局部宽通道"带来的只是复杂度,并不真省面积
- 先把逻辑块引脚位置设计好
- 满边引脚 > 上下边引脚
- 这是一个稳定能带来 ~8% 收益的设计点,比大多数布线花活都靠谱
- 阵列形状可根据 I/O/封装适配
- 顶多配合调一调 Rn,矩形阵列并不是"原罪"
对做 CAD 工具的人
- 成本函数的设计很关键
- 线性拥挤成本函数已经能在均匀结构上获得不错效果
- 非线性模型虽然算得慢,但确实能进一步提升布通率,尤其是对均匀结构更友好
- 目标是"平摊拥塞"而不是"引流到高速路"
- 电路的本征"热点"是分散的
- 与其预设某块区域更宽,不如让工具更聪明地把热点打散
整体来看,第五章给出的信息量很大,但中心思想可以一句话概括:
均匀是王道,复杂的非均匀结构大多是看起来很美,数据却不支持。
如果你正好在做 FPGA 架构、布线资源规划或者 CAD 工具评估,这个章节可以当成一个比较系统的"实验结论速览"。后续如果你有具体结构参数或者想对比某个商用 FPGA 的公开数据,也可以在这个结论的基础上再做针对性分析。