这一篇在干嘛?
设计抽象层级每抬高一级,人能驾驭的复杂度就大一级。本篇讲 RTL 之上的两件事:RTL 综合怎么利用 FPGA 的专用结构(数据通路、硬核),以及行为级综合怎么把 C/SystemC 式的行为描述自动变成 RTL(调度、分配、绑定三大任务)。
为什么要往抽象上层走
现代 SoC FPGA 单芯片里塞了处理器(硬核/软核)、总线、存储器、硬件加速器。要在这种复杂度上保持生产力,必须有一条”从概念到实现”的自动工具链:
- 系统级综合(ESL):把 SystemC 式系统描述编译成”跑在处理器上的任务 + 定制逻辑里的函数 + 通信协议与接口”;
- 行为级综合(HLS):把电路的行为描述变成满足面积/延迟/功耗约束的 RTL,三大子任务是调度(scheduling)、分配(allocation)、绑定(binding);
- RTL 综合:输入是”数据通路部件的数量与绑定关系 + 控制器(状态机)“,输出门级网表。
效率差距直观惊人:从 RTL 上移到行为级,代码密度可提升 10 倍、仿真时间缩短 100 倍。三层各自的分工可以这样记:
- 系统级回答”哪些部分跑软件、哪些做硬件、模块间怎么通信”;
- 行为级回答”硬件部分按什么顺序算、用几份资源、数据存在哪”;
- RTL 级回答”每个周期每个寄存器的值是什么”。
层级越高,搜索空间越大、自由度越高,但离物理现实越远——本篇后面会看到,把”物理现实”拉进高层综合正是该领域的核心矛盾之一。
RTL 综合:别浪费 FPGA 的”专用件”
RTL 综合的文献相对少——它大量复用成熟的 ASIC 技术,但 FPGA 有三个特殊议题。
数据通路综合:保住规则性
大电路里数据通路逻辑通常高度规则(位切片式重复)。传统流程却先把每个数据通路节点展开成门、丢掉规则性信息,再指望布局工具重新发现规整的版图——几乎不可能,结果版图混乱、布线困难,而且一旦摊平成门,进位链这类 CLB 特性就用不上了,问题规模还暴涨(门的数量远多于 DFG 节点数)。
数据通路综合反其道而行:保留数据通路结构,直接映射到 FPGA 的专用模块。
SDI 方案:针对拓扑固定的规则数据通路,采用三段式版图——中间大块放规则数据通路(模块横排、位切片竖叠),下方放控制器,上方小块放不规则逻辑(cap cells,如符号加法的溢出/进位处理)。


效果:版图更规整、更不拥塞,关键路径布线延迟比常规工具短 13%,编译还快一倍。代价是版图受约束——适合数据密集、控制简单的电路,控制密集的设计会被布局限制反噬。后续工作用词级优化(多路选择器树折叠、操作重排)把面积膨胀压到 3~8%。
GAMA:针对前述”压缩用不了进位链、只压缩相邻模块”两个局限,流程是——树分裂(在存储单元处断环、DAG 切成树)→ 树覆盖(用类 DAGON 的动态规划在线性时间里找到最优模块组合,能用 CLB 里的复合模块”一个顶俩”)→ 覆盖后优化 → 模块生成(4-LUT 列 + 进位链能实现丰富的运算功能,所有模块等宽等间距)。32 位数据通路映射到 Xilinx 4000 时编译速度快 3.24 倍,质量持平或更好。
异构 FPGA:软硬如何分工
平台 FPGA(Stratix II、Virtex-5 一类)同时提供”硬”专用结构(存储块、乘法器)和”软”可编程逻辑,RTL 综合必须两头来。学术工具 Odin 的流程:

- 解析:Verilog 变成层次化中间表示;
- 细化:展开成扁平网表,节点包括逻辑块、存储块、if/case、算术操作、寄存器;
- 简单综合:常量检查、多路选择器合并、状态机 one-hot 重编码;
- 推断(inferencing):在网表里搜”能映射到硬核的连通子图”——本质是子图同构匹配;
- 绑定:每个节点映射到硬电路、软逻辑或混合实现(比如映射到 LPM 库,由下游决定落点)。
质量与 Altera 前端工具相当。其他开放问题还包括:面向低功耗的 RTL 综合(第 6 章讲)、glitch 功耗的重定时、多路选择器优化的资源共享、版图驱动 RTL 综合等。
行为级综合:三大任务
把行为描述变成”数据通路 + 控制器”的 RTL,核心三件事:
- 调度:每个操作在哪一个控制步(时钟周期)执行;
- 分配:需要几个功能单元、寄存器、互连资源;
- 绑定:哪个操作用哪个功能单元、哪个变量存进哪个寄存器。
三者互相纠缠:调度受资源数量约束,资源多则并行度高但面积大——典型的性能/成本权衡。
一个反直觉的现实:多路选择器是 FPGA 里的奢侈品。0.1μm 工艺下,32 选 1 的 MUX 面积/延迟/功耗几乎等于一个 18 位乘法器。传统综合只盯着功能单元和寄存器省资源,结果 MUX 又宽又多,性能面积功耗全输。这要求搜索引擎在资源分配、MUX 生成、互连生成等因子联合约束下探索足够大的解空间。
更深的坑是物理脱节:没有版图信息就无法准确估计互连延迟,而互连恰是亚微米设计的性能主宰。这催生了”版图驱动”的行为综合(见下)。另外,数据相关性分析(挖掘并行度)、存储器划分/位宽优化/访问模式优化(存储常是性能瓶颈)都是行为级综合的独特挑战。
多 FPGA 系统的行为综合
设计超过单芯片容量时要做多 FPGA 划分。传统两段式(先综合成 CLB 网表、再按芯片切分)受制于 FPGA 引脚数。改进思路是利用设计层次:

先把 HDL 的层次(模块→进程→语句)表示成结构树,再映射成三层层次连通图,然后从顶层节点开始做层次化集合覆盖:顶层盖不住再下探到低层节点。利用层次结构让划分出的 FPGA 数量更少、CLB 利用率更高、引脚压力更小。
COBRA-ABS 走得更远:面向算术密集算法,用模拟退火做全局优化,同时决定多 FPGA 划分、调度、功能单元选择与绑定、寄存器分配、跨 FPGA 通信的调度与绑定,最后综合出定制的 VLIW 架构。
版图驱动行为综合:把物理信息提前
核心思想:综合时同时产出 RTL 网表和近似的芯片级物理布局,让”综合完即达标”取代”综合→实现→失望→重来”的迭代循环。直觉上这和第 4 章的物理综合一脉相承,只不过方向相反——物理综合是”布局后回头改逻辑”,这里是”综合时就往前看布局”。
方案一(ChipEst-FPGA 反馈式):先估资源、用物理估算工具得到近似布局拓扑,提取单元间距离指标反馈给调度与绑定;逐控制步构建搜索树(编码不同调度/绑定方案)并剪枝,失败就调整布局或放宽延迟约束重试。效果:传统方法违例的时序约束,该方法能找到满足约束的解;基准测试里互连延迟对性能的贡献高达 55%——不提前管它是不行的。

方案二(MCAS,多周期通信):架构模型是规则分布式寄存器(RDR)——芯片划成岛阵,岛内计算与通信单周期完成,跨岛信号按距离需要 1~k 个周期。流程:CDFG → 力导向调度做资源分配 → 绑定最小化全局数据传输 → 生成互连部件图 ICG → 调度驱动布局(退火把部件放进岛格)→ 布局驱动的调度+重绑定 → 寄存器/端口绑定 → 生成数据通路 VHDL + 分布式控制器 + 布局与多周期路径约束(喂给下游布局布线)。

