美章網 資料文庫 ABC對輸入MV文件解決方案范文

    ABC對輸入MV文件解決方案范文

    本站小編為你精心準備了ABC對輸入MV文件解決方案參考范文,愿這些范文能點燃您思維的火花,激發您的寫作靈感。歡迎深入閱讀并收藏。

    ABC對輸入MV文件解決方案

    論文關鍵字:abcMV文件時序綜合

    論文摘要:ABC是一款時序邏輯電路的綜合和驗證的軟件系統。ABC為查找表和標準塊整合了基于AIGs(這個圖只有與門和非門)的邏輯優化和基于技術映射的最優延遲DAG(無回路有向圖)。MV是一種為描述時序層次電路系統而設計的語言,它能以層次形式來描述電路系統。ABC提供了對輸入mv文件的支持,但其對MV文件的時序支持有限,本文討論了其解決方案

    1電路邏輯綜合的一些常用方法

    1.1使用SIS優化

    輸入.mv文件,經過mv2blif軟件處理后,產生.blif文件,然后送入SIS綜合軟件處理,生成優化后的blif文件,如下圖所示:

    SHAPE\*MERGEFORMAT

    圖1.1

    1.2使用ABC優化

    輸入.mv文件,經過mv2blif軟件處理后,產生.blif文件,然后送入ABC處理,生成優化后的blif文件,如下圖所示:

    SHAPE\*MERGEFORMAT

    圖1.2

    1.3對比兩種方法

    使用SIS優化已經是比較陳舊的方法,現在更多的是使用ABC進行優化。我們知道,數據結構和算法是一個軟件能否成功應用的核心,SIS在近幾年一些最新的改變中沒能提供一個良好的編程環境,比如對技術映射和延遲的整合。而且SIS在處理大型電路顯得力不從心,效率低下。而ABC使用了一種更為簡單的數據結構AIGs(由兩輸入的與門和非門組成的多層邏輯網),使得電路綜合和驗證的質量和運行時間方面都得到很大改進。ABC提供了時序和組合的綜合算法,其現在版本在優化延遲和啟發式的縮小電路面積方面已能優化包含100K門和10K時序元素的門級設計。

    但ABC本身就能輸入.mv文件,我們能否省去Mv2blif的步驟,讓ABC直接讀入mv,從而也能減少錯誤,提高效率,因為再好的軟件或多或少總會存在一些錯誤,少用一個軟件意味著我們能減少更多的錯誤。所以下面就是我們想要得到的版本:

    SHAPE\*MERGEFORMAT

    2研究中發現問題及其原因

    2.1ABC中采用的網絡介紹

    在讀入特定電路設計文件經過軟件處理,就形成當前的網絡。ABC通過一系列對當前網絡的轉換來處理這個電路設計類似于SIS。ABC中的網絡有其特定類型,包括NetList,LogicNetwork和AIG網絡,下面簡要介紹各個網絡。

    2.1.1NetList網絡

    如果編程者在輸入文件中加入一個新的類型,想成功通過解析就必須熟悉NetList網絡的表示形式,因為解析一個輸入文件,NetList網絡是必然被創建的。NetList可以說是一個基本原始的網絡表示形式,它與輸入文件的設計一一對應,包含nets,logicnodes,latches和PI/PO端點。每個net有一個唯一的名字。Nodes和latches是由它們所驅動的net來區分。每個nodes和latches只有一個輸出。每個PI端點、Node和latch驅動一個net。同樣每個latch、PO端點和功能結點(有一個或多個輸入)由一個net驅動。一個net能驅動有僅只有一個latch、node或者PO端點。例如,一個net不能同時驅動一個node和一個latch。在NetList中,net與net之間不能相連,非net結點與非net結點也不能相連,只能通過net相連。功能結點采用SOPs或者AIGs來表示。

    2.1.2LogicNetwork網絡

    一個logicnetwork實際上是一個netlist去掉nets后的網絡,SIS就是用logicnetwork網絡所表示。在ABC,默認的表示是AIG網絡,但logicnetwork是一種很有效的中間過渡網絡表示形式。在logicnetwork網絡中只保留了PI/PO/latch/latch-input/latch-output這幾種數據結構的名字,丟棄了內部node的名字。因為ABC采用AIG進行深層次的綜合時,一些AIG操作很難保存AIG結點的名字,比如重寫。在logicnetwork中,nodes能與另一個nodes直接相連。PI/PO端點與node直接相連。一個PO端點與一個PI端點如果有一樣的名字和功能,能直接相連。一個PI端點可能有兩個扇出但沒有扇入。一個PO端點只有一個輸入但沒有輸出。端點并不是一個邏輯node也沒有邏輯功能。指向端點的指針集合不能通過一個內部node的DFS遍歷方法來獲取。在logicnetwork網絡中,指向PI/PO端點的指針集合儲存在相應的數組。

    2.1.3AIG網絡

    AIG網絡是ABC中所采用網絡的內部主要表示形式。AIG是ABC所特有的,其每個node是兩輸入的與門和一個扇入/扇出邊,并且這個邊有一個可選屬性指示是否對該邊進行取

    反。在構造AIG的同時,AIG能被壓縮通過使用一級結構散列,它使得每一對邊最多只能做為一個結點輸入。這樣,結構散列就能保證:對于每個與門結點,就沒有其它帶相同子結點的與門;沒有僅一個輸入的結點;每個與門的層次就能反應輸入的層次。所有這些,使得操作AIGs比較操作Logicnetworks要快很多。

    2.2發現問題及其根本原因

    在研究的過程中,我們發現會產生ABC輸入mv文件經過優化后的blif文件的輸入輸出的個數與原先讀入mv文件的輸入輸出個數的不一致問題。這是因為ABC輸入mv文件時,主要經過了兩步處理。輸入mv時,ABC把mv文件轉成了NetList,這一步是完全正確的,但在NetList轉成AIG時,出現了問題,ABC把latch的輸入當成了主輸出,把latch的輸出當成了主輸入,從而造成了有幾個latch,就多了幾個輸出輸入。

    筆者認為根本原因在于,ABC對mv文件中的時序電路支持得有限,在將時序轉化為組合的過程中,也就是在NetList轉成AIG時,采用了不正確的方式去除了Latch,從而造成了有幾個latch,就多了幾個輸出輸入。

    3問題的解決方案及生成blif

    3.1解決問題

    在嘗試直接把NetList網絡轉成AIG網絡時,來處理這個問題,都歸于失敗。最后不得不考慮在生成的中間網絡上找解決方法。

    首先,ABC處理mv文件的過程如下:

    SHAPE\*MERGEFORMAT

    然后,我們查看了ABC處理blif文件的過程,如下:

    SHAPE\*MERGEFORMAT

    經過討論,我們試想能不能構造出如下的一種處理方法來解決問題:

    經過研究,我們發現這條路是可行的。但在解決的過程中我們發現,.mv文件生成的NetList網絡與.blif文件生成的NetList網絡存在不同。在前面Mv2blif軟件的實現方法中尋求靈感,我們試著將這兩個相同類型網絡轉化,最后我們成功解決了這個問題,從而實現了ABC對.mv文件能直接進行處理,并且解決了輸入輸出個數與原先的輸入輸出個數的不一致的問題。最終實現了如下版本:

    SHAPE\*MERGEFORMAT

    3.2生成blif文件

    ABC中讀入mv文件后形成AIG網絡,要想輸出blif文件,可進行如下操作:

    SHAPE\*MERGEFORMAT

    4算法實現及舉例

    對網絡中的功能node進行轉換,以下是轉換node從AIG功能到BDD功能的算法,對于網絡只需要用一個遍歷,把其所有node轉換即可。

    DdNode*cuddBddAndRecur(DdManager*manager,DdNode*f,DdNode*g)

    {

    DdNode*F,*fv,*fnv,*G,*gv,*gnv;

    DdNode*one,*r,*t,*e;

    unsignedinttopf,topg,index;

    statLine(manager);//循環次數加1

    one=DD_ONE(manager);//返回manger->one,即常數結點1

    //得到結點的正則狀態,如果結點取過反,則返回沒有取反的狀態

    F=Cudd_Regular(f);

    G=Cudd_Regular(g);

    if(F==G){

    &nbs

    p;if(f==g)return(f);

    elsereturn(Cudd_Not(one));//Cudd_Not為取反

    }

    if(F==one){

    if(f==one)return(g);

    elsereturn(f);

    }

    if(G==one){

    if(g==one)return(f);

    elsereturn(g);

    }

    /*檢查緩存*/

    if(F->ref!=1||G->ref!=1){

    //如果已經有對f和g取與的情況,則直接返回

    r=cuddCacheLookup2(manager,Cudd_bddAnd,f,g);if(r!=NULL)return(r);

    }

    topf=manager->perm[F->index];

    topg=manager->perm[G->index];

    /*計算因子*/

    if(topf<=topg){

    index=F->index;

    fv=cuddT(F);

    fnv=cuddE(F);

    if(Cudd_IsComplement(f)){

    fv=Cudd_Not(fv);

    fnv=Cudd_Not(fnv);

    }

    }else{

    index=G->index;

    fv=fnv=f;

    }

    if(topg<=topf){

    gv=cuddT(G);

    gnv=cuddE(G);

    if(Cudd_IsComplement(g)){//判斷g結點是否取過反

    gv=Cudd_Not(gv);//對gv結點取反

    gnv=Cudd_Not(gnv);

    }

    }else{

    &nbs

    p;gv=gnv=g;

    }

    t=cuddBddAndRecur(manager,fv,gv);

    e=cuddBddAndRecur(manager,fnv,gnv);

    if(t==e){

    r=t;

    }else{

    if(Cudd_IsComplement(t)){

    //如果已經存在以Cudd_Not(t),Cudd_Not(e)為孩子的結點,則返回,如沒有,則重//新創建一個,并且把index賦值于它。

    r=cuddUniqueInter(manager,(int)index,Cudd_Not(t),Cudd_Not(e));

    r=Cudd_Not(r);//對r結點取反

    }else{

    r=cuddUniqueInter(manager,(int)index,t,e);

    }

    }

    if(F->ref!=1||G->ref!=1)

    cuddCacheInsert2(manager,Cudd_bddAnd,f,g,r);//加入緩存機制

    return(r);

    }/*endofcuddBddAndRecur*/

    這里根據算法,我們舉例說明結點功能為AIG,表達式為a*b的情況,其轉換成BDD功能,如下所示:

    圖4AIG:表示a*b的功能BDD:表示a*b的功能

    5總結

    本文簡要介紹了傳統的邏輯綜合方法,并介紹了NetList、LogicNetwork與AIG的網絡形式,在實現從MV文件經過ABC處理并優化生成BLIF文件的過程中,分析了過程中產生問題的根本原因,并解決了ABC對讀入MV文件的不足,是通過轉換了其讀入MV文件過程中的網絡形式來解決這個問題。最后給出了結點從AIG到BDD功能的轉換算法,和一個簡單的實例。

    參考文獻

    [1]TheVISGroup.BLIF-MV.UniversityofBerkeley,May1996.

    [2]MVSISGroup.MVSISManual.UCBerkeley,February2001.

    [3]RÜDIGEREBENDT,GÖRSCHWINFEY,ROLFDRECHSLER.ADVANCEDBDDOPTIMIZATION.UniversityofBremen,2005.

    [4]BerkeleyLogicSynthesisandVerificationGroup.ABC:ASystemforSequentialSynthesisandVerification.December2005Release.www-cad.eecs.berkeley.edu/~alanmi/abc.

    [5]J.CongandY.Ding,“FlowMap:Anoptimaltechnologymappingalgorithmfordelayoptimizationinlookup-brbasedFPGAdesigns”,IEEETrans.CAD,vol.13(1),January1994,pp.1

    -12.

    [6]IWLS2005Benchmarks./iwls2005/benchmarks.html.

    [7]S.Yang.Logicsynthesisandoptimizationbenchmarks.Version3.0.Tech.Report.MicroelectronicsCenterofNorthCarolina,1991.

    [8]TheSISGroup.BerkeleyLogicInterchangeFormat(BLIF).UniversityofBerkeley,

    July1992.

    [9]JoachimPistorius,MikeHutton,AlanMishchenko,RobertBrayton.BenchmarkingMethodandDesignsTargetingLogicSynthesisforFPGAs.UniversityofBerkeley,2007.

    主站蜘蛛池模板: 久久精品国产AV一区二区三区 | 日本免费一区二区三区最新vr| 午夜视频久久久久一区| 无码一区二区三区| 国产婷婷色一区二区三区| 国产一区二区三精品久久久无广告 | 亚洲色偷精品一区二区三区| 真实国产乱子伦精品一区二区三区 | 精品熟人妻一区二区三区四区不卡| 国产亚洲综合精品一区二区三区| 99精品一区二区三区无码吞精| 自慰无码一区二区三区| 亚洲制服中文字幕第一区| 中文字幕日韩欧美一区二区三区 | 日韩少妇无码一区二区三区| 无码国产精成人午夜视频一区二区 | 一区二区三区四区视频在线| 亚洲一区二区三区首页| 亚洲国产精品一区二区九九 | 成人免费区一区二区三区| 精品乱人伦一区二区| 视频一区在线播放| 立川理惠在线播放一区| 亚洲AV无码一区二区三区牛牛| 杨幂AV污网站在线一区二区| 国产伦精品一区二区三区免费下载 | 熟妇人妻系列av无码一区二区| 欧美日韩综合一区二区三区| 亚洲一区二区三区91| 久久一区二区三区精品| 日本一区二区不卡在线| 亚洲视频在线一区| 91久久精品午夜一区二区| 91无码人妻精品一区二区三区L| 精品欧洲AV无码一区二区男男| 国产一区二区三区91| 99久久人妻精品免费一区| 亚洲蜜芽在线精品一区| 69福利视频一区二区| 久久精品黄AA片一区二区三区 | 韩国女主播一区二区|