Menu Close

Quartus QSF约束文件定义与使用

在Quartus 生成的众多文件中有一个扩展名为” .qsf”的文件,该扩展名是Quartus Prime Setting File的缩写,其含义为Quartus 主设置文件,而且每个修订版本都对应一个特定QSF文件。主要负责在整个工程范围内的各种设定,如管脚锁定,IO管脚电平标准,电气接口等内容,该文件是Quartus约束文件的一种,是物理约束文件(physical constraint file)。在Quartus创建的文件中 还有一个文件为SDC文件,即扩张名为.sdc的文件,该文件为时序约束文件,在随后的章节中会介绍。

一.QSF的创建与构成

  • QSF文件中的语法格式

QSF文件中的命令格式遵循tcl的语法格式,具体内容参考tcl语法与命令

  • QSF文件生成:

QSF文件当创建工程时就会生成,初步给定工程的创建信息和设定,以后每次启动工程时都会读取该文件对工程进行配置。初次创建工程后的QSF文件内容如下:

# https://fpgasoftware.intel.com/eula.

#

# ————————————————————————– #

#

# Quartus Prime

# Version 20.1.1 Build 720 11/11/2020 SJ Lite Edition

# Date created = 13:18:17 September 10, 2021

#

# ————————————————————————– #

#

# Notes:

#

# 1) The default values for assignments are stored in the file:

# test_qsf_assignment_defaults.qdf

# If this file doesn’t exist, see file:

# assignment_defaults.qdf

#

# 2) Altera recommends that you do not modify this file. This

# file is updated automatically by the Quartus Prime software

# and any changes you make may be lost or overwritten.

#

# ————————————————————————– #以上部分为注释说明

set_global_assignment -name FAMILY “Cyclone 10 LP”

set_global_assignment -name DEVICE 10CL006YE144C8G

set_global_assignment -name TOP_LEVEL_ENTITY test_qsf

set_global_assignment -name ORIGINAL_QUARTUS_VERSION 20.1.1

set_global_assignment -name PROJECT_CREATION_TIME_DATE “13:18:17 SEPTEMBER 10, 2021”

set_global_assignment -name LAST_QUARTUS_VERSION “20.1.1 Lite Edition”

set_global_assignment -name PROJECT_OUTPUT_DIRECTORY output_files

set_global_assignment -name MIN_CORE_JUNCTION_TEMP 0

set_global_assignment -name MAX_CORE_JUNCTION_TEMP 85

set_global_assignment -name DEVICE_FILTER_PACKAGE “ANY QFP”

set_global_assignment -name DEVICE_FILTER_PIN_COUNT 144

set_global_assignment -name DEVICE_FILTER_SPEED_GRADE 8

set_global_assignment -name ERROR_CHECK_FREQUENCY_DIVISOR 1

set_global_assignment -name NOMINAL_CORE_SUPPLY_VOLTAGE 1.2V

set_global_assignment -name EDA_SIMULATION_TOOL “ModelSim-Altera (Verilog)”

set_global_assignment -name EDA_TIME_SCALE “1 ps” -section_id eda_simulation

set_global_assignment -name EDA_OUTPUT_DATA_FORMAT “VERILOG HDL” -section_id eda_simulation

set_global_assignment -name EDA_GENERATE_FUNCTIONAL_NETLIST OFF -section_id eda_board_design_timing

set_global_assignment -name EDA_GENERATE_FUNCTIONAL_NETLIST OFF -section_id eda_board_design_symbol

set_global_assignment -name EDA_GENERATE_FUNCTIONAL_NETLIST OFF -section_id eda_board_design_signal_integrity

set_global_assignment -name EDA_GENERATE_FUNCTIONAL_NETLIST OFF -section_id eda_board_design_boundary_scan

#=========================================以上为命令部分

该文件的前半部分为注释,提供创建该工程时的信息,如:创建日期,创建工程对应的Quartus的版本号,以及主要事项,Altera建议不要修改该文件,因为任何修改可能会丢失或被覆盖。在QSF文件中以 #作为注释语句的标志,表示从#开始到本行结束为注释,可以在文件中的任何位置使用。

