FPGA 结构与 CAD 设计(第5章)下

以下内容总结自《深亚微米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. 什么叫"非均匀型"全局布线结构?

前面所谓"均匀型",指的是同一方向上所有通道宽度都一样

而"非均匀型"就是:在芯片内的不同区域,通道宽度不一样。

文中重点研究了三类非均匀结构:

  1. 中心 vs 边缘:中心宽、边缘窄
  2. 仅中心几条通道加宽(中心通道加宽)
  3. 仅 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 通道宽度 / 内部普通通道宽度

来做分析,考虑两种情况:

  1. I/O 位置可自由选择(布局工具可以决定哪一个物理 I/O 对应哪个逻辑 I/O)
  2. 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 小结里,把本章结果压缩成了几条非常"反直觉但实用"的结论,大致如下:

  1. 最优的全局布线结构是均匀的

    • 在整块芯片里,不论水平还是垂直方向,通道容量尽量均匀分布时,面积利用率最高
    • 多数电路其实会"自发"地把布线需求分散到整个 FPGA,而不是某一小块特别挤
  2. 非均匀型结构(中心加宽、局部宽通道)并没有传说中那么神

    • 在大多数测试结构里,非均匀型 FPGA 的平均轨道段需求,不仅没有显著下降,反而略有上升
    • 极少数"最优非均匀结构"对面积的改善也不超过 1%,远不足以抵消在工业版图设计上带来的复杂度
  3. I/O 是唯一值得特别考虑的例外场景

    • 当板级或系统级约束把 I/O 位置锁死时,适度增加 I/O 通道宽度可以部分缓解压力
    • 但这个"适度"差不多也就在 25% 左右,而不是倍率级地加宽
  4. 引脚满边 + 无偏向 + 均匀结构,在本工艺和测试集下是最优组合

    • 满边引脚定位
    • 水平/垂直通道宽度相等(Rn=1)
    • 阵列尽量方形
    • 通道容量均匀分布,不搞中心/边缘差异化
  5. CAD 工具的改进,比堆结构特性更重要

    • 非线性拥挤成本函数虽然计算量大,但对均匀结构的布通率提升更明显
    • 优秀的 CAD 工具应该尽量分散拥塞,而不是试图把"挤的地方"全搬到某个预先加宽的"高速通道"上

6. 对架构和工程实践的启发

如果把这一章翻译成几条给架构工程师/工具工程师的建议,可以这么总结:

对做 FPGA 架构的人

  • 少搞奇技淫巧,多用均匀结构
    • 除了 I/O 特殊需求,大多数"中心加宽""局部宽通道"带来的只是复杂度,并不真省面积
  • 先把逻辑块引脚位置设计好
    • 满边引脚 > 上下边引脚
    • 这是一个稳定能带来 ~8% 收益的设计点,比大多数布线花活都靠谱
  • 阵列形状可根据 I/O/封装适配
    • 顶多配合调一调 Rn,矩形阵列并不是"原罪"

对做 CAD 工具的人

  • 成本函数的设计很关键
    • 线性拥挤成本函数已经能在均匀结构上获得不错效果
    • 非线性模型虽然算得慢,但确实能进一步提升布通率,尤其是对均匀结构更友好
  • 目标是"平摊拥塞"而不是"引流到高速路"
    • 电路的本征"热点"是分散的
    • 与其预设某块区域更宽,不如让工具更聪明地把热点打散

整体来看,第五章给出的信息量很大,但中心思想可以一句话概括:

均匀是王道,复杂的非均匀结构大多是看起来很美,数据却不支持。

如果你正好在做 FPGA 架构、布线资源规划或者 CAD 工具评估,这个章节可以当成一个比较系统的"实验结论速览"。后续如果你有具体结构参数或者想对比某个商用 FPGA 的公开数据,也可以在这个结论的基础上再做针对性分析。

相关推荐
Js_cold4 小时前
Xilinx FPGA Flash启动时钟频率
单片机·嵌入式硬件·fpga开发·vivado·xilinx·flash·cclk
博览鸿蒙1 天前
FPGA的学习路径和入行指南
fpga开发
ShiMetaPi1 天前
GM-3568JHF丨ARM+FPGA异构开发板应用开发教程:01 UART读写案例
arm开发·单片机·嵌入式硬件·fpga开发·fpga·rk3568
楠了个难1 天前
AXI4接口简介——ZYNQ学习笔记24
笔记·学习·fpga开发
FPGA_小田老师1 天前
FPGA例程(6):UART串口通讯协议解析
fpga开发·串口通信·rs232·rs422·波特率·uart通信
LCMICRO-133108477461 天前
长芯微LD8574完全P2P替代PCF8574,主要用于扩展通用输入输出端口(GPIO)
单片机·嵌入式硬件·fpga开发·硬件工程·dsp开发
LCMICRO-133108477461 天前
长芯微LD9535完全P2P替代PCA9535,是用于扩展通用输入输出端口(GPIO)
stm32·单片机·嵌入式硬件·fpga开发·硬件工程
最遥远的瞬间1 天前
三、语法篇_Verilog
fpga开发
初雪白了头1 天前
三模冗余检测并隔离故障模块
fpga开发