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

以下内容总结自《深亚微米FPGA结构与CAD设计》- 作为一个读书笔记与大家共享。部分内容为AI补充,不对的地方还请指出。

目录

1. 全局布线结构到底是个啥?

2. 用什么流程来评估这些结构?

3. 面积利用率怎么量化?

4. 偏向型结构:水平、垂直通道要不要搞成不一样宽?

4.1 偏向度 Rn 的定义

4.2 两种引脚位置:满边 vs 上下边

4.3 图 5.4 & 表 5.1:数据告诉我们什么?

5. 阵列形状:一定要方的吗?矩形吃亏多少?

5.1 宽长比的定义

5.2 宽长比与最佳 Rn 之间的关系(图 5.7)

5.3 宽长比对面积利用率的真实影响(图 5.8)

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
    • 也就是说,很多情况下根本不需要做偏向型架构,均匀结构就已经足够好

Read more

别把 F1 开成老头乐:GitHub Copilot 深度调教与 7 个“上下文工程”秘籍

别把 F1 开成老头乐:GitHub Copilot 深度调教与 7 个“上下文工程”秘籍

别把 F1 开成老头乐:GitHub Copilot 深度调教与 7 个“上下文工程”秘籍 前言 很多开发者抱怨 Copilot 生成的代码是“垃圾”或“幻觉”。真相是:Copilot 是一辆 F1 赛车,而大多数人只把它当成了自动挡的老年代步车。 本指南将揭示 Copilot 不为人知的底层机制,教你通过“上下文工程” (Context Engineering),让 AI 写出精准、规范的生产级代码。 核心心智模型:Copilot 是怎么“思考”的? 在学习技巧前,你需要理解 Copilot 的大脑构造。它不是在瞎猜,它是在根据你喂给它的“上下文(Context)”计算概率。 Copilot 的上下文由三层组成:

什么是Agentic AI?Agentic AI 与传统 AIGC 有什么区别?

什么是Agentic AI?Agentic AI 与传统 AIGC 有什么区别?

什么是 Agentic AI?Agentic AI 与传统 AIGC 有什么区别? 1. 引言 近年来,人工智能(AI)技术飞速发展,其中以生成式 AI(AIGC,Artificial Intelligence Generated Content)和 Agentic AI(智能代理 AI)最为热门。AIGC 通过深度学习模型生成文本、图像、视频等内容,而 Agentic AI 则更进一步,能够自主感知、决策并执行任务。那么,Agentic AI 究竟是什么?它与传统的 AIGC 有何不同?在本文中,我们将深入探讨 Agentic AI 的概念、技术原理、

Qt Creator配置AI编程插件GitHub Copilot

Qt Creator配置AI编程插件GitHub Copilot

第一步:GitHub Copilot插件安装 QtCreator18.0为例,点击左侧Extensions菜单,在上方搜索栏搜索 GitHub Copilot, 然后点击右上角Active启动后重启QtCreator即可完成该工具安装. 第二步:copilot.vim 环境配置 去GitHub下载copilot.vim压缩包:copilot.vim。下载地址:https://github.com/github/copilot.vim 随后解压到自定义位置。 将其目录下.\dist\language-server.js地址填入设置的Path to language-serverjs项。 第三步:安装Node.js 去Node.js官网下载并安装node.js:node.js官网。 同样将node.exe地址链接到设置的Node.js path项。下载地址:https://nodejs.org/zh-cn 第四步:

Claude部署(copilot反向代理)

一、教育邮箱认证 1、进行教育邮箱认证可免费使用claude pro 2年,有机会的话可以进行认证,无法教育认证的话只能花钱充claude的会员了,如何进行教育认证可观看该Up的视频 超简单一次通过Github学生认证,逐步详细视频教程_哔哩哔哩_bilibili 2、教育认证通过后在GitHub个人主页下的Copilot/Features中开启Copilot Pro 二、服务器上配置Copilot反向代理 1、配置nodejs环境 在官网https://nodejs.org/en/download/package-manager,下载nodejs安装包(Linux) 下载完成后将压缩包传到服务器上进行解压,目录如下 创建软连接,使得在任意目录下都可以试用直接使用node命令和npm命令 ln -s /root/node-v24.13.1-linux-x64/bin/node /usr/local/bin/node ln -s /root/node-v24.13.