電子系統(tǒng)級設計論
電子系統(tǒng)級(ESL)設計
摘要:電子系統(tǒng)級設計(ESL,Electronic System Level)設計是能夠讓SOC 設計工程師以緊密耦合方式開發(fā)、優(yōu)化和驗證復雜系統(tǒng)架構和嵌入式軟件的一套方法學,并提供下游寄存器傳輸級(RTL)實現(xiàn)的驗證基礎。ESL牽涉到比RTL級別更高層次的電路設計,其基本的關注點在于系統(tǒng)架構的優(yōu)化、軟硬件劃分、系統(tǒng)架構原型建模、以及軟硬件協(xié)同仿真驗證。SystemC是一種很好的軟硬件聯(lián)合設計語言,它不僅可以幫助設計人員完成一個復雜的系統(tǒng)設計,還可以避免傳統(tǒng)設計中的各種弊端,并提高設計效率。
關鍵詞:電子系統(tǒng)級設計;SOC;SystemC
1 引言
目前,高質(zhì)量的電子系統(tǒng)設計變得越來越復雜和困難。功能更繁雜的設計需求,更短的上市時間,不斷增加的成本壓力使這種趨勢看起來還在加速。從應用概念到硅片實現(xiàn)的過程已經(jīng)不能僅僅靠工程師聰明的大腦來完成,而更需要依賴于嚴格完善的設計方法學。
隨著片上系統(tǒng)(SoC,System on Chip)設計復雜度的不斷提高,設計前期在系統(tǒng)級別進行軟硬件劃分對SoC各方面性能的影響日趨增加,迫切需要高效快速性能分析和驗證方法學。傳統(tǒng)的RTL仿真平臺不能提供較快的仿真速度與較大的仿真規(guī)模,F(xiàn)PGA平臺則不能提供詳細的性能分析指標,而電子系統(tǒng)級設計(Electronic System Level,ESL)方法,不僅提供高速的仿真驗證手段還提供詳細的性能分析指標,已經(jīng)成為當今SoC設計領域最前沿的設計方法,它是能夠讓SoC設計工程師以緊密耦合方式開發(fā)、優(yōu)化和驗證復雜系統(tǒng)架構和嵌入式軟件的一套方法學。
電子系統(tǒng)級設計(ESL,Electronic System Level)牽涉到比RTL級別更高層次的電路設計,其基本的關注點在于系統(tǒng)架構的優(yōu)化、軟硬件劃分、系統(tǒng)架構原型建模、以及軟硬件協(xié)同仿真驗證。全新的ESL工具為電路系統(tǒng)級建模提供了虛擬原型的基本仿真平臺。電子系統(tǒng)級設計正在從學術研究的課題變成業(yè)界廣為接受的建模手段,它完成從理想應用優(yōu)化到目標體系結(jié)構建立。而后依據(jù)預期產(chǎn)量規(guī)模的不同,用SoC 芯片或可編程平臺實現(xiàn)。
2 .傳統(tǒng)SOC設計方法的局限
目前的設計方法不能充分利用設計能力來快速構建滿足市場需求的SoC。而只有快速適應消費電子市場的變化,商業(yè)系統(tǒng)設計公司才能在競爭中勝出。這使SoC設計方法的研究具有重要的現(xiàn)實意義。
目前在技術上,SoC設計面臨的主要挑戰(zhàn)是在系統(tǒng)建模和硬件設計之間的不連續(xù)性。通常系統(tǒng)是使用C語言或其他系統(tǒng)描述語言定義的。而系統(tǒng)的集成電路實現(xiàn)卻使用硬件描述語言,因此導致轉(zhuǎn)換和重寫系統(tǒng)的負擔。這樣的流程使得設計過程中容易出錯而且耗時。驗證流程中需要仿真大規(guī)模系統(tǒng),仿真速度難以需滿足設計需求。HDL模型仿真效率低,需要提高抽象層次。SoC系統(tǒng)中的組件具有多樣性異質(zhì)性,包括各個專業(yè)的設計,模擬和數(shù)字設計等等,需要提供異質(zhì)的仿真環(huán)境以及對系統(tǒng)級設計空間的探索復雜性的管理。千萬門級的規(guī)模使得設計本身的管理成為問題深亞微米集成電路中,沿線延遲的增加使時序收斂問題顯得更加突出,需要消除前端邏輯設計和后端物理設計的反復返工問題傳統(tǒng)的設計重用方法需要適應規(guī)模的增長。系統(tǒng)設計需要具有競爭力,從基于芯片的設計方法,過渡到基于IP核的設計也是必然趨勢。雖然可以使用標準接口,但是更理想的辦法是分離出通訊部分,使用接口綜合技術。因此需要設計工具重點面向模塊間的通訊和互連,門級和寄存器傳輸級(RTL)仿真速度太慢,不適合系統(tǒng)設計。需要提高設計的抽象層次。SoC設計的趨勢是向高層抽象移動,更強調(diào)芯片級的規(guī)劃和驗證。強調(diào)早期芯片級規(guī)劃,以及軟硬件系統(tǒng)驗證。軟硬件協(xié)同設計方法是SoC設計方法學研究的重要領域。主要目的是開發(fā)適應設計需求的設計方法和相應的電子設計自動化軟件。在設計中通常一種技術是不能滿足設計要求的,因此要結(jié)合研發(fā)成本和開發(fā)周期等等因素,綜合考慮各種技術。
3. ESL設計的基本概念
ESL設計指系統(tǒng)級的設計方法,從算法建模演變而來。ESL設計已經(jīng)演變?yōu)榍度胧较到y(tǒng)軟硬件設計、驗證、調(diào)試的一種補充方法學。在ESL設計中能夠?qū)崿F(xiàn)軟硬件的交互和較高層次上的設計抽象。ESL設計能夠讓SoC設計工程師以緊密耦合方式開發(fā)、優(yōu)化和驗證復雜系統(tǒng)架構和嵌入式軟件,并能夠為下游的寄存器傳輸級(RTL)實現(xiàn)提供驗證基礎。
ESL設計以抽象方式來描述系統(tǒng)單芯片(SoC)設計。在ESL設計中,系統(tǒng)的描述和仿真的速度快,讓設計工程師有充裕的時間分析設計內(nèi)容。并且能提供足夠精度的虛擬原型,以配合軟件的設計。ESL設計不僅能應用在設計初期與系統(tǒng)架構規(guī)劃階段,亦能支持整個硬件與軟件互動設計的流程。
ESL設計技術與IP模塊能將流程融入現(xiàn)有的硬件與軟件設計與工具流程,在SoC開發(fā)流程中扮演協(xié)調(diào)統(tǒng)合的角色。它們讓工程師能開發(fā)含有數(shù)百萬邏輯門與數(shù)十萬行程序代碼的設計,并提供一套理想平臺,用來進行驗證,滿足客戶持續(xù)成長的需求。
4. ESL設計的特點
ESL設計之所以會受歡迎,主要源于以下五方面功能:功能正確和時鐘精確型的執(zhí)行環(huán)境使提前開發(fā)軟件成為可能,縮短了軟硬件集成的時間。系統(tǒng)設計更早地和驗證流程相結(jié)合,能確定工程開發(fā)產(chǎn)品的正確性。在抽象層設置的約束和參數(shù)可以被傳遞到各種用于設計實現(xiàn)的工具中。
(1)更早地進行軟件開發(fā)
有了虛擬的原型平臺意味著可以更早地開始軟件開發(fā)。對于目前基于SystemC語言的ESL設計方法學來說,ESL設計工程師可用SystemC生成一個用來仿真SoC行為的事務級模型。由于事務級模型的開發(fā)速度比RTL模型要快得多。在RTL實現(xiàn)以前,完成TLM建模后的系統(tǒng)就可以開始軟件的開發(fā)。這樣軟件的開發(fā)可以和RTL實現(xiàn)同時展開,而不是傳統(tǒng)上的在RTL實現(xiàn)完成以后才開始軟件的開發(fā)。雖然部分和硬件實現(xiàn)細節(jié)有關的軟件要在RTL完成以后才能開始,但還是可以節(jié)省大量的開發(fā)時間。
(2)更高層次上的硬件設計
為了適應不斷變化的市場要求,需要不斷推出新產(chǎn)品或經(jīng)過改進的產(chǎn)品。在SoC設計中可以通過改進一些模塊的性能、增加功能模塊或存儲器、甚至在體系結(jié)構上做出重大的調(diào)整。因此設計工程師必須擁有可實現(xiàn)的快速硬件設計方法。為了實現(xiàn)快速的硬件設計,在ESL設計須建立在較高層次上的抽象如事務級建模(TLM)。事務級模型應用于函數(shù)調(diào)用和數(shù)據(jù)包傳輸層。傳輸級模型可以分為事件觸發(fā)型和時鐘精確型,這些模型能夠提供比RTL級模型快好幾個數(shù)量級的仿真速度。ESL工具的挑戰(zhàn)就是既要保持足夠精度的時序信息來幫助設計決策,又要提供足夠的仿真速度以滿足大型的系統(tǒng)軟件(如OS啟動)在可接受的時間內(nèi)的完整運行。只要掌握了這種平衡,就可以在高級設計中驗證時序和設置約束條件,再將這些優(yōu)化的設計分割、分配到各個不同的軟、硬件設計工作組去加以實現(xiàn)。RTL仿真通常只能提供10MIPS到數(shù)百MIPS左右的性能;然而,時鐘精確型的ESL仿真卻能達到100KMIPS到1MMIPS的仿真速度。
(3)設計的可配置性和自動生成
越來越多的系統(tǒng)強調(diào)自己的可配置性,諸如:不同的處理器、不同的總線帶寬、不同的存儲器容量、無數(shù)的外設。配置和生成出來的設計必須和驗證環(huán)境得到的結(jié)果完全一致,并延續(xù)到整個設計流程中。通過ESL模型,結(jié)構設計師能夠找到最好的配置方案。但是,這樣產(chǎn)生出來的結(jié)果需要和一套骨架的驗證環(huán)境同步到設計實現(xiàn)中去。如ARM已經(jīng)實現(xiàn)了從RealView SoC Designer ESL環(huán)境中自動導入SynopsysDesignWare coreAssembler SoC的集成和綜合流程,并且可以從coreAssembler或Mentor Graphics公司的Platform Express中啟動ARM PL300 AXI可配置互聯(lián)生成器,來生成AXI總線系統(tǒng)。
(4)方便的架構設計
ESL架構設計能完成功能到運算引擎的映射。這里的引擎指的是那些可編程的目標——如處理器、可配置的DSP協(xié)處理器,或者是特殊的硬件模塊如UART外設、互連系統(tǒng)和存儲器結(jié)構。這是系統(tǒng)設計的開始環(huán)節(jié),從行為上劃分系統(tǒng),驗證各種配置選擇的可行性及優(yōu)化程度。ESL工具對于開發(fā)可配置結(jié)構體系是非常關鍵的。它使系統(tǒng)結(jié)構從抽象的行為級很容易地映射到具體的硬件設計,從而方便決定哪些模塊可以被復用,哪些新模塊需要設計。還能提供必要信息指導最優(yōu)化的通訊、調(diào)度和仲裁機制。
(5)快速測試和驗證
由于ESL設計中的抽象級別明顯高于RTL設計抽象級別,ESL設計中可以做到描述模塊內(nèi)的電路狀態(tài)、精確到納秒的轉(zhuǎn)換以及精確到位的總線行為。相比使用RTL,使用周期精確的事務級模型將使硬件驗證和硬件/軟件協(xié)同驗證速度快1000倍或者更多。這種方法不僅可產(chǎn)生用于驗證系統(tǒng)行為,它還支持與較低抽象級別的RTL模型的協(xié)同仿真。如果ESL設計抽象級別被當作一個測試臺的話,當下游的RTL實現(xiàn)模塊可用時,它們便可在這個測試臺上進行驗證。
系統(tǒng)級的HW/SW協(xié)同驗證要優(yōu)于C/RTL實現(xiàn)級的HW/SW協(xié)同驗證。因為在系統(tǒng)級的驗證可以在較早的展開,而不必等到底層的實現(xiàn)完成后才開始。在底層實現(xiàn)沒有開始前的協(xié)同驗證可以及時修改體系結(jié)構或軟硬件劃分中的不合理因素。越高層次上的驗證,可以越大程度上減少修改設計帶來的損失。
5.ESL設計方法
ESL作為一種先進的設計方法學,能夠用于硬件的功能建模與體系結(jié)構的探察,給硬件架構設計人員提供準確可靠的設計依據(jù),因此在本章的內(nèi)容里將將詳細介紹ESL設計的基本流程與ESL的核心方法—利用SystemC實現(xiàn)事務級建模的基本理念。
首先要指出的是在設計的哪個階段使用ESL設計方法和ESL設計工具。每一個電子產(chǎn)品的設計過程以某一種形式的頂層定義開始。這個定義過程可以以文本的形式描述,也可以用圖表、狀態(tài)圖、算法描述,或者利用工具如MATLAB等描述。ESL設計并不是定位在這個層次上的設計。而是通過描述系統(tǒng)怎樣工作,并為進一步的實現(xiàn)提供一個解決方案。ESL設計成為系統(tǒng)和更加底層設計之間的橋梁。ESL設計包括功能設計和體系結(jié)構設計兩大領域。
系統(tǒng)的行為由功能模塊實現(xiàn),功能模塊設計必須關注系統(tǒng)的應用。功能設計不考慮硬件和軟件,物理和工藝。功能設計包括實現(xiàn)功能模塊結(jié)構、模塊之間的通信和它們的基本行為。在ESL中一個硬件功能模塊的設計包括定義正確的功能,確定輸入和輸出,劃分子模塊,確定子模塊的結(jié)構、數(shù)據(jù)流和控制邏輯,還要為其模塊建立測試環(huán)境。這個設計過程和RTL的設計流程相似,但他們在不同的抽象層次上,使用不同的設計語言,例如,在ESL的功能模塊建模過程中使用SystemC或SystemVerilog,而RTL級建模則使用Verilog或者VHDL。
體系結(jié)構設計首先要建立平臺的描述。接著將應用的功能部件影射到平臺。驗證體系結(jié)構模型,并根據(jù)成本和性能優(yōu)化這個結(jié)構。在體系結(jié)構設計中需要考慮處理器的類型、處理器的數(shù)量、存儲器的大小、Cache性能、總線互聯(lián)和占用率、軟件和硬件的功能劃分和評估、功耗的評估和優(yōu)化等。
首先ESL接受一個設計定義的輸入,這個定義可以是文本、圖表、算法或者是某種描述語言如UML,SLD,MATLAB等的描述。對于這個輸入的定義,在ESL設計完成算法的開發(fā),接口定義,用ESL語言或其他語言來描述來完成體系結(jié)構的設計。并在此基礎上完成軟硬件的劃分。完成軟硬件劃分后,可以開始軟件和硬件的設計。在硬件設計中,對于功能單元需要在較高層次上的建模,完成功能設計。比如說用SystemC進行事務級的建模。
用C/C++或其他高級語言完成應用軟件的設計。在這個階段開始軟硬件的協(xié)同驗證,根據(jù)協(xié)同驗證的結(jié)果反饋給體系結(jié)構和軟硬件劃分。后者根據(jù)性能、成本等因素重新做出調(diào)整。軟硬件的設計和驗證,包括軟硬件的協(xié)同驗證是一個重復的過程,在整個設計過程中都要根據(jù)驗證的結(jié)果對體統(tǒng)和設計做出調(diào)整。
完成驗證的硬件和軟件設計就可以組成一個完整地系統(tǒng)級設計。傳遞給下一級
的設計作為輸入。比如說是ESL設計為軟件應用提供C或C++語言描述的程序。為定制電路提供Verilog或VHDL語言描述的硬件設計。為硬件平臺提供PCB板的功能部件或抽象層IP,比如說基于SystemC的IP。在實現(xiàn)ESL設計流程的具體過程中,有不同的實現(xiàn)方法可以采用。下面介紹兩種應用得比較多
的設計方法。
在完成系統(tǒng)功能定義后,設計方法之一是從系統(tǒng)的定義開始,先進行算法級設計。通常用MatLab等工具進行算法的分析,接著用Simulink等工具進行數(shù)據(jù)流的分析。完成分析后進行體系結(jié)構的平臺的設計。體系結(jié)構和平臺設計要進行系統(tǒng)級的驗證,以確定結(jié)構是否合理。在體系結(jié)構的設計中,首先從IP庫中獲取已有的硬件模塊的事物級模型,如處理器和總線模型,或者重新設計IP庫中沒有的模塊的事物級模型。硬件模塊的事物級建模完成后,建立系統(tǒng)模型。接下來輸入軟件參考模型進行軟硬件的協(xié)同驗證。體系結(jié)構的系統(tǒng)級驗證的目標是確定存儲器的大小、DMA的定義、總線帶寬和軟硬件劃分等。
與圖2中的ESL設計方法一相比,圖3中的設計方法是直接由軟件參考代碼開始,創(chuàng)建事物級模型的虛擬平臺,在此基礎上進行系統(tǒng)結(jié)構設計,驗證和性能的分析。通常,軟件參考代碼已實現(xiàn)了基本功能,特別是保證了算法及數(shù)據(jù)流等的正確性。如,軟件參考代碼可以是某一標準協(xié)議的用C語言寫的參考代碼。在軟件參考代碼和事物級模型的基礎上分別進行軟件和硬件的設計。在軟件設計中,會把建立完成的虛擬平臺和構架作為集成開發(fā)環(huán)境的一部分。集成開發(fā)環(huán)境還包括編譯器和調(diào)試工具的開發(fā)。在設計的過程通過軟硬件的協(xié)同驗證調(diào)整設計的內(nèi)容。
6.SystemC的系統(tǒng)級芯片設計方法研究
在傳統(tǒng)設計方法中,設計的系統(tǒng)級往往使用UML,SDL, C, C++等進行描述以實現(xiàn)各功能模塊的算法,而在寄存器傳輸級使用硬件描述語言進行描述。最廣泛使用的2種硬件描述語言是VHDL和Verilog HDL,傳統(tǒng)的系統(tǒng)設計方法流程如圖3所示。從圖中不難看出,傳統(tǒng)的設計方法會出現(xiàn)如下弊端:首先,設計人員需要使用C/C++語言來建立系統(tǒng)級模型,并驗證模型的正確性,在設計細化階段,原始的C和C++描述必須手工轉(zhuǎn)換為使用VHDL或Verilog HDL。在這個轉(zhuǎn)換過程中會花費大量的時間,并產(chǎn)生一些錯誤。
其次,當使用C語言描述的模塊轉(zhuǎn)換成HDL描述的模塊之后,后者將會成為今后設計的焦點,而設計人員花費大量時間建立起來的C模型將再沒有什么用處。再次,需要使用多個測試平臺。因為在系統(tǒng)級建立起來的針對C語言描述的模塊測試平臺無法直接轉(zhuǎn)換成針對HDL語言描述的模塊所需要的測試平臺。
無論采用什么樣的設計方法學,人們都需要對SOC時代的復雜電子系統(tǒng)進行描述,以選擇合適的系統(tǒng)架構進行軟硬件劃分、算法仿真等。描述的級別越低,細節(jié)問題就越突出,對實際系統(tǒng)的模仿就越精確,完成建模消耗的時間、仿真和驗證時間就越長。相反,描述的抽象級別越高,完成建模需要的時間就越短,但對目標系統(tǒng)的描述也就越不精確。作為設計人員必須在速度和精確性之間做出選擇。
人們對系統(tǒng)級描述語言的要求是:高仿真速度以及建模效率、時序和行為可以分開建模、支持基于接口的設計、支持軟硬件混合建模、支持從系統(tǒng)級到門級的無縫過渡、支持系統(tǒng)級調(diào)試和系統(tǒng)性能分析等。人們迫切需要一種語言單一地完成全部設計。這種語言必須能夠用于描述各種不同的抽象級別(如系統(tǒng)級、寄存器傳輸級等),能夠勝任軟硬件的協(xié)同設計和驗證,并且仿真速度要快。這就是所謂的系統(tǒng)級描述語言SLDL,而傳統(tǒng)的硬件描述語言如VHDL和Verilog HDL都不能滿足這些要求。SystemC就是目前這方面研究的最新、最好的成果,他擴展傳統(tǒng)的軟件語言C和C++并使他們支持硬件描述,所以可以很好地實現(xiàn)軟硬件的協(xié)同設計,是系統(tǒng)級芯片設計語言的發(fā)展趨勢。
7.ESL綜合
“ESL綜合”到底有沒有一種明確的定義,能讓我們確信ESL綜合是一種可行的設計技術,或者用于評估某款所謂的ESL綜合工具是否真的能夠完成綜合工作?憑借Synplicity營銷高級副總裁AndrewHaines在電子設計自動化(EDA)方面的工作經(jīng)驗,關于ESL綜合的定義,建議是:此定義應該突出ESL綜合與其他ESL設計工作相比的獨到之處。
首先,從本質(zhì)來說,綜合是從一種抽象層級轉(zhuǎn)變?yōu)榱硪环N抽象層級,同時保持功能不變。邏輯綜合是從RTL到邏輯門的轉(zhuǎn)變;而物理綜合則是從RTL到邏輯門及布局的轉(zhuǎn)變。因此,ESL綜合是從ESL描述語言到RTL等抽象較低的實施方案的轉(zhuǎn)變。就ESL綜合的定義而言,選擇哪種描述語言并不重要,因為通過在初始化階段根據(jù)不同應用支持多種ESL語言的方式,用戶群最終均能解決這一問題。重要的是,ESL綜合應將設計轉(zhuǎn)變?yōu)槌橄筝^低但功能相當?shù)膶嵤┓桨浮?
其次,某種技術被定義為綜合技術,就必然與其他形式的轉(zhuǎn)變存在根本區(qū)別。例如,原理圖輸入(schematic capture)很顯然是一種涉及多種抽象層級的轉(zhuǎn)變,而綜合則不是。綜合與原理圖輸入定義的獨特區(qū)別在于香蕉曲線,也
就是說,綜合的結(jié)果不是面積與時序關系圖上的一個點,而是一條曲線,表示所有綜合結(jié)果均保持相當?shù)墓δ?,但時序與面積不同。因此,根據(jù)面積與時序關系自動定義一系列功能相當?shù)慕鉀Q方案必須作為ESL綜合定義的一部分。
我們已經(jīng)認識到,真正的DSP綜合需要從算法發(fā)展到優(yōu)化的RTL,市場中已有能夠滿足上述要求的相關ESL綜合技術。這確實是ESL綜合技術的進步。不過,客戶必須始終認識到,有的所謂“ESL綜合”工具實際只能根
據(jù)算法描述創(chuàng)建參數(shù)化的RTL模型,這種產(chǎn)品不能實現(xiàn)自動化,也無法形成“香蕉曲線”,且對提高工作效率的作用也非常有限。定義本身不會改善ESL設計,即便如此,我們也應當在早期為其下一個明確的定義,以便設計小組了解ESL的真正進步與不足。
參考文獻:
[1]劉強.基于SystemC的系統(tǒng)級芯片設計方法研究,現(xiàn)代電子技術,2005(9)
[2]陶耕.基于ESL設計方法學的雷達信號產(chǎn)生與處理技術[D]. 南京理工大學,2009
[3]Ron Wilson.電子系統(tǒng)級設計:從現(xiàn)象到本質(zhì).EDN電子設計技術,2008(11)
[4]Bassam Tabbara.電子系統(tǒng)級(ESL)設計:越早開始越好.中國集成電路,2005(12)
[5]祝永新.基于ARM ESL平臺的H.264與AVS雙解碼軟硬件協(xié)同設計和研究[D]. 上海交通大學,2010
[6]劉昊.基于ESL的AVS幀內(nèi)預測算法周期精確級建模.信息技術,2008