FPGA设计面试中非常高频的时序基础题,必须讲清采样沿前后两个不同的稳定窗口,并能联系静态时序分析。
面试回答的核心建立时间是有效采样时钟沿到来前数据需要稳定的最短时间;保持时间是该时钟沿之后数据还需稳定的最短时间。违反任一要求都可能使触发器采样不可靠。
01先用一句话解释两个时间窗口
以边沿触发的D触发器为例,建立时间tsetup要求D在采样时钟沿之前的一段时间稳定,保持时间thold要求D在该沿之后继续稳定。若数据恰好在禁止变化窗口内跳变,可能出现亚稳态或捕获错误。
02Setup违例通常怎样处理
建立时间违例常与组合逻辑链过长、布线延迟、时钟频率过高或约束不合理有关。可考虑流水线、简化逻辑、改善布局或合理调整时钟频率;应先确认时钟、输入输出与跨时钟域约束有效,不能只靠“忽略这条路径”。
03Hold违例为什么不能单靠降频率解决
保持时间关注同一采样沿附近的数据过早到达,与时钟周期增大不是一回事。通常需根据工具报告和时钟偏斜,在过快数据路径上增加适当延迟或由布局布线器进行hold修复。盲目加大延迟也可能损害setup裕量。
04面试参考回答
“setup是时钟沿前必须稳定多久,hold是时钟沿后必须保持多久。两者都影响触发器可靠采样。我会看STA中的起点、终点、数据路径与时钟偏斜,分别定位最长路径和过短路径,并在修改后同时复查setup/hold。”
把setup和hold都解释成“数据要保持一段时间”不够精确。尤其不能说“降低时钟频率就一定能修复hold违例”。
追问为什么在FPGA综合通过之后,还必须看布局布线后的静态时序分析报告?

扫码关注





























