Socket 在SoC設計中的重要性
本文介紹在現代片上系統(SoC) 設計中使用開放式內核協議(OCP) ,解釋了為什么標準的工業套接口在富有競爭性的 SoC設計很重要,說明了OCP 如何實現接口功能。討論中說明了加速SoC設計以滿足更短的上市時間的必要性,和復用IP 的優勢。最后,本文討論了三種不同的實現方法,闡明OCP 給半導體內核設計帶來的靈活性。
問題
近年來,半導體工藝的改進和日益增長的市場壓力使上市時間和設計重用成為半導體工業的熱門話題。顯然,減少SoC 設計周期可以減少上市時間。設計重用表面上很簡單-一次設計,多次使用。但是減少SoC設計時間和實現設計重用被證明是很困難的。
由Moore 定律知,每過18個月,隨著工藝的改進集成電路密度增加一倍。這允許在給定大小的半導體面積上極大增加電路范圍和功能,但由此引起的制造成本的增加確是微不足道的。比如,在過去的5年里,半導體門數從20萬到50 萬門增加到上千萬門,甚至2千5百萬門。門數提高了50倍,這也是SoC 設計得以實現的根本原因。
隨著密度增加的還有性能的提高,設計者努力同時降低原型設計和后續改進設計的設計周期。這都是因為激烈的市場競爭壓力,產品生命周期的縮短和功能的提高導致設計頻繁修改,設計時間減半。見表1 。
表1不斷增加的設計復雜度和不斷減少的設計周期時間
1997 1998 1999 2002 Delta
工藝技術0.35m 0.25m 0.18m 0.13m ~7x
門數200-500K 1-2M 4-6M 10-25M ~50x
設計周期(月) 12-18 10-12 8-10 6-8 ~2x
后續設計周期(月) 6-8 4-6 2-4 2-3 ~2x
總之,由簡單一道數學題知,在一半的設計時間芯片,電路增加50倍等同于產率提高100倍。但通常這是很難實現的,尤其是在今天芯片設計的復雜度不斷提高、設計周期不斷縮短的情況下。其結果就是另外上市時間和內核的復用不斷受挫、產品進度表和設計效率都受影響。
縮短SoC設計時間
為解決上市時間問題,首先想到的是并行設計單獨的SoC內核和最終的SoC產品,設計企業可以在這方面減少設計時間因為設計的各個環節,包括SoC仿真(時序和性能分析等)都并行進行。
這可以將SoC設計時間減少為單個部件的最大設計時間。單個部件可以是單獨的SoC內核,或是SoC集成。不管怎樣,開發進度分險得到控制-允許在加速設計進度表的前提下保證SoC產品更高可靠性。這也允許進度表更可預測。因為所有的設計是受控的,所有的設計并行進行,問題不是被串行解決。這意味著問題可以更快被發現和解決,設計流程變得非常可預見。
然而,并行設計需要定義分割的每個內核和共享的SoC資源。這是因為內核只執行自身功能,而無系統信息。比如,PCI2接口內核或MPEG 解壓內核只執行自身的功能,而不需了解SoC互連機制的任何信息。相似的,互連機制處理傳輸信息時,像進行判決控制、地址映射、數據傳輸時不需要了解內核提供任何信息。幸運的是,這種方法已經存在而且被研究好多年了,這種方法叫做分層法。
分層法已成功地被運用在網絡上,在每一層定義了不同的功能和與相連層之間的接口。在軟件上也一樣,每個功能和任務都定義自身的功能和接口。分層法已經在不同的領域被證明是很有效的。
用分層法來解決問題
分層法自然地將系統處理的部件分離出來,部件可以是大軟件程序的一個軟件模塊,或SoC中的半導體內核,這對SoC設計者更為重要,兩者的原理是相同的。分層法的優勢有:
• 減少設計時間
• 更簡單的驗證
• 增加IP 復用
分層法使得設計團隊能將設計努力分解成許多獨立活動,能被同步處理,因為這些活動間相互依存度最低。縮小單個活動的時間能增加成功的幾率,也更容易被驗證。這可以大幅地加速最終產品的交付時間。
分層法使內核能重用在不同的系統內。采用分層法方法,其他的系統資源只需考慮其他的設計要求,而不需考慮單個內核的功能。如果用正確的內核接口設計,內核只在支持接口的子系統內不用改變的被重用。通過選擇工業級標準接口,不需要增加額外的時間實現重用,因為所有內核都需要這樣的接口。但是,什么是內核接口呢?這個問題的答案就是套接口socket 。
套接口
現在出現在SoC 設計者面前的問題曾經困擾了局域網(LAN) 設計幾十年。最后,LAN 設計者建立了定義好的接口,包含了物理連接和物理連接上信息交換協議。這些行業慣例隨后用在計算機工業,以能提供獨立設計的和功能多樣性的即插即用型產品,使商業公司能整合在一起定制LAN 的配置。這種方法已經被證明是可行的。
理想的SoC 套接口要求
理想情況下, SoC socket 使得內核設計者能集中精力內核功能的設計和內核之間的互連(如SoC 互連、USB、802.11b、SDRAM 等)。相似的,SoC 系統集成者可以集中于SoC 時序、內核服務帶寬、延遲要求和獨立于內核功能的物理布線設計。因此,Socket 能提供必要的物理和交換協議,以實現定義好的分層法。
理想的SoC socket 必須是傳輸執行未知的。SoC 內核通過接口連接核內傳輸機制,但不需了解具體的傳輸機制(計算機總線、縱橫交叉、可配置片上網絡)。
這一點很重要。否則的話,進行內核設計時設計者需要了解傳輸知識,這不利于在使用不同的傳輸機制SoC 設計中進行內核重用。傳輸未知(transport-unaware) 方法,能保證設計的獨立性,允許系統設計者根據系統需求選擇最優的互連方式 {{分頁}}
最后,由于帶寬要求的多樣性,理想的接口應該允許設計者從不同的方面配置不同的接口方式。不同的方面包括接口數據位寬、交換握手協議、交換反饋等等。這使得SoC 設計者精簡SoC 內核設計,在滿足內核和SoC 設計要求的前提下,使芯片復雜度和面積最小化。
¡¡OCP 是一個面向內核的接口:
• 便于所有內核信號和功能不受限制的傳遞
• 能不受限制的接口橋接任何總線結構
SoC 套接口
據我們現在所知,使內核復用最大化的解決方案要求采用經精密構思的、專用的、以內核為中心的協議作為內核接口。通過選擇工業標準,內核設計者不僅能保證內核復用于自己公司設計的內核,也可以通過IP 授權協議讓內核復用在其 他公司設計的內核中。最后,能最大化地和第三方IP 取得授權和合作進行SoC 設計。換句話說,他們獲得了SoC 設計的快捷性和通過IP 授權取得收入的能力。
此外,嚴格的IP 內核接口規范,與最優化的系統互連結合,使得內核設計者能集中于設計內核的功能。這就消除了終端用戶一些必需了解的復雜知識,終端用戶可能使用內核和應用上的其他IP 內核。內核需要的接口能使內核從系統中剝離出來。接口具有socket 的屬性-一種強有力的、精簡的、已被工業界廣泛應用的接口。
通過這種方法,系統集成者利用分層硬件達到分割芯片部件的目的,設計者不再需要在無數種的內核協議和核內傳輸策略徘徊。用標準IP 內核接口可以避免在每次SoC 集成時去適應每個內核,系統集成者可以集中解決SoC 設計上的問題。因為每個內核已從片上互連分離出來,交換內核來滿足系統和市場的需求的努力將變得微不足道。
總之,對于真正內核復用,SoC 集成者將內核集成在SoC 時,不會修改被復用內核的信息。所以當總線位寬、總線頻率和總線電氣負載改變時不需要對內核進行修改。換句話說,一個真正的套接口使內核與SoC互連機制隔離開。Socket 支持工具、間接地支持協議、檢查器、模型、測試向量和測試生成器。這允許獨立的內核設計,設計出不需考慮內核互連的即插即用的模塊,也使得能并行設計模塊,這樣能節省大量的設計時間。
接口解決方案的要求
內核接口設計的要求是多樣化的,沒有一個單一專用的設計方法能滿足所有的要求。一個標準內核接口規范需滿足:
•不同等級的一系列要求
•允許設計者能應不同的要求配置接口實例(總線位寬、數據握手等)
•支持更多的數據流信號3
•誤差
•中斷
•標志和軟件流控制
•控制和標志
•測試
•捕捉所有的內核和系統之間的信號
OCP 介紹
OCP 是免費使用的、與總線獨立的協議,它滿足上面的以內核為中心的所有協議要求。特別的是,它能完全滿足IP 內核通信機制的所有要求。作為一可配置的接口,OCP 有一系列能共享公用定義的協議組成。
OCP 通過對基本OCP 數據集的可選擇擴展能支持邊帶信號。這些邊帶信號包括:重啟(reset) 、中斷(interrupt) 、誤差(error) 、控制/狀態信息(control/status information) 等。另外,類標志總線能滿足任何內核發信號的要求。可選擇的OCP測試接口擴展在集成SoC 時支持掃描、JTAG 、時鐘控制、內核調試、制造測試。
系統設計者能配置OCP 以很好地滿足內核需求。通過簡單的配置程序,OCP 用簡單且精簡的OCP 接口能支持簡單、低性能內核,也用復雜的接口支持復雜的、高性能的內核。
IP 設計者通過OCP 接口能實現IP 內核設計,設計者不需要了解除OCP 外的終端應用知識,允許全球設計團隊的人員互相獨立的設計。系統集成者可自由選擇片上互連方式,然后有效的轉換成OCP 接口連接內核。
OCP-IP 成員接受CoreCreator® 工具為OCP 協議達標環境,并封裝成一起以有效的IP 內核復用。這對所有的OCP-IP會員免費開放使用。
這些實例說明了三個不同功能的內核如何使用OCP 接口,這些實例有:
1 總線橋(bus bridge)
2 處理器接口(processor interface)
3 內存接口( memory interface)
第一次是孤立地討論每個內核的OCP 接口,之后提出了一些附加的公共信號.信號名稱是OCP 協議的一部分,關于完整的信號定義讀者可以參考開放式內核協議參考手冊。
在一個nutshell, OCP 互連有主機實體(Master entity)和從機實體( Slave entity).一些簡單的OCP 術語和協議:
•主機發出的信號以首字母M開始
•從機發出的信號以首字母S開始
•協議內有簡單的握手信號
•主從機可同時進行信號流控制
•所有的傳輸和信號與OCP 時鐘的上升沿同步
例1-總線橋
總線橋可以將PCI 、USB 和其他總線標準與OCP 互連。控制器有外部的接口像PCI 或USB 接口,內部的SoC 接口就是OCP 。
總線橋在內部SoC 互連機制上扮演的是主從機的角色,主機發出信號給目的地址,而從機向總線橋或內部控制狀態寄存器讀寫。 {{分頁}}
從機包含簡單的OCP 接口和一些邊帶信號,從機內核的OCP 信號集主要有:
•MCmd 主機命令信號(像讀/寫)
•MAddr 主機地址信號( 可達32 bits)
•MData 主機數據(寫數據; 8,16,32,64,128 bits wide)
•SCmdAccept 從機命令接受信號
•SResp 從機響應信號
•SData 從機數據(讀數據, 數據大小與MData 一致)
•SError 從機誤差信號, 誤差來自橋
•SInterrupt 從機中斷信號,中斷來自橋
•Control 總線橋的控制位
•Clk 時鐘信號
•Reset_N Reset 信號
這個實例的接口只用一個中斷,就是從機中斷。如果中斷超過一個,從機標志位(SFlag) 能提供8個額外的中斷。
總線橋主機的信號有:
•MCmd 主機命令信號
•MAddr 主機地址信號(可達32 bits)
•MData 主機數據(寫數據; 8,16,32,64,128 bits wide)
•MBurst 主機Burst
•SCmdAccept 從機命令接受信號
•SResp 從機響應信號
•SData 從機數據(讀數據, 數據大小同MData 一致)
•Clk 時鐘信號
•Reset_N Reset 信號
可選擇的OCP 線程信號與PCI 結合能增強接口的通信能力,支持接口并行和亂序處理傳輸信號。可選擇的OCP 擴展信 號支持多線程。不同線程間的事務沒有排序限制,可以亂序執行。但在一個線程里的數據流,所有的OCP 傳輸應保持順序。PCI 接口的線程可用于不同的memory 和I/O 。
•MThreadID 主機線程ID (可達16 個不同的線程)
•SThreadID 從機線程ID (可達16 個不同的線程)
例2-處理器接口
處理器接口只需一個OCP 主機,信號與總線橋主機相似,但對較少的單字傳輸增加了位使能信號。這個實例的內核OCP信號集可能有:
• MCmd 主機命令信號
• MAddr 主機地址信號(可達32 bits)
• MData 主機數據(寫數據; 8,16,32,64,128 bits wide)
• MBurst 主機Burst
• MByteEn 主機位使能信號
• SCmdAccept 從機命令接受信號
• SResp 從機響應信號
• SData 從機數據(讀數據, 大小與MData 一致)
• SError 從機誤差信號, 輸入處理器
• SInterupt 從機中斷信號, 通常是NMI pin
• SFlag 從機標志位信號, 其他給處理器的中斷輸入(可達8 flags)
• Clk 時鐘信號
• Reset_N Reset 信號
最新可用的處理器支持指令并行和數據cache-miss 預取,OCP 線程支持這個。因此,用以提高這些處理器的并發內存操作的信號有:
•MThreadID 主機線程ID (可達16 不同的線程)
•SThreadID 從機線程ID (可達16 不同的線程)
•MThreadBusy 主機線程忙信號
•SThreadBusy 從機線程忙信號
主從機線程忙信號用以控制每個線程流。雖然處理器可能有好幾種取指等待出來,但沒有資源同時處理所有信號。所以線程忙信號使OCP 主機處理器或者目標從機能控制傳輸流。
例3-內存子系統
與內存子系統互連接口的有DRAM, DDR, SRAM 或FLASH 。OCP 信號需要復雜的OCP 擴展來充分利用帶寬。內存子系統可以是支持很多個memory bank 的多線程。內存控制器也做一些簡單的擴展,如burst 和位使能,以有效地服務請求。
這個實例的內核OCP 信號集可能有:
•MCmd 主機命令信號
•MAddr 主機地址信號(可達32 bits)
•MData 主機數據(寫數據; 8,16,32,64,128 bits wide)
•MBurst 主機Burst
•MByteEn 主機位使能信號
•SCmdAccept 從機命令接受信號
•SResp 從機響應信號
•SData 從機數據(讀數據, 大小與MData 一致)
•MThreadID 主機線程ID (可達16 不同的線程)
•SThreadID 從機線程ID (可達16 不同的線程)
•MThreadBusy 主機線程忙信號
•SThreadBusy 從機線程忙信號
•Clk 時鐘信號
•Reset_N Reset 信號
內存子系統在主機數據和從機數據使用的數據位寬比連接到內存的數據位寬要大一些。這使得每個系統互連傳輸更有效。
每個例子的共同信號
先前的實例都有掃描信號和JTAG 信號,這些測試和掃描信號對每個內核都相同,但掃描鏈的數目是不同。在OCP 中測試結構不是孤立的實體,而作為接口的一部分。這完善了套接口,不僅僅只作尋址數據流方面的考慮。有掃描和JTAG 的內核需要的信號有:
•ScanCtl 掃描控制信號
•ScanIn 掃描輸入(可達256 掃描端口或掃描鏈)
•ScanOut 掃描輸出(可達256 掃描端口或掃描鏈)
•ClkByp Clock Bypass, 同測試時鐘代替正常時鐘
•TestClk 測試時鐘
•TCK JTAG 測試時鐘, 按照IEEE 1149.1 定義所有信號
•TDI JTAG 測試輸入
•TDO JTAG 測試輸出
•TMS JTAG 測試模式選擇
•TRST_N JTAG Reset
結論
標準的套接口內核協議對SoC 設計社區非常重要。OCP 是唯一的,完整的、全面支持的和已被證明的套接口。采用OCP能避免互相不兼容或私有權引起的問題,也有利于擴展IP 內核商業化交易市場。
完整全面支持的以核為中心的OCP 相比以前的以總線為中心的協議有很多重大的優勢。OCP 是以內核為中心、公開授權、免版稅的內核接口協議。它不會限制和干涉內在內核的信息。OCP 是可升級的、可配置的,以滿足不同內核和SoC設計需要的不同的通信要求。
擁有OCP 接口和OCP 互連系統使內核真正的模塊化,集成“即插即用”,允許設計者自由選擇內核以最優化應用互連系統。設計內核和設計系統能并行進行,可以縮短設計時間。另外,因為內核沒有系統邏輯,使得內核能被復用和重新被設計。
評論