應對「系統級」設計與整合挑戰
时间:10-02
整理:3721RD
点击:
長久以來,有關系統單晶片(SoC)的開發和驗證挑戰一直是業界最感興趣的討論議題之一,從開發環境、語言、驗證方法,各式各樣的產品一直被提出討論。但現實是,迄今在確實解決SoC整合問題方面,仍然有非常長遠的道路要走。‘系統級’設計本身就很複雜,但現在,它正變得更加複雜,Mentor Graphics公司系統級工程部的SoC產品事業群總監Michael Chen說。
系統級的設計概念由來已久,無論是一顆封裝IC,或是整合微處理器、多顆處理器、DSP和不同週邊、IP的形式,基本上,今天的系統單晶片(SoC)幾乎都包含了不同型態的處理單元,這也意味著必須整合不同模組,同時要解決各種棘手的軟體問題。
當SoC整合了微處理器之後,之所以複雜是因為它不僅僅整合了硬體,還有平台的元件庫,再加上各式各的匯流排、邏輯、韌體、作業系統...,這一切都要考量進去。“曾有一個歐洲客戶對我說,他們花在SoC開發上最多時間的就是整合。這與模組的觀念截然不同──模組隨時都可以買,現成的很多,但問題是如何將它們整合在一起,”Chen表示。
讓SoC設計變得更加複雜的主因,不在規模大小,而在於它所整合的內容。Chen指出,今天的SoC設計,事實上是掌握在一些擁有大量專門知識或是量足夠大的公司手中的。在許多垂直市場,如汽車、醫療或手機,擁有眾多資源的公司都開始制定專屬的平台,因為一旦開發出平台,就不用每一代產品皆辛苦地重新開發。Google之所以大力推動Android就是一個例子。
這個平台化的趨勢牽動了更加高階的系統級設計風潮,卻也帶來了更加艱鉅的挑戰,其中,驗證是最困難的一環。“有許多方法可以解決驗證問題,你可以買很多電腦來做平行驗證,但現實條件是不允許這樣做的。所以,這就造成了現今晶片產業一種特殊現象:盡可能地做測試,但實際上是做不完的,因此,今天的晶片大約只有一半經過測試的,”Chen說。
當然,他進一步表示,有些東西沒有測試,並不會出什麼問題。例如手機,如果僅要求能夠通話,當然沒有問題。但若要同時通話、執行遊戲軟體或聽音樂時,就可能會出問題了。又例如在汽車裡,煞車是絕不能出問題的。因此,依照應用別而定,晶片驗證的重要性只會愈來愈提高。
另一個挑戰是如何在系統內部進行良好溝通。“當我們檢視一個系統,可以看到CPU、記憶體、編解碼器....各式各樣的元件,但現在,更重要的是如何將每個元件的通訊做好?例如,無論是哪一種處理器,都一定會有指定集、資料。處理器速度再快,資料過不來也沒用,因此,在一個多處理器的單晶片中,實現高速通訊的匯流排架構(Bus Fabric),是所有晶片業者的開發重點。”
此外,訴求低功耗也加重了晶片業者開發複雜晶片上匯流排架構的重擔。要在晶片中整合大型的高性能處理器是沒問題的,但若要求低功耗,便可考慮放2個或多一些的小型處理器,同樣能運作,但功耗更低,依此類推,如果能同時放1,000個可同時運作的超小型處理器,那麼理論上是可以達到最低功耗的,但問題是這小型處理器不能相互通訊,也無法編譯,因此,目前所看到的,大多是主流的雙核心處理器。
這種朝多核心發展的思維,又帶來了其他的挑戰。在多核心處理器中,有多個處理器,要分享記憶體,還有資料記錄、任務排程等各式各樣的問題。Chen表示,目前在這些設計中,仍然缺乏自動化的設計方法,必須以人工逐一檢驗,這是SoC的設計中很大的一部份挑戰。
在此同時,工程設計的趨勢也在轉變。隨著系統複雜,要考量的東西也愈來愈多,像是類比部份、機械結構....,還包括軟體在內。“很多客製晶片設計師現在開始做平台了。未來,ASIC設計師會愈來愈少,而大部份的IC設計師、FPGA設計師,也都要開始進行系統設計了。”
“然而,從系統設計角度來看,缺乏統一的語言一直是一大問題,”他指出,現在很多人用C,但對硬體設計來說,C並不是一種最適合的語言。而SystemC實際上是一種建模語言,為了系統驗證,業界又發展出SystemVerilog。也有人提倡UML,但UML它最大的問題是軟體設計師還沒開始用;而硬體設計師很少會用。總而言之,缺乏統一語言帶來的結果,是一個系統級設計不能用單一方案來完成。
確實,無論是從EDA廠商或晶片設計師的角度來看,要實現所謂的系統級設計,都是極為艱難的任務。現在,由EDA供應商提供的工具,就像拼圖般逐一在系統級設計這個巨大領域中填補空白。
Chen表示,過去10幾年來,EDA業者一直在發展各種重要的工具,如虛擬原型,讓硬體工程師可以先做一個虛擬原型給軟體設計師,協助軟體端更早地切入設計。而性能/功率分析和最佳化工具,則可及早觀察到系統的運作,讓設計滿足必要的規範。
此外,所謂的跨領域(Multi-disciplinary)建模設計概念和工具組合,則讓設計師可同時進行機械、電子、軟體和控制功能等全方位的設計考量。對迎接下一代高性能系統級設計的工程師來說,要求一個全面性的解決方案,目前看來是不切實際的,但透過將各領域工具加以整合,仍然有助於加快系統級設計的步伐。 (鄧榮惠)
系統級的設計概念由來已久,無論是一顆封裝IC,或是整合微處理器、多顆處理器、DSP和不同週邊、IP的形式,基本上,今天的系統單晶片(SoC)幾乎都包含了不同型態的處理單元,這也意味著必須整合不同模組,同時要解決各種棘手的軟體問題。
當SoC整合了微處理器之後,之所以複雜是因為它不僅僅整合了硬體,還有平台的元件庫,再加上各式各的匯流排、邏輯、韌體、作業系統...,這一切都要考量進去。“曾有一個歐洲客戶對我說,他們花在SoC開發上最多時間的就是整合。這與模組的觀念截然不同──模組隨時都可以買,現成的很多,但問題是如何將它們整合在一起,”Chen表示。
讓SoC設計變得更加複雜的主因,不在規模大小,而在於它所整合的內容。Chen指出,今天的SoC設計,事實上是掌握在一些擁有大量專門知識或是量足夠大的公司手中的。在許多垂直市場,如汽車、醫療或手機,擁有眾多資源的公司都開始制定專屬的平台,因為一旦開發出平台,就不用每一代產品皆辛苦地重新開發。Google之所以大力推動Android就是一個例子。
這個平台化的趨勢牽動了更加高階的系統級設計風潮,卻也帶來了更加艱鉅的挑戰,其中,驗證是最困難的一環。“有許多方法可以解決驗證問題,你可以買很多電腦來做平行驗證,但現實條件是不允許這樣做的。所以,這就造成了現今晶片產業一種特殊現象:盡可能地做測試,但實際上是做不完的,因此,今天的晶片大約只有一半經過測試的,”Chen說。
當然,他進一步表示,有些東西沒有測試,並不會出什麼問題。例如手機,如果僅要求能夠通話,當然沒有問題。但若要同時通話、執行遊戲軟體或聽音樂時,就可能會出問題了。又例如在汽車裡,煞車是絕不能出問題的。因此,依照應用別而定,晶片驗證的重要性只會愈來愈提高。
另一個挑戰是如何在系統內部進行良好溝通。“當我們檢視一個系統,可以看到CPU、記憶體、編解碼器....各式各樣的元件,但現在,更重要的是如何將每個元件的通訊做好?例如,無論是哪一種處理器,都一定會有指定集、資料。處理器速度再快,資料過不來也沒用,因此,在一個多處理器的單晶片中,實現高速通訊的匯流排架構(Bus Fabric),是所有晶片業者的開發重點。”
此外,訴求低功耗也加重了晶片業者開發複雜晶片上匯流排架構的重擔。要在晶片中整合大型的高性能處理器是沒問題的,但若要求低功耗,便可考慮放2個或多一些的小型處理器,同樣能運作,但功耗更低,依此類推,如果能同時放1,000個可同時運作的超小型處理器,那麼理論上是可以達到最低功耗的,但問題是這小型處理器不能相互通訊,也無法編譯,因此,目前所看到的,大多是主流的雙核心處理器。
這種朝多核心發展的思維,又帶來了其他的挑戰。在多核心處理器中,有多個處理器,要分享記憶體,還有資料記錄、任務排程等各式各樣的問題。Chen表示,目前在這些設計中,仍然缺乏自動化的設計方法,必須以人工逐一檢驗,這是SoC的設計中很大的一部份挑戰。
在此同時,工程設計的趨勢也在轉變。隨著系統複雜,要考量的東西也愈來愈多,像是類比部份、機械結構....,還包括軟體在內。“很多客製晶片設計師現在開始做平台了。未來,ASIC設計師會愈來愈少,而大部份的IC設計師、FPGA設計師,也都要開始進行系統設計了。”
“然而,從系統設計角度來看,缺乏統一的語言一直是一大問題,”他指出,現在很多人用C,但對硬體設計來說,C並不是一種最適合的語言。而SystemC實際上是一種建模語言,為了系統驗證,業界又發展出SystemVerilog。也有人提倡UML,但UML它最大的問題是軟體設計師還沒開始用;而硬體設計師很少會用。總而言之,缺乏統一語言帶來的結果,是一個系統級設計不能用單一方案來完成。
確實,無論是從EDA廠商或晶片設計師的角度來看,要實現所謂的系統級設計,都是極為艱難的任務。現在,由EDA供應商提供的工具,就像拼圖般逐一在系統級設計這個巨大領域中填補空白。
Chen表示,過去10幾年來,EDA業者一直在發展各種重要的工具,如虛擬原型,讓硬體工程師可以先做一個虛擬原型給軟體設計師,協助軟體端更早地切入設計。而性能/功率分析和最佳化工具,則可及早觀察到系統的運作,讓設計滿足必要的規範。
此外,所謂的跨領域(Multi-disciplinary)建模設計概念和工具組合,則讓設計師可同時進行機械、電子、軟體和控制功能等全方位的設計考量。對迎接下一代高性能系統級設計的工程師來說,要求一個全面性的解決方案,目前看來是不切實際的,但透過將各領域工具加以整合,仍然有助於加快系統級設計的步伐。 (鄧榮惠)
goooddd