本發(fā)明提供一種里德穆勒(即Reed-Muller,RM)邏輯電路功耗和面積優(yōu)化方法,用于解決Reed-Muller邏輯電路的最佳極性搜索問(wèn)題,可以實(shí)現(xiàn)Reed-Muller邏輯電路的功耗和面積優(yōu)化。屬于Reed-Muller邏輯電路優(yōu)化設(shè)計(jì)技術(shù)領(lǐng)域。
背景技術(shù):
任意邏輯函數(shù)均有布爾(即Boolean)邏輯和RM邏輯兩種函數(shù)實(shí)現(xiàn)形式,前者是基于與/或/非(即AND/OR/NOT)的形式實(shí)現(xiàn),而后者是基于與/異或(即AND/XOR)或者或/異或非(即OR/XNOR)的形式實(shí)現(xiàn)。RM邏輯可以用更少的門實(shí)現(xiàn)更多的算術(shù)運(yùn)算,眾所周知,邏輯展開(kāi)式越精簡(jiǎn),電路的實(shí)現(xiàn)就越簡(jiǎn)單,故需要的門電路個(gè)數(shù)就越少,從而節(jié)省大量芯片面積,提高工作頻率,降低功耗。到目前為止,集成電路優(yōu)化設(shè)計(jì)大多基于Boolean邏輯,而基于RM邏輯的優(yōu)化設(shè)計(jì)技術(shù)尚未成熟,但大量研究表明,在功耗、面積、速度和可測(cè)試性等多方面,RM邏輯實(shí)現(xiàn)形式比傳統(tǒng)的Boolean邏輯實(shí)現(xiàn)形式具有較大的優(yōu)勢(shì)。
RM邏輯函數(shù)有兩種主要的表示形式,分別是固定極性Reed-Muller(即Fixed Polarity Reed-Muller,F(xiàn)PRM)和混合極性Reed-Muller(即Mixed Polarity Reed-Muller,MPRM)表達(dá)式。對(duì)于n變量的邏輯函數(shù)有2n種不同的FPRM邏輯表達(dá)式,而n變量的邏輯函數(shù)有3n種不同的MPRM邏輯表達(dá)式,由此可知MPRM邏輯表達(dá)式的極性搜索空間大于FPRM,F(xiàn)PRM的極性搜索空間是MPRM邏輯電路的真子集。
極性是RM邏輯電路的關(guān)鍵因素,直接決定著電路表達(dá)式的繁簡(jiǎn),進(jìn)而影響電路的面積、功耗以及速度方面的性能。RM邏輯電路極性優(yōu)化為在特定的極性空間中搜索某個(gè)(些)極性使其對(duì)應(yīng)電路的某個(gè)(些)性能指標(biāo)最優(yōu),通常稱該極性為最佳極性。功耗和面積是集成電路設(shè)計(jì)和優(yōu)化的兩個(gè)關(guān)鍵的性能指標(biāo),對(duì)于n輸入的AND/XOR或者OR/XNOR電路功耗和面積的最小化,即在2n個(gè)固定極性或者3n個(gè)混合極性中搜索最佳極性。
目前RM邏輯電路極性優(yōu)化中常用的兩種方法有枚舉法和遺傳算法,但枚舉法只適用于小規(guī)模邏輯電路的優(yōu)化,對(duì)大規(guī)模RM邏輯電路優(yōu)化并不適合,主要局限在運(yùn)行時(shí)間上,同時(shí)遺傳算法種群多樣性保持機(jī)制差、收斂速度慢、局部尋優(yōu)能力弱,因此,迫切需要一種更加高效和準(zhǔn)確的新的智能搜索算法。
綜上所述,現(xiàn)有針對(duì)中大規(guī)模RM邏輯電路的功耗和面積優(yōu)化方法存在如下問(wèn)題:
1)隨著RM邏輯電路輸入變量的增加,其極性搜索空間呈指數(shù)增長(zhǎng),單純地使用窮盡搜索算法已經(jīng)不能滿足要求,需要一種高效準(zhǔn)確求解最佳極性的智能搜索算法。
2)傳統(tǒng)的遺傳算法雖然并行性和全局搜索能力強(qiáng),但是容易早熟,陷入局部最優(yōu),并且局部搜索能力差。如果僅僅應(yīng)用傳統(tǒng)的遺傳算法,會(huì)影響最佳極性的搜索效果。
3)現(xiàn)有的中大規(guī)模RM邏輯電路功耗和面積優(yōu)化大都采用標(biāo)準(zhǔn)的遺傳算法,其交叉率和變異率是固定不變的,存在早熟及穩(wěn)定性差的缺點(diǎn);而標(biāo)準(zhǔn)模擬退火算法溫度控制函數(shù)采用固定的溫度衰減系數(shù),其收斂速度慢。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于解決當(dāng)前RM邏輯電路的功耗和面積優(yōu)化問(wèn)題,針對(duì)當(dāng)前RM邏輯電路最佳極性搜索收斂速度慢,容易早熟,陷入局部最優(yōu)的問(wèn)題,提出了一種新的RM邏輯電路的功耗和面積優(yōu)化方法,即RM邏輯電路最佳極性智能搜索方法。并對(duì)本方法中的關(guān)鍵參數(shù)進(jìn)行了自適應(yīng)處理,優(yōu)化了搜索的效果。
本發(fā)明對(duì)標(biāo)準(zhǔn)遺傳算法中采用固定交叉率和變異率的情況進(jìn)行了改進(jìn),不僅對(duì)遺傳因子的變化曲線進(jìn)行了非線性化調(diào)整,而且可以保證改變之后的遺傳因子可以隨著種群進(jìn)化的程度而隨之進(jìn)行相應(yīng)的變化,以此可以使得他們隨著適應(yīng)度的改變而靈活的改變。
本發(fā)明對(duì)人工神經(jīng)網(wǎng)絡(luò)的雙曲正切函數(shù)進(jìn)行了改進(jìn),使其滿足遺傳算法中交叉率和變異率的變化范圍在[0,1]之間的要求,該函數(shù)的變換如下所示:
本發(fā)明采用上述變換后的雙曲正切函數(shù)來(lái)設(shè)計(jì)交叉率和變異率的自適應(yīng)調(diào)整公式,交叉率和變異率的自適應(yīng)調(diào)整公式如下所示:
其中,Pc max和Pc min分別表示交叉率取值的最大值和最小值,Pm max和Pm min表示變異率取值的最大值和最小值;Pc表示遺傳算法的交叉概率,Pm表示遺傳算法的變異概率;favg表示種群的平均適應(yīng)度,fmax表示種群的最大適應(yīng)度,f'表示參與交叉的兩個(gè)體中較大的適應(yīng)度,f表示變異個(gè)體的適應(yīng)度。
本發(fā)明根據(jù)模擬退火算法每次迭代接受新解的數(shù)量對(duì)溫度控制函數(shù)采用不同的降溫系數(shù)。當(dāng)某一溫度下新個(gè)體接收數(shù)目高于界限常數(shù)時(shí),溫度控制函數(shù)控制溫度降低的幅度大一些;當(dāng)某一溫度下新個(gè)體接受的數(shù)目低于界限常數(shù)時(shí),溫度控制函數(shù)控制溫度下降的幅度小一些。其自適應(yīng)調(diào)整公式如下所示:
其中,TK+1表示模擬退火算法中第K+1次的溫度;Tk表示模擬退火算法中第k次的溫度;a1和a2表示降溫系數(shù)(a1的取值大于a2)。N表示模擬退火算法每次迭代接受新解的數(shù)量;θ為一個(gè)界限常數(shù)。
本發(fā)明將遺傳算法中父代的3/5種群的優(yōu)秀個(gè)體和子代的3/5種群的優(yōu)秀個(gè)體挑選出來(lái)形成中間層,對(duì)該中間層進(jìn)行退火操作,選出新的染色體組成新的父代種群,再將新的父代種群應(yīng)用到遺傳算法中產(chǎn)生新的子代。經(jīng)過(guò)數(shù)次迭代后選出最佳極性。
本文提出的新的RM邏輯電路功耗和面積優(yōu)化方法,既保有了遺傳算法的并行性和全局搜索能力,又含有了模擬退火算法局部搜索能力強(qiáng),跳出局部最優(yōu),達(dá)到全局收斂的優(yōu)點(diǎn)。并對(duì)遺傳算法中的交叉率和變異率進(jìn)行了自適應(yīng)調(diào)整,增強(qiáng)了較差個(gè)體的變異能力,克服早熟的缺點(diǎn)。對(duì)模擬退火算法中的溫度控制函數(shù)進(jìn)行自適應(yīng)處理,使得算法更加穩(wěn)健、高效,加快了算法的收斂速度。
綜上所述,本發(fā)明一種RM邏輯電路功耗和面積優(yōu)化方法,它為一種新的RM邏輯電路功耗和面積優(yōu)化方法,由圖1所示,該方法具體步驟如下:
步驟1:實(shí)現(xiàn)布爾邏輯電路向RM邏輯電路的極性轉(zhuǎn)換;
步驟2:進(jìn)行自適應(yīng)遺傳算法產(chǎn)生新的子代種群;
步驟3:采用輪盤賭選擇方式選出父代種群中的3/5優(yōu)秀個(gè)體和子代種群中的3/5優(yōu)秀個(gè)體組成中間種群;
步驟4:對(duì)中間種群進(jìn)行自適應(yīng)模擬退火處理;
步驟5:判斷當(dāng)前的進(jìn)化代數(shù)是否到達(dá)最大進(jìn)化代數(shù),若是,輸出最佳個(gè)體;否則,當(dāng)前進(jìn)化代數(shù)加1,執(zhí)行步驟2到步驟5。
其中,在步驟1中所述的“實(shí)現(xiàn)布爾邏輯電路向RM邏輯電路的極性轉(zhuǎn)換”,主要指采用列表技術(shù)實(shí)現(xiàn)布爾邏輯向RM邏輯電路的轉(zhuǎn)換。設(shè)要從Boolean表達(dá)式轉(zhuǎn)換到極性為m(<mnmn-1...m1>)RM邏輯表達(dá)式,第j個(gè)變量xj的極性為mj,其作法的步驟如下:
步驟11:將n輸入變量的Boolean邏輯函數(shù)表達(dá)式表示成列表的形式,列表欄為1≤j≤n。列表行為<cncn-1...c1>;
步驟12:針對(duì)每一個(gè)變量xj,如果mj=2,則對(duì)xj不采取任何變化。如果mj=0(mj=1),若列表行有<cn…cj+10cj-1…c1>(<cn…cj+11cj-1…c1>),則生成新行<cn…cj+11cj-1…c1>(<cn…cj+10cj-1…c1>);
步驟13:如果新產(chǎn)生的行與列表中的任意一行相等,將這兩行都刪除;否則,就將新行加到原列表行的尾部。對(duì)新產(chǎn)生的每一行都執(zhí)行上述操作;
步驟14:根據(jù)mj大小調(diào)整列表欄的標(biāo)示,如果滿足mj=1,則將列表行<cncn-1...c1>中的mj取反;
其中,在步驟2中所述的“進(jìn)行自適應(yīng)遺傳算法產(chǎn)生新的子代種群”,其作法的步驟如下:
步驟21:生成遺傳算法的父代種群(設(shè)種群個(gè)體數(shù)位N);
步驟22:根據(jù)步驟21得到的RM邏輯電路的極性,依次實(shí)現(xiàn)RM邏輯電路極性間的轉(zhuǎn)換;
步驟23:根據(jù)不同極性下的RM邏輯電路表達(dá)式,依次計(jì)算每個(gè)極性對(duì)應(yīng)的開(kāi)關(guān)活動(dòng)率和面積代價(jià),最終根據(jù)開(kāi)關(guān)活動(dòng)率和面積代價(jià)計(jì)算出每個(gè)極性對(duì)應(yīng)的適應(yīng)度值,并保留最佳個(gè)體;
步驟24:根據(jù)自適應(yīng)公式,計(jì)算交叉率和變異率,執(zhí)行圖1中遺傳算法的選擇、自適應(yīng)交叉和自適應(yīng)變異操作,以生成子代種群;
步驟25:計(jì)算子代中的每個(gè)極性對(duì)應(yīng)的開(kāi)關(guān)活動(dòng)率和面積代價(jià),根據(jù)開(kāi)關(guān)活動(dòng)率和面積代價(jià)計(jì)算出每個(gè)極性對(duì)應(yīng)的適應(yīng)度值,并更新最佳個(gè)體;
其中,在步驟3中所述的“采用輪盤賭選擇方式選出父代種群中的3/5優(yōu)秀個(gè)體和子代種群中的3/5優(yōu)秀個(gè)體組成中間種群”是指根據(jù)種群中個(gè)體的適應(yīng)度值占種群所有個(gè)體適應(yīng)度值之和的比值進(jìn)行選擇,將選擇出的個(gè)體組成中間種群,應(yīng)用于模擬退火過(guò)程。
其中,在步驟4中所述的“對(duì)中間種群進(jìn)行自適應(yīng)模擬退火處理”,其作法的步驟如下:
步驟41:在中間種群中選擇一個(gè)個(gè)體;
步驟42:產(chǎn)生一個(gè)隨機(jī)擾動(dòng),并計(jì)算新?tīng)顟B(tài)的開(kāi)關(guān)活動(dòng)率和面積代價(jià),根據(jù)開(kāi)關(guān)活動(dòng)率和面積代價(jià)計(jì)算出該狀態(tài)的適應(yīng)度值;
步驟43:根據(jù)狀態(tài)接受函數(shù)判斷是否接受新?tīng)顟B(tài):若新?tīng)顟B(tài)的適應(yīng)度值大于當(dāng)前狀態(tài),則接受新?tīng)顟B(tài)為當(dāng)前狀態(tài),否則,以一定概率接收新?tīng)顟B(tài)為當(dāng)前狀態(tài)。若不接受,當(dāng)前狀態(tài)保持不變;
步驟44:判斷是否達(dá)到馬爾科夫鏈的最大值,若達(dá)到最大值,則執(zhí)行步驟45;否則,執(zhí)行步驟42和步驟44;
步驟45:根據(jù)自適應(yīng)公式計(jì)算降溫系數(shù),按照自適應(yīng)溫度冷卻方案控制溫度降低,判斷是否達(dá)到最低溫度:若未達(dá)到最低溫度,則執(zhí)行步驟42到步驟45;否則,執(zhí)行步驟46。
步驟46:判斷是否為中間種群的最后一個(gè)個(gè)體。若是中間種群中最后一個(gè)個(gè)體,則選擇N個(gè)優(yōu)秀個(gè)體生成新的父代種群。否則,執(zhí)行步驟41到步驟46。
通過(guò)以上步驟解決了RM邏輯電路最佳極性搜索問(wèn)題,克服了原有方法收斂速度慢,容易早熟,陷入局部最優(yōu)的缺點(diǎn),增強(qiáng)了收斂性及魯棒性,提高了最優(yōu)解的質(zhì)量,使得RM邏輯電路的優(yōu)化效果更佳。
附圖說(shuō)明
圖1是本發(fā)明所述方法流程圖。
具體實(shí)施方式
按照?qǐng)D1所示,本發(fā)明的具體實(shí)施方案如下:
步驟1:實(shí)現(xiàn)布爾邏輯電路向RM邏輯電路的極性轉(zhuǎn)換;
步驟2:進(jìn)行自適應(yīng)遺傳算法產(chǎn)生新的子代種群;
步驟3:采用輪盤賭選擇方式選出父代種群中的3/5優(yōu)秀個(gè)體和子代種群中的3/5優(yōu)秀個(gè)體組成中間種群;
步驟4:對(duì)中間種群進(jìn)行自適應(yīng)模擬退火處理;
步驟5:判斷當(dāng)前的進(jìn)化代數(shù)是否到達(dá)最大進(jìn)化代數(shù),若是,輸出最佳個(gè)體;否則,當(dāng)前進(jìn)化代數(shù)加1,執(zhí)行步驟2到步驟5。
其中步驟1所述的“實(shí)現(xiàn)布爾邏輯電路向RM邏輯電路的極性轉(zhuǎn)換”,主要指采用列表技術(shù)實(shí)現(xiàn)布爾邏輯向RM邏輯電路的轉(zhuǎn)換。設(shè)要從Boolean表達(dá)式轉(zhuǎn)換到極性為m(<mnmn-1...m1>)RM邏輯表達(dá)式,第j個(gè)變量xj的極性為mj,其作法的步驟如下:
步驟11:將n輸入變量的Boolean邏輯函數(shù)表達(dá)式表示成列表的形式,列表欄為1≤j≤n。列表行為<cncn-1...c1>;
步驟12:針對(duì)每一個(gè)變量xj,如果mj=2,則對(duì)xj不采取任何變化。如果mj=0(mj=1),若列表行有<cn…cj+10cj-1…c1>(<cn…cj+11cj-1…c1>),則生成新行<cn…cj+11cj-1…c1>(<cn…cj+10cj-1…c1>);
步驟13:如果新產(chǎn)生的行與列表中的任意一行相等,將這兩行都刪除;否則,就將新行加到原列表行的尾部。對(duì)新產(chǎn)生的每一行都執(zhí)行上述操作;
步驟14:根據(jù)mj大小調(diào)整列表欄的標(biāo)示,如果滿足mj=1,則將列表行<cncn-1...c1>中的mj取反;
其中步驟2所述的“進(jìn)行自適應(yīng)遺傳算法產(chǎn)生新的子代種群”,其作法的步驟如下:
步驟21:生成遺傳算法的父代種群(設(shè)種群個(gè)體數(shù)位N);
步驟22:根據(jù)步驟21得到的RM邏輯電路的極性,依次實(shí)現(xiàn)RM邏輯電路極性間的轉(zhuǎn)換;
步驟23:根據(jù)不同極性下的RM邏輯電路表達(dá)式,依次計(jì)算每個(gè)極性對(duì)應(yīng)的開(kāi)關(guān)活動(dòng)率和面積代價(jià),最終根據(jù)開(kāi)關(guān)活動(dòng)率和面積代價(jià)計(jì)算出每個(gè)極性對(duì)應(yīng)的適應(yīng)度值,并保留最佳個(gè)體;
步驟24:根據(jù)自適應(yīng)公式,計(jì)算交叉率和變異率,執(zhí)行圖1中遺傳算法的選擇、自適應(yīng)交叉和自適應(yīng)變異操作,以生成子代種群;
步驟25:計(jì)算子代中的每個(gè)極性對(duì)應(yīng)的開(kāi)關(guān)活動(dòng)率和面積代價(jià),根據(jù)開(kāi)關(guān)活動(dòng)率和面積代價(jià)計(jì)算出每個(gè)極性對(duì)應(yīng)的適應(yīng)度值,并更新最佳個(gè)體;
其中,在步驟3中所述的“采用輪盤賭選擇方式選出父代種群中的3/5優(yōu)秀個(gè)體和子代種群中的3/5優(yōu)秀個(gè)體組成中間種群”是指根據(jù)種群中個(gè)體的適應(yīng)度值占種群所有個(gè)體適應(yīng)度值之和的比值進(jìn)行選擇,將選擇出的個(gè)體組成中間種群,應(yīng)用于模擬退火過(guò)程。
其中,在步驟4中所述的“對(duì)中間種群進(jìn)行自適應(yīng)模擬退火處理”,其作法的步驟如下:
步驟41:在中間種群中選擇一個(gè)個(gè)體;
步驟42:產(chǎn)生一個(gè)隨機(jī)擾動(dòng),并計(jì)算新?tīng)顟B(tài)的開(kāi)關(guān)活動(dòng)率和面積代價(jià),根據(jù)開(kāi)關(guān)活動(dòng)率和面積代價(jià)計(jì)算出該狀態(tài)的適應(yīng)度值;
步驟43:根據(jù)狀態(tài)接受函數(shù)判斷是否接受新?tīng)顟B(tài):若新?tīng)顟B(tài)的適應(yīng)度值大于當(dāng)前狀態(tài),則接受新?tīng)顟B(tài)為當(dāng)前狀態(tài),否則,以一定概率接收新?tīng)顟B(tài)為當(dāng)前狀態(tài)。若不接受,當(dāng)前狀態(tài)保持不變;
步驟44:判斷是否達(dá)到馬爾科夫鏈的最大值,若達(dá)到最大值,則執(zhí)行步驟45;否則,執(zhí)行步驟42和步驟44;
步驟45:根據(jù)自適應(yīng)公式計(jì)算降溫系數(shù),按照自適應(yīng)溫度冷卻方案控制溫度降低,判斷是否達(dá)到最低溫度:若未達(dá)到最低溫度,則執(zhí)行步驟42到步驟45;否則,執(zhí)行步驟46。
步驟46:判斷是否為中間種群的最后一個(gè)個(gè)體。若是中間種群中最后一個(gè)個(gè)體,則選擇N個(gè)優(yōu)秀個(gè)體生成新的父代種群。否則,執(zhí)行步驟41到步驟46。
需要指明的是,本發(fā)明有多種實(shí)施例,在不背離本發(fā)明精神及其實(shí)質(zhì)的情況下,熟悉本領(lǐng)域的技術(shù)人員當(dāng)可根據(jù)本發(fā)明作出各種相應(yīng)的改變和變形,但這些相應(yīng)的改變和變形都應(yīng)屬于本發(fā)明所附的權(quán)利要求的保護(hù)范圍。