一種基于文本樹(shù)形結(jié)構(gòu)模型的fpga拓?fù)湫畔⒌墨@取方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于系統(tǒng)防護(hù)領(lǐng)域,涉及FPGA工程防護(hù)代價(jià)的計(jì)算,可用于劃分FPGA模塊 和查找任意模塊內(nèi)的可變層拓?fù)潢P(guān)系。
【背景技術(shù)】
[0002] 航天領(lǐng)域中的電子器件常常會(huì)受到空間高能粒子的沖擊而發(fā)生電路邏輯狀態(tài)的 改變,這種現(xiàn)象被稱(chēng)為單粒子效應(yīng)。單粒子效應(yīng)會(huì)對(duì)航天器的安全造成極大的威脅,因此人 們對(duì)此十分關(guān)注。為了減輕單粒子效應(yīng)對(duì)系統(tǒng)造成的影響,需要對(duì)目標(biāo)系統(tǒng)進(jìn)行適當(dāng)?shù)姆?護(hù),這其中涉及到FPGA工程防護(hù)代價(jià)的計(jì)算。
[0003] 為了計(jì)算FPGA模塊的防護(hù)代價(jià),往往需要先對(duì)FPGA工程進(jìn)行分割,再分析模塊間 的拓?fù)潢P(guān)系?,F(xiàn)有的方法通常是用ISE軟件來(lái)分析FPGA工程模塊間的拓?fù)湫畔ⅲ沁@種 方法存在下述兩點(diǎn)不足:1. ISE軟件只能以圖像的形式描述模塊間的拓?fù)湫畔?,不能以?件的形式輸出拓?fù)湫畔?,且ISE軟件內(nèi)信息量太大,存在不相關(guān)信息,不夠便捷;2. ISE軟件 的模塊拓?fù)潢P(guān)系圖描述的是從頂層模塊開(kāi)始到底層模塊結(jié)束的模塊間的拓?fù)湫畔?。?dāng)用戶(hù) 需要查看非頂層模塊內(nèi)部的拓?fù)湫畔r(shí)就要先找到待分析模塊在拓?fù)鋱D中的位置,在這個(gè) 過(guò)程中用戶(hù)容易受到不相關(guān)功能模塊信息的干擾。當(dāng)用戶(hù)想要查看功能模塊指定層數(shù)的拓 撲信息時(shí)就要判斷每一條拓?fù)湫畔⑺鶎俚膶訑?shù),在這個(gè)過(guò)程中用戶(hù)容易受到不相關(guān)層數(shù)信 息的干擾。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明解決的技術(shù)問(wèn)題是:克服現(xiàn)有技術(shù)的不足,提供了一種基于文本樹(shù)形結(jié)構(gòu) 模型的FPGA拓?fù)湫畔⒌墨@取方法,通過(guò)建立描述例化模塊間拓?fù)潢P(guān)系的文本樹(shù)形結(jié)構(gòu)模 型,并基于文本樹(shù)形結(jié)構(gòu)模型查找一個(gè)FPGA工程的頂層模塊和所有例化模塊間的層級(jí)關(guān) 系,實(shí)現(xiàn)了FPGA工程模塊關(guān)系圖的文本信息抽象。
[0005] 本發(fā)明的技術(shù)方案是:一種基于文本樹(shù)形結(jié)構(gòu)模型的FPGA拓?fù)湫畔⒌墨@取方法, 步驟如下:
[0006] - :劃分FPGA工程的功能模塊
[0007] 步驟1:建立功能模塊,所述功能模塊的代碼段格式包括三個(gè)部分,即第一部分為 以關(guān)鍵字library為標(biāo)志的庫(kù)引用部分,第二部分為以關(guān)鍵字entity為標(biāo)志的實(shí)體部分, 第三部分為以關(guān)鍵字architecture為標(biāo)志的結(jié)構(gòu)體部分;
[0008] 步驟2:以建立的功能模塊為最小單位依次對(duì)FPGA工程進(jìn)行劃分;依次將劃分后 的功能模塊代碼保存于對(duì)應(yīng)的子FPGA工程中,子FPGA工程以功能模塊代碼段中實(shí)體部分 的名稱(chēng)命名;
[0009] 二:建立文本樹(shù)形結(jié)構(gòu)模型
[0010] 步驟3:建立描述FPGA工程模塊間拓?fù)潢P(guān)系的模型,命名為"文本樹(shù)形結(jié)構(gòu)模型";
[0011] 步驟3-1:劃分文本樹(shù)形結(jié)構(gòu)的頂點(diǎn),分別為top頂點(diǎn)和common頂點(diǎn);
[0012] 步驟3-2 :設(shè)定top頂點(diǎn)代表FPGA工程的頂層模塊,設(shè)定common頂點(diǎn)代表例化模 塊;設(shè)定top頂點(diǎn)為第一層頂點(diǎn),common頂點(diǎn)為第m層頂點(diǎn),m>l ;
[0013] 步驟3-3 :設(shè)定一個(gè)例化模塊A在對(duì)應(yīng)的功能模塊代碼中例化另一個(gè)例化模塊B, 則上述兩個(gè)例化模塊之間的關(guān)系為父子例化模塊關(guān)系,其中例化模塊A為父例化模塊,例 化模塊B為子例化模塊;則第n層頂點(diǎn)為上一層某頂點(diǎn)的子例化模塊,n>2 ;
[0014] 步驟3-4 :設(shè)定文本樹(shù)形結(jié)構(gòu)格式,其中top頂點(diǎn)存儲(chǔ)的信息為頂層模塊名稱(chēng),第 二層common頂點(diǎn)存儲(chǔ)的信息為該頂點(diǎn)對(duì)應(yīng)的例化模塊名稱(chēng)、該頂點(diǎn)對(duì)應(yīng)的功能模塊名稱(chēng)、 該層模塊名稱(chēng);第n層common頂點(diǎn)存儲(chǔ)的信息為該頂點(diǎn)對(duì)應(yīng)的例化模塊名稱(chēng)、該頂點(diǎn)對(duì)應(yīng) 的功能模塊名稱(chēng)、該例化模塊的父例化模塊名稱(chēng)、該父例化模塊對(duì)應(yīng)的功能模塊名稱(chēng);
[0015] 三:基于文本樹(shù)形結(jié)構(gòu)模型查找指定模塊的可變層拓?fù)湫畔?br>[0016] 步驟4 :基于步驟2生成的子FPGA工程,查找所有功能模塊內(nèi)的例化信息;
[0017] 步驟4-1 :查找并記錄子FPGA工程中某一個(gè)功能模塊內(nèi)的例化信息;
[0018] 步驟4-1-1 :查找例化語(yǔ)句,具體如下;
[0019] 讀功能模塊代碼,在結(jié)構(gòu)體下的關(guān)鍵字"begin"和關(guān)鍵字"end"之間查找以":" 為標(biāo)志的語(yǔ)句,將":"后的詞和步驟2建立的功能模塊名稱(chēng)一一比對(duì),如果有相同名稱(chēng)則停 止比對(duì),該條語(yǔ)句為關(guān)于其他功能模塊的例化語(yǔ)句;":"前為例化模塊名稱(chēng),":"后為對(duì)應(yīng) 的功能模塊名稱(chēng);存儲(chǔ)例化模塊名稱(chēng)、對(duì)應(yīng)的功能模塊名稱(chēng);如果沒(méi)有相同名稱(chēng)則執(zhí)行步 驟4-1-2 ;其中所述的詞為一串連續(xù)的不包括空格和":"的字符;
[0020] 步驟4-1-2 :按步驟4-1-1的方法查找下一個(gè)例化語(yǔ)句,直到分析過(guò)該功能模塊的 所有例化語(yǔ)句后執(zhí)行步驟4-1-3 ;
[0021] 步驟4-1-3:為該功能模塊創(chuàng)建與它同名的文本文件,用于保存功能模塊內(nèi)的例 化信息;
[0022] 步驟4-2 :使用步驟4-1的方法,查找并存儲(chǔ)所有功能模塊內(nèi)的例化信息;
[0023] 步驟5 :查找并存儲(chǔ)功能模塊的可變層拓?fù)湫畔ⅲ?br>[0024] 基于文本樹(shù)形結(jié)構(gòu)模型以步驟4生成的文本文件為資源,獲取一個(gè)功能模塊的任 意層拓?fù)湫畔ⅲ?br>[0025] 步驟5-1 :指定待查找的功能模塊的名稱(chēng)和層數(shù);假設(shè)功能模塊名稱(chēng)為T(mén),層數(shù)為 k ;
[0026] 步驟5-2 :基于步驟3建立的文本樹(shù)形結(jié)構(gòu)模型查找功能模塊T的k層拓?fù)湫畔ⅲ?br>[0027] 步驟5-2-1 :確定并記錄文本樹(shù)形結(jié)構(gòu)的第一層頂點(diǎn);
[0028] 設(shè)功能模塊T為頂層模塊,則T對(duì)應(yīng)文本樹(shù)形結(jié)構(gòu)中的top頂點(diǎn),按步驟3建立的 文本樹(shù)形結(jié)構(gòu)獲取top頂點(diǎn)的相關(guān)信息;
[0029] 步驟5-2-2 :查找并記錄文本樹(shù)形結(jié)構(gòu)的第二層頂點(diǎn);
[0030] 基于步驟4生成的與top頂點(diǎn)同名的文本文件確定第二層頂點(diǎn);該文本文件內(nèi)記 錄的全部例化模塊為第二層的全部頂點(diǎn);根據(jù)該文本文件內(nèi)存儲(chǔ)的例化模塊名稱(chēng)、對(duì)應(yīng)的 功能模塊名稱(chēng)、top頂點(diǎn)名稱(chēng),確定第二層全部頂點(diǎn)的相關(guān)信息;
[0031] 步驟5-2-3 :查找并記錄文本樹(shù)形結(jié)構(gòu)的第p層頂點(diǎn),2〈p彡k ;
[0032] 依次讀取上一層頂點(diǎn)相關(guān)信息中"父例化模塊對(duì)應(yīng)的功能模塊"信息對(duì)應(yīng)的同名 文本文件;文本文件內(nèi)記錄的全部例化模塊為第P層的頂點(diǎn);根據(jù)文本文件內(nèi)存儲(chǔ)的例化 模塊名、對(duì)應(yīng)的功能模塊名稱(chēng)、被讀取的文本文件名稱(chēng)、被讀取文本文件對(duì)應(yīng)的上一層頂點(diǎn) 名稱(chēng),確定第P層頂點(diǎn)的相關(guān)信息;
[0033] 步驟5-2-4 :重復(fù)步驟5-2-3,直到p = k或全部第p層頂點(diǎn)相關(guān)信息中"p層頂點(diǎn) 對(duì)應(yīng)的功能模塊名稱(chēng)"信息的同名文本文件都為空;
[0034] 步驟5-3 :若最終p = k,則表明功能模塊T的實(shí)際拓?fù)湫畔訑?shù)大于等于k,最終 輸出文件內(nèi)的拓?fù)湫畔⒂衚層;若最終p〈k,則表明功能模塊T的實(shí)際拓?fù)湫畔訑?shù)小于k, 最終輸出文本文件內(nèi)的拓?fù)湫畔橹付üδ苣K的可變層拓?fù)湫畔ⅰ?br>[0035] 本發(fā)明與現(xiàn)有技術(shù)相比的優(yōu)點(diǎn)在于:
[0036] 1.本方法通過(guò)構(gòu)建的文本樹(shù)形結(jié)構(gòu)模型,實(shí)現(xiàn)了復(fù)雜多層次的FPGA工程模塊拓 撲關(guān)系劃分和文本信息抽象,提高了模塊拓?fù)潢P(guān)系劃分效率。
[0037] 2.本方法利用構(gòu)建的文本樹(shù)形結(jié)構(gòu)模型,實(shí)現(xiàn)對(duì)FPGA制定工程模塊可變層拓?fù)?圖的文本信息提取,從而有效指導(dǎo)系統(tǒng)單粒子軟錯(cuò)誤防護(hù)設(shè)計(jì)。
【附圖說(shuō)明】
[0038] 圖1為本發(fā)明方法流程圖。
【具體實(shí)施方式】
[0039] 本發(fā)明的核心思想是對(duì)FPGA工程進(jìn)行模塊劃分,并建立描述模塊間拓?fù)潢P(guān)系的 文本樹(shù)形結(jié)構(gòu)模型,隨后基于文本樹(shù)形結(jié)構(gòu)模型完成對(duì)拓?fù)潢P(guān)系信息的文本信息抽象,最 終以文本文件存儲(chǔ)并輸出模塊拓?fù)潢P(guān)系信息。
[0040] 參考圖1,本發(fā)明一種基于文本樹(shù)形結(jié)構(gòu)模型的FPGA拓?fù)潢P(guān)系劃分方法,其實(shí)現(xiàn) 步驟如下
[0041] 第一部分:劃分FPGA工程的功能模塊
[0042] 步驟1 :建立功能模塊,所述功能模塊的代碼段格式包括三個(gè)部分,即第一部分為 以關(guān)鍵字library為標(biāo)志的庫(kù)引用部分,第二部分為以關(guān)鍵字entity為標(biāo)志的實(shí)體部分, 第三部分為以關(guān)鍵字architecture為標(biāo)志的結(jié)構(gòu)體部分,功能模塊代碼段的格式如表1所 示;
[0043]
[0044] 表1.功能模塊的代碼段格式
[0045] 步驟2 :以建立的功能模塊為最小單位依次對(duì)FPGA工程進(jìn)行劃分;依次將劃分后 的功能模塊代碼保存于對(duì)應(yīng)的子FPGA工程中,子FPGA工程以功能模塊代碼段中實(shí)體部分 的名稱(chēng)命名;
[0046] 第二部分:建立文本樹(shù)形結(jié)構(gòu)模型
[0047] 步驟3 :建立描述FPGA工程模塊間拓?fù)潢P(guān)系的模型,命名為"文本樹(shù)形結(jié)構(gòu)模型";
[0048] 步驟3-1:劃分文本樹(shù)形結(jié)構(gòu)的頂點(diǎn),分別為top頂點(diǎn)和common頂點(diǎn);
[0049] 步驟3-2:設(shè)定top頂點(diǎn)代表FPGA工程的頂層模塊,設(shè)定common頂點(diǎn)代表例化模 塊;設(shè)定top頂點(diǎn)為第一層頂點(diǎn),common頂點(diǎn)為第m層頂點(diǎn),m>l ;
[0050] 步驟3-3 :設(shè)定一個(gè)例化模塊A在對(duì)應(yīng)的功能模塊代碼中例化另一個(gè)例化模塊B, 則上述兩個(gè)例化模塊之間的關(guān)系為父子例化模塊關(guān)系,其中例化模塊A為父例化模塊,例 化模塊B為子例化模塊;則第n層頂點(diǎn)為上一層某頂點(diǎn)的子例化模塊,n>2 ;
[0051] 步驟3-4 :設(shè)定文本樹(shù)形結(jié)構(gòu)格式,其中top頂點(diǎn)存儲(chǔ)的信息為頂層模塊名稱(chēng),第 二層common頂點(diǎn)存儲(chǔ)的信息為該頂點(diǎn)對(duì)應(yīng)的例化模塊名稱(chēng)、該頂點(diǎn)對(duì)應(yīng)的功能模塊名