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

以下内容总结自《深亚微米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 流程,大体如下:

  1. 逻辑综合(SIS)

    对原始 MCNC 基准电路做工艺无关优化。

  2. 工艺映射(FlowMap + FlowPack)

    • FlowMap 把逻辑映射到 4-LUT + 寄存器
    • FlowPack 做后处理,减少 LUT 数量
  3. 打包(VPack)

    把 LUT 和寄存器打包进 BLE(Basic Logic Element,一般是"一个 4-LUT + 一个寄存器")。

  4. 布局 + 全局布线(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 下的需求),可以总结出三点:

  1. 满边引脚定位 + Rn=1(无偏向)最佳

    • 面积利用率最高
    • 平均每个逻辑块需要的轨道段最少
  2. 上下边引脚定位 + Rn=2 最合适

    • 因为引脚只能上下走,水平方向被"压得很满"
    • 把水平方向通道加宽到垂直方向的 2 倍,可以显著缓解压力
  3. 满边 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. 最优组合(在本章假设下)

    • 满边引脚定位
    • 方形逻辑阵列(宽长比=1)
    • 水平/垂直通道无偏向(Rn=1)
      → 面积利用率最高
  2. 引脚位置的影响 >= 偏向度

    • 满边结构比上下边结构能节省约 8% 布线资源
    • 如果因为架构或工艺原因只能用上下边结构,记得把 Rn 调到 2 附近
  3. 矩形阵列不用太恐慌

    • 只要配套地调整 Rn,与方形阵列相比,面积损失可以控制在几个百分点
    • 某些以 I/O 数量为主导的设计,可以接受略有偏向度的矩形阵列
  4. 偏向型结构不是"必需品"

    • 在引脚满边、阵列方形的情况下,最优 Rn 就是 1
    • 也就是说,很多情况下根本不需要做偏向型架构,均匀结构就已经足够好
相关推荐
洋洋Young2 小时前
【Xilinx FPGA】7 Series Clocking 设计
fpga开发·xilinx fpga
156082072192 小时前
FPGA下AD采集时钟相位的调整
fpga开发
从此不归路2 小时前
FPGA 结构与 CAD 设计(第5章)下
fpga开发
Js_cold5 小时前
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开发