基于Quartus Ⅱ的数字系统Verilog HDL设计实例详解
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.3 约束输入

建立好工程和设计之后,需要给设计分配引脚和时序约束。可以使用分配编辑器、“Setting”对话框、TimeQuest分析器、引脚规划器、设计划分窗口和时序逼近平面布局来指定初始设计约束,如引脚分配、器件选项、逻辑选项和时序约束等。另外,还可以选择菜单命令“Assignments”→“Import Assignments”或“Export Assignments”,进行导入或导出分配。QuartusⅡ 软件还提供时序向导,协助用户指定初始标准时序约束。还可以使用Tcl命令或脚本从其他EDA综合工具中导入分配。图1-3-1所示是约束和分配输入流程。

图1-3-1 约束和分配输入流程

分配引脚是将设计文件的I/O信号指定到器件的某个引脚,设置此引脚的电平标准、电流强度等。

时序约束尤其重要,它是为了使高速数字电路的设计满足运行速率方面的要求,在综合、布局布线阶段附加约束。要分析工程是否满足用户的速率要求,也需要对工程的设计输入文件添加时序约束。时序分析工具是以用户的时序约束判断时序是否满足设计要求的标准,因此要求设计者正确输入约束,以便得到正确的时序分析报告。附加约束还能提高设计的工作速率,它对于分析设计的时序是否满足设计要求非常重要,而且时序约束越全面,对于分析设计的时序就越有帮助。若设计中有几个时钟,有一个时钟没有约束,其余时钟都约束了,则QuartusⅡ软件的时序分析工具将不对没有约束的时钟路径作分析,从而使得设计者不知道此部分时序是否满足,因此设计者在约束时序时一定要全面。

通常的引脚分配时序约束方法是设计者编写约束文件并导入到综合、布局布线工具,在FPGA/CPLD综合、布局布线步骤时指导逻辑映射、布局布线。也可以使用QuartusⅡ软件中集成的工具如分配编辑器(Assignment Editor)、引脚规划器(Pin Planner)和“Settings”对话框等进行引脚分配和时序约束。

1.使用分配编辑器

分配编辑器界面用于在QuartusⅡ软件中建立、编辑节点和实体级分配;分配用于在设计中为逻辑指定各种选项和设置,包括位置、I/O标准、时序、逻辑选项、参数、仿真和引脚分配。可以使能或禁止单独分配功能,也可以为分配加入注释。使用分配编辑器,可以进行标准格式时序分配。对于Synopsys设计约束,必须使用TimeQuest时序分器。

下面结合后面章节中的实例来描述使用分配编辑器进行分配的基本流程。

(1)选择菜单命令“Processing”→“Start”→“Start Analysis & Elaboration”,分析设计,检查设计的语法和语义错误。

(2)选择菜单命令“Assignments”→“Assignment Editor”,弹出的分配编辑器对话框如图1-3-2所示。

图1-3-2 分配编辑器对话框

(3)在“Category”栏选择相应的分配类别。它包含了当前器件所有分配类别,如Pin(引脚分配)、Timing(时序约束)、Logic Options(区域约束)等。此处选择“Pin”进行引脚分配,也可以用引脚规划器或选择菜单命令“Assignments”→“Pin”进行引脚分配。

(4)在“Category”栏里选择“Pin”分配引脚,并在“I/O Standard”栏里选择电压标准,如图1-3-3所示。

图1-3-3 分配引脚

(5)在“Category”栏里选择“Timing”,新建时序约束,如图1-3-4所示。

图1-3-4 新建时序约束

(6)在“Form”和“To”栏双击并选择“Node Finder…”,弹出“Node Finder”对话框,如图1-3-5所示。选择需要约束的信号节点→添加到选定节点中。

图1-3-5 “Node Finder”对话框

(7)在“Assignment Name”栏选择约束类型,在“Value”栏选择约束值。

(8)依次设置其余的时序约束。

(9)在“Category”栏选择“All”类别,显示全部约束信息,如图1-3-6所示。

图1-3-6 设置完约束后的全部信息

建立和编辑约束时,QuartusⅡ软件对适用的约束信息进行动态验证。如果约束或约束值无效,QuartusⅡ软件不会添加或更新数值,仍然使用当前值。

2.使用引脚规划器

“Assignments”菜单下的可视化引脚规划器可用于分配引脚和引脚组。它包括器件的封装视图,以不同的颜色和符号表示不同类型的引脚,并以其他符号表示I/O块。引脚规划器使用的符号与器件数据手册中的符号非常相似。它还包括已分配和未分配引脚的表格。图1-3-7所示的是引脚规划器对话框。

图1-3-7 引脚规划器对话框

默认状态下,引脚规划器显示“Groups”列表、“All Pins”列表和器件封装视图。可以通过将“Groups”列表和“All Pins”列表中的引脚拖至封装图中的可用引脚或I/O块来进行引脚分配,也可以在“Location”栏里直接选择引脚。在“All Pins”表中,可以滤除节点名称,改变I/O标准,指定保留引脚的选项,也可以过滤“All Pins”列表,只显示未分配的引脚,改变节点名称和用户加入节点的方向,还可以为保留引脚指定选项。

