FPGA设计杂谈之八:平均故障间隔时间MTBF

目录

一、概念

二、MFTB计算

三、如何改善MTBF

四、Vivado报告MTBF

五、参考资料


一、概念

MTBF(Mean Time Between Failure平均故障间隔时间)是一种统计指标,表示系统或组件预计的平均故障间隔时间。它是评估 FPGA 可靠性的关键指标,尤其是在故障可能造成严重后果的关键任务应用中。

设计中当异步信号跨时钟域传输时,触发器可能采样在信号翻转的临界时刻出现亚稳态。触发器输出可能在一段时间内无法稳定到 0 或 1,甚至导致后续逻辑错误。为了降低这种概率,通常会在跨时钟域时使用 同步器(synchronizer,级联触发器),而MTBF 用来量化“系统因为亚稳态导致出错的平均时间”。

二、MFTB计算

MTBF值越大表示设计越稳定(如值为几百上千年),不同的应用场景要求不同,如使用长的医疗设备的MTBF要求比常用的视频播放设备要求高。MTBF的计算公式如下

其中:

  • C1,C2常量:取决于器件工艺和运行环境

  • fclk:接收异步信号中时钟域的时钟频率,值越大MTBF越小

  • fdata:异步输入信号的翻转频率,值越大MTBF越小

  • tMET:可用的亚稳态建立时间,或者说是寄存器的tco外的可用时序裕量,用于将潜在的亚稳态信号解析为已知值,同步链的 tMET 是链中每个寄存器的输出时序裕度之和。

整体设计的MTBF可以通过设计中每个同步器链的MTBF来确定。同步器的故障率为1/MTBF,整个设计的故障率是通过将每个同步器链的故障率相加来计算的,设计的MTBF是1/failure_ratedesign,如下所示:

三、如何改善MTBF

设计中的MTBF由同步器MTBF和单事件故障(SEU)导致的器件故障时间决定。单事件故障很大程度取决于工艺和器件大小)。同步器的MTBF受异步CDC数量,每个交汇点处同步器级数,接收触发器的频率,源点的切换速率。以AMD的Ultrascale器件为例,MTBF的优化流程如下。

对于一些常用的场景,可以做如下改善

1)所有跨域单比特信号,保证最少 2 级同步器。

2)对于脉冲信号,先在源域做 toggle 或脉冲展宽,再同步(避免短脉冲丢失)。

3)对多比特或数据流,采取握手/异步 FIFO,绝不逐位同步。

4)在源域寄存,先进行去抖/限速操作。

四、Vivado报告MTBF

在vivado中,通过report_synchronizer_mtbf可以对跨时钟域路径进行计算MTBF并报告

以如下设计为例

module report_mtbf(in1,in2,rst,clk1,clk2,ff3,ff3_p);
input in1,in2,rst,clk1,clk2;
output ff3,ff3_p;
reg ff1,ff2,ff3;
(*ASYNC_REG="TRUE"*) reg ff1_p,ff2_p,ff3_p;
always@(posedge clk1,negedge rst)
    if(!rst)
        ff1<=1'b0;
    else begin
        ff1<=in1;
    end
always@(posedge clk2,negedge rst)
    if(!rst)
        ff2<=1'b0;
    else begin
        ff2<=ff1;
    end
always@(posedge clk2,negedge rst)
    if(!rst)
        ff3<=1'b0;
    else begin
        ff3<=ff2;
    end

always@(posedge clk1,negedge rst)
    if(!rst)
        ff1_p<=1'b0;
    else begin
        ff1_p<=in2;
    end
always@(posedge clk2,negedge rst)
    if(!rst)
        ff2_p<=1'b0;
    else begin
        ff2_p<=ff1_p;
    end
always@(posedge clk2,negedge rst)
    if(!rst)
        ff3_p<=1'b0;
    else begin
        ff3_p<=ff2_p;
    end
endmodule 

时序约束

create_clock -period 10.000 -name clk1 -waveform {0.000 5.000} -add [get_ports clk1]
create_clock -period 8.000 -name clk2 -waveform {0.000 4.000} -add [get_ports clk2]

在Tcl Console执行report_synchronizer_mtbf -file mrtb.txt,mrtb.txt为报告文件

报告主要由3部分组成,Design Summary,Default Synchronizer Chain Summary,Default Hard FIFO Summary,对于跨时钟域路径ff1到ff2无Async_reg属性时,无法进行MTBF分析。

五、参考资料

1、《White Paper Understanding Metastability in FPGAs》

2、《ug949-vivado-design-methodology》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FPGA芯中的小蚂蚁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值