简述一种fifo读控制的不合理设计案例

电子说

1.2w人已加入

描述

本文将简述一种fifo读控制的不合理设计案例,在此案例中,异常报文将会堵在fifo中,造成头阻塞。

异常场景在验证阶段很难完全覆盖,而实际芯片应用中,因为链路不稳定或者噪声的影响,时不时会出现各种异常报文,因此在设计阶段需要重复考虑到异常常见对设计的影响。

1.不合理的案例设计

如下图所示:data_fifo 为主数据路径的存储fifo,用于存储报文,所有正常报文类型包含:TYPE1,TYPE2,TYPE3,TYPE4。因为保序问题,部分报文需要得到响应反馈会才能读出,而部分报文不需要反馈就能立即读出。

在如下代码中,TYPE1和TYPE2需要反馈ack返回才能从data_fifo读出,而type3和type4可立即读出。

本案例中,输出存储采用的是FWFT类型的fifo,即在数据读出之前,可以看到data的数值。data_dout是fifo输出信号,根据data_dout的msg_type和type1/type2反馈结果(type1/2_ack_is_return)判断是否可以读出fifo数据。(为简化说明,本案例中不涉及流控反压)。

data_fifo_ren为fifo读使能信号,1表示读fifo。在正常场景中,能够覆盖所有报文类型,所有正常报文都能够被读出。

而在异常场景中,一旦报文类型不属于TYPE1,TYPE2,TYPE3,TYPE4,那么data_fifo_ren一直为0,数据将会堵在fifo中,无法读出。

输出信号

2.一种更合理的案例方案

采用always和case语句,关键是添加了default语句表示异常报文允许立即从data_fifo读出。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分