引脚规划器还可以显示所选引脚的属性和可用资源,而引脚所属的I/O块用不同的颜色来区分。

3.使用“Settings”对话框

选择菜单命令“Assignments”→“Settings”,可使用“Settings”对话框来为工程指定分配和选项。还可以设置一般工程的选项,以及综合、适配、仿真和时序分析等选项,如图1-3-8 所示。一般使用分配编辑器进行引脚分配和除时钟频率外的其他类型约束,而“Settings”对话框中的时序约束更多用于全局时序约束和时钟频率约束。

图1-3-8 “Settings”对话框

在“Settings”对话框中可以执行以下类型的任务。

• 修改工程设置(General、Files、Libraries、Device):为工程和修订信息指定和查看当前顶层实体;从工程中添加或删除文件;指定自定义的用户库;指定封装、引脚数量和速度等级;指定移植器件

• 指定运行条件设置(Operating Settings and Conditions):进行电压和温度的设置

• 指定编译过程设置(Complation Process Settings):可以进行智能编译选项、编译过程中保留节点名称、运行Assembler,以及渐进式编译或综合等选项的设置。还有保存节点级网络表,导出版本兼容数据库,显示实体名称,使能或禁止OpenCore Plus评估功能,以及早期时序估算设置等功能

• 指定EDA工具设置(EDA Tool Settings):为设计输入/综合、仿真、时序分析、板级验证、形式验证、物理综合及相关工具选项指定EDA工具

• 指定分析和综合设置(Analysis & Synthesis Settings):用于分析和综合Verilog HDL和VHDL输入设置、默认设计参数和综合网络表优化选项工程范围内的设置

• 指定适配设置(Fitter Settings):时序驱动编译选项、Fitter等级、工程范围的Fitter逻辑选项分配,以及物理综合网络表优化

• 时序分析设置(Timing Analysis Settings):可以选择时序分析类型,包括TimeQuest时序分析器和标准时序分析器。同时,在标准时序分析器中可以为工程设置默认频率,定义各时钟的设置、延时要求和路径排除选项,以及时序分析报告选项

• 指定仿真器设置(Simulator Settings):模式(功能或时序)、源向量文件、仿真周期及仿真检测选项

• PowerPlay功耗分析器设置(PowerPlay Power Analyzer Settings):输入文件类型、输出文件类型和默认触发速率,以及结温、散热方案要求、器件特性等工作条件

• 指定设计助手和SignalTapⅡ设置(Assembler、Design Assistant、SignalTapⅡ Logic Analyzer、Logic Analyzer Interface):打开设计助手并选择规则;启动SignalTapⅡ逻辑分析器,指定SignalTapⅡ文件(.stp)名称

用“Settings”对话框进行时序约束设置时,可以选择时序分析设置(Timing Analysis Settings)或选择菜单命令“Assignments”→“Timing Analysis Settings”来进行设置。在“Timing Analysis Settings”下拉菜单里选择“Classic Timing Analyzer Settings”,如图1-3-9所示。

图1-3-9 时序约束对话框

对话框中的时序约束为全局时序约束。各个选项的含义如下所述。

• Delay requirements:有“tsu”(时钟建立时间)、“tco”(时钟至输出延时)、“tpd”(引脚至引脚延时)和“th”(时钟保持时间)4 个时序参数。这4 个时序参数均是基本时序约束,规定了外部时钟和数据I/O引脚之间的时序关系

• Minimal delay requirements:表示时序分析和报告的最小延时要求,有“Minimal tco”(最小时钟输出延时)和“Minimal tpd”(最小引脚至引脚延时)选择项

• Clock Settings:设定时钟频率,其中“Default required fmax”(默认的要求频率)是设定整个设计所要达到的全局时钟频率。“Individual Clocks…”是对设计中的时钟设置时序约束

如果需要进行更多的设置,可单击“More Settings…”按钮来进行设置。设置时钟约束的方法是,单击“Individual Clocks…”按钮→在弹出的对话框中单击 按钮→弹出图1-3-10 所示的对话框→在“Clock settings name”栏输入一个信号名(可以与要约束的信号同名)→单击 按钮→在查找信号对话框中找到要添加约束的时钟信号→在“Required fmax”栏输入约束的频率。选项“Duty cycle”指时钟占空比,默认为50%。选项“Base on”表示若约束时钟是由其他时钟分频、延时或反向得到的,则在此栏选择相关的时钟信号作为基准时钟信号→单击“Derived Clock Requirements”按钮→在弹出参数设置对话框中设定待约束时钟与基准时钟的倍频、分频、及相位关系。

图1-3-10 “New Clock Settings”对话框

注意

一般约束时钟频率时,不能约束过紧,也不能过松。若过紧,设计可能达不到这个频率要求,过松则浪费资源。一般设定的频率比要求频率高约5%即可。