專利名稱:電工電子類虛擬實驗快速自動布線方法
技術領域:
本發(fā)明屬于虛擬實驗技術領域,具體是一種電工電子類虛擬實驗平臺中的快速自動布線方法。
背景技術:
虛擬實驗是以現(xiàn)代教育理論為指導,以計算機仿真技術、多媒體技術和網(wǎng)絡技術為依托而建立的一種新型實驗教學系統(tǒng)。它利用計算機模擬真實的實驗環(huán)境,通過信息網(wǎng)絡共享分布式的實驗設備,為實驗教學提供了一種全新的教學模式。電工電子類虛擬實驗 (數(shù)字電路與邏輯、模擬電子技術、微機原理、單片機原理及應用、可編程邏輯器件)是用虛擬的實驗平臺來代替真實的實驗設備平臺,本質上是硬件實驗環(huán)境的軟件模擬。實驗過程中,用導線連接各個獨立的器件,最終使各個器件成為一個整體實驗電路的布線操作,是計算機虛擬實驗系統(tǒng)重要、不可或缺的組成部分。目前現(xiàn)有的系統(tǒng)大多采用手動布線的方法, 即由實驗者從布線起點出發(fā)逐步根據(jù)鼠標的位置指定當前布線通過的路線,重復這一過程直到目標點到達布線終點,就完成了一次布線操作。手動布線的優(yōu)點是實現(xiàn)簡單,布線過程完全由用戶控制,對用戶來說更加直觀,但其存在以下多個方面的不足(1)布線速度慢、耗時多。在布線起點和終點兩點間需要由操作者手工逐段畫出路徑,布線前需要先觀察確定一條大致的繞開所有器件障礙的布線路徑,布線的過程中也要時刻觀察以確定當前布線的路徑段確保繞開所有障礙和沖突。這樣在實驗元器件較多、實驗平臺較為復雜的情況下需要耗費許多不必要的時間和精力。(2)布線路徑較長。手動布線操作一般不能保證所布的路線是最短路線,當實驗器件較多、實驗臺布局較復雜時布線結果大多較雜亂,占據(jù)實驗臺大部分的位置。(3)布線結果不夠整齊美觀。手動布線難以對所有的布線情況考慮周全,經(jīng)常會出現(xiàn)不整齊美觀的現(xiàn)象(如線條間的間距可能大小不一),會從總體上影響對設計結果的觀察,從總體上破壞了版面的設計,更嚴重的是可能會引起電信號的互相干擾。(4)布線操作較為復雜。手動布線操作過于繁瑣,使得實驗者不能將注意力集中在實驗方案和實驗程序的設計上,影響虛擬實驗平臺的預期教學效果。由于手動布線存在以上所述種種問題,為了適應計算機輔助設計發(fā)展的需要,自動布線相關技術應運而生。經(jīng)過多年的研究與發(fā)展,計算機自動布線問題的理論、技術和方法都有了巨大的進步,并在電子輔助設計中扮演著越來越重要的作用。實際的自動布線的方法中,用戶只需要指定布線起點和終點,即可由系統(tǒng)自動生成一條連接這兩點間的布線路徑。自動布線的效果取決于所采用的布線算法,并沒有固定的解決模式,其可以歸結為對需要布線的平臺的搜索以尋找一條最合適的路徑的問題,它本質上屬于NP完全問題,目前并沒有一個通用的解決方案,實際中一般按照系統(tǒng)需求選擇合適的布線算法滿足自身系統(tǒng)的需要。布線問題與最短路徑問題存在許多相似之處。首先,布線操作是在固定的實驗平臺區(qū)域上進行的,最短路徑的求解也是在一個固定的區(qū)域內進行的;其次,布線時需要實驗者先指定一個端點作為布線開始端點,再指定另一個端點作為布線結束端點。起始端點可看作最短路徑問題中兩個頂點中的一個,結束端點則可相應的看作是最短路徑問題中兩個頂點中的另外一個;最后,布線的目標是要找出連接布線開始端點和結束端點的一條路徑,該路徑必須繞過臺面上所有的元器件,并且路徑只能走橫線或豎線而不能走斜線。而最短路徑問題是要從一個頂點開始尋找一條路徑繞過所有權值非常大的點(類似于障礙物),最后達到另一頂點。關于最短路徑問題的求解,現(xiàn)有的方法可以歸納為兩類迷宮 (Maze-running)算法和線搜索(Line-searching)算法。(1)迷宮算法。迷宮(maze)是一個矩形區(qū)域,它僅有一個入口和一個出口,迷宮內部包含有多個不能穿越的障礙物。迷宮問題是指尋找一條路徑,該路徑從迷宮入口進入,沿著通道行走, 同時要求繞開所有不能通行的障礙。行走的路線只能是水平或者垂直的,不能沿著斜線行進也不能跳躍,即只能沿著當前位置方格的上下左右四個相鄰的方格移動,直到走到出口為止。1959年Moore提出迷宮最短路徑算法,1961年Lee首次將Moore提出的迷宮最短路徑算法成功用于解決自動布線問題。Lee氏算法的基本思想可以描述為波的傳播過程的模擬。在一個存在障礙的湖面上,若需尋找連接A、B兩點的最小路徑,可以在A點投下一枚石子,然后觀察所引起的水波傳播情況。假定“水波”傳播時沒有能量損失,當遇到障礙物時,“水波”會產(chǎn)生反射,最先到達的目標點波所經(jīng)過的路徑必定是一條最短距離。而且只要兩點間有通路存在,則自A點擴散出去的波一定能傳播到達B點,這個過程可以在計算機上描述。(2)線搜索算法。迷宮算法在時間和空間上較低效,因此人們提出線搜索算法錯誤!未找到引用源。,其基本思想是先構造一個代表障礙和結點位置的圖,然后在圖中尋找最短路徑得到原網(wǎng)格點中的最短路徑。線探索法不用存儲各網(wǎng)點信息,只須存儲障礙物的外形尺寸和連接線寬度及端點坐標。在基于網(wǎng)格的線探索中,探索線端點及回溯處理時的步長都以網(wǎng)格為單位計算;在無網(wǎng)格線探索方案中,坐標以最小設計精度為單位,探索線端點則根據(jù)障礙的幾何尺寸及探索線與障礙之間的允許最小間隙而計算,回溯處理以線間最小距離為步長, 并結合障礙的幾何尺寸靈活調整探索起點及探索方向。通常線探索法使用雙向搜索法,例如Higtower算法,其算法描述如下生成兩個空表Slist和Dlist,并用于存放源點和目標點產(chǎn)生的逃避線,該線不能穿越障礙區(qū)如果 Slist與Dlist中線段相交則結束。否則交替使用Slist和Dlist中線段上的“逸出點”產(chǎn)生新的直線,新的Slist(Dlist)要與原Slist(Dlist)相交。若探索結束則可以通過從目標點回溯到源點找到一條路徑。為了提高搜索的效率可以對搜索的順序給定一些規(guī)則或與網(wǎng)格相結合,比較有代表性的是Mikami算法和J · Soukup算法。上述方法在一定范圍內可以達到自動布線的目的,然而,在指定區(qū)域內實現(xiàn)兩點的連接并不困難,但當問題規(guī)模擴大,或者加上多種線約束之后,布線問題的難度也隨之上升。比如實際系統(tǒng)中,經(jīng)常存在著多個點組成的網(wǎng)絡,這個網(wǎng)絡中鄰近的點之間的信號傳輸距離需要滿足某些條件的限制如信號線不能交叉,或者某些區(qū)域的器件障礙導致該區(qū)域不能布線,同時布線還應考慮當前布線可能對之后的線網(wǎng)布局造成的影響等。此時如何從眾多可行的布線方案中找出一種最合理的解決辦法使問題變得更加復雜。一般布線問題的最優(yōu)路線均為最短路線,故大多布線問題的求解都可以歸結于最短路徑求解問題。最短路徑問題是圖論的重要課題之一,歸結為求加權圖G =< V,E,W >中兩給定頂點之間的最短路徑,即在出發(fā)點和目標點之間找出總代價最低的路徑,其關鍵點是尋找到合適的路徑尋優(yōu)算法。路徑尋優(yōu)算法一方面要完成探索最低代價的路徑,另一方面要做到盡可能快、盡可能少占用內存,即盡可能降低算法的時間復雜度和空間復雜度。通常求最短路徑是在一個連通圖中進行,各個節(jié)點由有向或無向的連線連接,而障礙物群中最短路徑指的是圖中兩點通過一條折線或曲線相連,不與任一障礙物發(fā)生碰撞,且這條折線或曲線的路徑長度或者代價最小。經(jīng)典的最短路徑問題只涉及單目標優(yōu)化,??紤]獲得最短的花費時間或距離。但單一的目標函數(shù)往往很難準確描述實際問題,因為復雜的現(xiàn)實問題一般有多個目標函數(shù)需要優(yōu)化,這樣引出了多目標最短路徑問題。多目標的引入使得問題的求解與單目標條件下有所不同,由于各個目標之間通常都存在著沖突,針對某個目標具有優(yōu)勢的解對于另一個目標來說可能并不是優(yōu)化的,這樣造成多目標最短路徑問題一般不存在單一的優(yōu)化解,而是一個優(yōu)化解集(也稱為Pareto解集),相應的問題難度也隨之大大增加。(3) Dijkstra (迪杰斯特拉)算法Dijkstra(迪杰斯特拉)算法是典型的單源最短路徑算法,用于計算一個節(jié)點到其他所有節(jié)點的最短路徑。主要特點是以起始點為中心向外層層擴展,直到擴展到終點為止。Dijkstra算法是很有代表性的最短路徑算法,在很多專業(yè)課程中都作為基本內容有詳細的介紹,如數(shù)據(jù)結構,圖論,運籌學等等。Dijkstra—般的表述通常有兩種方式,一種用永久和臨時標號方式,一種是用OPEN,CLOSE表的方式。
發(fā)明內容
本發(fā)明提供一種電工電子類虛擬實驗平臺中的快速自動布線方法,采用交互式布線法,綜合考慮盡量減少連線路徑長度和連線拐角數(shù),盡量利用連線空間,在不影響可讀性的前提下盡量利用已有路徑,可以保證連線清晰,疏密合理,電路圖的整體結構趨于最佳, 從而提高虛擬實驗系統(tǒng)的用戶體驗。為實現(xiàn)本發(fā)明的目的,采用的技術方案如下步驟(1)初始化實驗平臺信息,具體為(1. 1)讀入實驗臺布局,獲取平臺上已經(jīng)布有的器件以及已有連線等信息,獲取實驗平臺寬度和高度屬性,以建立布線數(shù)據(jù)結構。(1. 2)將實驗臺區(qū)域劃分成m*n個相等大小的網(wǎng)格,為這些網(wǎng)格建立一個m*n的 Dijkstra表,每個網(wǎng)格對應表中相同位置的一項。每個網(wǎng)格抽象為一個DijkstraNode類型的對象,它包含Dijkstra算法所需要的所有信息,包括路徑長度distance、該網(wǎng)格處的權值weight、該網(wǎng)格是否已被計算 beConsidered、網(wǎng)格點坐標coordinate和該點在路徑上的方向track。步驟⑵生成導線起點的源路徑。利用步驟⑴建立的平臺信息,找到某個起點 (一般是實驗平臺上的接線柱)到另一個接線柱的布線路徑,具體為(2. 1)建立布線起點的Dijkstra表。
建立一個先進先出隊列UncalcList來處理所有未被初始化的點,從布線起點開始將其右、左、上、下四個點依次加入到隊列中,再以相同方法考慮隊列中第一個點,將其相鄰且未被考慮的點加入隊列尾部。將隊列第一個點的DijkstraNode信息依照該點的實際情況完成賦值,該點信息處理完畢后就將其自身從UncalcList隊列中移除。如此反復下去直到從導線起點出發(fā),平臺上所有網(wǎng)格點均按照上述方法處理完畢。步驟(2. 2)尋找布線起點對應的單源路徑。將當前終點加入數(shù)組并暫存終點坐標,再用這個坐標減去該點處DijkstraNode 的track值,回退到路徑上前一個點的坐標。比較兩個點的track,若他們的橫坐標或縱坐標之一不相同則說明導線的運動方向發(fā)生了變化,將變化點的坐標加入到路徑數(shù)組中,找到一個拐點。這樣重復上面的過程,直到回退點的track值與起點的軌跡值相等,就從終點回找到了起點,從而完成路徑的生成。此步驟中當前布線終點即為確定布線起點后當前鼠標所在位置的網(wǎng)格點,不一定要求是接線柱,目的是生成一個預覽路徑方便用戶隨時觀察布線情況。步驟(3)利用起點和終點生成路徑結果。只利用導線起點的Dijkstra表得到的并不是兩個接線柱間的最短的路徑,完成一次布線操作還需要以導線的終點接線柱為初始點再建立一個新的Dijkstra表,該表的結構和創(chuàng)建過程與之前討論的結構相同。分析兩表可知,兩張表存在一個唯一的公共點使得該點到起點和終點同時具有最短距離,故需要同時遍歷兩張表直到找到這個點。將該公共點作為導線起點接線柱和終點接線柱的公共終點,分別利用步驟O)中的算法找到兩條路徑,將這兩條路徑組合起來按順序存入路徑數(shù)組中就得到了最終的導線路徑。為了隨時能夠跟隨用戶鼠標的位置獲得當前的預覽路徑,由起點生成的單源路徑一般是按整個平臺的信息來初始化的,這時已經(jīng)得到了大量的路徑信息,但這些信息并不能保證是兩個接線柱間的路徑是最優(yōu)(最短)的。從終點出發(fā)建立Dijkstra表的過程若也按全平臺的信息進行運算會導致計算量過大,影響算法的執(zhí)行速度;同時,獲得起點和終點后意味著自動布線的大體區(qū)域可以在算法初始時獲得,即使該區(qū)域被用盡,也只需要按一定的策略逐步擴展區(qū)域使得自動布線有路徑可走。因此,為了減小運算量、提高布線速度,可以根據(jù)起點和終點位置獲得布線區(qū)域,在此區(qū)域內執(zhí)行自動布線算法,若在區(qū)域內無法找到合適的路徑,則逐步擴大搜索區(qū)域,直到找到路徑為止;擴展區(qū)域最大為實驗平臺的全布線區(qū)域。步驟設定實驗平臺的導線信息。按照前述步驟獲得每條導線路徑后,還需要記錄下每條導線經(jīng)過路徑的形狀,以便正確設定實驗平臺的全局導線信息。每個形狀可以用一個整型常量表示,這些形狀均定義為全局常量。根據(jù)這些信息即可由步驟(5)獲取導線形狀。步驟( 獲取導線形狀。布線過程中路徑的行進方向只有從左到右、從右到左、從上到下、從下到上四種,由此可得到多種導線的形狀,復雜的形狀都是由簡單形狀有序疊加得到的。(5. 1)獲取當前布線通過該點產(chǎn)生的導線形狀。主要方法是根據(jù)當前路徑方向和路徑上下一個點的路徑方向做邏輯判斷,從所有可能的組合中選取匹配的形狀值。該步驟需要建立兩個路徑方向值和形狀值的映射關系來支持,具體應從路徑起點出發(fā),依次按照此映射關系一次得到路徑上每個點的導線形狀值。起點和終點的形狀值作為特殊值處理, 并不需要經(jīng)過映射,直接獲取即可。(5.2)將原有導線形狀和新導線形狀組合成新的形狀狀態(tài)。該步驟即是步驟 (5. 1)獲取的當前步驟產(chǎn)生的新形狀與實驗平臺上相關網(wǎng)格位置中原有的形狀組合,得到該條布線路徑上的最終形狀,組合規(guī)則也是一個映射關系。每次完成一條導線的布線,就用該導線路徑上所有網(wǎng)格點新得到的形狀狀態(tài)代替舊的形狀狀態(tài)。該步驟主要目的是隨時更新平臺信息,確保狀態(tài)信息的一致性。步驟(6)存儲導線對象的數(shù)據(jù)結構和信息。實驗臺上成功添加一條導線后,不僅要畫出導線的圖形,還要存儲必要的相關信息供以提供給其他功能模塊使用。保存信息結束,即完成了一次自動布線操作。電工電子類虛擬實驗系統(tǒng)允許用戶在虛擬實驗環(huán)境中實現(xiàn)設計、搭建和演示實驗結果等主動實驗功能,在實驗方案搭建的過程中,器件間的導線連接是必不可少的重要環(huán)節(jié),導線連接時采用的布線算法是衡量實驗方案圖好壞的一個決定性因素。布線過程是實驗者主動實驗的過程,一方面他們希望在布線過程中隨時預覽導線的路徑并在每條導線連接后立刻看到布線結果,另一方面走線路徑要能夠快速自動生成,還要滿足正確、易讀、美觀和有效利用實驗平臺空間等要求。本發(fā)明的方法既保證了在用戶容許的時間內完成布線操作,又能夠在用戶交互的同時自動完成尋找路徑、設定信息、存儲導線信息等相關操作, 用戶只需利用鼠標點擊指定布線起點并拖動鼠標即可觀察到路徑隨著鼠標位置的變化而變化,方便直觀。點擊布線終點后即生成最終布線路徑,結果美觀。該方法使用面向對象的思想設計和實現(xiàn),具有較強的平臺通用性,可運行于多種平臺上。本發(fā)明對經(jīng)典的最短路徑求取方法進行改進,以經(jīng)典Dijkstra算法為基礎,對對布線實驗臺上的各個邏輯網(wǎng)格點進行初始化以確定它們的權值大小,然后網(wǎng)格點為基礎構建一個鄰接矩陣來存放這些網(wǎng)格點的信息,最后根據(jù)上述基礎找到起點和終點間路徑上的所有中間點,將起點、所有中間點以及終點依次連接起來就構成了一條布線路徑。由于上述特點, 本發(fā)明在虛擬實驗平臺的實際應用中具有很好的結果,可按照用戶的實驗需求完成自動布線,并能在用戶可接受的時間內搜索到較好的路徑,滿足虛擬實驗平臺實時性的要求。
圖1為建立導線起點Dijkstra表的流程圖; 圖2為利用單個Dijkstra表生成導線路徑的流程圖; 圖3為自動布線方法的流程圖; 圖4為布線模塊功能結構圖。
具體實施例方式下面結合附圖和具體實施例對本發(fā)明作進一步詳細說明。數(shù)字邏輯虛擬實驗平臺的操作狀態(tài)切換是通過改變其工作模式實現(xiàn)的,在布線模式下選擇導線顏色后,就可以在實驗臺區(qū)域內進行布線,包括導線的添加、刪除和移動等操作,布線模塊功能結構圖如圖4。(1)確定操作狀態(tài)為布線狀態(tài),選取導線顏色,即開始進入布線操作,并初始化平臺信息。(1. 1)讀入實驗臺布局。根據(jù)實驗平臺上的實驗方案搭建情況,獲取平臺上已經(jīng)布有的器件以及有連線等信息,數(shù)字邏輯虛擬實驗平臺區(qū)域默認大小設定為1500*1500象素。(1.2)設定每個網(wǎng)格大小為12*12象素,這樣將實驗臺劃分為125*125個相等大小的網(wǎng)格。建立一個125*125的Dijkstra表,該表為一個二維數(shù)組,每個元素都是一個 DijkstraNode類型數(shù)據(jù),為表述方便,下文中的坐標均指的是相對網(wǎng)格的坐標,如象素點 (12,12)的坐標為(1,1)。將其屬性distance置0,權值weight置0,所有點初始都未計算, beConsidered置為false,網(wǎng)格點坐標coordinate為所有網(wǎng)格的相對坐標,點在路徑上的方向track置為(0,0)。根據(jù)Dijkstra算法的思想,將實驗操作面板上有障礙的點和不能布線的點(一般是布線后會產(chǎn)生不符合布線規(guī)則形狀的點)的權值設為無窮大,無窮大可以用計算機所能表示的最大int型變量值OxlFFFFFFF表示。另外,為了盡可能減少拐角, 給拐角處的權值額外增加一定的量,即在原有權值的基礎上加上一個固定的增量。下表1 給出了五種權值的設計以及它們的意義。表1權值設計表
權利要求
1.一種電工電子類虛擬實驗平臺中的快速自動布線方法,包括如下步驟(1)初始化實驗平臺信息,具體為(11)讀入實驗臺布局,獲取平臺上已經(jīng)布有的器件以及已有連線信息,獲取實驗平臺寬度和高度,以建立布線數(shù)據(jù)結構;(1. 2)根據(jù)獲取的寬度和高度,將實驗臺區(qū)域劃分成m*n個相等大小的網(wǎng)格,為這些網(wǎng)格建立一個m*n的Di jkstra表,每個網(wǎng)格對應表中相同位置的一項,每個網(wǎng)格抽象為一個 DijkstraNode類型的對象,其中m,η均為正整數(shù);(2)利用步驟(1)建立的實驗平臺信息,找到任一起點到任意一個接線柱的布線路徑, 生成導線起點的源路徑;(3)利用起點和終點生成路徑結果,具體為建立一個新的Di jkstra表,同時遍歷兩張Di jkstra表,在找到兩張表中使得到起點和終點同時具有最短距離的公共點;將該公共點作為導線起點接線柱和終點接線柱的公共終點,分別利用步驟找到兩條路徑,將這兩條路徑組合起來按順序存入路徑數(shù)組中就得到了最終的導線路徑;(4)獲得導線形狀,完成布線操作根據(jù)上述步驟獲得每條導線路徑,并記錄下每條導線經(jīng)過路徑的形狀,從而獲得導線形狀,完成布線操作。
2.根據(jù)權利要求1所述的方法,其特征在于,所述的步驟( 中生成導線起點的源路徑的具體過程為(2. 1)建立布線起點的Dijkstra表建立一個先進先出隊列來處理所有未被初始化的點,從布線起點開始將其右、左、上、 下四個點依次加入到該隊列中,再以相同方法考慮隊列中第一個點,將與該第一個點相鄰且未被考慮的點加入隊列尾部,對該隊列第一個點的DijkstraNode信息賦值,該第一個點信息處理完畢后就將其自身從隊列UncalcList中移除,如此循環(huán)反復直至平臺上所有網(wǎng)格點均處理完畢;(2. 2)尋找布線起點對應的單源路徑將路徑上當前終點加入一個數(shù)組中并暫存終點坐標,再用這個終點坐標減去該點處 DijkstraNode類型的track值,回退到路徑上前一個點的坐標,比較兩個點的track,若他們的橫坐標或縱坐標之一不相同則說明導線的運動方向發(fā)生了變化,將變化點的坐標加入到路徑數(shù)組中,找到一個拐點,重復上面的過程,直到回退點的track值與起點的軌跡值相等,就從終點回找到了起點,從而完成源路徑的生成。
3.根據(jù)權利要求1或2所述的方法,其特征在于,所述步驟(4)具體過程為(4. 1)首先,建立兩個路徑方向值和形狀值的映射關系;然后,從路徑起點出發(fā),依次按照映射關系得到路徑上每個點的導線形狀值;最后,根據(jù)當前路徑方向和路徑上下一個點的路徑方向,從所有可能的組合中選取匹配的形狀值,獲取當前布線通過該點產(chǎn)生的導線形狀(4. 2)將原有導線形狀和新導線形狀組合成新的形狀狀態(tài)當前步驟產(chǎn)生的新形狀與實驗平臺上相關網(wǎng)格位置中原有的形狀組合,得到該條布線路徑上的最終形狀。
4.根據(jù)權利要求1-3之一所述的方法,其特征在于,每個DijkstraNode類型的對象包含Dijkstra算法所需要的所有信息,包括路徑長度distance、該網(wǎng)格處的權值weight、該網(wǎng)格是否已被計算beConsidered、網(wǎng)格點坐標coordinate和該點在路徑上的方向track。
全文摘要
本發(fā)明公開了一種應用于電工電子類虛擬實驗平臺的自動布線算法,包括(1)初始化實驗平臺信息;(2)利用步驟(1)建立的實驗平臺信息,找到任一起點到任意一個接線柱的布線路徑,生成導線起點的源路徑;(3)利用起點和終點生成路徑結果;(4)獲得導線形狀,完成布線操作。該方法不僅克服了手動布線方式操作繁瑣和布線結果雜亂的缺點,同時保證了一定的用戶交互體驗,不僅保證了虛擬實驗操作要求的實時性,在布線過程中的時間消耗和空間消耗都比其他傳統(tǒng)方法小,而且操作方式具有方便直觀的特點。該方法具有較強的平臺通用性和可移植性,可運行于多種平臺上。
文檔編號G09B9/00GK102346795SQ20111027659
公開日2012年2月8日 申請日期2011年9月16日 優(yōu)先權日2011年9月16日
發(fā)明者于俊清, 冉啟皓, 劉宇環(huán), 唐九飛, 歐陽星明 申請人:華中科技大學