Emulation
客製化CPU竄起 設計驗證需求重新回溫
在RISC-V指令集架構(ISA)的帶動下,處理器客製化的風潮有復甦的跡象,但由於過去十多年來,Arm架構已經在嵌入式處理器市場取得絕對主流的地位,目前CPU設計驗證工具幾乎都是針對Arm架構設計,熟悉CPU驗證工作的第一線工程師,很多也只熟悉Arm架構。如何驗證不是Arm架構的CPU設計,變成一門越來越少人熟悉的技藝。
但需求總會創造供給,在RISC-V的聲勢看漲之際,其生態系統也在快速茁壯。許多EDA業者已經成為RISC-V社群的一員,試圖填補這個空白,並掌握相關商機。
CPU設計驗證沒有標準答案
天底下幾乎找不到沒Bug的CPU設計,特別是通用型CPU,因為在CPU上執行的軟體或應用程式太過多樣化,設計驗證工程師幾乎不可能用窮舉法把CPU會遇到的各種可能狀況都模擬一遍,抓出設計上的Bug,因此通用型CPU的設計驗證,不僅是技術問題,同時也是風險管理問題。因為資源有限,驗證團隊往往只能捉大放小,把不可接受、高風險的重大Bug抓出來修正。然而,漏網之魚總是存在,本以為無關痛癢的小Bug,也可能導致災難性後果。所以,設計驗證要做到什麼程度,驗證項目要如何規畫,不只是技術問題,也考驗團隊的風險評估能力。
主流CPU的架構變得日益複雜,也讓CPU設計驗證變得更困難。英特爾(Intel)出身的SiFive總裁暨執行長Naveed Sherwani就表示,如果要對當代的主流處理器進行設計驗證,一定要有龐大的團隊,而且團隊成員必須是有三到五年以上設計經驗的資深工程師,否則很難做好這項工作。相較之下,從教育需求中誕生的RISC-V,因為其架構相對單純很多,所以CPU的設計驗證也比較容易進行。如果是學生專案作業的水準,一個學習RISC-V架構大約半年左右的大學生,就有能力為自己設計的RISC-V核心進行驗證。
當然,學生作業是一回事,商用等級的CPU還是要用更嚴謹的態度來面對。SiFive的研發團隊擁有15年以上的SoC設計經驗,並且對RISC-V有非常深入的研究跟知識,所以能獲得大量知名客戶的信任跟委託,為其實現RISC-V核心的設計跟SoC整合。統計數據會說話,在2020年上半,SiFive設計定案的SoC創下了不良率為0的傲人成績,遠優於公司創立以來的平均值25DPPM,以及業界平均值100~200DPPM。
EDA工具商擴大接觸RISC-V社群
除了公司研發團隊本身的實力之外,EDA工具的支援逐漸到位,也是RISC-V品質提升一個很重要的原因。由於RISC-V的使用族群跟開發者越來越多,許多EDA公司,如新思(Synopsys)、益華(Cadence)與明導(Mentor),都開始對RISC-V提供更多支援。據了解,晶心科技所使用的設計驗證工具,大多都來自明導,但益華近來也很積極地與RISC-V社群有所接觸。
一般來說,要為客製化CPU進行設計驗證,需要用到指令集模擬器(ISS)、RTL模擬器,以及基於FPGA的硬體模擬系統(Emulator)與原型(Prototyping)建構系統這四種工具。在Arm全面主導嵌入式處理器市場的年代,很多EDA業者對指令集模擬器的布局都慢慢淡化,因為Arm的指令集是標準化的,沒有客製化空間,因此指令集模擬器變成無用武之地的技術。至於FPGA Emulator跟Prototype系統,則因為客戶希望壓縮產品開發時程,要用更快的速度完成硬體除錯,並導入軟硬體同步開發的作業流程,還有一定的需求存在。
Cadence資深產品行銷經理Zaid Rodriguez解釋,在IC設計的作業流程中,有兩個環節會涉及到FPGA,一個是設計模擬,另一個則是原型建構。雖然這兩個步驟都會用到FPGA,但使用的目的不同。
設計模擬是設計驗證的一個階段,IC設計工程師將晶片設計的原始碼移植到FPGA上,主要目的是為了進行除錯,晶片的運作效能則不是重點。因此,對模擬工具來說,重點在於提供完善的移植跟除錯工具,讓工程師可以快速地把RTL碼轉換成可以移植到FPGA上的格式,展開硬體除錯作業。
至於原型建構,主要目的則是為了爭取時效,讓韌體/軟體開發工程師可以在還沒有拿到ASIC、SoC的工程樣本時,就開始為晶片撰寫軟體。是故,原型建構工具的使用者,除了同樣需要快速將設計移植到FPGA上之外,對晶片的效能要求會比模擬來得高很多,還需有完整的軟體除錯工具,以及基本的硬體除錯。理論上,當IC設計進行到原型建構這個階段時,硬體本身應該已經沒有太多Bug,但實務上還是難免會遇到有漏網之魚的情況。
但在RISC-V興起與Arm有限度地開放自訂義指令集之後,EDA工具業者應該會加快腳步,填補這些年客製化CPU需求不足,導至CPU驗證工具出現缺口的情況。
可控軟體環境減輕驗證負擔
然人才需求依然急迫
換個角度來看,CPU的設計驗證之所以困難,跟設計團隊無法預知CPU上將執行什麼軟體有關。但如果設計團隊在開發CPU時,就已經知道在該CPU會執行什麼軟體,情況將大不相同。這正是RISC-V目前的實際應用狀況。
目前大多數的RISC-V應用,都屬於深度嵌入(Deeply Embedded)應用,亦即CPU上不會(或鮮少)執行第三方軟體,而是IC供應商自己開發的軟體或韌體,例如NVIDIA GPU內嵌的Falcon處理器、三星(Samsung)的5G毫米波射頻前端模組,就是典型案例。這使CPU開發團隊面對的是一個「可控」或「可預期」的軟體環境,因此在進行設計驗證的時候,究竟要把哪些項目納入驗證範圍,變得相對明確,進而讓設計團隊有機會窮盡各種可能出現的情況,徹底抓出所有可能存在於CPU設計中的Bug。
但即便如此,要驗證一款客製化CPU,還是一項相當吃重的工作,導致相關人才在客製化CPU蔚為話題的今天,變得非常搶手。例如蘋果(Apple)就持續在台灣開出CPU驗證工程師的職缺,晶心也有相關人才需求。加上EDA產業急於填補過去十多年淡出市場所留下的空白,可以想見的是,擁有CPU設計驗證知識的專業人才,在人力市場上,將變得奇貨可居。
FPGA原型建構曠日費時 Cadence提出新解法
由於市場對晶片功能的整合度要求持續提升,加上半導體製程進步,單一晶片上具有數千萬,甚至上億個閘極的SoC,現在已經比比皆是。但對IC設計者而言,不斷膨脹的晶片規模,已經使開發團隊必須用更長的時間來完成用FPGA建構晶片原型的作業。有鑑於此,益華電腦(Cadence)近日發表新一代原型建構系統Protium,可協助IC設計團隊用更快速度建構出晶片原型,進而加快產品開發時程。
Cadence資深產品行銷經理Zaid Rodriguez表示,在IC設計的作業流程中,有兩個環節會涉及到FPGA,一個是設計模擬(Emulation),另一個則是原型建構(Prototyping)。雖然這兩個步驟都會用到FPGA,但使用的目的不同。
設計模擬是設計驗證的一個階段,IC設計工程師將晶片設計的原始碼移植到FPGA上,主要目的是為了進行除錯(Debug),晶片的運作效能則不是重點。因此,對模擬工具來說,重點在於提供完善的移植跟除錯工具,讓工程師可以快速地把RTL碼轉換成可以移植到FPGA上的格式,展開硬體除錯作業。
至於原型建構,主要目的則是為了爭取時效,讓韌體/軟體開發工程師可以在還沒有拿到ASIC、SoC的工程樣本時,就開始為晶片撰寫軟體。是故,原型建構工具的使用者,除了同樣需要快速將設計移植到FPGA上之外,對晶片的效能要求會比模擬來得高很多,還需有完整的軟體除錯工具,以及基本的硬體除錯。理論上,當IC設計進行到原型建構這個階段時,硬體本身應該已經沒有太多Bug,但實務上還是難免會遇到有漏網之魚的情況。
圖 原型建構工具除了必須具備完善的軟體除錯工具,還必須把部分硬體除錯功能納入,才能協助使用者進行軟硬體同步開發。
也因為模擬跟原型建構的需求不同,雖然兩者都是以FPGA為基礎,但所使用的工具平台是不同的。以Cadence為例,針對設計模擬需求,該公司提供的是Palladium平台,至於原型建構工具則是Protium。
但由於IC設計的規模越來越大,因此工程團隊要將IC設計的原始碼移植到FPGA上,所遇到的挑戰變得比以往更為艱鉅。首先,設計ASIC或SoC所使用的硬體描述語言,跟FPGA的硬體描述語言是不同的,因此工程團隊要將IC設計的原始碼移植到FPGA上,得花更多時間進行編譯。其次,雖然拜半導體製程技術進步之賜,FPGA的容量也變得越來越大,但遇到非常複雜的SoC設計時,常常還是得把一顆SoC切割(Partitioning)成多個部分,分別在多顆FPGA上執行。
設計分割是非常耗時而且吃重的工作,因此Protium提供了自動化切割功能,可以顯著壓縮設計切割的時間。但Rodriguez也指出,如果從效能面來考慮,工程師手動切割所獲得的成果,還是會比用自動化功能來得好,因此Protium提供的切割工具是很靈活的,工程師可以自行指定一部分區塊讓自動化工具幫忙切割,其他部分則仍維持手動切割,以便在工作時間跟產出品質之間取得更好的平衡。
利用FPGA建構晶片原型所耗費的時間越長,原型建構的存在價值就越低,因為原型建構的主要目的就是爭取時間,讓軟體團隊可以在還沒拿到晶片硬體的時候,就開始著手撰寫程式。如果原型建構就要耗時數週,甚至一兩個月,軟體團隊很可能工作才進行到一半,晶片的工程樣本就已經從晶圓廠送回來了。
這就是Cadence為何要發展Protium平台的原因。傳統的原型建構方法已無法滿足IC設計團隊對工作時程的需求,但為了盡可能加快產品上市的腳步,原型建構還是有存在的必要性。因此,解決方法就是加快原型建構的速度。藉由Protium跟Palladium聯手,IC設計團隊可以在一兩天內就完成原型建構,而不是好幾個禮拜,甚至好幾個月。
Rodriguez相信,傳統的原型建構方法,例如IC設計團隊自己從無到有打造專屬於自己的原型建構軟硬體,會越來越不可行。畢竟,當代SoC跟FPGA都已經變得太複雜了,DIY只能適用在某些比較簡單的設計專案,大型、高複雜度的設計專案,還是需要靠專業工具輔助。