-以下文章來源于IC的世界 ,作者IC小鴿-
本文將簡述一種fifo讀控制的不合理設(shè)計案例,在此案例中,反壓信號type1_fc和type2_fc會不合理阻塞讀控制信號,造成性能損失,甚至?xí)斐蓢乐豣ug。
如下圖所示:all_data_fifo 為主數(shù)據(jù)路徑的存儲fifo,用于存儲報文,所有正常報文類型包含:TYPE1和TYPE2。數(shù)據(jù)從all_data_fifo讀出后會分根據(jù)報文類型分發(fā)到兩個fifo,分別是type1_data_fifo和type2_data_fifo。兩個fifo分別產(chǎn)生反壓信號type1_fc和type2_fc作用到data_fifo的讀控制模塊。type1_data_fifo/type2_data_fifo將滿時,將type1_fc/type2_fc置1表示不希望上游all_data_fifo向下發(fā)送數(shù)據(jù)。
data_fifo_ren為all_data_fifo讀使能信號,1表示讀fifo。all_data_fifo_empty為1表示all_data_fifo為空,沒有數(shù)據(jù)。錯誤設(shè)計中,all_data_fifo_empty、type2_fc和type1_fc均為0,才允許讀all_data_fifo。
正確設(shè)計中,應(yīng)該區(qū)分當(dāng)前all_data_fifo中的數(shù)據(jù)類型,當(dāng)數(shù)據(jù)為type1類型時,type1_fc才會生效,當(dāng)數(shù)據(jù)為type2類型時,type2_fc才會生效,避免出現(xiàn)過度流控,造成數(shù)據(jù)阻塞。
NOTE: 本文中列舉的案例很簡單,但在實際芯片設(shè)計中時常會出現(xiàn)此類問題,并且隱藏在很復(fù)雜的讀控制邏輯中,不容易發(fā)現(xiàn)。