付費限定

[Verilog] 再次征戰FIFO地獄 - (7) fifo constraint

更新 發佈閱讀 7 分鐘

當你信心滿滿的解釋完fifo原理和RTL coding後

老闆們總是喜歡嘗試擊破那個有自信的你

地獄般的題組考驗這就來了

fifo觀念解釋的很棒, rtl coding也沒問題

那靠gray code就能保證post silicon不會有問題了嗎?

如果chip回來發現fifo的read write出問題的話

可能是哪邊導致的? 需不需要下些constraint去做預防

這篇我們就來探討一下何謂constraint 又為了要預防甚麼


在async fifo的世界中

同時有兩種資訊在傳遞

  1. pointer
  2. data

然而 我們先前提到說

我們利用了gray code的模式來預防source端的pointer在同一個cycle內有多個bits的跳動,

source同時多個bits的跳動,將會導致接收端接到Data時無法得知倒底是不是vaild的value,

因此儘管pointer 由快到慢, 被rx端抓到時已經跳動多個bits了但也能很肯定地說

這些取樣到的值都一定是valid的,他們一定曾經被使用過

再利用這個pointer去判斷是否可以抓取fifo中的Data或儲存Data於fifo中

聽起來相當完美了,

但有沒有想過一個問題

pointer和data兩個為獨立的資訊,

我們利用pointer去判斷儲存Data的region是否可以使用,

但這個有個先決條件

1.我們data必須走的比pointer快

這是甚麼意思呢 我們稍後來研究一下

另外就是

fifo設計中通常會把 data fifo擺在write clk端

也就是說,

2.我們在data端傳輸時進read端會有個Multibits的Data跨CDC 傳輸的問題出現

那我們又是怎麼說讀到的data不會有問題的呢?

CDC最難的就是要讀multibits呀,才會搞一堆甚麼gray code的東東

怎麼好像忘記處理它了只修好了pointer

還是data端也要用gray code加密嗎?

