基于ATL技術(shù)原理圖解析器的開發(fā)
實(shí)現(xiàn)的原理圖解析器使用ATL技術(shù),將解析器包裝成一個(gè)標(biāo)準(zhǔn)的COM組件。該解析器主要針對(duì)Mentor公司的ViewDraw原理圖設(shè)計(jì)工具,可對(duì)ViewDraw設(shè)計(jì)生成的原理圖文件在不依賴ViewDraw的條件下進(jìn)行分析,并將其底層數(shù)據(jù)進(jìn)行格式轉(zhuǎn)換和整理歸納,然后以接口形式提供給客戶程序使用。
1 原理圖通用數(shù)據(jù)結(jié)構(gòu)
在原理圖設(shè)計(jì)中,現(xiàn)在國(guó)外有很多種EDA工具,每種設(shè)計(jì)工具都有自己的底層數(shù)據(jù)組織結(jié)構(gòu)。原理圖解析器采用了一種通用數(shù)據(jù)結(jié)構(gòu)來兼容ViewDraw、EDIF200和Concept這3種原理圖設(shè)計(jì)的數(shù)據(jù)結(jié)構(gòu)。文中在解析器前端采用的數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換模塊只針對(duì)ViewDraw的底層原理圖,解析器在工作時(shí)通過數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換模塊把ViewDraw的底層原理圖數(shù)據(jù)轉(zhuǎn)換為通用數(shù)據(jù)結(jié)構(gòu)保存在內(nèi)存中供解析器使用。
2 COM組件技術(shù)與ATL技術(shù)簡(jiǎn)介
COM即組件對(duì)象模型,是由Microsoft提出的組件標(biāo)準(zhǔn),是一種以組件為發(fā)布單元的對(duì)象模型,它不僅提供了組件之間進(jìn)行交互的規(guī)范,也提供了實(shí)現(xiàn)交互的環(huán)境。組件之間的接口是組件軟件的核心,因?yàn)榻涌谑墙M件之間進(jìn)行通信的基礎(chǔ)。因此,軟件組件應(yīng)該遵循統(tǒng)一的標(biāo)準(zhǔn),在同一軟件中的組件必須使用同樣的接口標(biāo)準(zhǔn)才能保證組件之間可以進(jìn)行通信。COM就是這樣一個(gè)為大家一致推崇的組件標(biāo)準(zhǔn)。組件對(duì)象之間進(jìn)行交互的環(huán)境不依賴于任何特定的語(yǔ)言,所以COM也可以是不同語(yǔ)言協(xié)作開發(fā)的一種標(biāo)準(zhǔn)。
ATL(Active Template Library)活動(dòng)模板庫(kù),是Visual c++提供的一套基于模板的C++類庫(kù),利用這些模板庫(kù),可以建立小巧、快捷的COM組件程序。ATL使用了C++中的模板、多繼承等高級(jí)技術(shù),甚至還用到了STL。在Visual C++的編譯環(huán)境中,對(duì)ATL的支持非常強(qiáng)大,所以采用ATL技術(shù)可以方便地實(shí)現(xiàn)COM組件的開發(fā),但又不用過多的去考慮COM的底層技術(shù),這樣極大地提高了COM組件的開發(fā)效率。
3 系統(tǒng)構(gòu)成
原理圖解析器,主要以數(shù)據(jù)格式轉(zhuǎn)換模塊和原理圖通用數(shù)據(jù)結(jié)構(gòu)模塊,為系統(tǒng)構(gòu)成的基礎(chǔ),按通用數(shù)據(jù)結(jié)構(gòu)格式存儲(chǔ)的原理圖數(shù)據(jù)為數(shù)據(jù)資源,并在ATL技術(shù)平臺(tái)下對(duì)這些數(shù)據(jù)資源進(jìn)行規(guī)劃和組織。解析器最終以COM組件的形式向外部客戶程序提供服務(wù)。解析器提供了21個(gè)接口,81個(gè)方法,這些接口與原理圖的主要構(gòu)成對(duì)象一一對(duì)應(yīng)。整個(gè)系統(tǒng)以下方式進(jìn)行組織和運(yùn)行的:
(1)數(shù)據(jù)格式轉(zhuǎn)換模塊將原理圖進(jìn)行數(shù)據(jù)格式轉(zhuǎn)換并以通用數(shù)據(jù)結(jié)構(gòu)的格式存儲(chǔ)于內(nèi)存中,這個(gè)功能主要由工程接口IFvdProj實(shí)現(xiàn);
(2)按照接口的功能需求對(duì)原理圖的數(shù)據(jù)資源進(jìn)行歸納和整理,這里主要處理了器件、模塊、管腳、網(wǎng)絡(luò)(普通網(wǎng)絡(luò)和總線網(wǎng)絡(luò))、網(wǎng)絡(luò)段、連接等,還有這些物理實(shí)體的位置、標(biāo)識(shí)及屬性等;
(3)對(duì)各種異常情況在組件內(nèi)部進(jìn)行了處理,并將相應(yīng)的錯(cuò)誤代碼以函數(shù)值的形式返回,客戶端可以用捕獲COM異常的方法來獲取這些錯(cuò)誤代碼。系統(tǒng)結(jié)構(gòu),如圖l所示。
4 原理圖解析器接口組織調(diào)用關(guān)系描述
原理圖通用數(shù)據(jù)結(jié)構(gòu)本身有著龐大復(fù)雜的組織結(jié)構(gòu),如果直接把通用數(shù)據(jù)結(jié)構(gòu)以COM接口的形式提供給客戶端,會(huì)使原理圖解析器接口規(guī)模過大,信息零散且組織規(guī)律性較差。因此,必須對(duì)數(shù)據(jù)資源的提供方式進(jìn)行規(guī)劃。原理圖解析器提供了,如圖2所示的數(shù)據(jù)資源組織方式。
該圖列出了原理圖解析器的21個(gè)接口和主要的調(diào)用關(guān)系,其中實(shí)線箭頭表示從原理圖組織結(jié)構(gòu)上講由上層對(duì)象調(diào)用下層對(duì)象,虛線箭頭表示由下層對(duì)象調(diào)用上層對(duì)象。以器件和網(wǎng)絡(luò)為核心介紹接口對(duì)數(shù)據(jù)資源的組織關(guān)系。
(1)原理圖――網(wǎng)絡(luò):由工程接口進(jìn)入,生成目標(biāo)原理圖的通用數(shù)據(jù)結(jié)構(gòu),再調(diào)用單頁(yè)原理圖接口,由單頁(yè)原理圖接口中的GetNets()方法或GetAllNets()方法可以獲取網(wǎng)絡(luò)(包括普通網(wǎng)絡(luò)和總線網(wǎng)絡(luò))集接口IFvdNets,通過該接口的Item()方法可以獲取單個(gè)網(wǎng)絡(luò)對(duì)應(yīng)的接口。
(2)原理圖――器件:由工程接口進(jìn)入,生成目標(biāo)原理圖的通用數(shù)據(jù)結(jié)構(gòu),再調(diào)用單頁(yè)原理圖接口,由單頁(yè)原理圖接口中的GetComps()方法或GetAllComps()方法可以獲取器件(包括普通器件和模塊)集合接口IFvdComps,通過該接口的Item()方法可以獲取單個(gè)器件對(duì)應(yīng)的器件接口IFvdComp。
(3)由下層對(duì)象向上層對(duì)象的訪問:例如可以通過一個(gè)器件管腳的接口IFvdCmpPin來獲得該管腳所在的器件接口IFvdComp,而通過接口IFvd―Comp又可獲取該器件所在的原理圖頁(yè)的接口IFvdSheet,通過接口IFvdSheet又可訪問該原理圖頁(yè)的所有資源。在此需要說明,對(duì)于某一頁(yè)確定的原理圖,不管通過哪種途徑來獲取其對(duì)應(yīng)的接口,這個(gè)接口可以提供的原理圖資源總是相同的,這也是符合客觀實(shí)際的。
由以上分析可以看出,原理圖解析器的這種接口組織調(diào)用關(guān)系支持了各種形式的對(duì)原理圖資源的訪問,同時(shí)也保持了信息的準(zhǔn)確性和完整性。
另外,為了方便用戶使用,在原理圖接口IF―vdSchs和單頁(yè)原理圖接口IFvdSheet的方法中還提供了器件和網(wǎng)絡(luò)的查找功能:對(duì)于器件支持Refdes(器件的引用屬J陛定義)和全路徑uID(器件在原理理圖中的唯一的標(biāo)識(shí))查找;對(duì)于網(wǎng)絡(luò)支持Label值查找和全路徑UID的查找。
評(píng)論