Ken Karnofsky, The MathWorks信號(hào)處理與通訊技術(shù)市場(chǎng)總監(jiān)
正如我們所知,越來(lái)越多的復(fù)雜系統(tǒng)和技術(shù),如多核處理器和FPGA的出現(xiàn),已經(jīng)令一些陳舊的設(shè)計(jì)方法毫無(wú)用武之地。我們需要新的設(shè)計(jì)方法:對(duì)復(fù)雜系統(tǒng)進(jìn)行系統(tǒng)級(jí)抽象,并對(duì)從概念到實(shí)現(xiàn)過(guò)程中耗財(cái)耗時(shí)的步驟進(jìn)行自動(dòng)化處理。
在以處理器為核心的SoC設(shè)計(jì)和驗(yàn)證領(lǐng)域,電子系統(tǒng)級(jí)(ESL)方法被用于解決上述問(wèn)題。自從幾年前EDA分析師Gary Smith提出ESL概念后,很多設(shè)計(jì)方法和商業(yè)工具也隨之產(chǎn)生(有些只是經(jīng)過(guò)再包裝的)。這些工具幫助硬件設(shè)計(jì)人員對(duì)復(fù)雜的SoC架構(gòu)進(jìn)行建模,同時(shí)允許軟件開(kāi)發(fā)人員在硬件設(shè)計(jì)完成之前開(kāi)始編寫(xiě)代碼,甚至在某些情況下,可以輔助硬件部分的實(shí)現(xiàn)。
然而,大部分ESL設(shè)計(jì)方法和工具的適用領(lǐng)域相對(duì)狹窄,限制了其應(yīng)用。我們需要一種不局限于SoC的更包容的方法,來(lái)大幅度地減少?gòu)?fù)雜系統(tǒng)開(kāi)發(fā)過(guò)程中的時(shí)間,成本和錯(cuò)誤。這種新的方法必須:1)保證硬件和軟件設(shè)計(jì)的功能上正確,并滿足實(shí)際物理需求;2)幫助系統(tǒng)架構(gòu)師盡早地得到“正確”的設(shè)計(jì),排除不可行的方案;3)預(yù)見(jiàn)數(shù)字、模擬、機(jī)電(L)以及其他子系統(tǒng)在集成中可能遇到的問(wèn)題;4)消除從概念到軟硬件實(shí)現(xiàn)之間的過(guò)程差異;5)降低不斷增加的驗(yàn)證成本。
解決上述問(wèn)題對(duì)半導(dǎo)體公司和電子OEM廠商至關(guān)重要。前者需要在快速變化的市場(chǎng)中競(jìng)爭(zhēng),后者則需要確保其供應(yīng)商提供的產(chǎn)品能夠滿足應(yīng)用需求。Gary Smith在對(duì)ESL進(jìn)行研究時(shí)注意到“架構(gòu)師的工作平臺(tái)”的重要性,但這只是部分解決了上述問(wèn)題。基于模型的設(shè)計(jì)秉承的理念是提供一個(gè)更為完善的系統(tǒng)開(kāi)發(fā)解決方案。采用基于模型設(shè)計(jì)方法的公司預(yù)期可以縮短50%以上的生產(chǎn)周期,并取得10倍于在設(shè)計(jì)工具上投資的回報(bào)。
基于模型的設(shè)計(jì)包含四個(gè)部分:對(duì)期望行為或者參考設(shè)計(jì)進(jìn)行建模,進(jìn)行設(shè)計(jì)分析并通過(guò)仿真不斷改進(jìn),利用代碼生成技術(shù)實(shí)現(xiàn),以及在整個(gè)開(kāi)發(fā)過(guò)程中不斷測(cè)試和驗(yàn)證。上述四個(gè)部分解決了當(dāng)前電子系統(tǒng)中固有的設(shè)計(jì)和驗(yàn)證問(wèn)題。它們利用可執(zhí)行的系統(tǒng)模型明確功能上和物理上的需求,系統(tǒng)地幫助工程師完成從設(shè)計(jì)規(guī)范,到實(shí)現(xiàn),到驗(yàn)證的整個(gè)流程。
基于模型的設(shè)計(jì)促使來(lái)自不同部門(mén)的工程師之間進(jìn)行合作,因?yàn)樵O(shè)計(jì)中需要使用模擬、數(shù)字、以及軟件等子系統(tǒng)的模型和運(yùn)行環(huán)境。這些模型不只是IP模塊;它們可以代表不同抽象級(jí)的系統(tǒng)元素。因此,每個(gè)部門(mén)的工程師都可以保證各自設(shè)計(jì)的部分能夠融入整個(gè)系統(tǒng)并滿足需求,盡管進(jìn)行設(shè)計(jì)分析并不斷改進(jìn)和重述需要對(duì)復(fù)雜的通信和多媒體技術(shù)進(jìn)行最優(yōu)化。而且,工程師還可以盡早的發(fā)現(xiàn)并解決問(wèn)題,同時(shí)在其它設(shè)計(jì)部分尚未完成時(shí)繼續(xù)該子系統(tǒng)的設(shè)計(jì)工作。
在傳統(tǒng)的設(shè)計(jì)流程中,整個(gè)系統(tǒng)在完全實(shí)現(xiàn)前無(wú)法進(jìn)行系統(tǒng)地測(cè)試。這樣導(dǎo)致只有到系統(tǒng)開(kāi)發(fā)階段的后期才能發(fā)現(xiàn)一些隱藏的設(shè)計(jì)缺陷。此時(shí),修復(fù)這些缺陷的成本和難度都會(huì)大大提高。與傳統(tǒng)的設(shè)計(jì)流程不同,基于模型的設(shè)計(jì)可以在開(kāi)發(fā)的最早階段,也是錯(cuò)誤最常發(fā)生的階段,對(duì)系統(tǒng)進(jìn)行測(cè)試和調(diào)試。模型可以通過(guò)仿真盡早地進(jìn)行驗(yàn)證。同時(shí),模型單元通過(guò)增加實(shí)現(xiàn)細(xì)節(jié)會(huì)逐漸地完善,在這個(gè)過(guò)程中也可以不斷地對(duì)其進(jìn)行校驗(yàn)。C,HDL以及SPICE語(yǔ)言實(shí)現(xiàn),和ESL模型一樣,都能夠共同支持現(xiàn)有的工作流程、設(shè)計(jì)復(fù)用,以及最終的集成測(cè)試。不同設(shè)計(jì)團(tuán)隊(duì)設(shè)計(jì)的子系統(tǒng)可在各自完成之后進(jìn)行集成,以保證任何改動(dòng)都不會(huì)降低系統(tǒng)的性能。并使得存在設(shè)計(jì)缺陷的子系統(tǒng)能夠被迅速地找到。
在現(xiàn)有設(shè)計(jì)流程中,還存在另一種導(dǎo)致錯(cuò)誤和延時(shí)的因素,這就是手動(dòng)完成從概念到設(shè)計(jì)到實(shí)現(xiàn)之間的轉(zhuǎn)換。舉個(gè)典型的例子來(lái)說(shuō),算法開(kāi)發(fā)工程師在MATLAB中開(kāi)發(fā)了一個(gè)浮點(diǎn)算法。系統(tǒng)架構(gòu)師將該算法重新編寫(xiě)成C語(yǔ)言,在這個(gè)過(guò)程中該算法很可能變成了定點(diǎn)代碼。然后在嵌入式軟件或者硬件實(shí)現(xiàn)時(shí)該算法又需要被重新編寫(xiě)。這些過(guò)程即浪費(fèi)時(shí)間和人力,又可能產(chǎn)生錯(cuò)誤,使設(shè)計(jì)迭代變得困難,而且還需要額外的驗(yàn)證步驟去保證硬件實(shí)現(xiàn)與相關(guān)算法的一致性。
基于模型的設(shè)計(jì)分別從三個(gè)方面克服了上述問(wèn)題。首先,C語(yǔ)言或者HDL代碼可以自動(dòng)從模型單元中生成,或者重復(fù)使用已有的實(shí)現(xiàn)。這樣可以消除手動(dòng)編寫(xiě)代碼產(chǎn)生的錯(cuò)誤,并使得在選擇不同的軟件或者硬件實(shí)現(xiàn)上更為靈活,而且還可在現(xiàn)有的實(shí)現(xiàn)流程中進(jìn)行。其次,模型單元可以作為“黃金參考”來(lái)校驗(yàn)手寫(xiě)的C語(yǔ)言或者HDL代碼。再次,不管實(shí)現(xiàn)的是手寫(xiě)代碼還是自動(dòng)生成的代碼,帶有仿真數(shù)據(jù)的系統(tǒng)和環(huán)境模型都可以作為硬件實(shí)現(xiàn)的測(cè)試平臺(tái)。
基于模型的設(shè)計(jì)可以在很多方面整合并加速系統(tǒng)開(kāi)發(fā)。以增量和標(biāo)準(zhǔn)的方式采用基于模型的設(shè)計(jì)方法可以獲得最大的收益,同時(shí)還能幫助管理新的設(shè)計(jì)方法所帶來(lái)的改變。對(duì)于剛剛采用基于模型設(shè)計(jì)方法的公司,通常先要確認(rèn)現(xiàn)有流程中造成質(zhì)量問(wèn)題和生產(chǎn)力下降的根本原因,而對(duì)于IP、技術(shù),以及現(xiàn)有流程中應(yīng)保留的部分給予重復(fù)使用的機(jī)會(huì)。按照這種做法,第一個(gè)項(xiàng)目就能夠以最小的代價(jià)產(chǎn)生即時(shí)效益。同時(shí),隨著基于模型的設(shè)計(jì)方法在項(xiàng)目、小組和任務(wù)中的深入應(yīng)用,投資回報(bào)率(ROI)也會(huì)隨之增加。