以行動支持創作者!付費即可解鎖
本篇內容共 2748 字、0 則留言,僅發佈於IC面試專班你目前無法檢視以下內容,可能因為尚未登入,或沒有該房間的查看權限。
留言
avatar-img
數位IC設計第一品牌
177會員
30內容數
數位IC設計第一品牌 從0到1用嘴做IC 觀念大權
2025/09/12
準備實作Async Fifo時, 我習慣將整個架構切成4塊來實作, 讓coding實的思緒比較有條理一點. Block 0 : 整體的interface Block 1 : mem周邊 Block 2 : Gray code pointer control Block 3 : wri
Thumbnail
2025/09/12
準備實作Async Fifo時, 我習慣將整個架構切成4塊來實作, 讓coding實的思緒比較有條理一點. Block 0 : 整體的interface Block 1 : mem周邊 Block 2 : Gray code pointer control Block 3 : wri
Thumbnail
2025/08/11
回到這張看起來很複雜的AFIFO架構圖 (*藍色訊號為write clk *紅色訊號為read clk) 我們開始來專心探討一下圖中B2G這區塊的功用 相信各位看懂架構後coding就不是甚麼大問題 回顧一下, 我們先思考ptr在傳輸時沒有處理CDC issue時會發生甚麼事? pt
Thumbnail
2025/08/11
回到這張看起來很複雜的AFIFO架構圖 (*藍色訊號為write clk *紅色訊號為read clk) 我們開始來專心探討一下圖中B2G這區塊的功用 相信各位看懂架構後coding就不是甚麼大問題 回顧一下, 我們先思考ptr在傳輸時沒有處理CDC issue時會發生甚麼事? pt
Thumbnail
2025/05/23
上篇文中最後提到的為甚麼async不用Dmux傳ptr就好, 究竟有甚麼缺點又或是不可行, 這邊來探討一下. 首先我們先來看一下Dmux解CDC issue的原理 dmux架構可以分為兩個部分, Data path和CTRL path, 我們會在CTRL的path的部分在clkA的t
Thumbnail
2025/05/23
上篇文中最後提到的為甚麼async不用Dmux傳ptr就好, 究竟有甚麼缺點又或是不可行, 這邊來探討一下. 首先我們先來看一下Dmux解CDC issue的原理 dmux架構可以分為兩個部分, Data path和CTRL path, 我們會在CTRL的path的部分在clkA的t
Thumbnail
看更多
你可能也想看
Thumbnail
創作不只是個人戰,在 vocus ,也可以是一場集體冒險、組隊升級。最具代表性的創作者社群「vocus 野格團」,現在有了更強大的新夥伴加入!除了大家熟悉的「官方主題沙龍」,這次我們徵召了 8 位領域各異的「個人主題專家」,將再度嘗試創作的各種可能,和格友們激發出更多未知的火花。
Thumbnail
創作不只是個人戰,在 vocus ,也可以是一場集體冒險、組隊升級。最具代表性的創作者社群「vocus 野格團」,現在有了更強大的新夥伴加入!除了大家熟悉的「官方主題沙龍」,這次我們徵召了 8 位領域各異的「個人主題專家」,將再度嘗試創作的各種可能,和格友們激發出更多未知的火花。
Thumbnail
vocus 最具指標性的創作者社群──「野格團」, 2026 年春季,這支充滿專業、熱情的團隊再次擴編,迎來了 8 位實力堅強的「個人主題專家」新成員 💫💫💫 從投資理財、自我成長、閱讀書評到電影戲劇,他們各自帶著獨特的「創作超能力」準備在格友大廳與大家見面。
Thumbnail
vocus 最具指標性的創作者社群──「野格團」, 2026 年春季,這支充滿專業、熱情的團隊再次擴編,迎來了 8 位實力堅強的「個人主題專家」新成員 💫💫💫 從投資理財、自我成長、閱讀書評到電影戲劇,他們各自帶著獨特的「創作超能力」準備在格友大廳與大家見面。
Thumbnail
本文提供了一個關於模擬法演算法的問題,介紹了操作指令的格式及其解析。透過程式碼模擬每條指令,找出回到根目錄所需的操作次數。本文詳細說明瞭模擬法的複雜度分析,能夠幫助讀者更好地理解這個問題。
Thumbnail
本文提供了一個關於模擬法演算法的問題,介紹了操作指令的格式及其解析。透過程式碼模擬每條指令,找出回到根目錄所需的操作次數。本文詳細說明瞭模擬法的複雜度分析,能夠幫助讀者更好地理解這個問題。
Thumbnail
此章節的目的是介紹Java程式語言中的流程控制結構,包括條件語句(if, else if, else)、三元運算子、switch語句,以及各種迴圈(for, foreach, while)。同時,也解釋了如何在迴圈中使用控制語句來改變程式的執行流程。每種主題都配有示例程式碼以幫助理解。
Thumbnail
此章節的目的是介紹Java程式語言中的流程控制結構,包括條件語句(if, else if, else)、三元運算子、switch語句,以及各種迴圈(for, foreach, while)。同時,也解釋了如何在迴圈中使用控制語句來改變程式的執行流程。每種主題都配有示例程式碼以幫助理解。
Thumbnail
User Input & Tables 的使用
Thumbnail
User Input & Tables 的使用
Thumbnail
我捨棄了編號系統,解放三倍大腦思考能量
Thumbnail
我捨棄了編號系統,解放三倍大腦思考能量
Thumbnail
最近有新的訂閱者加入, 想趁這個機會再分享一次學習心法與建議給第一次練習的讀者、同學們。 如果你本身已經很熟練演算法,那隨機挑題目練習ok,可以測試觀念是否正確,並且驗證寫code的效率與正確程度。 如果是剛畢業或還在學,以前沒有打過程式競賽。 想開始有系統地增強演算法&資料結構的能力
Thumbnail
最近有新的訂閱者加入, 想趁這個機會再分享一次學習心法與建議給第一次練習的讀者、同學們。 如果你本身已經很熟練演算法,那隨機挑題目練習ok,可以測試觀念是否正確,並且驗證寫code的效率與正確程度。 如果是剛畢業或還在學,以前沒有打過程式競賽。 想開始有系統地增強演算法&資料結構的能力
Thumbnail
題目敘述 題目會給我們一個字串s作為輸入,要求我們以white space空白為切割符號,切割出每個單字,並且反轉其順序後,以字串形式最為最後的輸出。 題目的原文敘述 測試範例 Example 1: Input: s = "the sky is blue" Output: "blue i
Thumbnail
題目敘述 題目會給我們一個字串s作為輸入,要求我們以white space空白為切割符號,切割出每個單字,並且反轉其順序後,以字串形式最為最後的輸出。 題目的原文敘述 測試範例 Example 1: Input: s = "the sky is blue" Output: "blue i
Thumbnail
解決電腦上遇到的問題、證明正確性、探討效率 並且很著重溝通,說服別人你做的事是正確且有效率的。 內容: 計算模型、資料結構介紹、演算法介紹、時間複雜度介紹。
Thumbnail
解決電腦上遇到的問題、證明正確性、探討效率 並且很著重溝通,說服別人你做的事是正確且有效率的。 內容: 計算模型、資料結構介紹、演算法介紹、時間複雜度介紹。
Thumbnail
講完資料讀取,接著就是如何將策略落實到程式上。 通常會不知道怎麼落實,是因為不知道怎麼把技術線型闡述出來,而非基本面。 基本面:假設要求三率三升,月營收增加等,XQ都有提供欄位,較為直觀。 技術面:V轉,W底等等,XQ並沒有個欄位叫做V轉,而且V的底要多深,這個V字型要多大,都可以自己定義。
Thumbnail
講完資料讀取,接著就是如何將策略落實到程式上。 通常會不知道怎麼落實,是因為不知道怎麼把技術線型闡述出來,而非基本面。 基本面:假設要求三率三升,月營收增加等,XQ都有提供欄位,較為直觀。 技術面:V轉,W底等等,XQ並沒有個欄位叫做V轉,而且V的底要多深,這個V字型要多大,都可以自己定義。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News