-以下文章來源于IC的世界 ,作者IC小鴿-
本文將簡述一種fifo讀控制的不合理設計案例,在此案例中,反壓信號type1_fc和type2_fc會不合理阻塞讀控制信號,造成性能損失,甚至會造成嚴重bug。
如下圖所示:all_data_fifo 為主數據路徑的存儲fifo,用于存儲報文,所有正常報文類型包含:TYPE1和TYPE2。數據從all_data_fifo讀出后會分根據報文類型分發到兩個fifo,分別是type1_data_fifo和type2_data_fifo。兩個fifo分別產生反壓信號type1_fc和type2_fc作用到data_fifo的讀控制模塊。type1_data_fifo/type2_data_fifo將滿時,將type1_fc/type2_fc置1表示不希望上游all_data_fifo向下發送數據。
data_fifo_ren為all_data_fifo讀使能信號,1表示讀fifo。all_data_fifo_empty為1表示all_data_fifo為空,沒有數據。錯誤設計中,all_data_fifo_empty、type2_fc和type1_fc均為0,才允許讀all_data_fifo。
正確設計中,應該區分當前all_data_fifo中的數據類型,當數據為type1類型時,type1_fc才會生效,當數據為type2類型時,type2_fc才會生效,避免出現過度流控,造成數據阻塞。
NOTE: 本文中列舉的案例很簡單,但在實際芯片設計中時常會出現此類問題,并且隱藏在很復雜的讀控制邏輯中,不容易發現。
本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。