專利名稱:用于系統(tǒng)芯片集成設(shè)計(jì)的子系統(tǒng)集成方法及其子系統(tǒng)集成系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及系統(tǒng)芯片(SoC)集成設(shè)計(jì)領(lǐng)域,具體涉及子系統(tǒng)集成過程中子系統(tǒng) 的反復(fù)迭代自動(dòng)實(shí)現(xiàn)方法,以及子系統(tǒng)集成系統(tǒng)。
背景技術(shù):
隨著集成電路制造水平的不斷提高,設(shè)計(jì)者可以在單芯片上集成幾百萬(wàn)門的復(fù) 雜系統(tǒng),即片上系統(tǒng)(System-On-Chip)。近年來,SoC已經(jīng)成為當(dāng)今集成電路設(shè)計(jì)的 主流方向,隨著嵌入式產(chǎn)品性能要求的不斷提高,SoC設(shè)計(jì)的復(fù)雜度也越來越高。當(dāng) 前,SoC設(shè)計(jì)者主要面臨兩個(gè)方面的挑戰(zhàn)一方面,SoC集成度的提高促使SoC設(shè)計(jì)愈 加復(fù)雜,帶來巨大的驗(yàn)證難度;另一方面,嵌入式產(chǎn)品更新?lián)Q代日趨頻繁,SoC產(chǎn)品的 TTM(time-to-market)也需較大縮短。如何快速、正確和高效的完成復(fù)雜SoC設(shè)計(jì)已經(jīng) 成為設(shè)計(jì)師必須面對(duì)的問題。在系統(tǒng)芯片集成過程中,復(fù)用已有的子系統(tǒng)可有效地降低設(shè)計(jì)復(fù)雜度,提高設(shè) 計(jì)效率。子系統(tǒng)由一系列IP或者其它子系統(tǒng)組成,并具有特定的功能,該功能在系統(tǒng)芯 片中有比較廣泛的應(yīng)用。如圖1所示,一個(gè)典型的多媒體應(yīng)用系統(tǒng)芯片1由音頻子系統(tǒng) 2,視頻子系統(tǒng)3及主控系統(tǒng)4組成。音頻子系統(tǒng)2和視頻子系統(tǒng)3又可以構(gòu)成新的子系 統(tǒng)5。在系統(tǒng)芯片集成前,如果基于已有的音頻子系統(tǒng)2和視頻子系統(tǒng)3或音視頻子系 統(tǒng)5將顯著提高系統(tǒng)芯片集成的效率。但在不同的系統(tǒng)芯片中,對(duì)同一子系統(tǒng)可能有不 同的性能要求。例如對(duì)于音頻應(yīng)用,在不同的系統(tǒng)芯片中對(duì)于音頻聲道有不同的要求, 這就要求子系統(tǒng)具有靈活的可配性。目前存在的子系統(tǒng)復(fù)用一般基于硬件描述語(yǔ)言Verilog或者VHDL,由于基于 Verilog或者VHDL的子系統(tǒng)必須通過修改參數(shù)或者代碼來完成配置,這樣導(dǎo)致子系統(tǒng)可 配置性降低,而且容易在配置過程中引入人為錯(cuò)誤,降低系統(tǒng)芯片集成效率。同時(shí),基 于Verilog或者VHDL的子系統(tǒng)往往具有較大的平臺(tái)依賴性,很難在不同的集成平臺(tái)之間 移植,降低子系統(tǒng)的復(fù)用性。
發(fā)明內(nèi)容
為了克服現(xiàn)有系統(tǒng)芯片設(shè)計(jì)中子系統(tǒng)集成可配性低、移植性差、靈活性低、集 成效率較低的不足,本發(fā)明提供一種可配性高、移植性良好、靈活性高、提升集成效率 的用于系統(tǒng)芯片集成設(shè)計(jì)的子系統(tǒng)集成方法及其子系統(tǒng)集成系統(tǒng)。本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是
一種用于系統(tǒng)芯片集成設(shè)計(jì)的子系統(tǒng)集成方法,所述子系統(tǒng)集成方法包括如下步驟
1)采用IP-XACT標(biāo)準(zhǔn)封裝子系統(tǒng),所述子系統(tǒng)包括子系統(tǒng)器件XML文件、子系統(tǒng) 設(shè)計(jì)XML文件和子系統(tǒng)生成器;2)采用腳本語(yǔ)言編寫一個(gè)子系統(tǒng)XML文件分析工具,在子系統(tǒng)實(shí)例化過程中,分 析子系統(tǒng)中實(shí)例化的器件,同時(shí)迭代地分析子系統(tǒng)中實(shí)例化的其它子系統(tǒng),為每個(gè)實(shí)例 化器件建立目錄,并把工作目錄轉(zhuǎn)到對(duì)應(yīng)的目錄下,調(diào)用器件生成器生成器件RTL代碼 和測(cè)試激勵(lì)模板并使用步驟3)中代碼修改工具對(duì)模塊和宏名進(jìn)行修改;當(dāng)對(duì)子系統(tǒng)完 成迭代分析后,調(diào)用步驟4)中子 系統(tǒng)頂層RTL代碼生成工具生成子系統(tǒng)頂層代碼;
3)采用腳本語(yǔ)言編寫代碼修改工具,根據(jù)步驟2)中子系統(tǒng)設(shè)計(jì)XML文件分析工 具傳遞的參數(shù),對(duì)當(dāng)前目錄下下所有代碼的模塊和宏名進(jìn)行修改;
4)采用腳本語(yǔ)言編寫子系統(tǒng)頂層RTL代碼生成工具,根據(jù)步驟2)中子系統(tǒng)設(shè)計(jì) XML文件分析工具分析獲得各子系統(tǒng)中實(shí)例化的器件及器件之間的互連信息,為每個(gè)子 系統(tǒng)生成一個(gè)頂層RTL文件。進(jìn)一步,所述步驟2)中,子系統(tǒng)XML文件分析工具的處理過程如下
(2.1)在工作目錄WOTkdir下以子系統(tǒng)的實(shí)例化名建立目錄;根據(jù)子系統(tǒng)的VNLV信 息,從庫(kù)中把子系統(tǒng)的器件XML文件拷貝到workdir中對(duì)應(yīng)的子系統(tǒng)目錄下,腳本工作 目錄轉(zhuǎn)到該目錄下;
(2.2)分析子系統(tǒng)的設(shè)計(jì)XML文件,得到子系統(tǒng)的頂層模塊名;
(2.3)根據(jù)系統(tǒng)芯片中子系統(tǒng)的配置,把子系統(tǒng)器件XML文件中各參數(shù)改成對(duì)應(yīng)的
值;
(2.4)分析子系統(tǒng)器件XML文件獲得子系統(tǒng)設(shè)計(jì)XML和生成器的信息,從庫(kù)中把 對(duì)應(yīng)子系統(tǒng)的設(shè)計(jì)XML文件和生成器腳本拷貝到當(dāng)前工作目錄下;
(2.5)如果子系統(tǒng)有生成器,調(diào)用子系統(tǒng)生成器得到修改后的器件和設(shè)計(jì)XML文 件;否者直接到步驟(2.6)
(2.6)對(duì)子系統(tǒng)的設(shè)計(jì)XML文件進(jìn)行修改,為所有子系統(tǒng)中實(shí)例化的IP都加上前綴 "subi_"以體現(xiàn)層次性,防止與其它IP重名,其中“i”為當(dāng)前子系統(tǒng)的序號(hào),“0”
表示系統(tǒng)芯片中第一個(gè)子系統(tǒng);
(2.7)分析子系統(tǒng)的設(shè)計(jì)XML文件得到子系統(tǒng)中所有實(shí)例化的器件及配置,保存到 腳本內(nèi)部數(shù)據(jù)結(jié)構(gòu)中;若實(shí)例化的器件為子系統(tǒng),把對(duì)應(yīng)子系統(tǒng)的VLNV信息壓入子系 統(tǒng)堆棧;
(2.8)對(duì)于非子系統(tǒng)的器件,調(diào)用其生成器,生成對(duì)應(yīng)IP的RTL代碼和測(cè)試激勵(lì)并 根據(jù)實(shí)例化名對(duì)模塊名和宏定義進(jìn)行修改;
(2.9)分析子系統(tǒng)設(shè)計(jì)XML文件獲得子系統(tǒng)中各個(gè)器件之間的連接信息。(2.10)判斷子系統(tǒng)堆棧是否為空,若非空,從堆棧中取出子系統(tǒng)的VLNV信 息,回到步驟(2.1),進(jìn)行子系統(tǒng)的迭代處理,否者到步驟(2.11);
(2.11)調(diào)用子系統(tǒng)頂層RTL代碼生成工具產(chǎn)生各子系統(tǒng)頂層RTL代碼。更進(jìn)一步,所述步驟(2.8)中,非子系統(tǒng)器件實(shí)現(xiàn)步驟如下
(2.8.1)在工作目錄WOTk_dir下建立以器件實(shí)例化名命名的目錄,根據(jù)器件的VLNV 信息,從庫(kù)中把器件的XML文件拷貝到對(duì)應(yīng)目錄中,腳本工作目錄轉(zhuǎn)換到該目錄下;
(2.8.2)根據(jù)子系統(tǒng)設(shè)計(jì)XML文件中器件的配置信息,修改器件的XML文件參數(shù)
值;
(2.8.3)從器件的XML文件中判斷器件是否有生成器,若有則進(jìn)行步驟(2.8.4),否者直接跳到步驟(2.8.5);
(2.8.4)調(diào)用器件的生成器,生成RTL代碼與測(cè)試激勵(lì),同時(shí)生成器將更新器件XML文件;
(2.8.5)分析器件的XML的文件,得到下列信息并保存到內(nèi)部數(shù)據(jù)結(jié)構(gòu)中
①器件的頂層模塊名;
②器件的總線接口與物理端口;
③寄存器與緩存的地址空間;
④器件是否為子系統(tǒng);
⑤器件的所有RTL代碼和測(cè)試激勵(lì)列表;
(2.8.6)在整個(gè)項(xiàng)目的src_rtl與src_diag目錄下分別建立以器件實(shí)例化名命名的目錄, 從分析器件的XML文件獲得RTL代碼和測(cè)試激勵(lì)文件路徑,把對(duì)應(yīng)的RTL代碼拷貝到 src_rtl中對(duì)應(yīng)目錄下,把測(cè)試激勵(lì)拷貝到src_diag對(duì)應(yīng)目錄下;
(2.8.7)當(dāng)實(shí)例化名與器件的名不統(tǒng)一時(shí),在目錄src_rtl中對(duì)應(yīng)的器件目錄下調(diào)用代 碼修改工具修改對(duì)應(yīng)的模塊名和宏定義。更進(jìn)一步,所述步驟3)中,代碼修改工具的工作步驟如下
(3.1)判斷是否具有宏文件,如果沒有,直接轉(zhuǎn)到步驟(3.4);
(3.2)分析宏文件獲得所有的宏定義,同時(shí)在宏文件名前添加前綴 “ instanceName_ ” ;
(3.3)分析當(dāng)前目錄下所有RTL代碼中出現(xiàn)的宏,若在宏文件中有定義,則在對(duì)應(yīng) 的宏前面添加前綴"instanceName_";
(3.4)分析當(dāng)前目錄下的RTL代碼,得到所有的模塊名;
(3.5)在所有RTL代碼中出現(xiàn)的模塊名前添加前綴‘‘instanceNameJ’,同時(shí)在RTL 文件名前添加前綴” instanceName_”。所述步驟4)中,子系統(tǒng)頂層RTL代碼生成工具的工作步驟如下
(4.1)獲得各子系統(tǒng)的頂層模塊名,即子系統(tǒng)在系統(tǒng)中的實(shí)例化名;
(4.2)獲得各子系統(tǒng)中實(shí)例化的器件;
(4.3)獲得各子系統(tǒng)中實(shí)例化器件間的連接關(guān)系;
(4.4)在工程主目錄的src_rtl目錄下建立top目錄,在該目錄下依次打印出各子系統(tǒng) 頂層模塊的RTL代碼。一種用于系統(tǒng)芯片集成設(shè)計(jì)的子系統(tǒng)集成系統(tǒng),所述子系統(tǒng)集成系統(tǒng)包括子 系統(tǒng)器件XML文件,用于描述子系統(tǒng)的VLNV信息,總線接口,物理端口,配置參數(shù)、 子系統(tǒng)生成器及參考的子系統(tǒng)設(shè)計(jì)XML文件,在系統(tǒng)芯片集成過程中,把子系統(tǒng)作為一 個(gè)普通IP集成,通過VLNV信息從IP庫(kù)中索引;
子系統(tǒng)設(shè)計(jì)XML文件,用于描述子系統(tǒng)中實(shí)例化的IP及IP之間的互連; 子系統(tǒng)生成器,用于根據(jù)配置參數(shù)對(duì)子系統(tǒng)的器件及設(shè)計(jì)XML文件做相應(yīng)的修改; 子系統(tǒng)設(shè)計(jì)XML文件分析工具,用于從子系統(tǒng)XML文件中按步驟提取各部分信息 并保存到腳本的內(nèi)部數(shù)據(jù)結(jié)構(gòu)中,然后調(diào)用子系統(tǒng)頂層RTL代碼生成工具產(chǎn)生子系統(tǒng)的 頂層RTL代碼;
代碼修改工具,用于當(dāng)器件的名稱與實(shí)例化名不同時(shí),對(duì)RTL代碼的模塊和宏定義進(jìn)行修改,把實(shí)例名作為前綴添加到各模塊和宏名之前;
子系統(tǒng)頂層RTL代碼生成工具,用于由子系統(tǒng)設(shè)計(jì)XML文件分析工具調(diào)用,根據(jù)子 系統(tǒng)設(shè)計(jì)XML文件分析工具傳遞的信息完成子系統(tǒng)頂層模塊的RTL代碼生成,如果子系 統(tǒng)中嵌著其它子系統(tǒng),則將為各個(gè)子系統(tǒng)生成一個(gè)頂層模塊。本發(fā)明的技術(shù)構(gòu)思為由于IP-XACT標(biāo)準(zhǔn)開放性及其在系統(tǒng)配置與集成自動(dòng) 化方面的優(yōu)越性而被越來越廣泛地應(yīng)用。IP-XACT標(biāo)準(zhǔn)規(guī)定了一種基于XML的數(shù)據(jù)結(jié) 構(gòu),可用于描述IP (Intellectual Property)和系統(tǒng)的完整信息。利用IP-XACT標(biāo)準(zhǔn)的這一 特點(diǎn),可以把它作為子系統(tǒng)信息的載體,用于描述子系統(tǒng)的配置參數(shù)、接口信息及IP間 互連等,然后通過腳本從子系統(tǒng)的XML文件中提取相關(guān)信息,自動(dòng)實(shí)現(xiàn)子系統(tǒng)。關(guān)于 IP-XACT標(biāo)準(zhǔn)的描述,參見參考文獻(xiàn)1:工具鏈中知識(shí)產(chǎn)權(quán)封裝集成和復(fù)用結(jié)構(gòu)標(biāo)準(zhǔn)
(Standard Structure for Packaging, Integrating and Re-Using IP Within Tool-Flows),其網(wǎng) 址為http://www.accellera.org/activities/ip-xact/。腳本在電子設(shè)計(jì)自動(dòng)化(EDA)中起著重要作用。腳本script是使用一種特定 的描述性語(yǔ)言,依據(jù)一定的格式編寫的可執(zhí)行文件。使用腳本可以是實(shí)現(xiàn)流程控制,文 本處理等功能。Peri作為一種腳本語(yǔ)言,具有編程簡(jiǎn)單、可移植性高、文本處理能力強(qiáng) 等特點(diǎn),再加上其專門處理XML的免費(fèi)軟件包,可以大大提高子系統(tǒng)分析和集成的自動(dòng) 化程度,提高集成效率。因此,可采用IP-XACT標(biāo)準(zhǔn)提供的XML數(shù)據(jù)結(jié)構(gòu)描述子系統(tǒng),通過腳本自動(dòng) 從子系統(tǒng)的XML文件中提取信息,把子系統(tǒng)中實(shí)例化IP的配置參數(shù)傳遞給各個(gè)IP生成 器,生成IP的RTL代碼。同時(shí)利用提取的連接信息,自動(dòng)生成子系統(tǒng)的頂層RTL文件, 這樣顯著提高了子系統(tǒng)的集成效率。本發(fā)明的有益效果主要表現(xiàn)在
1.通用性強(qiáng),以符合IP-XACT標(biāo)準(zhǔn)的XML文件為信息媒介,適用于任何符合 IP-XACT標(biāo)準(zhǔn)的子系統(tǒng)集成;
2.子系統(tǒng)可配性強(qiáng),因?yàn)樗械呐渲眯畔⒍纪ㄟ^XML文件傳輸給子系統(tǒng)生成器,所 以可以有較大的靈活性。3.自動(dòng)化程度高,所有的子系統(tǒng)代碼都通過腳本自動(dòng)產(chǎn)生,可以避免人工引入錯(cuò)誤。4.支持子系統(tǒng)的迭代實(shí)例化和同一子系統(tǒng)的多次實(shí)例化。
圖1是典型SoC架構(gòu)的示意圖。圖2是對(duì)器 件XML文件的修改過程的示意圖。
圖3是design_parser的工作流程圖。圖4是散列system的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)的示意圖。圖5是散列signal_connect的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)的示意圖。圖6是腳本top_gen工作流程圖。具體實(shí) 施方式下面結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步描述。實(shí)施例1
參照?qǐng)D1 圖6,一種用于系統(tǒng)芯片集成設(shè)計(jì)的子系統(tǒng)集成方法,所述子系統(tǒng)集成方 法包括如下步驟
1)采用IP-XACT標(biāo)準(zhǔn)封裝子系統(tǒng),所述子系統(tǒng)包括子系統(tǒng)器件XML文件、子系統(tǒng) 設(shè)計(jì)XML文件和子系統(tǒng)生成器;
2)采用腳本語(yǔ)言編寫一個(gè)子系統(tǒng)XML文件分析工具,在子系統(tǒng)實(shí)例化過程中,分 析子系統(tǒng)中實(shí)例化的器件,同時(shí)迭代地分析子系統(tǒng)中實(shí)例化的其它子系統(tǒng),為每個(gè)實(shí)例 化器件建立目錄,并把工作目錄轉(zhuǎn)到對(duì)應(yīng)的目錄下,調(diào)用器件生成器生成器件RTL代碼 和測(cè)試激勵(lì)模板并使用步驟3)中代碼修改工具對(duì)模塊和宏名進(jìn)行修改;當(dāng)對(duì)子系統(tǒng)完 成迭代分析后,調(diào)用步驟4)中子系統(tǒng)頂層RTL代碼生成工具生成子系統(tǒng)頂層代碼;
3)采用腳本語(yǔ)言編寫代碼修改工具,根據(jù)步驟2)中子系統(tǒng)設(shè)計(jì)XML文件分析工 具傳遞的參數(shù),對(duì)當(dāng)前目錄下下所有代碼的模塊和宏名進(jìn)行修改;
4)采用腳本語(yǔ)言編寫子系統(tǒng)頂層RTL代碼生成工具,根據(jù)步驟2)中子系統(tǒng)設(shè)計(jì) XML文件分析工具分析獲得各子系統(tǒng)中實(shí)例化的器件及器件之間的互連信息,為每個(gè)子 系統(tǒng)生成一個(gè)頂層RTL文件。所述的子系統(tǒng)設(shè)計(jì)XML文件分析工具用于從子系統(tǒng)XML文件中按步驟提取各 部分信息并保存到腳本的內(nèi)部數(shù)據(jù)結(jié)構(gòu)中,然后調(diào)用子系統(tǒng)頂層RTL代碼生成工具產(chǎn)生 子系統(tǒng)的頂層RTL代碼。子系統(tǒng)的實(shí)現(xiàn)步驟如下
(2.1)在工作目錄WOTkdir下以子系統(tǒng)的實(shí)例化名建立目錄。根據(jù)子系統(tǒng)的VNLV信 息,從庫(kù)中把子系統(tǒng)的器件XML文件拷貝到workdir中對(duì)應(yīng)的子系統(tǒng)目錄下,腳本工作 目錄轉(zhuǎn)到該目錄下。(2.2)分析子系統(tǒng)的設(shè)計(jì)XML文件,得到子系統(tǒng)的頂層模塊名。(2.3)根據(jù)系統(tǒng)芯片中子系統(tǒng)的配置,把子系統(tǒng)器件XML文件中各參數(shù)改成對(duì) 應(yīng)的值。(2.4)分析子系統(tǒng)器件XML文件獲得子系統(tǒng)設(shè)計(jì)XML和生成器的信息,從庫(kù) 中把對(duì)應(yīng)子系統(tǒng)的設(shè)計(jì)XML文件和生成器腳本(如果存在)拷貝到當(dāng)前工作目錄下。(2.5)如果子系統(tǒng)有生成器,調(diào)用子系統(tǒng)生成器得到修改后的器件和設(shè)計(jì)XML 文件。否者直接到步驟(2.6)
(2.6)對(duì)子系統(tǒng)的設(shè)計(jì)XML文件進(jìn)行修改,為所有子系統(tǒng)中實(shí)例化的IP都加上前綴 "subi_"以體現(xiàn)層次性,防止與其它IP重名,其中“i”為當(dāng)前子系統(tǒng)的序號(hào),“0” 表示系統(tǒng)芯片中第一個(gè)子系統(tǒng)。(2.7)分析子系統(tǒng)的設(shè)計(jì)XML文件得到子系統(tǒng)中所有實(shí)例化的器件及配置,保 存到腳本內(nèi)部數(shù)據(jù)結(jié)構(gòu)中。若實(shí)例化的器件為子系統(tǒng),把對(duì)應(yīng)子系統(tǒng)的VLNV信息壓入 子系統(tǒng)堆棧。(2.8)對(duì)于非子系統(tǒng)的器件,調(diào)用其生成器,生成對(duì)應(yīng)IP的RTL代碼和測(cè)試激 勵(lì)并根據(jù)實(shí)例化名對(duì)模塊名和宏定義進(jìn)行修改。(2.9)分析子系統(tǒng)設(shè)計(jì)XML文件獲得子系統(tǒng)中各個(gè)器件之間的連接信息。
(2.10)判斷子系統(tǒng)堆棧是否為空,若非空,從堆棧中取出子系統(tǒng)的VLNV信 息,回到步驟(2.1),進(jìn)行子系統(tǒng)的迭代處理,否者到步驟(2.11).
(2.11)調(diào)用子系統(tǒng)頂層RTL代碼生成工具產(chǎn)生各子系統(tǒng)頂層RTL代碼。 對(duì)于步驟(2.8)中非子系統(tǒng)器件實(shí)現(xiàn)步驟如下
(2.8.1)在工作目錄WOTk_dir下建立以器件實(shí)例化名命名的目錄,根據(jù)器件的VLNV 信息,從庫(kù)中把器件的XML文件拷貝到對(duì)應(yīng)目錄中,腳本工作目錄轉(zhuǎn)換到該目錄下。(2.8.2)根據(jù)子系統(tǒng)設(shè)計(jì)XML文件中器件的配置信息,修改器件的XML文件參 數(shù)值。(2.8.3)從器件的XML文件中判斷器件是否有生成器,若有則進(jìn)行步驟 (2.8.4),否者直接跳到步驟(2.8.5);
(2.8.4)調(diào)用器件的生成器,生成RTL代碼與測(cè)試激勵(lì),同時(shí)生成器將更新器件XML 文件。生成器對(duì)XML文件的更新過程如圖2。(2.8.5)分析器件的XML的文件,得到下列信息并保存到內(nèi)部數(shù)據(jù)結(jié)構(gòu)中
①器件的頂層模塊名;
②器件的總線接口與物理端口;
③寄存器與緩存的地址空間;
④器件是否為子系統(tǒng);
⑤器件的所有RTL代碼和測(cè)試激勵(lì)列表;
(2.8.6)在整個(gè)項(xiàng)目的src_rtl與src_diag目錄下分別建立以器件實(shí)例化名命名的目錄, 從分析器件的XML文件獲得RTL代碼和測(cè)試激勵(lì)文件路徑,把對(duì)應(yīng)的RTL代碼拷貝到 src_rtl中對(duì)應(yīng)目錄下,把測(cè)試激勵(lì)拷貝到src_diag對(duì)應(yīng)目錄下。(2.8.7)當(dāng)實(shí)例化名與器件的名不統(tǒng)一時(shí),在目錄src_rtl中對(duì)應(yīng)的器件目錄下調(diào) 用代碼修改工具修改對(duì)應(yīng)的模塊名和宏定義。所述的代碼修改工具主要用于當(dāng)器件的名稱與實(shí)例化名不同時(shí),對(duì)RTL代碼的 模塊和宏定義進(jìn)行修改,把實(shí)例名作為前綴添加到各模塊和宏名之前。在子系統(tǒng)設(shè)計(jì) XML文件分析工具的步驟(2.5)中對(duì)子系統(tǒng)中實(shí)例化的器件都進(jìn)行了重命名,所以系統(tǒng) 芯片中組成各子系統(tǒng)的器件一定具有不同的實(shí)例化名稱,這樣就避免了不同子系統(tǒng)實(shí)例 化同一器件所引起的沖突。代碼修改工具在調(diào)用時(shí)需支持兩個(gè)參數(shù),依次為添加的前 綴和宏文件。前綴即為器件的實(shí)例化名加下劃線,接下來的章節(jié)中以“instanceNameJ’ 代替;而宏文件給出了 RTL代碼中全部的宏定義,當(dāng)有多個(gè)宏文件時(shí),用逗號(hào)分隔。代 碼修改工具的工作步驟如下
(3.1)判斷是否具有宏文件,如果沒有,直接轉(zhuǎn)到步驟(3.4);
(3.2)分析宏文件獲得所有的宏定義,同時(shí)在宏文件名前添加前綴 “ instanceName_ ” ;
(3.3)分析當(dāng)前目錄下所有RTL代碼中出現(xiàn)的宏,若在宏文件中有定義,則在對(duì)應(yīng) 的宏前面添加前綴"instanceName_";
(3.4)分析當(dāng)前目錄下的RTL代碼,得到所有的模塊名;
(3.5)在所有RTL代碼中出現(xiàn)的模塊名(包括模塊定義和模塊實(shí)例化)前添加前綴 "instanceName_”,同時(shí)在 RTL 文件名前添加前綴” instanceName_”。
所述的子系統(tǒng)頂層RTL代碼生成工具由子系統(tǒng)設(shè)計(jì)XML文件分析工具調(diào)用,根 據(jù)子系統(tǒng)設(shè)計(jì)XML文件分析工具傳遞的信息完成子系統(tǒng)頂層模塊的RTL代碼生成,如果 子系統(tǒng)中嵌著其它子系統(tǒng),則將為各個(gè)子系統(tǒng)生成一個(gè)頂層模塊。主要包括如下步驟
(4.1)獲得各子系統(tǒng)的頂層模塊名,即子系統(tǒng)在系統(tǒng)中的實(shí)例化名;
(4.2)獲得各子系統(tǒng)中實(shí)例化的器件。(4.3)獲得各子系統(tǒng)中實(shí)例化器件間的連接關(guān)系。(4.4)在工程主目錄的src_rtl目錄下建立top目錄,在該目錄下依次打印出各子 系統(tǒng)頂層模塊的RTL代碼。實(shí)例把杭州中天微系統(tǒng)所擁有的IP用IP-XACT標(biāo)準(zhǔn)封裝成庫(kù),杭州中天微系 統(tǒng)公司的IP有兩部分組成一是公司獨(dú)立開發(fā)的IP,包括擁有自主知識(shí)產(chǎn)權(quán)的CKCore 嵌入式處理器、h.264視頻解碼器等;二是基于Synoposis的DesignWare IP。基于杭州 中天微系統(tǒng)的SoC架構(gòu),把常用功能模塊封裝成子系統(tǒng),主要包括視頻子系統(tǒng)、音頻 子系統(tǒng)、外圍接口子系統(tǒng)等。把所有封裝好的IP和子系統(tǒng)放入IP庫(kù)中,IP庫(kù)被命名為 aphrodite ο用Perl語(yǔ)言編寫子系統(tǒng)設(shè)計(jì)XML文件分析工具并命名為design_parser用于從子
系統(tǒng)的XML文件中提取相關(guān)信息并通過Perl的內(nèi)部數(shù)據(jù)結(jié)構(gòu)傳遞給子系統(tǒng)頂層RTL代碼 生成工具,生成子系統(tǒng)的頂層模塊代碼。為了簡(jiǎn)化對(duì)XML文件各的分析,desigiuparser 腳本通過調(diào)用Perl的XML:D0M免費(fèi)軟件包來完成對(duì)XML中各個(gè)元素的分析。design_ parser腳本的主要流程如圖3所示,具體步驟如下
(2.1)在工作目錄WOTkdir下以子系統(tǒng)的實(shí)例化名建立目錄。根據(jù)子系統(tǒng)的VNLV信 息,從庫(kù)中把子系統(tǒng)的器件XML文件拷貝到workdir中對(duì)應(yīng)的子系統(tǒng)目錄下,腳本工作 目錄轉(zhuǎn)到該目錄下。(2.2)分析子系統(tǒng)器件XML文件的<spirit:modelName>元素獲得子系統(tǒng)的頂層
模塊名。(2.3)根據(jù)子系統(tǒng)的配置,把子系統(tǒng)器件XML文件中<spirit:parameters>元素中
的各參數(shù)改成對(duì)應(yīng)的值。(2.4)分析子系統(tǒng)器件XML文件的<spirit:hierarchyRei^元素的各個(gè)屬性獲得子 系統(tǒng)設(shè)計(jì)XML文件的VLNV信息,從庫(kù)中把對(duì)應(yīng)子系統(tǒng)的設(shè)計(jì)XML文件拷貝到當(dāng)前工
作目錄下。(2.5)分析子系統(tǒng)器件XML文件中是否有<spirit:componentGenerator>元素,
如果存在,則獲得生成器的信息并把它從庫(kù)中拷貝到當(dāng)前工作目錄下,否則直接到步驟 (2.7)。(2.6)調(diào)用子系統(tǒng)生成器得到修改后的子系統(tǒng)器件和設(shè)計(jì)XML文件。(2.7)對(duì)子系統(tǒng)的設(shè)計(jì)XML文件進(jìn)行修改,為所有子系統(tǒng)中實(shí)例化的IP都加 上前綴“subi_”以體現(xiàn)層次性,防止與其它IP重名,其中“i”為當(dāng)前子系統(tǒng)的序號(hào),
“O”標(biāo)志系統(tǒng)芯片中第一個(gè)子系統(tǒng)。
(2.8) 分析子系統(tǒng)的設(shè)計(jì)XML文件中的<spirit:componentInstances>元素,得
到子系統(tǒng)中所有實(shí)例化的器件以及配置信息。把對(duì)應(yīng)器件的模塊名和實(shí)例化名稱保存到 散列%systems中,散列的鍵值為子系統(tǒng)系統(tǒng)的序號(hào),對(duì)應(yīng)的值為保存該子系統(tǒng)中實(shí)例化器件信息的散列。若實(shí)例化的器件為子系統(tǒng),把對(duì)應(yīng)子系統(tǒng)的VLNV信息壓入堆棧@ sub_sy stems.
(2.9)對(duì)于非子系統(tǒng)的器件,調(diào)用其生成器,生成對(duì)應(yīng)IP的RTL代碼和測(cè)試激勵(lì), 并調(diào)用change_rtl腳本對(duì)模塊及宏定義進(jìn)行重命名。(2.10)分析子系統(tǒng)設(shè)計(jì) XML 文件的〈spirit:interconnections〉、 <spirit:adHocConnections> 禾Π <spirit:hierConnections> 元素,得到子系統(tǒng)中各個(gè)器件之間的 連接信息,保存到散列%connect_signals中。(2.11)判斷堆是否為空,若非空,從棧頂取出子系統(tǒng)的VLNV 信息,回到步驟(2.1),進(jìn)行子系統(tǒng)的迭代處理,否者到步驟(2.11) (2.12)調(diào)用子系統(tǒng)頂層RTL代碼生成工具生成各個(gè)子系統(tǒng)的頂層RTL模塊。步驟(2.8)中所述散列%system的組織結(jié)構(gòu)如圖5所示。序號(hào)“0”索引的 為頂層子系統(tǒng),其它子系統(tǒng)為該子系統(tǒng)中迭代實(shí)例化的子系統(tǒng)。Ssystem丨0丨索引到的是 子系統(tǒng)subO中實(shí)例化的所有器件的散列%SUb0,鍵為器件的實(shí)例化名,值為器件的頂層模 塊名。例如子系統(tǒng)subO中實(shí)例化了器件A,B,C,D,E,F(xiàn),對(duì)應(yīng)的實(shí)例化名分別是在各模塊 名前添加“sub0_”,這與步驟(2.7)中所述相符。器件模塊名索引的數(shù)字表示該器件 是否為子系統(tǒng),當(dāng)為0時(shí)表示非子系統(tǒng),大于0時(shí)表示為子系統(tǒng),該系統(tǒng)的相關(guān)信息可以 通過對(duì)應(yīng)的數(shù)字從散列%373仿111中索引。例如模塊名為“C”對(duì)應(yīng)的數(shù)值為1,表示該 器件即為子系統(tǒng)subl。通過這樣的存儲(chǔ)組織架構(gòu),子系統(tǒng)及其內(nèi)部實(shí)例化的子系統(tǒng)都可 以迭代地保存下來。步驟(2.10)中所述信號(hào)連接信息保存散列%signal_COraieCt的結(jié)構(gòu)如圖5所示。 通過器件實(shí)例化名可以索引得到一個(gè)數(shù)組,該數(shù)組中保存的是該模塊中各個(gè)輸出信號(hào)的 連接信息,數(shù)組的每個(gè)元素為一個(gè)散列,散列的結(jié)構(gòu)如圖5表格所示。信號(hào)名表示當(dāng)前 連接的器件的信號(hào)端口名,方向表示是輸入還是輸出,連接器件表示該信號(hào)連接的目標(biāo) 器件,連接信號(hào)名表示連接器件中與該信號(hào)相連的信號(hào)名稱,左右邊界表示該信號(hào)當(dāng)前 連接的位寬范圍,連接信號(hào)左右邊界表示與該信號(hào)相連信號(hào)的位寬邊界,信號(hào)完整性表 示該信號(hào)是否所有位均被連接,連接信號(hào)完整性標(biāo)志被連信號(hào)是否所有位均被連接。對(duì)于步驟(2.8)中提到非子系統(tǒng)器件實(shí)現(xiàn)過程如下
(2.8.1)在工作目錄WOTk_dir下建立以器件實(shí)例化名字命名的目錄,根據(jù)器件的 VLNV信息,從庫(kù)中把器件的XML文件拷貝到對(duì)應(yīng)目錄中,腳本工作目錄轉(zhuǎn)換到該目錄 下。(2.8.2)根據(jù)子系統(tǒng)設(shè)計(jì)XML文件中器件的配置信息,修改器件XML文件的 <spirit:parameters>元素中的各參數(shù)值。(2.8.3)分析器件XML文件中的〈spirit:componentGenerator>元素判斷器件是否
有生成器,若有則進(jìn)行步驟(2.8.4),否者直接跳至步驟5
(2.8.4)分析<Spirit:componentGenerator>元素獲得生成器信息并把生成器拷貝到當(dāng)前 目錄下,調(diào)用器件生成器,生成RTL代碼與測(cè)試激勵(lì),同時(shí)生成器將修改器件XML文 件,RTL代碼與激勵(lì)的文件路徑將在新的XML文件的<Spirit:fileSetS>元素表示。生成 器對(duì)XML文件的更新過程如圖2。(2.8.5)分析器件的XML的文件,得到下列信息并保存到內(nèi)部數(shù)據(jù)結(jié)構(gòu)中①分析<spirit:m0delName>元素獲得器件的頂層模塊名;
②分析<spirit:buslnterfaces>和<spirit:ports>元素分別獲得器件的總線接口與物理端
Π ;
③分析<spirit:memoryMaps>元素獲得寄存器與緩存的地址空間;
@通過分析〈spirit: views〉7Π 素下的子 7Π 素 <spirit: envldentifier> 禾口 <spirit:hierarchyRef>
判斷器件是否為子系統(tǒng);
⑤器件的所有RTL代碼和測(cè)試激勵(lì)列表及路徑;
(2.8.6)在整個(gè)項(xiàng)目的src_rtl與src_diag目錄下分別建立以器件實(shí)例化名命名的目錄, 把對(duì)應(yīng)的RTL代碼拷貝到src_rtl對(duì)應(yīng)目錄下,把測(cè)試激勵(lì)拷貝到src_diag目錄下。(2.8.7)當(dāng)實(shí)例化名與器件的名不統(tǒng)一時(shí),在目錄src_rtl中對(duì)應(yīng)的器件目錄下調(diào) 用代碼修改工具,在所有模塊名與宏名前添加“instanceName_”,其中instanceName表 示器件的實(shí)例化名稱。用Peri語(yǔ)言編寫代碼修改工具并命名為change_rtl,用于修改RTL代碼中的模塊 名和宏定義,change_rtl以添加前綴的形式對(duì)模塊名和宏定義進(jìn)行修改,添加的前綴和需 要修改的宏定義通過參數(shù)的形式傳遞給change_rtl腳本。集體工作流程如下
(3.1)判斷傳遞的參數(shù)個(gè)數(shù),若只有一個(gè)參數(shù),則認(rèn)為沒有宏定義文件,直接轉(zhuǎn)到 步驟(3.4);
(3.2)分析宏文件,得到所有的宏定義名稱,放入散列%01%1"0,同時(shí)在宏文件名前 添加前綴;
(3.3)得到當(dāng)前目錄下所有的RTL代碼和宏文件,分析每個(gè)文件中出現(xiàn)的宏,如在 散列%maCT0中有定義,則在對(duì)應(yīng)的宏前面添加前綴;
(3.4)分析當(dāng)前目錄下的RTL代碼,得到所有的模塊名;
(3.5)在所有RTL代碼中出現(xiàn)的模塊名前添加前綴,同時(shí)在RTL文件名前添加前綴; 用Peri語(yǔ)言編寫子系統(tǒng)頂層RTL代碼生成工具并命名為top_gen。top_gen腳本將根
據(jù)design_parer分析得到的散列%systems和%signal_connect中的信息完成子系統(tǒng)頂層模
塊的RTL代碼生成,如果子系統(tǒng)中嵌著其它子系統(tǒng),則將為各個(gè)子系統(tǒng)生成一個(gè)頂層模 塊。top_gen腳本的工作流程如圖6所示,主要包括如下步驟
(4.1)通過分析散列“^砂對(duì)^^!!獲得各子系統(tǒng)的頂層模塊名,即子系統(tǒng)在系統(tǒng)中的實(shí) 例化名;
(4.2)通過分析散列%SyStem獲得各子系統(tǒng)中實(shí)例化的器件名稱。(4.3)通過分析散列%Signal_COnneCt獲得各子系統(tǒng)中實(shí)例化器件間的連接關(guān)系。(4.4)在工程主目錄的src_rtl目錄下建立top目錄,在該目錄下依次打印出各子 系統(tǒng)頂層模塊的RTL代碼。在分析各子系統(tǒng)的頂層模塊名過程中,最上層子系統(tǒng)的實(shí)例化名從變量$sub_ system_top中獲得,在該子系統(tǒng)中迭代實(shí)例化的其它子系統(tǒng)頂層模塊名從散列%SyStem中 獲得,例如子系統(tǒng)sub2的實(shí)例化頂層模塊名為subO_E。 根據(jù)從%SyStem索引到的對(duì)應(yīng) 子系統(tǒng)散列的所有鍵值即為該子系統(tǒng)中實(shí)例化的器件名,例如,子系 統(tǒng)subO中實(shí)例化的器件為subO_A、subO_B、subO_E、subO_F。為各個(gè)子系統(tǒng)建立以“實(shí)例化名_頂層模
塊名”規(guī)則命名的文件,然后以硬件描述語(yǔ)言的語(yǔ)法在對(duì)應(yīng)文件中打印出個(gè)實(shí)例化模塊 和連接信息,這樣就可以得到各子系統(tǒng)的頂層文件。通過以上步驟自動(dòng)了實(shí)現(xiàn)系統(tǒng)芯片中子系統(tǒng)集成的全部流程,基于該流程顯著 提高了系統(tǒng)芯片集成過程中子系統(tǒng)的可配性和通用性,使杭州中天微系統(tǒng)公司的系統(tǒng)芯 片設(shè)計(jì)變得更加高效。實(shí)施例2 參照?qǐng)D1 圖6,一種用于系統(tǒng)芯片集成設(shè)計(jì)的子系統(tǒng)集成系統(tǒng),所述子系統(tǒng)集成系 統(tǒng)包括子系統(tǒng)器件XML文件,用于描述子系統(tǒng)的VLNV信息,總線接口,物理端口, 配置參數(shù)、子系統(tǒng)生成器及參考的子系統(tǒng)設(shè)計(jì)XML文件,在系統(tǒng)芯片集成過程中,把子 系統(tǒng)作為一個(gè)普通IP集成,通過VLNV信息從IP庫(kù)中索引;
子系統(tǒng)設(shè)計(jì)XML文件,用于描述子系統(tǒng)中實(shí)例化的IP及IP之間的互連; 子系統(tǒng)生成器,用于根據(jù)配置參數(shù)對(duì)子系統(tǒng)的器件及設(shè)計(jì)XML文件做相應(yīng)的修改; 子系統(tǒng)設(shè)計(jì)XML文件分析工具,用于從子系統(tǒng)XML文件中按步驟提取各部分信息 并保存到腳本的內(nèi)部數(shù)據(jù)結(jié)構(gòu)中,然后調(diào)用子系統(tǒng)頂層RTL代碼生成工具產(chǎn)生子系統(tǒng)的 頂層RTL代碼;
代碼修改工具,用于當(dāng)器件的名稱與實(shí)例化名不同時(shí),對(duì)RTL代碼的模塊和宏定義 進(jìn)行修改,把實(shí)例名作為前綴添加到各模塊和宏名之前;
子系統(tǒng)頂層RTL代碼生成工具,用于由子系統(tǒng)設(shè)計(jì)XML文件分析工具調(diào)用,根據(jù)子 系統(tǒng)設(shè)計(jì)XML文件分析工具傳遞的信息完成子系統(tǒng)頂層模塊的RTL代碼生成,如果子系 統(tǒng)中嵌著其它子系統(tǒng),則將為各個(gè)子系統(tǒng)生成一個(gè)頂層模塊。
權(quán)利要求
1.一種用于系統(tǒng)芯片集成設(shè)計(jì)的子系統(tǒng)集成方法,其特征在于所述子系統(tǒng)集成方 法包括如下步驟1)采用IP-XACT標(biāo)準(zhǔn)封裝子系統(tǒng),所述子系統(tǒng)包括子系統(tǒng)器件XML文件、子系統(tǒng) 設(shè)計(jì)XML文件和子系統(tǒng)生成器;2)采用腳本語(yǔ)言編寫一個(gè)子系統(tǒng)XML文件分析工具,在子系統(tǒng)實(shí)例化過程中,分 析子系統(tǒng)中實(shí)例化的器件,同時(shí)迭代地分析子系統(tǒng)中實(shí)例化的其它子系統(tǒng),為每個(gè)實(shí)例 化器件建立目錄,并把工作目錄轉(zhuǎn)到對(duì)應(yīng)的目錄下,調(diào)用器件生成器生成器件RTL代碼 和測(cè)試激勵(lì)模板并使用步驟3)中代碼修改工具對(duì)模塊和宏名進(jìn)行修改;當(dāng)對(duì)子系統(tǒng)完 成迭代分析后,調(diào)用步驟4)中子系統(tǒng)頂層RTL代碼生成工具生成子系統(tǒng)頂層代碼;3)采用腳本語(yǔ)言編寫代碼修改工具,根據(jù)步驟2)中子系統(tǒng)設(shè)計(jì)XML文件分析工 具傳遞的參數(shù),對(duì)當(dāng)前目錄下下所有代碼的模塊和宏名進(jìn)行修改;4)采用腳本語(yǔ)言編寫子系統(tǒng)頂層RTL代碼生成工具,根據(jù)步驟2)中子系統(tǒng)設(shè)計(jì) XML文件分析工具分析獲得各子系統(tǒng)中實(shí)例化的器件及器件之間的互連信息,為每個(gè)子 系統(tǒng)生成一個(gè)頂層RTL文件。
2.如權(quán)利要求1所述的用于系統(tǒng)芯片集成設(shè)計(jì)的子系統(tǒng)集成方法,其特征在于所 述步驟2)中,子系統(tǒng)XML文件分析工具的處理過程如下(2.1)在工作目錄WOTkdir下以子系統(tǒng)的實(shí)例化名建立目錄;根據(jù)子系統(tǒng)的VNLV信 息,從庫(kù)中把子系統(tǒng)的器件XML文件拷貝到workdir中對(duì)應(yīng)的子系統(tǒng)目錄下,腳本工作 目錄轉(zhuǎn)到該目錄下;(2.2)分析子系統(tǒng)的設(shè)計(jì)XML文件,得到子系統(tǒng)的頂層模塊名;(2.3)根據(jù)系統(tǒng)芯片中子系統(tǒng)的配置,把子系統(tǒng)器件XML文件中各參數(shù)改成對(duì)應(yīng)的值;(2.4)分析子系統(tǒng)器件XML文件獲得子系統(tǒng)設(shè)計(jì)XML和生成器的信息,從庫(kù)中把 對(duì)應(yīng)子系統(tǒng)的設(shè)計(jì)XML文件和生成器腳本拷貝到當(dāng)前工作目錄下;(2.5)如果子系統(tǒng)有生成器,調(diào)用子系統(tǒng)生成器得到修改后的器件和設(shè)計(jì)XML文 件;否者直接到步驟(2.6)(2.6)對(duì)子系統(tǒng)的設(shè)計(jì)XML文件進(jìn)行修改,為所有子系統(tǒng)中實(shí)例化的IP都加上前綴 "subi_"以體現(xiàn)層次性,防止與其它IP重名,其中“i”為當(dāng)前子系統(tǒng)的序號(hào),“0”表示系統(tǒng)芯片中第一個(gè)子系統(tǒng);(2.7)分析子系統(tǒng)的設(shè)計(jì)XML文件得到子系統(tǒng)中所有實(shí)例化的器件及配置,保存到 腳本內(nèi)部數(shù)據(jù)結(jié)構(gòu)中;若實(shí)例化的器件為子系統(tǒng),把對(duì)應(yīng)子系統(tǒng)的VLNV信息壓入子系 統(tǒng)堆棧;(2.8)對(duì)于非子系統(tǒng)的器件,調(diào)用其生成器,生成對(duì)應(yīng)IP的RTL代碼和測(cè)試激勵(lì)并 根據(jù)實(shí)例化名對(duì)模塊名和宏定義進(jìn)行修改;(2.9)分析子系統(tǒng)設(shè)計(jì)XML文件獲得子系統(tǒng)中各個(gè)器件之間的連接信息。
3.(2.10)判斷子系統(tǒng)堆棧是否為空,若非空,從堆棧中取出子系統(tǒng)的VLNV信息,回 到步驟(2.1),進(jìn)行子系統(tǒng)的迭代處理,否者到步驟(2.11);(2.11)調(diào)用子系統(tǒng)頂層RTL代碼生成工具產(chǎn)生各子系統(tǒng)頂層RTL代碼。
4.如權(quán)利要求2所述的用于系統(tǒng)芯片集成設(shè)計(jì)的子系統(tǒng)集成方法,其特征在于所述步驟(2.8)中,非子系統(tǒng)器件實(shí)現(xiàn)步驟如下(2.8.1)在工作目錄WOTk_dir下建立以器件實(shí)例化名命名的目錄,根據(jù)器件的VLNV 信息,從庫(kù)中把器件的XML文件拷貝到對(duì)應(yīng)目錄中,腳本工作目錄轉(zhuǎn)換到該目錄下;(2.8.2)根據(jù)子系統(tǒng)設(shè)計(jì)XML文件中器件的配置信息,修改器件的XML文件參數(shù)值;(2.8.3)從器件的XML文件中判斷器件是否有生成器,若有則進(jìn)行步驟(2.8.4), 否者直接跳到步驟(2.8.5);(2.8.4)調(diào)用器件的生成器,生成RTL代碼與測(cè)試激勵(lì),同時(shí)生成器將更新器件 XML文件;(2.8.5)分析器件的XML的文件,得到下列信息并保存到內(nèi)部數(shù)據(jù)結(jié)構(gòu)中①器件的頂層模塊名;②器件的總線接口與物理端口;③寄存器與緩存的地址空間;④器件是否為子系統(tǒng);⑤器件的所有RTL代碼和測(cè)試激勵(lì)列表;(2.8.6)在整個(gè)項(xiàng)目的src_rtl與src_diag目錄下分別建立以器件實(shí)例化名命名的目 錄,從分析器件的XML文件獲得RTL代碼和測(cè)試激勵(lì)文件路徑,把對(duì)應(yīng)的RTL代碼拷 貝到src_rtl中對(duì)應(yīng)目錄下,把測(cè)試激勵(lì)拷貝到src_diag對(duì)應(yīng)目錄下;(2.8.7)當(dāng)實(shí)例化名與器件的名不統(tǒng)一時(shí),在目錄src_rtl中對(duì)應(yīng)的器件目錄下調(diào)用代 碼修改工具修改對(duì)應(yīng)的模塊名和宏定義。
5.如權(quán)利要求1 3之一所述的用于系統(tǒng)芯片集成設(shè)計(jì)的子系統(tǒng)集成方法,其特征在 于所述步驟3)中,代碼修改工具的工作步驟如下(3.1)判斷是否具有宏文件,如果沒有,直接轉(zhuǎn)到步驟(3.4);(3.2)分析宏文件獲得所有的宏定義,同時(shí)在宏文件名前添加前綴 “ instanceName_ ” ;(3.3)分析當(dāng)前目錄下所有RTL代碼中出現(xiàn)的宏,若在宏文件中有定義,則在對(duì)應(yīng) 的宏前面添加前綴"instanceName_";(3.4)分析當(dāng)前目錄下的RTL代碼,得到所有的模塊名;(3.5)在所有RTL代碼中出現(xiàn)的模塊名前添加前綴‘‘instanceNameJ’,同時(shí)在RTL 文件名前添加前綴” instanceName_”。
6.如權(quán)利1 3之一所述的用于系統(tǒng)芯片集成設(shè)計(jì)的子系統(tǒng)集成方法,其特征在于 所述步驟4)中,子系統(tǒng)頂層RTL代碼生成工具的工作步驟如下(4.1)獲得各子系統(tǒng)的頂層模塊名,即子系統(tǒng)在系統(tǒng)中的實(shí)例化名;(4.2)獲得各子系統(tǒng)中實(shí)例化的器件;(4.3) 獲得各子系統(tǒng)中實(shí)例化器件間的連接關(guān)系;(4.4)在工程主目錄的src_rtl目錄下建立top目錄,在該目錄下依次打印出各子系統(tǒng) 頂層模塊的RTL代碼。
7.如權(quán)利4所述的用于系統(tǒng)芯片集成設(shè)計(jì)的子系統(tǒng)集成方法,其特征在于所述步 驟4)中,子系統(tǒng)頂層RTL代碼生成工具的工作步驟如下(4.1)獲得各子系統(tǒng)的頂層模塊名,即子系統(tǒng)在系統(tǒng)中的實(shí)例化名;(4.2)獲得各子系統(tǒng)中實(shí)例化的器件;(4.3)獲得各子系統(tǒng)中實(shí)例化器件間的連接關(guān)系;(4.4)在工程主目錄的src_rtl目錄下建立top目錄,在該目錄下依次打印出各子系統(tǒng) 頂層模塊的RTL代碼。
8. 一種用如權(quán)利要求1所述的用于系統(tǒng)芯片集成設(shè)計(jì)的子系統(tǒng)集成方法實(shí)現(xiàn)的子系統(tǒng) 集成系統(tǒng),其特征在于所述子系統(tǒng)集成系統(tǒng)包括子系統(tǒng)器件XML文件,用于描述子 系統(tǒng)的VLNV信息,總線接口,物理端口,配置參數(shù)、子系統(tǒng)生成器及參考的子系統(tǒng)設(shè) 計(jì)XML文件,在系統(tǒng)芯片集成過程中,把子系統(tǒng)作為一個(gè)普通IP集成,通過VLNV信 息從IP庫(kù)中索引;子系統(tǒng)設(shè)計(jì)XML文件,用于描述子系統(tǒng)中實(shí)例化的IP及IP之間的互連; 子系統(tǒng)生成器,用于根據(jù)配置參數(shù)對(duì)子系統(tǒng)的器件及設(shè)計(jì)XML文件做相應(yīng)的修改; 子系統(tǒng)設(shè)計(jì)XML文件分析工具,用于從子系統(tǒng)XML文件中按步驟提取各部分信息 并保存到腳本的內(nèi)部數(shù)據(jù)結(jié)構(gòu)中,然后調(diào)用子系統(tǒng)頂層RTL代碼生成工具產(chǎn)生子系統(tǒng)的 頂層RTL代碼;代碼修改工具,用于當(dāng)器件的名稱與實(shí)例化名不同時(shí),對(duì)RTL代碼的模塊和宏定義 進(jìn)行修改,把實(shí)例名作為前綴添加到各模塊和宏名之前;子系統(tǒng)頂層RTL代碼生成工具,用于由子系統(tǒng)設(shè)計(jì)XML文件分析工具調(diào)用,根據(jù)子 系統(tǒng)設(shè)計(jì)XML文件分析工具傳遞的信息完成子系統(tǒng)頂層模塊的RTL代碼生成,如果子系 統(tǒng)中嵌著其它子系統(tǒng),則將為各個(gè)子系統(tǒng)生成一個(gè)頂層模塊。
全文摘要
一種用于系統(tǒng)芯片集成設(shè)計(jì)的子系統(tǒng)集成方法,包括如下步驟1)采用IP-XACT標(biāo)準(zhǔn)封裝子系統(tǒng),子系統(tǒng)器件XML文件、子系統(tǒng)設(shè)計(jì)XML文件和子系統(tǒng)生成器;2)采用腳本語(yǔ)言編寫一個(gè)子系統(tǒng)XML文件分析工具,分析子系統(tǒng)中實(shí)例化的器件,同時(shí)迭代地分析子系統(tǒng)中實(shí)例化的其它子系統(tǒng),為每個(gè)實(shí)例化器件建立目錄,并把工作目錄轉(zhuǎn)到對(duì)應(yīng)的目錄下,調(diào)用器件生成器生成器件RTL代碼和測(cè)試激勵(lì)模板;當(dāng)對(duì)子系統(tǒng)完成迭代分析后,生成子系統(tǒng)頂層代碼;3)采用腳本語(yǔ)言編寫代碼修改工具;4)采用腳本語(yǔ)言編寫子系統(tǒng)頂層RTL代碼生成工具。以及提供子系統(tǒng)集成系統(tǒng)。本發(fā)明可配性高、移植性良好、靈活性高、提升集成效率。
文檔編號(hào)G06F17/50GK102012954SQ20101056165
公開日2011年4月13日 申請(qǐng)日期2010年11月29日 優(yōu)先權(quán)日2010年11月29日
發(fā)明者嚴(yán)曉浪, 李春澍, 葛海通, 黃凱 申請(qǐng)人:杭州中天微系統(tǒng)有限公司