1. 程式人生 > >如果模擬搞不定,那麼模擬就一定行嗎?

如果模擬搞不定,那麼模擬就一定行嗎?

本文轉自:http://www.eetop.cn/blog/html/28/1561828-5940202.html

路桑點評

“當我們發覺SoC系統越來越大的時候,我們轉而求向其它驗證手段,譬如FPGA和Emulator,但即便是模擬器也有它的短板所在。本文中的觀點,針對日益複雜的SoC系統,如果只是單純地將硬體RTL模型裝載到模擬系統中,從速度和複雜性來看,都變得不可承受;如果考慮將驗證環境和部分RTL模型都抽象分離到模擬工作站,而將其餘程式碼擱置到模擬器,這種混合模擬的方向可能是降低複雜度的一種手段。然而需要注意的是,混合模擬中如何利用SCE-MI保持高速通訊頻寬仍然需要花大力氣去考慮和實現。至於屬於藝術級別門檻的另外一個話題,如何抽象模型,抽象系統的哪些效能特徵,則又變得那麼虛無縹緲,尤其對於複雜的系統,抽象就意味著失真。那麼不想對核心引數失真,從哪兒抽取引數呢?有趣的是,人工智慧和深度學習對於大量資料的分析成為了下一個抽象模型建立的可能解決方案。”

 

 

隨著系統設計複雜度的穩步上升,對模擬技術的要求也越來越高。諸如車輛的自動駕駛技術以及其它複雜的系統,傳統的模擬技術已經無法滿足它們的需求,所以應該怎麼辦呢?

目前一種模擬技術的替代方案已經被谷歌,Uber,福特,通用,沃爾沃奧迪和其他擁有自動駕駛技術的公司使用:在道路上測試汽車行駛狀況並收集相關的資料進行後續的分析。

Imperas Software的執行長Simon Davidmann表示:“自動駕駛是無法被模擬出來的,只能在現實中測試這些,因為我們無法模擬出數以億計的事情。肯定有一個節點,在那之後事情的發展將無法被模擬,因為資料分析將變得非常複雜。一輛車可能有50個處理器正在執行,每一個處理器的執行速度也不相同。你可以對這50個處理器進行模擬,但那將變得非常複雜。因此你可以嘗試著在現實世界中建立一個模型來模擬這個複雜的系統,如果你已經把模型做的足夠好了,那你可以真正的去開車看看會發生什麼,但是記得帶上一個防撞頭盔。”

隨著自動駕駛技術不斷向現實發展,這些複雜系統的驗證和測試必須在多個層次上進行。

ARM公測的高階產品經理Neil Parris表示:“如果你想要一次性通過所有處理器來測試所有的軟體,達到100%的準確率幾乎是不可能的。你不可能讓模擬器執行的足夠快。也許你能夠模擬一些東西,但模擬速度仍然是一個挑戰。大多數的工程師團隊將要做的是讓它在一個類似於程式設計師視角的更快的模型上進行模擬。所以你必須有一個軟體視角,在這裡你可以測試在平臺上執行的所有關鍵元件,能夠在一個更高的模擬視角檢查這些元件間的相互關係。”

 

各種各樣的複雜性

SoC設計具有高度的可擴充套件性,具有多個核心和圖形處理器。因此,使用模擬器對其進行模擬需要消耗數天的時間而不僅僅是幾個小時。

Aldec硬體部總經理Zibi Zalewski說:“模擬的時間也與描述它的抽象層次有關。例如可綜合的RTL的行為級別模型模擬起來就比門級模型會快。功能控制邏輯(FSM)模擬起來將比計算密集型資料路徑(DSPs)要快。”

因此,大型專案中的模擬器通常用於模組級和IP的驗證,SoC系統層面則用硬體驗證方法來覆蓋。但是今天看來,即使是子系統層面也會耗用一天或更長的驗證時間,測試的複雜性也同樣在增加。UVM已經成為了大型ASIC和FPGA工程的一個用於驗證的標準,對於驗證工程師來講是一個很好的工具,但同樣也需要巨大的模擬能力支援。

Zalewski說,幸運的是,由於設計和測試環境的複雜性,模擬已經成為瓶頸,因此有了更多的選擇。“使用UVM測試平臺在子系統層面驗證IP模組的時候,很自然的會用到模擬加速。目前最新的模擬編譯器已經能夠支援例如基於功能的或者基於執行緒的SCE-MI模式,能夠實現UVM的模擬到UVM加速的無縫遷移。這樣的遷移解除安裝了UVM模擬器並保持相同的測試環境。由於縮短了模擬時間,能夠增加測試範圍,並發現及修復傳統模擬中發現不了的問題。”

