蔡 寧 楊永利 王方宇 陳顯任
(珠海方正科技多層電路板有限公司,廣東 珠海 519000)
Gerber格式文件作為印制電路板(PCB)行業(yè)圖像數(shù)據(jù)轉(zhuǎn)換的標(biāo)準(zhǔn)格式被廣泛應(yīng)用。隨著電子制造業(yè)智能化的迅速發(fā)展,電子產(chǎn)品的交貨周期越來越短,品質(zhì)要求越來越高,PCB生產(chǎn)廠商在轉(zhuǎn)換客戶原始PCB設(shè)計(jì)數(shù)據(jù)-Gerber文件時(shí),自動(dòng)化操作顯得尤為重要。一方面要求能自動(dòng)識別不同PCB設(shè)計(jì)軟件導(dǎo)出的每層Gerber文件名稱;另一方面,要求能自動(dòng)轉(zhuǎn)換Gerber文件中圖形的形狀大小和位置信息等層別屬性。InSight PCB軟件提供了自動(dòng)導(dǎo)入Gerber資料的平臺,相比傳統(tǒng)的人工導(dǎo)入方式,能有效避免因?yàn)楣馊δ0逡?guī)則的判斷錯(cuò)誤以及層別屬性識別錯(cuò)誤導(dǎo)致圖像文件不能正確轉(zhuǎn)換,帶來品質(zhì)隱患。InSight PCB軟件實(shí)現(xiàn)自動(dòng)化操作的關(guān)鍵在于能通過正則表達(dá)式匹配PCB設(shè)計(jì)軟件導(dǎo)出的Gerber文件原始名稱,本文中正則表達(dá)式在InSight PCB軟件中的應(yīng)用技術(shù),能有效自動(dòng)識別客戶原始Gerber文件的類型并自動(dòng)定義層別屬性,替換手動(dòng)導(dǎo)入Gerber資料的作業(yè)模式,為實(shí)現(xiàn)PCB生產(chǎn)廠商Gerber資料導(dǎo)入的自動(dòng)化、減少人力成本、降低品質(zhì)風(fēng)險(xiǎn),提高生產(chǎn)效率提供幫助。
PCB數(shù)據(jù)從設(shè)計(jì)轉(zhuǎn)換到生產(chǎn)的通用格式為Gerber文件格式,一般包含鉆帶圖層資料、線路圖層資料、銑帶圖層資料和封裝圖層資料等。Gerber文件作為一種國際標(biāo)準(zhǔn)的圖像數(shù)據(jù)轉(zhuǎn)換格式,包含RS-274-D、RS-274-X和GerberX2三種,其中RS-274-D文件因?yàn)椴荒芏x不規(guī)則多邊形圖像文件,而且文件中的圖像數(shù)據(jù)和形狀大小數(shù)據(jù)是分開的兩個(gè)不同文件,已經(jīng)被淘汰。目前被廣泛使用的是Gerber RS-274-X格式,該格式文件集成了圖像的形狀大小和坐標(biāo)數(shù)據(jù)。InSight PCB可對RS-274-X格式文件自動(dòng)識別和解析,并自動(dòng)設(shè)置對應(yīng)的層別屬性。RS-274-X的Gerber文件的命名組成由圖像層名加后綴名組成,因?yàn)镻CB設(shè)計(jì)軟件的不同,后綴名多為.art、.gbr、.gbx、.gdo、.lgx、.pho等。較為常見的圖像層名如表1所示。
InSight PCB中的正則表達(dá)式是對Gerber文件名中的字符串(包括普通字符和特殊字符)進(jìn)行識別和屬性定義的一種邏輯公式,用事先定義好的一些特定字符及這些特定字符的組合,組成一個(gè)“規(guī)則字符串”,這個(gè)“規(guī)則字符串”用來表達(dá)對Gerber文件名字符串的一種過濾邏輯。InSight PCB中的正則表達(dá)式是一種文本模式,該模式描述在識別Gerber文件名稱時(shí)要匹配的一個(gè)或多個(gè)字符串。表2列舉在InSight PCB規(guī)則中應(yīng)用較多的正則表達(dá)式。
InSight PCB在自動(dòng)導(dǎo)入Gerber資料時(shí),軟件平臺會對Gerber文件中的每個(gè)文件進(jìn)行掃描識別,通過用戶自定義的正則表達(dá)式規(guī)則定義該圖層資料的屬性(層面向、類型、正負(fù)極性)等,然后根據(jù)層別屬性定義層名。軟件中應(yīng)用的正則表達(dá)式規(guī)則分為層別屬性定義和層名定義兩個(gè)模塊,在運(yùn)行過程中先執(zhí)行層別屬性定義的正則表達(dá)式規(guī)則(見圖1),然后再執(zhí)行層名定義的正則表達(dá)式規(guī)則(見圖2)。
表1 常見的圖像層名
表2 正則表達(dá)式
圖1 層別屬性定義的正則表達(dá)規(guī)則
圖2 層名定義的正則表達(dá)規(guī)則
層別屬性定義的正則表達(dá)式規(guī)則分系統(tǒng)自動(dòng)創(chuàng)建和用戶自定義兩種類型:
(1)應(yīng)用系統(tǒng)自動(dòng)創(chuàng)建的正則表達(dá)式規(guī)則:若沒有用戶自定義的正則表達(dá)式規(guī)則,InSight PCB軟件對導(dǎo)入的Gerber文件名進(jìn)行解析后記錄相關(guān)層名、層面向、層類型及正負(fù)極性等屬性并建立起對應(yīng)關(guān)系,然后將該種對應(yīng)關(guān)系加入到系統(tǒng)自動(dòng)生成的規(guī)則文件里,最終創(chuàng)建一份正則表達(dá)式規(guī)則模板在系統(tǒng)中,在下次導(dǎo)入Gerber文件時(shí),若該Gerber文件名與系統(tǒng)已存在的正則表達(dá)式規(guī)則模板相匹配,則會自行調(diào)用。系統(tǒng)自動(dòng)創(chuàng)建的正則表達(dá)式規(guī)則文件語法描述效果(見圖3)。
(2)應(yīng)用用戶編寫的自定義正則表達(dá)式規(guī)則:通過InSight PCB可應(yīng)用的正則表達(dá)式規(guī)則語法,對規(guī)則語句進(jìn)行重新編寫,以達(dá)到自由控制規(guī)則限制和范圍的目的。圖4所示為應(yīng)用用戶編寫的自定義正則表達(dá)式規(guī)則自行編寫的規(guī)則文件。相比系統(tǒng)自動(dòng)創(chuàng)建的正則表達(dá)式規(guī)則,該文件結(jié)構(gòu)及語法更清晰,且匹配效果優(yōu)于系統(tǒng)自動(dòng)創(chuàng)建的正則表達(dá)式規(guī)則。
(1)要實(shí)現(xiàn)Bottom面防焊圖層的層名和屬性定義,需編寫如下兩行正則表達(dá)式規(guī)則。
第一行:Gerber274X *****^sold(er)?(-)?(botm|bot|bottom).art$
圖3 應(yīng)用系統(tǒng)自帶的正則表達(dá)式規(guī)則文件
圖4 應(yīng)用用戶自定義的正則表達(dá)式規(guī)則文件
第二行:->solder_mask-bot board solder_mask positive bottom 0
(2)正則表達(dá)式內(nèi)容解析。
第一行內(nèi)容主要負(fù)責(zé)匹配文件名,其具體含義如下:
Gerber274X:限制文件必須是RS-274-X格式
^sold;文件名開頭4個(gè)字符必須是sold
(er)?:若sold字符后有er兩個(gè)字符,則組成solder,否則組成sold
(botm|bot|bottom):在括號內(nèi)的字符匹配一個(gè),按照上述例子,則匹配出botm
.art$:文件的后綴名必須是.art
第二行內(nèi)容則是在Bottom面阻防焊圖層文件被匹配成功后接下來要執(zhí)行的層名和屬性定義等操作,其具體內(nèi)容如下:
solder_mask-bot:將文件名更改為solder_mask-bot
board:將文件屬性更改為工作層board屬性
solder_mask:將該層的類別定義為solder_mask
positive:定義該層的極性為正極性
bottom:定義該層的面向?yàn)閎ottom方向
0:定義起始層,通常在鉆孔規(guī)則中起作用
(3)在InSight PCB執(zhí)行自動(dòng)導(dǎo)入Gerber資料時(shí),若Gerber文件名為soldbotm.art,則該文件會匹配到上述解析的規(guī)則,先被定義初始化層名為solder_mask-bot,屬性定義為board,極性定義為positive正極性,層面向定義為bottom。定義好層屬性后,最終再匹配到圖2層名定義的正則表達(dá)規(guī)則中solder_mask一行,通過層屬性進(jìn)行匹配,將符合要求的文件soldbotm.art最終定義為符合制造工廠要求的sc層名。
(1)尋找各文件之間的相同點(diǎn),即尋找其中的規(guī)律,用以組成正則表達(dá)式的語句;(2)對正則表達(dá)式中*和+的使用需謹(jǐn)慎,*使用過多容易導(dǎo)致規(guī)則沖突(3)對于正則表達(dá)式中(x|y)和[0]-[9]這樣在多種情況中匹配出一個(gè)結(jié)果的表達(dá)式,在規(guī)則文件定義層名或是定義貫穿層時(shí),可使用/1/2來取出正則表達(dá)式匹配到的結(jié)果,其中數(shù)字為該匹配的表達(dá)式出現(xiàn)的順序;(4)特殊且無法歸類到規(guī)則里的,可用針對性強(qiáng)(即只匹配這一文件名)的語句去編寫規(guī)則;(5)由于規(guī)則調(diào)用是從上至下的順序,且匹配成功則不再向下調(diào)用,因此,較為特殊且針對性強(qiáng)的規(guī)則需放到文件的前端部分。
我們不難發(fā)現(xiàn),通過軟件自動(dòng)創(chuàng)建的規(guī)則針對性強(qiáng),僅適用于文件名具有統(tǒng)一性、規(guī)律性的資料文件,當(dāng)規(guī)則數(shù)達(dá)到一定數(shù)量時(shí),會造成維護(hù)困難,雜亂等。平均每個(gè)料號導(dǎo)入完成后自動(dòng)生成的規(guī)則文件里包含有22行內(nèi)容,但內(nèi)層、外層和防焊字符資料的規(guī)則語句往往可以寫入到同一條規(guī)則里,這就導(dǎo)致規(guī)則重復(fù),增加了維護(hù)人員的工作難度。使用用戶編寫的自定義正則表達(dá)式規(guī)則,則可根據(jù)一定的規(guī)律去編寫匹配原則,控制規(guī)則的嚴(yán)謹(jǐn)?shù)某潭?,等同于擴(kuò)大了規(guī)則的適用性,如上述的圖3規(guī)則轉(zhuǎn)換為圖4為例,將兩個(gè)鉆孔文件的規(guī)則合并,實(shí)現(xiàn)一行規(guī)則可對應(yīng)多種不同文件名的資料文件,從而大幅縮小規(guī)則行數(shù),減輕了維護(hù)的難度。在軟件測試過程中,通過規(guī)則文件整理,將系統(tǒng)自動(dòng)創(chuàng)建的規(guī)則文件78份精簡至自定義的規(guī)則文件8份后導(dǎo)入測試了2000份Gerber資料,其準(zhǔn)確率依然能達(dá)到99%以上。由此可見,應(yīng)用用戶編寫的自定義規(guī)則文件,其適用性強(qiáng),文件結(jié)構(gòu)簡潔,規(guī)則文件數(shù)量少、易維護(hù),其優(yōu)勢較為明顯。
文中提到的正則表達(dá)式匹配,主要匹配的是文件名,尚未觸及到文件中的內(nèi)容描述,若文件內(nèi)容具有一定個(gè)格式,且相對規(guī)律,可嘗試匹配文件的內(nèi)容,通過文件的內(nèi)容來識別該文件的作用,從而實(shí)現(xiàn)更為準(zhǔn)確的自動(dòng)導(dǎo)入。
無論是系統(tǒng)自動(dòng)創(chuàng)建的規(guī)則還是用戶編寫的自定義規(guī)則,整個(gè)過程是不斷在重復(fù)的。每導(dǎo)入一個(gè)文件,可視為收集一條規(guī)則,在數(shù)量達(dá)到一定的程度時(shí),這些數(shù)據(jù)將存在一定的指導(dǎo)作用。運(yùn)用這些大數(shù)據(jù)信息,可組合成高度概括的規(guī)則,從而實(shí)現(xiàn)高效且精準(zhǔn)的資料自動(dòng)導(dǎo)入。
資料導(dǎo)入的自動(dòng)化是未來PCB行業(yè)的發(fā)展趨勢,通過上述的方法及例子,已足以證明正則表達(dá)式運(yùn)用在InSight PCB層別屬性及層名定義中的可行性。正則表達(dá)式規(guī)則是否準(zhǔn)確主要還是依托于客戶資料文件名是否規(guī)律,若資料文件的命名越是規(guī)范或存在一定的規(guī)律,則導(dǎo)入時(shí)定義的層名及層別屬性將會更準(zhǔn)確。除此之外,要提高準(zhǔn)確率,還需要在看似沒有規(guī)律的各類Gerber文件名中找到合適的平衡點(diǎn),使新規(guī)則能識別新的層名定義要求,同時(shí)又不影響已匹配的舊的層名定義要求。