Quartus同步器MTBF分析问题:无法计算MTBF的配置问询
Quartus异步同步器MTBF分析配置方案
针对你遇到的Quartus无法对同步器链执行MTBF分析的问题,你的推测方向是正确的——确实需要通过虚拟时钟+输入延迟约束+同步器标记来完成配置,结合正交编码A/B相信号的场景,具体步骤如下:
1. 定义虚拟时钟
根据你已知的信号最小转换间隔(对应最大翻转频率),创建虚拟时钟作为异步输入信号的时序参考:
# T_min为信号最小转换间隔,单位ns create_clock -name virt_async_clk -period <T_min>
这个虚拟时钟不需要绑定到任何物理端口,仅用于标记异步输入的翻转频率,是MTBF计算的核心参数之一。
2. 标记同步器寄存器
Quartus需要明确识别同步器链中的寄存器才能启动MTBF分析,使用set_synchronizer_registers命令标记同步器的各级寄存器(比如2级或3级同步链的寄存器):
# 假设同步器寄存器命名为sync_A_stage1、sync_A_stage2、sync_B_stage1、sync_B_stage2 set_synchronizer_registers [get_registers {sync_A_stage* sync_B_stage*}]
该命令同时会阻止工具对这些寄存器进行优化或重定时,符合你之前的需求。
3. 设置输入延迟约束
以虚拟时钟为参考,给正交编码A/B相输入端口设置输入延迟,这里的延迟值需要结合输入信号的上升/下降时间、板级传输延迟来确定:
# -max 对应输入信号的最大延迟,-min 对应最小延迟,根据实际硬件参数填写 set_input_delay -clock virt_async_clk -max <t_max_delay> [get_ports {A B}] set_input_delay -clock virt_async_clk -min <t_min_delay> [get_ports {A B}]
这一步是让工具明确异步输入相对于虚拟时钟的时序关系,为亚稳态概率计算提供依据。
4. 修正set_false_path约束
你之前对所有I/O设置set_false_path的操作会覆盖同步器的时序分析,需要调整约束范围:
- 仅对异步输入端口到第一级同步寄存器的路径设置false path(因为这是跨时钟域的异步路径)
- 保留同步器链内部(第一级到第二级、第二级到第三级)的路径约束,不能设置false path
示例:
# 仅对输入到第一级同步寄存器设置false path set_false_path -from [get_ports {A B}] -to [get_registers {sync_A_stage1 sync_B_stage1}] # 同步器内部路径不设置false path,让工具分析时序
验证配置
完成上述步骤后,重新执行Quartus的时序分析,工具会识别到指定的同步器链,并基于虚拟时钟的频率、输入延迟参数计算MTBF值。
内容的提问来源于stack exchange,提问作者artless-noise-bye-due2AI
相关产品推荐
相关产品推荐