他認為,在SoC層面,可以使用混合模擬的方法,將虛擬平臺或者SystemC的模擬器和模擬器結合。這種驗證方法需要將SoC在這兩種工具上分割,並保證分割後即使只拿到部分的RTL程式碼也能夠進行驗證。

 

困難評估

然而,定義多大是“太大”並沒有一個定論,它因設計、應用領域和公司而不同。

Zalewski說,“太大”可以基於設計中門的數量,但是就模擬而言,執行所有測試用例所需的時間可能是一個用來描述設計大小更好的方法。Zalewski說,“可能會有成千上百個測試用例需要執行,驗證團隊需要花上不止一整夜的時間來等待結果,這會推遲整個專案的進度。”

一些設計需要在模擬時加入時間約束,這將使得一箇中型規模的設計變得”太大”,更有效的驗證方法可能是重新將這些測試向量通過某種方法以目標晶片上的執行速度進行模擬。這樣反過來可以將測試時間縮短到幾秒鐘,並提供一個真正的系統級驗證環境。

Cadence 系統與驗證組的高階總監Frank Schirrmeister表示,這種方法取決於抽象的層面。在目前汽車行業的複雜程度上,模擬的準確性達不到像RTL那種程度。

他提到了波音公司為自己的飛機開發的全網模擬器。這是一個非常複雜的任務,需要將不同的系統元件抽象出來,伺服器僅僅是該系統中的一個節點,“你需要有一個模擬的抽象層次,如同模擬學校的兩棟樓之間的IT網路:樓之間的頻寬是多少,多少光纖需要鋪到地下,如何配置交換機,交換機需要獲得哪些資料流量?這就是IT所考慮的問題型別。”

 

嵌入的視覺處理系統

也許過去幾年中最複雜的工程就是視覺處理了,因為它在汽車自動駕駛以及虛擬現實遊戲等市場中應用非常普及,它的增長與模擬的增加有直接的關係。

Synopsys的DesignWare ARC處理器高階產品經理Mike Thompson表示:“我們都把視覺處理系統視為理所當然應該具有的東西,因為我們一直都這麼做,但實際情況是令人難以置信的複雜。我們正在建立的視覺處理器遠遠超過了35年來在這項業務中所參與的最複雜的工作,而且只有底層功能的發展才是令人滿意的。”

但是視覺處理系統只是自動駕駛的一部分,隨著車載電子複雜性的增加,它們之間的相互作用成為了主要的問題所在。

Thompson說,從有利的觀點來看,傳統的模擬方法並沒有完全消除,特別是因為軟體已經可以被分散在許多伺服器上執行。 事實上,當Synopsys在其正在開發的處理器上進行驗證時,它運行了數個月,在數千臺伺服器上執行了數萬億條指令。

但是事情總沒有這麼簡單,NetSpeed System營銷和業務發展副總裁Anush Mohandass指出,複雜的智慧手機或者發動機中的汽車晶片的RTL模擬是非常困難的,並且難度越來越大。

和其他人一樣,Mohandass指出提升抽象層次是必不可少的一步。如果你想進行細緻的門級模擬,你可以模擬出許多細節的東西,然後將抽象級別擴充套件到你想模擬的程度。但是如果你想對整個晶片進行模擬,則不需要傳送所有的位元位和位元組,而是對某些事件進行模擬。如何追蹤這些事件帶來的影響?這個晶片是如何在這個抽象層次上工作的?這是你需要模擬的東西。你可以模擬一輛汽車的主機板,然後在上面執行資訊娛樂系統。你也可以直接模擬一輛汽車,只要你擁有一個非常簡單的模型,並且它能夠模擬那些複雜的東西。重點在於控制抽象級別,並且建立不同抽象級別的模型。關鍵在於你是否具有足夠的抽象能力,能夠在有意義的時間內模擬出足夠的細節用於觀察。

然而,這引發了這樣的一個論點,即抽象層次會掩蓋各種系統分析所需要的準確性。其實這就是深度學習和機器學習能夠發揮作用的地方。

Mohandass說:“當我們試著去為一輛汽車,或者汽車內的一些複雜的東西例如SoC進行建模時,機器學習可以用來在數以億計的資料中發現需要的引數,而不是人工的去篩選這些資料。我們可以試著用機器學習來計算出那些東西。”

終將有一天,傳統的模擬和相關的技術將被淘汰,它們必須被新的驗證技術增強來處理日益複雜的設計。