真实面经题目 · 原创解析
FPGA 设计流程是什么?
这题考从需求到板级调试的完整工程闭环,回答重点是把 RTL、约束、仿真、综合实现、时序收敛和上板验证串起来。
真实面经题目 · 原创解析
这题考从需求到板级调试的完整工程闭环,回答重点是把 RTL、约束、仿真、综合实现、时序收敛和上板验证串起来。
我会按工程闭环回答:先明确需求、接口、时钟复位、吞吐和资源目标,再做架构划分和模块接口设计;接着写 RTL,并配套 testbench 做功能仿真;然后写时钟、IO、时序例外等约束,跑综合、布局布线和静态时序分析,查看资源、功耗和时序裕量;如果不收敛,就回到代码结构、流水线、约束或 floorplan 调整;最后生成 bitstream,上板验证时用 ILA、示波器和接口自检定位问题。核心不是背步骤,而是说明功能正确、时序正确和板级可工作要分别验证。
流程起点不是写代码,而是确认外部接口、时钟域、复位方式、数据宽度、吞吐、延迟、资源和功耗目标。架构设计要把大功能拆成可验证模块,并提前识别跨时钟域、存储、乘加、IO 约束等风险点。
RTL 编写要遵守同步设计、非阻塞赋值、明确复位和时序边界。功能仿真用 testbench 覆盖正常路径、边界输入和协议异常,证明逻辑意图正确,但功能仿真本身不能证明时序能在目标器件上跑通。
约束文件描述主时钟、派生时钟、输入输出延迟、false path、multicycle path 和 IO 标准。综合把 RTL 映射到查找表、寄存器、存储和专用资源;布局布线决定实际连线延迟。约束不准确会让工具优化方向错误。
静态时序分析检查 setup、hold、时钟不确定性和跨域路径。若出现负裕量,要分清是路径过长、约束错误、复位/跨域路径误报还是资源放置问题,再通过加流水、改状态机、调整约束或优化 floorplan 收敛。
生成配置文件后还要做板级验证,确认时钟、复位、引脚、电源、外设协议和真实数据流。常用片上逻辑分析、状态寄存器、环回测试和外部仪器定位问题。上板失败不一定是 RTL 错,也可能是约束、引脚、电平或时钟质量问题。
功能仿真通常不包含真实布局布线延迟、板级时钟质量、IO 电平和外设行为,所以仍可能出现时序违例、跨域问题、引脚约束错误或板级接口问题。
先确认约束是否正确,再看最差路径类型。真实长组合路径通常加流水或重构逻辑;误报路径要用合理例外约束;拥塞或资源集中问题再考虑放置和资源划分。
我会至少做仿真、lint、综合后资源检查、时序约束和 STA;涉及跨时钟域还要做 CDC 检查,涉及板级接口还要结合时序裕量和实测波形验证。