关注👆 望森FPGA 👆 查看更多FPGA资讯
这是望森的第 30 期分享
作者 | 望森
来源 | 望森FPGA
目录
摘要
1 明确需求、设计系统架构
2 RTL 输入
3 功能仿真(Behavioral Simulation)
4 综合(Synthesis)
5 时序分析(Timing Analysis)
6 布局布线(Place and Route, P&R)
7 时序仿真(Post-Place and Route Simulation)
8 生成比特流(Bitstream Generation)
9 上板调试与固化
总结
摘要
FPGA 的设计流程是一个系统化的步骤,目的是将设计需求转化为在硬件中实现的数字电路。
这个流程通常包括:明确需求与设计系统架构、RTL 输入、功能仿真、综合、时序分析、布局布线、时序仿真、生成比特流、上板调试与固化。
接下来将对以上流程一一进行介绍。
1 明确需求、设计系统架构
在项目立项阶段,需要根据项目需求,评估系统功能及其复杂度,进行合理的 FPGA 功能规划、模块划分以及器件选型。
这是项目开发的第一个流程,需要与客户或项目需求方确定系统功能、性能指标、硬件约束等情况,并输出项目的任务书、规范文档等资料。
项目需求确定后,需进行模块划分。
这个阶段需要确定 FPGA 的功能模块、模块间的通信方式与数据流向、FPGA 与外部设备的通信接口、FPGA 时钟树等。
注:编写文档是 FPGA 工程师的必备技能,不仅是为了应对项目交付,更是梳理思路、汇报上级、交接工作的重要方式。
2 RTL 输入
RTL(Register Transfer Level,寄存器转换级)输入阶段的目标是:
描述描述各级寄存器(时序逻辑)及寄存器之间的传输信号(组合逻辑)。
RTL 输入方式一般有两种:
使用硬件描述语言 HDL 编程、原理图输入。
原理图输入的方式现在基本不采用了。
如今常用的方法是使用硬件描述语言 HDL 编程,最常用的 HDL 是Verilog 、VHDL 以及 System Verilog。
在这一步,我们将根据系统架构,将系统设计方案转换为描述电路逻辑的 HDL 代码。
3 功能仿真(Behavioral Simulation)
功能仿真的目的是:
在电路综合之前,初步验证 HDL 代码逻辑功能的正确性。
功能仿真的方法是:
设计人员编写测试平台(Testbench),通过提供一系列的输入激励来检查电路输出是否符合预期。
常用的功能仿真工具有:
Mentor 公司的 ModelSim/QuestaSim 、Xilinx Vivado 仿真器等。
注意:
本阶段要验证的电路没有包含任何延迟信息,仅对功能进行检测。
4 综合(Synthesis)
综合的目标是:
将 HDL 代码编写的高层次逻辑描述转换为较低层次的 FPGA 门级网表(Gate-level Netlist)、产生网表文件。
综合的步骤是:
1.综合工具自动检查 HDL 代码语法和语义的正确性。
2.综合工具自动优化 HDL 代码,减少不必要的逻辑冗余,优化性能和资源利用率。
3.综合工具自动进行逻辑综合,将 HDL 代码转换为由基本逻辑门(如与门、或门、异或门)和存储单元(如触发器、寄存器)构成的门级网表。
4.生成网表文件。网表文件描述了设计中所有的逻辑单元及其连接关系,用于后续的布局布线阶段。
常用的工具有:
Xilinx Vivado、Intel Quartus Prime、Lattice Radiant 等。
可综合与不可综合的概念:
在使用 HDL 时,可综合的代码能被综合工具翻译为门级电路,而不可综合的代码无法被映射到硬件电路中,因此仅能被用于测试仿真,比如用于编写 Testbench。
5 时序分析(Timing Analysis)
时序分析主要包括:静态时序分析(Static Timing Analysis,STA)、时序约束。
从综合步骤开始,之后的每一个步骤都需要关注时序分析的结果。
综合步骤后,综合工具将产生门级延时信息;
布局布线后,EDA 工具将产生门级延时 + 布线延时信息。
时序分析的目的是:
确保设计满足时序要求。
静态时序分析的基本原理是:
EDA 工具通过分析设计的所有路径延迟、时钟偏移(Clock Skew)和建立时间、保持时间等参数,计算出设计在当前时钟频率下是否能正常运行。
当 STA 结果显示设计中存在时序违例,设计者需要添加时序约束或修改电路逻辑,直至满足时序要求。
另外,对于设计对时序有严格要求的情况(比如接口协议要求、高速数据传输等),设计者应当根据需求添加时序约束。
时序分析为什么重要?
如果时序不满足要求,可能会导致:
1.时序违例。电路不能在时钟触发边沿正确采集数据。
2.亚稳态。信号电压值无法稳定到正确值,导致数据错误。
3.电路不稳定。电路会出现随机的故障,不可靠。
因此,时序分析是实际工作中非常重要的环节,也是面试必考重点。
6 布局布线(Place and Route, P&R)
布局布线的目的是:
将经过综合后的门级网表映射到 FPGA 的具体硬件资源上。
布局布线在 Xilinx Vivado 中叫设计实现(Implementation)。
布局和布线分别是两个步骤。
布局指的是:
将门级网表中描述的逻辑单元(如 LUT、触发器、DSP 等)合理的配置到 FPGA 芯片中的实际物理位置上。
这一阶段需要在速度最优与面积最优之间找到平衡点。
布线指的是:
合理的利用芯片内部的布线资源,连接各个布局单元。
布局布线中的关键问题:
时序收敛问题、速度优化问题、资源优化问题、功耗优化问题等。
布局布线的输出结果:
物理网表文件、时序报告、资源利用率报告、功耗报告等。
布局布线步骤将直接影响 FPGA 设计的时序性能、资源利用率和功耗,通常是比特流生成前的最后一步。
7 时序仿真(Post-Place and Route Simulation)
时序仿真是在布局布线之后的步骤。
时序仿真的目的是:
在功能仿真的基础上增加 FPGA 芯片中真实的物理延时,仿真验证电路是否能正确运行。
这一阶段不仅能验证电路功能的正确性,还能进一步检测时序违例。
8 生成比特流(Bitstream Generation)
生成比特流阶段的目的是:
将经过布局布线(Place and Route, P&R)后的设计转换为可以直接用于配置 FPGA 芯片的比特流文件(Bitstream File)。
比特流文件包含了描述 FPGA 内部逻辑单元、互连布线和 I/O 配置的详细信息。
比特流文件用于 FPGA 上电或重新编程时加载到 FPGA 中,配置 FPGA 的逻辑功能。
9 上板调试与固化
上板调试的目的是:
将比特流文件中的编程数据下载到 FPGA 芯片中,测试实际运行结果。
固化的目的是:
将上板调试正确的设计信息固化到 FPGA 中,之后每次上电将默认运行当前设计。
常用比特流的配置与固化方式:JTAG 接口。
常用的上板调试方法:
1.FPGA 内部集成的逻辑分析仪
2.外部逻辑分析仪、示波器或万用表
FPGA 内部集成的逻辑分析仪调试原理:
实时监控和捕捉 FPGA 内部信号的变化。
常用的集成逻辑分析仪包括:Xilinx ILA 和 Intel SignalTap。
外部逻辑分析仪、示波器或万用表调试原理:
通过仪器仪表,实时检测 FPGA 外部物理引脚及硬件设施的工作情况。
上板调试成功后的设计可根据需求固化到 FPGA 芯片中。
总结
FPGA 设计流程包含明确需求与设计系统架构、RTL 输入、功能仿真、综合、时序分析、布局布线、时序仿真、生成比特流、上板调试与固化等多个阶段。
以上每个步骤都需要反复迭代,以确保设计能够正确、可靠地运行在 FPGA 上。
- END -
公z号/CSDN/知乎搜索【望森FPGA】,查看更多FPGA资讯~
相关推荐文章,点击跳转:
FPGA理论基础合集
HDLBits答案合集