在刚开始学习FPGA的时候,使用Quartus Prime的GUI界面创建工程是一个再平常不过的事儿,但是随着项目的增多,有很多项目可能会用到之前项目的代码,如果用GUI界面添加代码也可以,但是总觉得这种方法效率太低(点击New Project Wizard->选择工程目录,输入工程名,顶层文件名->添加工程代码及所需的IP文件->选择器件型号->管脚约束……)。
后面在网上找相关的更高效的方法,最终找到了一种使用TCL脚本快速创建Quartus工程的方法,这里直接贴TCL脚本的一个示例:
点击查看代码
# 创建工程
project_new -revision TGLV26 -overwrite TGLV26# 添加源码文件# 顶层文件
set_global_assignment -name VERILOG_FILE ../src/TGTop.v
# a文件夹
set_global_assignment -name VERILOG_FILE ../src/a/xxx.v
set_global_assignment -name VERILOG_FILE ../src/a/xxx.v
set_global_assignment -name VERILOG_FILE ../src/a/xxx.v
set_global_assignment -name VERILOG_FILE ../src/a/xxx.v
set_global_assignment -name VERILOG_FILE ../src/a/xxx.v
set_global_assignment -name VERILOG_FILE ../src/a/xxx.v
set_global_assignment -name VERILOG_FILE ../src/a/xxx.v
set_global_assignment -name VERILOG_FILE ../src/a/xxx.v
set_global_assignment -name VERILOG_FILE ../src/a/xxx.v
# b文件夹
set_global_assignment -name VERILOG_FILE ../src/b/xxx.v
set_global_assignment -name VERILOG_FILE ../src/b/xxx.v
set_global_assignment -name VERILOG_FILE ../src/b/xxx.v
set_global_assignment -name VERILOG_FILE ../src/b/xxx.v
set_global_assignment -name VERILOG_FILE ../src/b/xxx.v
set_global_assignment -name VERILOG_FILE ../src/b/xxx.v
set_global_assignment -name VERILOG_FILE ../src/b/xxx.v
set_global_assignment -name VERILOG_FILE ../src/b/xxx.v
set_global_assignment -name VERILOG_FILE ../src/b/xxx.v
# Position文件夹
set_global_assignment -name VERILOG_FILE ../src/c/xxx.v
set_global_assignment -name VERILOG_FILE ../src/c/xxx.v
set_global_assignment -name VERILOG_FILE ../src/c/xxx.v
set_global_assignment -name VERILOG_FILE ../src/c/xxx.v
set_global_assignment -name VERILOG_FILE ../src/c/xxx.v
set_global_assignment -name VERILOG_FILE ../src/c/xxx.v
set_global_assignment -name VERILOG_FILE ../src/c/xxx.v
set_global_assignment -name VERILOG_FILE ../src/c/xxx.v
set_global_assignment -name VERILOG_FILE ../src/c/xxx.v
set_global_assignment -name VERILOG_FILE ../src/c/xxx.v
set_global_assignment -name VERILOG_FILE ../src/c/xxx.v
set_global_assignment -name VERILOG_FILE ../src/c/xxx.v
set_global_assignment -name VERILOG_FILE ../src/c/xxx.v
set_global_assignment -name VERILOG_FILE ../src/c/xxx.v
# TransportCtr文件夹
set_global_assignment -name VERILOG_FILE ../src/d/xxx.v
set_global_assignment -name VERILOG_FILE ../src/d/xxx.v
set_global_assignment -name VERILOG_FILE ../src/d/xxx.v
set_global_assignment -name VERILOG_FILE ../src/d/xxx.v
set_global_assignment -name VERILOG_FILE ../src/d/xxx.v
set_global_assignment -name VERILOG_FILE ../src/d/xxx.v
set_global_assignment -name QXP_FILE ../src/d/xxx.qxp
set_global_assignment -name VERILOG_FILE ../src/d/xxx.v
set_global_assignment -name VERILOG_FILE ../src/d/xxx.v# 添加IP核
set_global_assignment -name QSYS_FILE ../ip/xxx.qsys
set_global_assignment -name QIP_FILE ../ip/RAM/xxx.qip
set_global_assignment -name QIP_FILE ../ip/ID/xxx.qip
set_global_assignment -name QIP_FILE ../ip/PLL/xxx.qip
set_global_assignment -name QSYS_FILE ../ip/DUALBOOT/xxx.qsys
# 头文件
set_global_assignment -name SOURCE_FILE ../src/xxx.h
set_global_assignment -name SOURCE_FILE ../src/xxx.h# 添加时序约束文件
set_global_assignment -name SDC_FILE ../src/xxx.sdc# TCL脚本
set_global_assignment -name TCL_SCRIPT_FILE ../src/xxx.tcl
set_global_assignment -name TCL_SCRIPT_FILE ../src/xxx.tcl
set_global_assignment -name TCL_SCRIPT_FILE ../src/xxx.tcl# 设置工程的顶层模块
set_global_assignment -name TOP_LEVEL_ENTITY TGTop
#------------------GLOBAL--------------------#
set_global_assignment -name FAMILY "MAX 10"
set_global_assignment -name DEVICE 10M16SAU169I7G
set_global_assignment -name EXTERNAL_FLASH_FALLBACK_ADDRESS 00000000
set_global_assignment -name USE_CONFIGURATION_DEVICE OFF
set_global_assignment -name INTERNAL_FLASH_UPDATE_MODE "DUAL IMAGES"
set_global_assignment -name FLOW_ENABLE_POWER_ANALYZER ON# 输出bitstream文件夹
set_global_assignment -name PROJECT_OUTPUT_DIRECTORY output_files
set_global_assignment -name VERILOG_INPUT_VERSION SYSTEMVERILOG_2005
# 设置seed值
set_global_assignment -name SEED 7
# 预处理脚本
set_global_assignment -name PRE_FLOW_SCRIPT_FILE "quartus_sh:../src/VersionGen.tcl"
# 后处理脚本
set_global_assignment -name POST_FLOW_SCRIPT_FILE "quartus_sh:../src/BitstreamGen.tcl"
# 并行编译可使用的最大处理器数
set_global_assignment -name NUM_PARALLEL_PROCESSORS ALL#------------------ 引脚约束 --------------------#source "../src/xxx.tcl"#--------------------------------------------#
# 将所有约束写入qsf文件
export_assignments# 关闭工程
# project_close
只需创建一个工程文件夹,并在TCL脚本中描述所需的verilog源码文件和IP文件的路径,然后再打开quartus软件,并打开TCL Console窗口,在指令行中输入cd E:/Work/Project_Beta/TGTemp/prj(这里改为脚本所在文件路径),然后输入source xxx.tcl(xxx代表tcl脚本的文件名),即可快速创建工程,具体如下图: