FPGA的开发流程
FPGA的设计开发流程主要包括以下步骤:设计输入( Design Entry )、仿真验证( Verification )、综合( Synthesis )及布局布线( Place & Route)和比特流生成。
在简单的 FPGA 设计中,设计输入就是使用硬件描述语言编写 RTL 的过程,虽然还有一些基于状态图、真值表、流程图、方框图的设计输入方法,现在基本已经被淘汰。对于设计输入,核心的问题是有三个:(1)熟练使用 HDL 语言(2)准确的把握要完成的设计功能及其性能指标;(3)充分理解常见的设计思想,保证设计功能和性能指标的恰当表达。
设计输入的另外一个重要技能是学会使用 FPGA 厂商提供的设计库,里面有大量可根据应用定制的专门单元,如 FIFO 、SRAM 、差分IO 、 DLL 等。
仿真验证是 FPGA 开发的第二个步骤,目的是验证所编写的 HDL 或者高层次综合得到的 HDL 的功能正确性,即是否与预定的功能相符。这时需要使用 SystemVerilog 或者 SystemC 编写 Testbench,以产生 RTL 设计的激励,并对 RTL 的输出进行分析。简单的设计使用 SystemVerilog 编写 Testbench 即可,对于复杂的设计以及软硬件结合的设计,使用 SystemC 更加方便。验证的最基本方法是仿真。仿真包括功能仿真和时序仿真。其中,功能仿真在布局布线之前,检查设计输入的正确性;时序仿真在布局布线之后,主要检查时序的收敛性,综合结果与功能仿真的不一致性。常见的仿真工具有 ModelSim 、 ActiveHDL 等。对于一些小的设计,主要是肉眼观察仿真结果是否与预期相符,对于一个复杂的大设计,要首先验证每一个子模块的功能正确性,对于整个大设计,要使用工具对比参考设计比如基于C语言的参考设计在同样的激励下产生的输出与 RTL 的输出是否相同。
综合( Synthesis )及布局布线( Place & Route)和比特流生成都是设计工具自动完成的步骤。当然,也需要使用者进行一些设置,以使得工具自动完成的结果更加符合预期。综合工具实现从 HDL 语言到门级网表的生成。 FPGA 厂商的 FPGA 集成开发环境一般提供综合工具,比如 Xilinx 的 XST 和 Altera Quartus II 内置的综合工具,目前使用最广泛的第三方综合工具是 Synplicity 公司的 Synplify 。布局布线采用 FPGA 厂商提供的工具。 Xilinx 有 Foundation Series, Altera有Quartus II。布局布线更具体的包括门级网表到 FPGA 基本单元的转换( Xilinx 称作 Translate ,Altera 称作 Map )和实际的布局布线( Xilinx 称作 PAR,Altera 称作 Fit )。布局布线的结果进一步被用来可以下载到 FPGA 比特流。在进行布局布线之前,我们需要设置顶层设计的每一个输入输出与实际 FPGA 管脚的对应关系。这种对应关系是在在电路板设计的原理图设计阶段确定的。如果你的板子是买来的开发板,在开发板的资料中通常会包括原理图。在没有原理图的情况下,厂家会在其他资料中明确给出每一个 FPGA 的管脚是怎么与其他芯片连接的。
|