该文件的后半部分主要是工程设定,如:顶层文件名,FPGA器件的选型,封装,温度设定等设定。文件中的设定命令遵循tcl的语法。有关tcl的语法请参照tcl的语法与使用部分。

在上面的文件中,仅使用了一条命令“set_global_assignment”, 后面跟“-name”参数,参数之后都是Quartus中可以解析的名称,如:命令set_global_assignment -name FAMILY “Cyclone 10 LP”中的FAMILY;Quartus在读取QSF文件,解析该命令时见到FAMILY就会用”Cyclone 10 LP”名称与Qurtus内的器件库中FAMILY部分匹配。

  • QSF命令自动追加

在利用Quartus进行开发的过程中,利用各种向导生成的内容都会在给文件的尾部追加相关的内容。在工程中新建文件并添加PLL,观察QSF文件的变化可以看出在文件尾部增加了两条命令如下:
set_global_assignment -name VERILOG_FILE test_qsf.v

set_global_assignment -name QIP_FILE PLL1.qip

当利用pin planner进行管脚锁定后,在QSF文件尾部添加如下命令:

set_location_assignment PIN_91 -to inclk

set_location_assignment PIN_80 -to divf

set_instance_assignment -name IO_STANDARD “3.3-V LVCMOS” -to divf

set_instance_assignment -name IO_STANDARD “3.3-V LVCMOS” -to inclk

  • QSF文件手动添加

Altera建议尽量不要修改QSF的内容,但如能掌握修改技巧对于项目的开发会有很大的帮助,特别是对于管脚锁定等内容,如果在同一个硬件板卡上开发的不同工程,QSF的内容基本相似,可以从一个QSF复制后进行局部修改后作为另一个工程的QSF文件。或复制部分内容到新生成QSF,完成整个项目的设置。

二、QSF常用赋值命令

序号 赋值类型 命令
1 Global Assignment

全局赋值

set_global_assignment
2 Instance Assignment set_instance_assignment

set_instance_assignment -name multicycle 8 -from clock -to timeo

3 Location Assignment set_location_assignment
4 Parameter Assignment set_parameter

例:

set_parameter -name WIDTH 8

三、 QSF中命令常用参数

参数(可选)

名称

示例 描述
-name -value set_global_assignment -name family -value Stratix®

set_global_assignment

-name family Stratix®

-value 是可选项,有没有”-value” 都可以,不写”-value”默认 value的值为Stratix
-to set_instance_assignment -name multicycle 8 -from clock -to timeo
-from set_instance_assignment -name multicycle 8 -from clock -to timeo
-entity set_global_assignment -name ll_auto_size on

-entity filtref -section Region_0

这项设置是针对某个实体文件,而不是顶层文件,如果该文件不存在,这个设置会应用到顶层文件上
-section_id set_global_assignment -name

eda_map_illegal_characters on -section_id eda_simulation

Specifies the LogicLock region, EDA tool type, clique name, breakpoint name, clock name, debug hub name, I/O bank name, or timegroup name for the assignment.

为LogicLock region, EDA tool type, clique name, breakpoint name, clock name, debug hub name, I/O bank name, or timegroup name

指定section_id的名称。

-comment set_instance_assignment -name auto_carry_chains on -to accel -comment “Carry chain comment.”. 在加速显示(accel),显示所有指定的注释项
-disable set_instance_assignment -name auto_global_memory_controls off -to clock -disable 注释赋值,使后续处理不起作用,可以使用在分段处理上。

四、 QSF调用其它的QSF文件

利用source关键字可以调用其它的QSF文件,例如:在x.qsf中有如下语句:

set_global_assignment -name family arria10

source new_assignments.qsf

          在x.qsf可以使用assignments.qsf中的任何内容,但并没有把内容复制到x.qsf中,assignments.qsf中的内容可以单独维护。例如可以生成数码管的QSF文件”dis.qsf”,在工程的全局QSF中用source调用。

  1. 注意事项

修改QSF文件建议在工程关闭的情况下进行,修改完成后重启工程,各项修改才会生效。

五、总结:

理解和使用QSF文件,可以方便快速完成各种设定,加速系统设计定制。

 

Posted in FPGA, FPGA, Quartus II, 开发工具, 教材与教案, 文章

发表评论

相关链接