实战数据(Stratix 器件,流水线乘法器用 DSP 块实现):数据流为主的设计时钟周期平均缩短 44%、总延迟缩短 37%;含控制流的设计也有 28%/23% 的改善。
两个方案合起来看,版图驱动综合的收益来源是同一件事:把”互连延迟”从事后惊喜/惊吓变成事前输入。方案一用估算布局反馈既有流程,侵入性小;方案二直接改架构模型(RDR 的岛阵 + 多周期通信),让”跨岛通信要几个周期”成为调度器的显式约束——这是系统级思维对物理现实的正面回应。
其他专项技术
- 循环变换:建立分析式的性能/面积模型,快速评估循环变换对整个 FPGA 设计的影响(含 I/O 存储带宽这一常见瓶颈),可当编译器用来自动探索大设计空间。
- 分支优化:按分支执行概率分配资源——高频分支多给硬件。同性能下省 24~27.5% 面积,同面积下最多快 3 倍。
- 存储分配:自动把程序数据分配到多块存储器以最小化循环总执行时间,用隐式枚举压住指数级搜索空间。
- 模块选择与资源共享:每个操作从模块库里挑实现 + 操作绑定到资源,联合决策比分开做显著省面积(递归分支定界或带回溯的迭代模调度求解)。
- 通信综合(SCOOP):对顺序通信介质,读写顺序必须一致,传输顺序对性能影响巨大。求解”最优传输顺序”被证明等价于资源受限调度(NP-complete),用 list-scheduling 启发式 + 循环迭代重排解决,总延迟平均改善 20%。
这些专项技术放在一起看,共同点是:行为级综合的瓶颈往往不在算术,而在”访存”和”通信”。循环变换受 I/O 存储带宽掣肘,存储分配直接决定循环执行时间,通信顺序能造成天差地别的延迟——做高层次设计时优先审视数据怎么流动,比盯着运算资源更有效。
常见坑/误区
行为级综合里”省资源”不等于”省成本”。少分配几个功能单元/寄存器,会让更多操作时分复用同一硬件,制造出更宽、更多的多路选择器和互连——在 FPGA 上一个 32 选 1 MUX 抵得上一个 18 位乘法器,最终面积功耗可能不降反升。同理,忽略互连延迟的高层估计在亚微米工艺下会系统性高估可达频率。
通关标准:
学完本篇你应该理解:数据通路综合为什么要”保结构、直接映射专用模块”;异构 FPGA 综合的推断-绑定两步;行为级综合的调度/分配/绑定三大任务及其相互制约;MUX 在 FPGA 中的高昂成本;版图驱动综合”综合即产布局”的思想与 RDR 多周期通信模型。
自测:把数据通路摊平成门级网表有哪三宗罪?
①规则性信息丢失,布局工具几乎不可能重新发现高效的位切片版图,导致版图混乱、布线困难;②摊平后无法再利用 CLB 特性(如快速进位链);③问题规模暴涨——门数远多于 DFG 节点数,编译和优化都变慢。
自测:行为级综合的调度、分配、绑定分别决定什么?
调度决定每个操作在哪个时钟周期执行(时间维度);分配决定需要多少功能单元/寄存器/互连资源(数量维度);绑定决定操作/变量/数据传输分别落到哪个具体资源(映射维度)。三者耦合:资源多少约束调度自由度,绑定方式决定 MUX 和互连的开销。
自测:为什么说 MUX 是 FPGA 行为综合里的"隐形杀手"?
0.1μm 工艺下 32 选 1 MUX 的面积、延迟、功耗几乎等于一个 18 位乘法器。传统综合只顾省功能单元和寄存器,迫使大量操作共享硬件,产生宽而多的 MUX 与长互连,最终性能、面积、功耗全面恶化。
自测:RDR(规则分布式寄存器)架构模型的核心假设是什么?
芯片划成岛阵:岛内所有计算与通信单周期完成;跨岛信号按岛间距离需要 1~k 个周期(多周期片上通信)。综合引擎据此同时输出 RTL、分布式控制器和布局/多周期路径约束,让行为级设计直接对齐物理现实。
自测:版图驱动行为综合省掉了传统流程的哪类迭代?
传统流程”综合→实现→发现时序不达标→改综合→再实现”的反复循环。它在综合时同步产出近似物理布局并用互连延迟反馈调度/绑定决策,使实现结果一次命中预测指标,设计空间探索也更高效。