以下内容总结自《深亚微米FPGA结构与CAD设计》- 作为一个读书笔记与大家共享。部分内容为AI补充,不对的地方还请指出。
目录
[1. 全局布线结构到底是个啥?](#1. 全局布线结构到底是个啥?)
[2. 用什么流程来评估这些结构?](#2. 用什么流程来评估这些结构?)
[3. 面积利用率怎么量化?](#3. 面积利用率怎么量化?)
[4. 偏向型结构:水平、垂直通道要不要搞成不一样宽?](#4. 偏向型结构:水平、垂直通道要不要搞成不一样宽?)
[4.1 偏向度 Rn 的定义](#4.1 偏向度 Rn 的定义)
[4.2 两种引脚位置:满边 vs 上下边](#4.2 两种引脚位置:满边 vs 上下边)
[4.3 图 5.4 & 表 5.1:数据告诉我们什么?](#4.3 图 5.4 & 表 5.1:数据告诉我们什么?)
[5. 阵列形状:一定要方的吗?矩形吃亏多少?](#5. 阵列形状:一定要方的吗?矩形吃亏多少?)
[5.1 宽长比的定义](#5.1 宽长比的定义)
[5.2 宽长比与最佳 Rn 之间的关系(图 5.7)](#5.2 宽长比与最佳 Rn 之间的关系(图 5.7))
[5.3 宽长比对面积利用率的真实影响(图 5.8)](#5.3 宽长比对面积利用率的真实影响(图 5.8))
[6. 小结:这篇到底给了我们哪些"硬结论"?](#6. 小结:这篇到底给了我们哪些“硬结论”?)
在做 FPGA 架构或者评估不同 FPGA 方案的时候,大家经常会提到一个词:全局布线结构。但这个东西到底具体指什么?怎么量化"好"与"不好"?哪些结构是"玄学",哪些是有数据支撑的?
这本书第五章就结合一组基于26 个 MCNC 基准电路的实验,系统解答了以下问题:
- 全局布线结构到底是啥?
- CAD 流程如何评估不同结构?
- 偏向型布线结构(水平/垂直通道宽度不同)值不值?
- 引脚位置(满边 vs 上下边)究竟影响多大?
- 阵列宽长比(方形 vs 矩形)对面积利用率有什么影响?
1. 全局布线结构到底是个啥?
书里的定义比较严谨,大白话说就是:
在一块 FPGA 里,各个布线通道里放多少条轨道、怎么分布,这一整套"配比方案",就叫全局布线结构。
注意几点:
- 这里看的是相对数量,不是绝对线数;
- 只关注"通道有多宽"、"哪块更宽",不去管每条线是不是长线、短线、可转几次弯那种细节;
- 目标只有一个:在保证能布通目标电路的前提下,让布线总面积尽可能小。
而 FPGA 跟标准单元、MPGA 不一样的地方在于:
标准单元/MPGA 的通道宽度可以在版图阶段"按需扩",FPGA 的通道宽度是你设计架构时就一次性刻死 的。
所以,片上哪些位置多给点布线资源,哪些位置可以少给点,必须在架构阶段想清楚。
2. 用什么流程来评估这些结构?
文中用的是一条比较"接近真实商用品质"的 CAD 流程,大体如下:
-
逻辑综合(SIS)
对原始 MCNC 基准电路做工艺无关优化。
-
工艺映射(FlowMap + FlowPack)
- FlowMap 把逻辑映射到 4-LUT + 寄存器
- FlowPack 做后处理,减少 LUT 数量
-
打包(VPack)
把 LUT 和寄存器打包进 BLE(Basic Logic Element,一般是"一个 4-LUT + 一个寄存器")。
-
布局 + 全局布线(VPR)
- 读入逻辑网表 + FPGA 结构描述(包括全局布线结构)
- 先布局,再多次尝试全局布线
- 每一次尝试时都假设一个"通道容量"(比如水平方向 W_h 条轨道,垂直 W_v 条轨道)
关键点在于:
VPR 会不断调整通道容量:
- 布线失败 → 通道容量加大
- 布线成功 → 通道容量减小
直到找到"刚好能布通电路 "的最小通道容量。这时,对给定结构而言,就能算出对应的平均布线轨道段数量,也就能估计面积利用率。
3. 面积利用率怎么量化?
这里不是简单数"总轨道数",而是用一个更贴近版图面积的指标 ------ 布线轨道段:
- 定义:跨越一个逻辑单元块宽度的一小段线,算 1 段
- 如果一条轨道跨越 W 个单元块,就算 W 段
然后:
- 把整个 FPGA 上所有轨道段加总
- 再除以逻辑单元块数量 → 得到每个逻辑块平均需要多少轨道段
- 这个数越小,说明在保证布通的前提下,用的布线资源越少 → 面积利用率越高
例如,一个 M×M 的方形均匀 FPGA,每个通道 W 条轨道,横纵两向一共 2M 条通道,总轨道段数大概是 2WM²,除以 M² 个逻辑块,就是每块 2W 段。
后面所有比较,基本都落在这个指标上。
4. 偏向型结构:水平、垂直通道要不要搞成不一样宽?
4.1 偏向度 Rn 的定义
作者用一个参数 Rn 来描述偏向型结构:
Rn = 水平布线通道宽度 / 垂直布线通道宽度
比如 Rn=2 表示:
水平方向通道宽度是垂直方向的两倍。
他们测试了 Rn 从 1~4 的多种情况,在方形阵列 和不同引脚位置下,比较面积利用率。
4.2 两种引脚位置:满边 vs 上下边
这点非常关键,因为它直接影响某个方向上的"压力"。
-
满边引脚定位
输入输出引脚均匀分布在四个边,像 Xilinx、Lucent 那类。
优点:连接附近单元块的成本相对均衡,布线器有更多"低成本"路径可选。
-
上下边引脚定位
引脚只在上、下两边,类似某些 Actel 器件。
缺点:很多连接被迫走水平方向,水平方向压力远大于垂直方向。
4.3 图 5.4 & 表 5.1:数据告诉我们什么?
根据图 5.4 和表 5.1(文中给了 7 个最大基准电路在不同 Rn 下的需求),可以总结出三点:
-
满边引脚定位 + Rn=1(无偏向)最佳
- 面积利用率最高
- 平均每个逻辑块需要的轨道段最少
-
上下边引脚定位 + Rn=2 最合适
- 因为引脚只能上下走,水平方向被"压得很满"
- 把水平方向通道加宽到垂直方向的 2 倍,可以显著缓解压力
-
满边 vs 上下边的差距
- 在各自的"最优 Rn"下,满边结构比上下边结构大约节省 8% 的布线资源
- 也就是说,引脚放哪儿,比你怎么调 Rn 还重要
书里还用图 5.5 做了一个多端点网络的例子:
同一条网,在上下边结构里要 6 段轨道才能走完,在满边结构里只要 5 段。差距就这样一点一点累积起来。
5. 阵列形状:一定要方的吗?矩形吃亏多少?
5.1 宽长比的定义
逻辑单元块阵列的 宽长比 = 列数 / 行数 (或者相反,具体看约定)。
宽长比 = 1 → 方形阵列
宽长比 > 1 → 矩形阵列(更"长条形")
现实中,厂商有时候会因为:
- 基本单元版图不是方形
- 想增加 I/O 数量(增加芯片周长)
而采用矩形阵列。
5.2 宽长比与最佳 Rn 之间的关系
在满边引脚定位下,作者测试了宽长比 = 1、2、3 三种阵列,结果大致如下:
- 宽长比 = 1(方形)→ 最佳 Rn ≈ 1
- 宽长比 = 2 → 最佳 Rn ≈ 1.33
- 宽长比 = 3 → 最佳 Rn ≈ 1.59
原因也直观:
阵列被拉长后,某一方向上的连线平均跨越更多单元块,对该方向轨道段的需求上去,最优偏向度自然向这一边倾斜。
5.3 宽长比对面积利用率的真实影响
图 5.8 给了一个很有参考价值的结论:
- 如果矩形阵列的 Rn 固定在 1(不调偏向),宽长比越大,面积利用率下降越明显
- 如果让 Rn 跟着宽长比调到最优值:
- 宽长比 = 3 的阵列,相比方形阵列,每个逻辑块多消耗约 4% 的轨道段而已
也就是说:
只要你愿意同时调节 Rn,矩形阵列在面积上并不吃太大亏。
6. 小结:这篇到底给了我们哪些"硬结论"?
把上面的内容压缩一下,可以归纳成几条对架构设计非常实用的结论:
-
最优组合(在本章假设下)
- 满边引脚定位
- 方形逻辑阵列(宽长比=1)
- 水平/垂直通道无偏向(Rn=1)
→ 面积利用率最高
-
引脚位置的影响 >= 偏向度
- 满边结构比上下边结构能节省约 8% 布线资源
- 如果因为架构或工艺原因只能用上下边结构,记得把 Rn 调到 2 附近
-
矩形阵列不用太恐慌
- 只要配套地调整 Rn,与方形阵列相比,面积损失可以控制在几个百分点
- 某些以 I/O 数量为主导的设计,可以接受略有偏向度的矩形阵列
-
偏向型结构不是"必需品"
- 在引脚满边、阵列方形的情况下,最优 Rn 就是 1
- 也就是说,很多情况下根本不需要做偏向型架构,均匀结构就已经足够好