2.3 Quartus Prime Pro设计流程
编译流程是顺序和方法,通过这个流程,软件翻译设计文件,将翻译后的设计映射到器件指定的元件,在器件中对设计执行布局和布线,然后生成编程文件。Intel Quartus Prime Pro版本的软件在不同阶段执行这些功能,如分析和综合、适配器等。
2.3.1 处理流程框架
Intel Quartus Prime Pro版本的软件的基本设计流程如图2.16所示。
注
图中虚线表示当行为仿真和时序仿真不满足设计要求时,需要对设计进行修改。
一个完整的Quartus Prime Pro版本的软件的设计流程中各个步骤与命令的对应关系如表 2.2 所示。一个完整的 Quartus Prime Pro 版本的软件的设计流程中包含了 Quartus Prime Pro版本的软件的基本设计流程中没有执行的步骤。
图2.16 Intel Quartus Prime Pro版本的软件的基本设计流程
表2.2 图2.16各个步骤与命令的对应关系
续表
注
(1)quartus_fit--retime只用于Intel Stratix 10器件。
(2)Intel Quartus Prime Pro版本的设计入口提供了多种设计方法,包括文本编辑器(支持 HDL)、原理图编辑器、状态机编辑器、IP 目录和IP 参数编辑器、设计分区规划器、平台设计器/平台设计器(Pro)系统设计工具、DSP Builder、OpenCL、Intel HLS 编译器和第三方设计入口工具。
在FPGA设计的过程中,需要通过功能仿真和时序仿真来保证设计的正确性。因此,通常在综合后,对设计执行功能仿真,在该仿真中不会考虑任何时序问题,只是为了单纯验证逻辑功能的正确性;适配后,对设计执行时序仿真,该仿真对设计的功能和时序同时进行验证。当执行功能仿真时,如果逻辑功能不满足设计要求,则需要修改原始设计。当然,在时序仿真时,如果发现设计不能满足要求,可能就需要对原始设计进行较大的修改,有时候甚至会抛弃整个原来的设计,这是因为保证时序收敛是FPGA设计工程师最重要的设计目标,当然这也是他们最头疼的一件事情。
2.3.2 增量优化的概念
Quartus Prime Pro版本在设计编译的每个阶段都支持增量优化。在增量优化中,设计者可以在按顺序运行下一个编译模块之前独立运行和优化每个编译阶段,如图 2.17 所示。编译器将每个阶段的结果保留位分析快照。当读者对设计或约束进行修改时,编译器仅运行受更改影响的阶段。在综合或任何适配器阶段之后,查看结果并执行时序分析。Genuine 需要修改设计 RTL 或编译器设置,然后重新运行综合或适配器并评估这些变化的结果。重复这个过程,指导模块性能满足要求。这个流程可以在每个阶段最大化结果,而无须等待完整的编译结果。
图2.17 增量优化流程
2.3.3 超感知设计流程
Quartus Prime Pro版本的编译器可帮助设计者充分利用Stratix 10的HyperFlex架构。使用超感知(Hyper-Aware)设计流程以缩短设计周期并优化性能。
超感知设计流程将自动寄存器重定时(Hyper-Retiming)和目标时序收敛建议(快速向前编译)相结合,使 Stratix 10 设计最大限度地利用超寄存器(Hyper-Register)并驱动最高性能,如图2.18所示。
图2.18 超感知设计流程(1)
1.超重定时
Stratix 10 架构的一项重要创新就是在每个布线段和块输入中添加了多个超寄存器。最大限度地使用超寄存器可以提高设计性能。超寄存器的普及改善了寄存器之间时间延迟的平衡,并减少了关键路径延迟。超重定时将寄存器从 ALM 中移出,并在有利情况下将它们重定时到超寄存器,如图 2.19 所示。超重定时在适配期间自动运行,只需要很少的工作量,并且可以显著提高性能。
图2.19 超寄存器架构
2.快速向前编译
如果设计者需要超重定时之外的优化,运行快速向前(Fast-Forward)编译以产生时序收敛建议,从而打破关键性能瓶颈。快速向前编译精确显示了对 RTL 更改产生最大影响的位置,并报告了每次更改可以带来的性能优势。适配器不会自动在RAM和DSP块中重定时寄存器。然而,快速向前分析显示了该优化的潜在性能优势。
快速向前编译识别添加流水线级(超流水线)的最佳位置,并且在每种情况下的预期性能优势。当设计者修改 RTL 在每个时钟边界放置流水线级后,超重定时器(Hyper-Retimer)会自动将寄存器放在时钟域内的最佳位置,以最大限度地提高性能。在 RTL 中实施建议以实现类似的结果。执行任何更改后,重新运行超重定时器,直到结果满足性能和时序要求为止。快速向前编译不会自动作为完整编译过程的一部分。在Compilation Dashboard中使能或运行快速向前编译。
HyperFlex优化的步骤包括:
(1)超重定时。重定时器将已经存在的寄存器移到超寄存器中。
(2)快速向前编译。编译器产生设计指定的时序收敛建议,并且预测性能改善。
(3)超流水线。使用快速向前编译以识别在RTL中添加新寄存器和流水线级的位置。
(4)超优化。超出超重定时和超流水线的设计优化,如重构循环、去除控制逻辑限制和减少长路径的延迟。
超感知设计流程包括下面的步骤,如图2.20所示。
图2.20 超感知设计流程(2)
(1)在适配器运行重定时阶段,自动将ALM寄存器重定时到超寄存器。
(2)在编译报告中查看重定时结果。
(3)如果要求更进一步的性能优化,则运行快速向前编译。
(4)查看快速向前时序收敛建议。
(5)在设计的RTL中,实施合理的快速向前建议。
(6)通过重定时阶段重新编译设计。