Quartus 命令行构建
更新时间:2026-09-21。硬件工具。开源综合可对比 Yosys,Xilinx 见 Vivado 命令行。
一句话回答
Quartus 可以完全用命令行/ Tcl 跑编译,适合 CI:单步分别是 quartus_map(综合)、quartus_fit(布局布线)、quartus_tan(时序分析)、quartus_asm(生成比特流);最省事的是 quartus_sh --flow compile <project> 一条命令按 qsf 设置跑完整流程,产出 .sof/.pof。
前提:命令行环境
Linux 装好 Quartus 后,把 quartus/bin 加入 PATH;Windows 用 Quartus 自带的 "Command Shell"(已配好环境变量)。
一、一条命令跑全流程
bash
quartus_sh --flow compile top
# 等价于综合+布局布线+时序+汇编,读取 top.qsf产物 top.sof(SRAM Object File,JTAG 下载)或 top.pof(配置 Flash)。
二、分步执行(更可控)
bash
quartus_map top --cnb=... # 分析与综合
quartus_fit top --part=EP4CE10F17C8 # 布局布线
quartus_tan top # 时序分析(TimeQuest/Tan)
quartus_asm top # 生成编程文件分步便于在 CI 里抓每阶段日志、定位是综合还是布线阶段出错。
三、用 Tcl 构建工程
tcl
load_package flow
project_new top -overwrite
set_global_assignment -name FAMILY "Cyclone IV E"
set_global_assignment -name DEVICE EP4CE10F17C8
set_global_assignment -name VERILOG_FILE top.v
set_global_assignment -name SDC_FILE top.sdc
execute_flow -compilebash
quartus_sh -s build.tcl四、烧录
bash
quartus_pgm -m jtag -o "p;top.sof"
# 固化到 EPCS 配置芯片需先转 pof 再用 AS 模式。常见坑
- 不在 Quartus 命令环境里:PATH 没配、命令找不到,用 Command Shell 或 source 环境脚本。
- qsf 缺器件型号/源文件:命令行完全依赖 qsf/Tcl,GUI 里手动加的文件若没存进 qsf 就丢失。
- license 限制:部分器件/功能命令行也需要有效 license。
- sof vs pof 用错:JTAG 调试下 sof(掉电丢失),量产固化要烧 pof 到配置芯片。
- 时序违例未被注意:quartus_tan 的报告要在 CI 里显式检查,别只看编译是否结束。
- 路径含空格/中文:命令行下易出错,工程路径保持纯英文。
总结
Quartus 命令行用 quartus_sh --flow compile 一次跑或用 quartus_map/fit/tan/asm 分步,设置全部来自 qsf/Tcl,产物 sof/pof 再用 quartus_pgm 烧录;适合 CI,但要保证 qsf 完整、器件与 license 正确,并主动检查时序报告。