四、 硬體模擬與驗證
4.4 起始狀態與鏈結錯誤處理
起始狀態與鏈結錯誤的產生主要是因為實體編碼子層無法找到正確的同步 標頭位元,意即接收端無法做資料同步的處理。當實體編碼子層接收資料,在64 個資料區塊之中超過16個資料區塊發生同步標頭位元錯誤,或者是在125us的時 間中,產生16個以上的同步標頭位元錯誤,這時候鏈結錯誤狀態就會發生,這樣 的鏈結錯誤稱做近端鏈結錯誤(Local Link Fault)。當近端鏈結錯誤狀態發生,
實體編碼子層會將鏈結錯誤的資訊透過XGMII傳送至上層硬體處理。上層硬體接 收到鏈結錯誤訊息之後會停止傳送所接收到的資料,並且會不斷送出遠端鏈結錯 誤(Remote Link Fault)訊息給遠端傳送資料的硬體。當傳送資料的一方接收到 遠端鏈結錯誤的訊息,便會停止正在傳送的資料,然後連續不斷的傳送閒置控制 字元。同時接收端會啟動同步資料鎖定狀態機,直到接收的資料區塊鎖定,就會 停止傳送遠方鏈結錯誤訊息。當遠方鏈結錯誤訊息結束,傳送端才會繼續傳送資 料。鏈結錯誤訊息的資料格式如表4–1所示︰
Lane 0 Lane 1 Lane 2 Lane 3 說明 0x9C 0x00 0x00 0x01 近端鏈結錯誤 0x9C 0x00 0x00 0x02 遠端鏈結錯誤
表4–1 鏈結錯誤資料格式
近端鏈結錯誤的訊息是由實體編碼子層所產生,遠端鏈結錯誤訊息是由圖 2–2 中的調節子層所產生。因此實體編碼子層的驗證中,必須將調解子層的部分功能 加入XGMII 功能模組。
因為鏈結錯誤屬於雙方向的資料傳輸,因此在做驗證的時候需要複製另外一 個實體編碼子層,然後將兩個實體編碼子層連接在一起做驗證。為了簡化這個部
份的複雜度,兩個實體編碼子層共用同一個XGMII 功能模組,這樣並不會影響 驗證的正確性。
4.5 其它的驗證
資料區塊的同步在整個傳輸接收過程中是很重要的一部分,實體編碼子層透 過檢查同步標頭位元來完成資料同步的動作。在傳輸的最初始階段,資料的傳輸 還處於非同步的狀態,這時候傳送端會送出一連串的控制字元,直到接收端完成 資料區塊邊界的鎖定,然後才會正式進入資料傳輸階段。在資料傳輸階段,接收 端不斷去檢查每一個資料區塊的同步標頭位元,若是在每64 個資料區塊中發生 超過16 個同步標頭位元的錯誤,接收端的實體編碼子層便會判定失去資料區塊 的邊界鎖定,所以要啟動SLIP 的功能。SLIP 會檢查資料區塊中的每一個位置,
以找出正確同步標頭位元的位置。這一部分的驗證著重在鎖定資料區塊邊界的狀 態機是否能正確的動作。
位元錯誤率的檢查是在 125us 的時間內,檢查同步標頭位元發生錯誤的個 數。每125us 的時間內都會不斷的監測同步標頭位元,如果在限制的時間內發發 生超過16 個同步標頭位元的錯誤,則實體編碼子層會產生高位元錯誤率的通知 訊號,這時候系統就要做鏈結錯誤的處理。
4.6 完整資料傳輸接收
這部分為實體編碼子層模擬驗證的最後階段,所以要將之前分別驗證的的區 塊整合在一起,然後依據資料的傳輸接收流程做完整的驗證。圖4–6 為資料傳輸 驗證的流程圖,圖4–7 為完整資料傳輸接收的硬體驗證圖。
模擬驗證起始
32bit data
32bit data 32bit data
32bit data 4bit control
4bit control 4bit control
4bit control
16bit data
16bit data 16bit data
16bit data 1bit control
1bit control
圖4–7 資料傳輸硬體驗證圖
最後的完整驗證不再觀察每一個硬體的內部訊號,只針對最後的測試向量檢查報 告來找出錯誤。為了提高測試覆蓋度,所有可能發生的測試向量都必須能夠產 生,為了避免在驗證中遺漏錯誤的訊息,所以每當發現錯誤的測試向量,驗證就 必須終止,修正該錯誤之後方可進行驗證。
4.7 程式碼覆蓋率分析
程式碼覆蓋率的分析主要是確認測試向量的覆蓋率,而不是確認硬體電路 的正確性。利用程式碼覆蓋率分析可以提高測試向量的效率,也就是在最少的測 試向量之中可以驗證最多最完整的硬體功能模組。
程式碼覆蓋率分析主要有下列幾種格式︰
1. Statement coverage–代表在硬體程式中每一行可執行的程式是否有被執行 過。
2. Branch coverage–在if-then-else 或者 case程式宣告中,每一條分支路 徑是否有執行過。
3. Condition coverage–在宣告的條件式中,每一種條件組合是否有執行過。
4. Toggle coverage–每一條訊號線的值是否都有轉換,訊號值由0到1在由1轉 換到0代表一次完整的轉換。
5. FSM coverage–在有限狀態機中每一個狀態是否都有執行過。
在本論文中,主要是依據Toggle coverage與FSM coverage來改善測試向量 的覆蓋率,以期達到較高的測試效能。下圖4–8為整合後的測試向量覆蓋率結果 圖。可以看出在硬體程式中通過Toggle coverage驗證的功能區塊高達92%,這是 因為透過code coverage分析軟體我們可以輕易的修正測試向量,來針對沒有驗 證到的硬體部分來撰寫測試向量程式,所以在反覆的修改測試向量之後,code coverage終能達到預期要求。在有限狀態機部份,狀態改變與arc的驗證都達到 100%。
圖4–8 測試向量覆蓋率結果圖
4.8 模擬結果
本章節根據實體編碼子層上的資料傳輸流程,透過模擬摸波形圖來做一個詳 細的介紹。圖 4-9 與圖 4-10 為實體編碼子層在傳送與接收資料之前的初始狀態 波形圖。當實體編碼子層在初始開機狀態之下,資料傳送端會先送出近端鏈結錯 誤的訊息,在此同時資料接收端也會不斷的傳送近端鏈結錯誤的訊息給MAC 功 能模組。當資料傳送端送出近端鏈結錯誤的訊息之後便會開始傳送閒置控制位 元,直到下一筆資料可傳送為止。
圖4–9 傳送初始狀態波形圖
圖4–10 接收初始狀態圖
實體編碼子層接收資料端不斷的將近端鏈結錯誤的訊息透過XGMII 傳送至 MAC 功能模組,並且在此同時資料接收端也不斷的在做資料區塊鎖定動作,當 資料區塊鎖定之後,接收資料端便停止傳送近端鏈結錯誤的訊息給MAC 功能模 組,而準備開始接收正常資料區塊。在資料傳送端部分實體編碼子層不再接收到 遠端鏈結錯誤的訊息之後,便會開始準備傳送正常資料,圖4–11 與 4–12 為資 料區塊鎖定後,開始傳送接收資料的波形圖。
圖4–11 資料區塊鎖定波形圖
圖4–12 資料接收圖
圖 4-13 為發生高位元錯誤率時的波形圖。當發生高位元錯誤率時,實體編 碼子層接收端便會進入資料區塊非鎖定的狀態,這時候接收端的硬體便會將近端 鏈結錯誤的訊息傳送給MAC 功能模組,然後會透過資料傳送端送出遠端鏈結錯 誤的訊息。接下來的硬體動作就跟初始狀態的處理模式一樣,直到資料區塊鎖定 為止,才會在開始正常的傳送接收資料。
圖4–13 發生高位元錯誤率的波形圖
圖4–14為傳輸階段鏈結錯誤與SLIP功能模組致能狀態波形圖。當發生高位 元錯誤率狀態,意即在64個資料區塊之中超過16個同步標頭位元的錯誤,所以資 料區塊鎖定訊號會變呈解致能狀態,在此同時SLIP功能模組會進入致能狀態。
SLIP功能模組致能之後,會尋找下一個待檢測的同步標頭位元,然後在經過64 個區塊資料的檢測,若是沒有發生錯誤則資料區塊再度進入鎖定狀態,意即所傳 接收的資料具有高的可靠性。
圖4–14 傳輸階段鏈結錯誤與SLIP功能模組致能狀態波形圖
圖4–15為接收錯誤資料波形圖。當錯誤的資料格式或是在傳輸之中發生錯 誤,則錯誤控制字元便會由硬體電路所產生。由下圖可以看出,當錯誤發生之時 錯誤資料的控制訊號會產生,在此同時被傳輸的資料將會變成錯誤控字元格式。
圖4–15 接收錯誤資料波形圖
4.9 電路合成
實體編碼子層硬體設計驗證完成之後,接下來要透過電路合成軟體來合成。
在電路合成過程之中,我們可以清楚的知道設計的電路是否可以實作成真正的硬 體電路。因為在合成過程之中,設計的電路必須符合時序的限制,意味著訊號在 硬體中傳遞都必須要達到速度的要求,若是電路合成之後時序無法達到設計的要 求,則必須回去修改原始硬體電路,然後再經過一系列的模擬與驗證,之後重新 合成電路,直到時序符合要求規定。在本研究之中並不考慮實體編碼子層的大小 與所消耗的功率,僅要求電路時序必須符合Std IEEE 802.3ae 所規範。
電路製程 電路時脈 電路大小 消耗功率 TSMC 0.18um 156.26MHz 22.4KGate count 12.4mw
表4–2 電路合成結果
第五章 結論與未來方向
5.1 結論
經過硬體架構的規劃、程式設計、硬體模擬與驗證、測試向量的覆蓋率驗證 之後,最終建立了10GBase的乙太網路實體層介面資料傳輸平台。透過這個平台 可以清楚的了解資料從邏輯控制層中到實際傳輸媒體的流程。圖5–1與圖5–2 為10GB乙太網路實體層資料傳輸的流程圖。由圖5–1中可以知道,當10GB乙太網 路實體編碼子層在初始階段之時,會先將鏈結錯誤的狀態透過XGMII傳送致上層 功能模組,然後便進入硬體閒至狀態,直到資料區塊的邊界鎖定為止。當資料區 塊鎖定之後傳送端便能正確的傳送資料給遠端的接收模組。如果在傳送資料的過 程中發生高位元錯誤率的狀態,這代表著在遠端的接收模組中發生接收資料的錯 誤,在此狀態之下傳送端必須停止傳送資料直到遠端接收模組可以正確接收資料 為止。在資料接收端部分,同樣地一開始出始階段實體編碼子層會透過XGMII傳 送鏈結錯誤的訊息給上層功能模組,直到實體編碼子層正確地找到資料區塊的邊
經過硬體架構的規劃、程式設計、硬體模擬與驗證、測試向量的覆蓋率驗證 之後,最終建立了10GBase的乙太網路實體層介面資料傳輸平台。透過這個平台 可以清楚的了解資料從邏輯控制層中到實際傳輸媒體的流程。圖5–1與圖5–2 為10GB乙太網路實體層資料傳輸的流程圖。由圖5–1中可以知道,當10GB乙太網 路實體編碼子層在初始階段之時,會先將鏈結錯誤的狀態透過XGMII傳送致上層 功能模組,然後便進入硬體閒至狀態,直到資料區塊的邊界鎖定為止。當資料區 塊鎖定之後傳送端便能正確的傳送資料給遠端的接收模組。如果在傳送資料的過 程中發生高位元錯誤率的狀態,這代表著在遠端的接收模組中發生接收資料的錯 誤,在此狀態之下傳送端必須停止傳送資料直到遠端接收模組可以正確接收資料 為止。在資料接收端部分,同樣地一開始出始階段實體編碼子層會透過XGMII傳 送鏈結錯誤的訊息給上層功能模組,直到實體編碼子層正確地找到資料區塊的邊