1 引言
隨著微電子技術(shù)與計(jì)算機(jī)技術(shù)的日益成熟,電子設(shè)計(jì)自動(dòng)化(EDA)技術(shù)在電子產(chǎn)品與集成電路(IC)芯片特別是單片集成(SoC)芯片的設(shè)計(jì)應(yīng)用中顯得越來越重要。EDA技術(shù)采用“自上至下”的設(shè)計(jì)思想,允許設(shè)計(jì)人員能夠從系統(tǒng)功能級(jí)或電路功能級(jí)進(jìn)行產(chǎn)品或芯片的設(shè)計(jì),有利于產(chǎn)品在系統(tǒng)功能上的綜合優(yōu)化,從而提高了電子設(shè)計(jì)項(xiàng)目的協(xié)作開發(fā)效率,降低新產(chǎn)品的研發(fā)成本。
近十年來,EDA電路設(shè)計(jì)技術(shù)和工程管理方面的發(fā)展主要呈現(xiàn)出兩個(gè)趨勢(shì):
(1)電路的集成水平已經(jīng)進(jìn)入了深亞微米的階段,其復(fù)雜程度以每年58%的幅度迅速增加,芯片設(shè)計(jì)的抽象層次越來越高,而產(chǎn)品的研發(fā)時(shí)限卻不斷縮短。
(2)IC芯片的開發(fā)過程也日趨復(fù)雜。從前期的整體設(shè)計(jì)、功能劃分,到具體的邏輯綜合、仿真測(cè)試,直至后期的電路封裝、排版布線,都需要反復(fù)的驗(yàn)證和修改,單靠個(gè)人力量無法完成。IC芯片的開發(fā)已經(jīng)實(shí)行多人分組協(xié)作。
由此可見,如何提高設(shè)計(jì)的抽象層次,在較短時(shí)間內(nèi)設(shè)計(jì)出較高性能的芯片,如何改進(jìn)EDA工程管理,保證芯片在多組協(xié)作設(shè)計(jì)下的兼容性和穩(wěn)定性,已經(jīng)成為當(dāng)前EDA工程中最受關(guān)注的問題。
針對(duì)這些問題,人們提出了軟硬件協(xié)同建模設(shè)計(jì)3的思想,將統(tǒng)一建模語言(UML)與SoC設(shè)計(jì)流程相結(jié)合,產(chǎn)生了新型的SoC設(shè)計(jì)方法,同時(shí)對(duì)EDA工程的分組協(xié)作采用層次化管理,提高了芯片研發(fā)團(tuán)隊(duì)的協(xié)調(diào)合作能力,進(jìn)一步加快SoC產(chǎn)品的開發(fā)速度。本文從建模的思想出發(fā),主要闡述了結(jié)合UML建模技術(shù)的新型SoC設(shè)計(jì)流程的原理及其優(yōu)勢(shì),介紹了支持SystemC的UML架構(gòu)及其應(yīng)用,最后針對(duì)EDA工程的分組協(xié)作的管理問題,介紹了一種層次化管理的原理和改進(jìn)方案。
2 基于UML建模的SoC設(shè)計(jì)方法
SoC設(shè)計(jì)的關(guān)鍵在于異類模塊之間的協(xié)作兼容程度以及這些模塊在高抽象層次上的工作能力。常規(guī)的SoC設(shè)計(jì)過程,如圖1所示,是從最初的系統(tǒng)的需求描述開始的,然后根據(jù)該需求描述,系統(tǒng)被劃分成多個(gè)功能模塊,例如存儲(chǔ)器部分,放大器部分等。功能劃分的正確性,將在較高層次的功能仿真中得到檢驗(yàn)。
圖1 常規(guī)的SoC設(shè)計(jì)流程
功能劃分之后,系統(tǒng)進(jìn)入最重要的軟硬件分離階段,分離開的硬件和軟件部分有其各自的設(shè)計(jì)流程。通常,軟件部分使用程序語言(如C/C++)編寫代碼,形成目標(biāo)文件后即可進(jìn)行仿真測(cè)試。而硬件部分被分離出來之后,需要進(jìn)一步細(xì)化、抽象才能進(jìn)入寄存器傳輸級(jí)(RTL)的描述階段。在這個(gè)階段,硬件采用硬件描述語言(如HDL)來描述,然后通過進(jìn)一步邏輯綜合,形成常規(guī)元件庫或預(yù)定義元件庫中已有的邏輯單元。這些邏輯單元有固定的封裝,再經(jīng)過版圖規(guī)劃,時(shí)鐘模擬和自動(dòng)布線以后,形成最終的物理版圖。然而,硬件部分從分離出來到進(jìn)入RTL級(jí)的設(shè)計(jì)過程缺乏有效的銜接,制約了SoC設(shè)計(jì)抽象程度的提高。
在這種常規(guī)的SoC設(shè)計(jì)流程中,軟硬件的設(shè)計(jì)包含了一系列的仿真和驗(yàn)證活動(dòng):硬件的RTL級(jí)描述和軟件的目標(biāo)代碼通過運(yùn)行指令設(shè)置仿真器,檢驗(yàn)各自ISS(指令設(shè)置)的正確性;在邏輯單元的綜合過程中不斷進(jìn)行封裝驗(yàn)證、時(shí)序分析和版圖驗(yàn)證;最后生成的物理版圖還要與邏輯單元進(jìn)行一致性校驗(yàn)。但是由于這些驗(yàn)證要在硬件的RTL級(jí)描述和軟件的目標(biāo)代碼都完成之后才能進(jìn)行,因此檢測(cè)出的錯(cuò)誤通常是難以修復(fù)的。這些錯(cuò)誤無疑將影響到芯片在高抽象層次上的工作性能和各模塊之間的協(xié)作交互能力。
為了改進(jìn)SoC的設(shè)計(jì),人們將抽象建模結(jié)合到芯片設(shè)計(jì)過程中,采用UMI。語言為芯片設(shè)計(jì)過程進(jìn)行建模,提出了基于UML的SoC設(shè)計(jì)方法。他充分利用了UML定義良好、易于表達(dá)、支持各種抽象程度的綜合的優(yōu)勢(shì),彌補(bǔ)了常規(guī)SoC設(shè)計(jì)方法的上述不足。
在這種新型的SoC設(shè)計(jì)流程中,如圖2所示,UML被用于從需求分析開始的整個(gè)芯片開發(fā)過程。使用UML為系統(tǒng)建模,能夠由簡(jiǎn)明到詳盡地描繪系統(tǒng)的需求、結(jié)構(gòu)、功能以及相應(yīng)的行為,使開發(fā)者對(duì)所開發(fā)的SoC有準(zhǔn)確而且全面的了解,其功能劃分的正確性也更易于檢驗(yàn)。經(jīng)過功能劃分,硬、軟件分離之后,軟件部分的建模先由UML的類圖、狀態(tài)圖、時(shí)序圖、活動(dòng)圖等多種方式來描述,再通過代碼自動(dòng)生成系統(tǒng),得到相應(yīng)的C/C++目標(biāo)代碼。這比直接編寫代碼更直觀、靈活,易于維護(hù)和修改,使設(shè)計(jì)者能夠在較高層次上專注于芯片的整體規(guī)劃,而不必被低層次的代碼實(shí)現(xiàn)細(xì)節(jié)所束縛。
而硬件部分采用SystemC來描述,可以在門級(jí)、RTL級(jí)和系統(tǒng)級(jí)等各個(gè)抽象層次上和軟件部分一起進(jìn)行仿真和測(cè)試,使開發(fā)者能夠?qū)ΡM早地發(fā)現(xiàn)錯(cuò)誤,在邏輯單元綜合之前即可改進(jìn)電路,及時(shí)解決問題,保證了芯片的各個(gè)模塊在高抽象層上的交互性能,同時(shí)也縮小了整個(gè)仿真驗(yàn)證的工作量,提高了一次設(shè)計(jì)的成功率。
圖2 結(jié)合UML的新型SoC設(shè)計(jì)流程
這種基于UML的SoC設(shè)計(jì)方法,使得電路設(shè)計(jì)的抽象程度從編寫代碼提高到了系統(tǒng)級(jí)建模的層次,優(yōu)化了SoC的設(shè)計(jì)流程,提高了設(shè)計(jì)效率。在2005年召開的“UML for SoC Design Workshop 2005”會(huì)議上,意法半導(dǎo)體(ST)就發(fā)布了適用于該方法的由芯片的UML模型自動(dòng)生成SystemC代碼的EDA系統(tǒng),下面具體介紹這種工具的實(shí)現(xiàn)架構(gòu)。
3 支持SystemC的UML架構(gòu)
UML語言對(duì)C/C++,JAVA等編程語言具有很強(qiáng)的支持能力,而SystemC是基于C++語言的軟硬件協(xié)同設(shè)計(jì)語言,包含了C++類庫和仿真內(nèi)核。與HDL相比,他不僅能夠描述芯片的硬件,還可以描述系統(tǒng)的測(cè)試平臺(tái),支持抽象層的仿真和測(cè)試,具有和C++語言一樣良好的擴(kuò)展性。支持SystemC的UML架構(gòu),是在UML2.0版本的基礎(chǔ)上,結(jié)合了SystemC 2.0的類庫定義和表達(dá)規(guī)則,將原有的UML語義(包括圖符、約束關(guān)系和標(biāo)注值)進(jìn)行一系列的擴(kuò)展以及功能上的提高,使之與SystemC相對(duì)應(yīng)。他可以看成是為特殊的應(yīng)用領(lǐng)域(如無線通訊、實(shí)時(shí)系統(tǒng)、軟件測(cè)試等)定制的具有特殊功能的UML建模開發(fā)框架。
支持SystemC的UML架構(gòu)總體框架如圖3所示。其中,可視化建模區(qū)為芯片的整體設(shè)計(jì)、模塊結(jié)構(gòu)和各個(gè)模塊功能的具體實(shí)現(xiàn)提供了功能強(qiáng)大的圖形化建模平臺(tái)。在該平臺(tái)上,設(shè)計(jì)人員能夠在為芯片建立總體模型,然后借助于豐富的UML模版和圖符,對(duì)各個(gè)功能模塊的具體結(jié)構(gòu)、模塊之間的相互關(guān)系,以及模塊內(nèi)部的成員(包括子模塊、成員函數(shù)、成員變量等)進(jìn)行詳細(xì)的定義和描述。完整的UML模型建立后,通過代碼自動(dòng)生成系統(tǒng)的翻譯和轉(zhuǎn)換(這期間可能要進(jìn)行可擴(kuò)展標(biāo)記語言(XML)的解析),最終產(chǎn)生用SystemC描述的目標(biāo)代碼文件。
圖3 支持SystemC的UML架構(gòu)的總體框架圖
在整個(gè)架構(gòu)中,UML與SytemC的對(duì)應(yīng)語義、函數(shù)知識(shí)庫是連接UML和SystemC的關(guān)鍵部分,他主要由SystemC核心類庫、核心函數(shù)庫、數(shù)據(jù)類型庫和預(yù)定義通道、接口、端口庫組成。這些類庫中增設(shè)了適合為SystemC程序建模的圖符和模版,為UML圖符和SystemC語言之間提供了密切而直觀的對(duì)應(yīng)關(guān)系。圖4給出了幾個(gè)常用的SystemC類或方法以及他們?cè)赨ML中對(duì)應(yīng)的圖符或表達(dá)形式。
圖4 支持SystemC的UML架構(gòu)新圖符定義
根據(jù)這些對(duì)應(yīng)關(guān)系,UML的結(jié)構(gòu)圖(例如類圖、包圖等)就可以通過表示模塊、端口、接口等硬件類的圖符來描述這些硬件的結(jié)構(gòu)和層次。而UML的行為圖(例如狀態(tài)圖、活動(dòng)圖、時(shí)序圖等)就可以用表示等待、循環(huán)等狀態(tài)類的圖符來描述硬件功能的具體行為和同步情況。這些圖能夠在高抽象層次描述SystemC過程,并且生成有效而簡(jiǎn)潔的SystemC代碼。
目前,意法半導(dǎo)體已經(jīng)將這種架構(gòu)應(yīng)用到了IEEE802.lla物理層轉(zhuǎn)發(fā)及收發(fā)電路中。這種結(jié)合UML建模的方法在實(shí)際芯片設(shè)計(jì)應(yīng)用中已經(jīng)體現(xiàn)出較大優(yōu)勢(shì)。采用該UML架構(gòu)為芯片建模,使SoC設(shè)計(jì)(特別是硬件部分)的流程更進(jìn)一步從RTL的抽象上升到系統(tǒng)級(jí)抽象。與RTL級(jí)的直接描述方法相比,建模使硬件設(shè)計(jì)更系統(tǒng)化,而且具有軟件設(shè)計(jì)一樣的靈活性和IP(知識(shí)產(chǎn)權(quán))可復(fù)用性。在支持SystemC的UML架構(gòu)中,功能模塊的仿真和檢測(cè)可以在直觀的建模層次上進(jìn)行,使芯片的錯(cuò)誤比在RTL級(jí)上更容易被發(fā)現(xiàn)和糾正。除此以外,使用UML建模的設(shè)計(jì)方式更適用于芯片模塊在多人協(xié)作開發(fā)下的統(tǒng)一。由于UML語義是標(biāo)準(zhǔn)化的,而且最后的目標(biāo)代碼由系統(tǒng)自動(dòng)生成,這就消除了由于設(shè)計(jì)人員之間編程風(fēng)格不同而造成的代碼的不連貫。
由于支持SystemC的UML架構(gòu)是目前EDA領(lǐng)域較新的技術(shù),其功能還在不斷的擴(kuò)展和研究中。目前,法國(guó)INRIA公司的開發(fā)小組發(fā)表了利用序列圖等表現(xiàn)并行及實(shí)時(shí)特性的UML擴(kuò)展標(biāo)準(zhǔn)“MARTE”;比利時(shí)Katholieke Universiteit Leuven公司也提出了能夠表現(xiàn)SoC硬件性能要求的擴(kuò)展標(biāo)準(zhǔn)“SysML”;意法半導(dǎo)體則準(zhǔn)備進(jìn)一步實(shí)現(xiàn)由SystemC程序到UML的逆向轉(zhuǎn)換功能。這些工作都將進(jìn)一步擴(kuò)大UML對(duì)SoC的建模能力,使抽象建模在芯片設(shè)計(jì)中應(yīng)用更加廣泛。
4 層次化的分組協(xié)作管理方法
UML建模在SoC設(shè)計(jì)流程中的應(yīng)用,有效提高了EDA工程中軟硬件的設(shè)計(jì)效率。然而,現(xiàn)在的EDA工程對(duì)復(fù)雜系統(tǒng)的設(shè)計(jì)是通過專業(yè)分工(如功能劃分、模塊設(shè)計(jì)、仿真測(cè)試、版圖規(guī)劃、封裝布線等)后形成多個(gè)小組共同協(xié)作完成的。為了協(xié)調(diào)多組之間的分工,確保芯片各個(gè)模塊在多人設(shè)計(jì)下的兼容性和質(zhì)量穩(wěn)定性,人們通常采用層次化的分組協(xié)作管理方法進(jìn)行復(fù)雜系統(tǒng)的設(shè)計(jì)管理。這種層次化的分組協(xié)作管理方法主要包括以下4個(gè)方面:
(1)工程中芯片開發(fā)人員實(shí)行分級(jí)權(quán)限控制。工程管理者可以設(shè)置整個(gè)工程,查看各小組的進(jìn)度和IC設(shè)計(jì)流程各個(gè)環(huán)節(jié)的執(zhí)行情況,對(duì)數(shù)據(jù)庫有全權(quán)的讀寫權(quán)利。而小組管理員為組內(nèi)每個(gè)成員進(jìn)行具體分工,分配資源(如設(shè)計(jì)工具,數(shù)據(jù)文件等),負(fù)責(zé)本組和其他小組之間的進(jìn)度協(xié)調(diào)。
(2)多組之間的通信平臺(tái)采用實(shí)時(shí)的工程信息管理機(jī)制。管理員享有芯片版本和修改方案的發(fā)布權(quán),處理由其他成員提交的資源申請(qǐng),設(shè)計(jì)方案等,而其他成員可以定制自己的信息處理方式,以便最快地獲得工程信息。
(3)采用分層的文件系統(tǒng)存放工程信息(包括芯片設(shè)計(jì)數(shù)據(jù)、軟硬件資源數(shù)據(jù)、成員信息等),并且為每個(gè)開發(fā)小組提供獨(dú)立的工作區(qū)和資源庫,使設(shè)計(jì)人員在自己的工作目錄下工作。文件系統(tǒng)里還預(yù)定義了一系列功能擴(kuò)展規(guī)則,設(shè)計(jì)人員可以按照這些規(guī)則對(duì)自己的工作區(qū)進(jìn)行需求設(shè)計(jì),例如修改子目錄格式,創(chuàng)建信息發(fā)布形式,自定義EDA工具等。
(4)對(duì)于資源庫,包括芯片的數(shù)據(jù)信息庫、工程人員分工信息庫、建模工具庫(如rose系列的UML建模軟件)、電路設(shè)計(jì)工具庫(如Cadence系列工具軟件)、元件信息庫等,實(shí)行分級(jí)共享和管理。允許多個(gè)EDA工程連接到某些共同的資源庫,而工程內(nèi)部成員對(duì)資源庫的連接范圍和使用權(quán)限,由管理員根據(jù)成員的分工權(quán)限給予分配。
這種層次化的分組協(xié)作管理方法使設(shè)計(jì)人員之間權(quán)限明確,互不干擾,提高了項(xiàng)目開發(fā)的安全性。其中實(shí)時(shí)的信息管理加強(qiáng)了分組成員之間的協(xié)作,分層的文件存放系統(tǒng)使工程數(shù)據(jù)更易于查詢和使用,資源庫的連接控制和共享提高了資源的利用率和使用的安全性。當(dāng)前的許多EDA公司(例如Cadence、Synopsys公司等)都推出了基于該方法的分組協(xié)作管理軟件(例如Cadence的Team Design Manager6]等)。一些EDA實(shí)驗(yàn)室和EDA平臺(tái)的建設(shè)也開始使用層次化的管理方法,以提高團(tuán)隊(duì)的科研和開發(fā)效率。
目前,層次化的管理方法主要適用于使用同一公司的EDA工具的開發(fā)團(tuán)隊(duì)。而在大規(guī)模的芯片設(shè)計(jì)流程中,設(shè)計(jì)人員有可能混合使用不同公司(例如Cadence、Synopsys和Mentor Graphics公司)的EDA工具。這些工具的接口標(biāo)準(zhǔn)不一定相同,所以用一種分組管理軟件中的層次化管理方法對(duì)跨公司的工具進(jìn)行管理還存在一定的困難。因此,我們將這種層次化的管理方法與UML結(jié)合,使用UML描述分組協(xié)作層次化機(jī)構(gòu)和EDA工具之間的調(diào)用,同時(shí)利用UML的語義的統(tǒng)一性可以生成一致的標(biāo)準(zhǔn),或在文件之間進(jìn)行標(biāo)準(zhǔn)轉(zhuǎn)換,以解決不同工具的協(xié)作問題。
鑒于UML是用例圖、結(jié)構(gòu)圖、活動(dòng)圖等進(jìn)行表示的,不但能夠描述設(shè)計(jì)人員的權(quán)限管理和資源分配,還可以描述層次化設(shè)計(jì)管理中的不同工具接口、設(shè)計(jì)過程中的信息處理等問題。如圖5所示,采用UML來描述管理員進(jìn)行信息處理過程的活動(dòng)圖。當(dāng)芯片設(shè)計(jì)過程中有某個(gè)模塊需要修改時(shí),管理員通常會(huì)收到開發(fā)人員提交的設(shè)計(jì)修改方案,然后將其應(yīng)用到整體設(shè)計(jì)進(jìn)行綜合仿真、測(cè)試等一系列驗(yàn)證,若修改方案不可行,管理員將向提交者發(fā)送驗(yàn)證結(jié)果和修改建議等信息,若修改方案可行,管理員將向提交者發(fā)送確認(rèn)信息,同時(shí)向工程內(nèi)其他小組發(fā)布該修改方案,使各小組按照方案更新各自負(fù)責(zé)的芯片部分。其中,狀態(tài)圖中“do/…”語句是管理員根據(jù)工程需要,自定義具體執(zhí)行內(nèi)容,例如字符串轉(zhuǎn)換、數(shù)據(jù)庫讀寫、工具的調(diào)用、接口標(biāo)準(zhǔn)轉(zhuǎn)換等。由于UML可以采用標(biāo)準(zhǔn)化的模型和代碼來轉(zhuǎn)換不同的工具的文件標(biāo)準(zhǔn),使SoC設(shè)計(jì)的各分工小組對(duì)不同公司的EDA工具調(diào)用變得統(tǒng)一,有利于控制芯片模塊的質(zhì)量,從而確保soc芯片的設(shè)計(jì)效率和質(zhì)量。
圖5 消息處理活動(dòng)圖
5 結(jié)語
結(jié)合UML建模的SoC設(shè)計(jì)方法和層次化的分組管理方法有效地解決了當(dāng)前芯片設(shè)計(jì)時(shí)限縮短、設(shè)計(jì)分工不斷復(fù)雜化而帶來種種問題。UML建模與SoC設(shè)計(jì)的結(jié)合,實(shí)現(xiàn)了芯片的系統(tǒng)級(jí)設(shè)計(jì)。支持SystemC的UML架構(gòu)在這種新型設(shè)計(jì)流程中的使用,可以有效銜接從硬件分離到進(jìn)入RTL級(jí)的設(shè)計(jì)過程,解決了硬件部分在RTL級(jí)的設(shè)計(jì)抽象層次低、錯(cuò)誤檢測(cè)不及時(shí)的困難,提高了芯片的開發(fā)效率。而層次化的分組協(xié)作管理方法能夠?qū)τ行f(xié)調(diào)SoC設(shè)計(jì)流程中多個(gè)設(shè)計(jì)小組的復(fù)雜分工與協(xié)作,使芯片各模塊在多人開發(fā)的過程中始終兼容一致,這種管理方法與UML的結(jié)合還有利于優(yōu)化分組協(xié)作,解決不同標(biāo)準(zhǔn)的EDA工具之間的協(xié)作問題。
核心關(guān)注:拓步ERP系統(tǒng)平臺(tái)是覆蓋了眾多的業(yè)務(wù)領(lǐng)域、行業(yè)應(yīng)用,蘊(yùn)涵了豐富的ERP管理思想,集成了ERP軟件業(yè)務(wù)管理理念,功能涉及供應(yīng)鏈、成本、制造、CRM、HR等眾多業(yè)務(wù)領(lǐng)域的管理,全面涵蓋了企業(yè)關(guān)注ERP管理系統(tǒng)的核心領(lǐng)域,是眾多中小企業(yè)信息化建設(shè)首選的ERP管理軟件信賴品牌。
轉(zhuǎn)載請(qǐng)注明出處:拓步ERP資訊網(wǎng)http://www.ezxoed.cn/
本文標(biāo)題:EDA工程建模及其管理方法研究