2. Quartus工程建立与优化基线
在开始任何资源与功耗优化之前,必须先建立一个“可复现、可对比”的工程基线。所谓基线,是指在固定器件、固定 Quartus 版本、固定约束与固定编译策略下,工程所呈现的资源占用(ALM、寄存器、Block Memory、DSP)与功耗估算(总功耗、动态功耗、静态功耗)的初始数值。后续所有优化动作,都必须与这份基线做同口径对比,否则“优化了多少”无从判断。本节围绕工程创建、器件选型、综合与布局布线流程、基线报告生成四个环节展开,并给出可直接照做的操作与判读方法。
一、工程创建:把“可复现”写进工程结构
推荐使用 Quartus Prime 的 New Project Wizard 建立工程,并在创建阶段就确定目录结构。一个便于对比的工程目录通常包含:rtl/(源码)、constraints/(SDC 与引脚约束)、ip/(IP 生成文件)、scripts/(Tcl 脚本)、output_files/(编译产物)。工程名与顶层实体名保持一致,避免后续脚本引用混乱。
创建时需明确三项:顶层实体名、目标器件、EDA 工具链设置。若工程由脚本生成,可用如下 Tcl 片段固定工程参数,保证每次重建结果一致:
project_new top_baseline -overwrite
set_global_assignment -name FAMILY "Cyclone IV E"
set_global_assignment -name DEVICE EP4CE10F17C8
set_global_assignment -name TOP_LEVEL_ENTITY top_baseline
set_global_assignment -name VERILOG_FILE rtl/top_baseline.v
set_global_assignment -name SDC_FILE constraints/top_baseline.sdc
set_global_assignment -name PROJECT_OUTPUT_DIRECTORY output_files
project_close
注意:-overwrite 会覆盖同名工程,适合在版本控制中反复重建;若需保留历史基线,应改为不同工程名或不同输出目录。
二、器件选型:先定“资源与功耗的量级”
器件选型直接决定基线的量级。以 Cyclone IV E 系列为例,EP4CE6、EP4CE10、EP4CE15 的逻辑单元(LE)数量分别约为 6K、10K、15K,Block Memory 与 DSP 资源也不同。选型时应先估算设计需求,再留出 20%~30% 余量,避免“刚好塞满”导致布局布线失败或时序恶化。
选型判断可参考以下经验:若设计以组合逻辑与控制为主,LE 是主要瓶颈;若含大量查找表、FIFO、缓存,则 Block Memory 更关键;若含乘法、滤波、矩阵运算,DSP 数量决定能否映射。器件选型一旦确定,后续所有资源与功耗数据都以此为基准,不应在优化中途随意更换器件,否则基线失去可比性。
三、综合与布局布线:固定编译策略
Quartus 的编译流程为 Analysis & Synthesis → Fitter(布局布线)→ Assembler → Timing Analysis → Power Analysis。要得到稳定基线,需固定以下设置:
- 综合优化目标:Balanced 或 Area,二者资源结果不同,基线中必须记录所用选项。
- Fitter 努力级别:Standard Fit 与 Auto Fit 的布局结果不同,建议基线统一使用 Standard Fit。
- 时序约束:SDC 中至少给出主时钟周期,例如
create_clock -name clk -period 20.000 [get_ports clk],对应 50 MHz。 - 引脚约束:固定引脚位置,避免每次编译引脚随机分配导致 I/O 功耗波动。
编译完成后,在 Compilation Report 中依次查看 Fitter → Resource Section 与 Power Analyzer → Summary,即可得到资源与功耗基线。若使用脚本,可用 quartus_map、quartus_fit、quartus_sta、quartus_pow 分步执行,便于在每一步后提取数据。
四、生成资源与功耗基线报告
编译完成后,资源基线主要看 Fitter 报告中的 Total logic elements、Total registers、Total memory bits、Embedded Multiplier 9-bit elements 等条目。功耗基线则看 Power Analyzer Summary 中的 Total Thermal Power、Dynamic Thermal Power、Static Thermal Power。若未提供 VCD/SAIF 激励文件,Power Analyzer 会基于默认翻转率估算,此时应记录“估算模式”,并在后续优化中保持同一模式,避免因激励不同造成假差异。
建议将基线数据整理为一张可填写的记录表,示例如下(数值为示例,非实测):
| 项目 | 示例值 | 记录说明 |
|---|---|---|
| 器件 | EP4CE10F17C8 | 固定不变 |
| Quartus 版本 | Prime 20.1 Lite | 固定不变 |
| 综合优化目标 | Balanced | 固定不变 |
| Fitter 努力级别 | Standard Fit | 固定不变 |
| 主时钟约束 | 50 MHz(20 ns) | SDC 固定 |
| ALM / 寄存器 | 1 240 / 1 860 | 示例值 |
| Block Memory | 18 432 bits | 示例值 |
| DSP | 4 个 9-bit | 示例值 |
| 总功耗 | 86.4 mW | 示例估算值 |
| 动态 / 静态功耗 | 52.1 / 34.3 mW | 示例估算值 |
| Setup Slack | +2.35 ns | 示例值 |