在Altium Designer中, 設(shè)計(jì)規(guī)則通常用來(lái)定義用戶的設(shè)計(jì)需求。 這些規(guī)則涵蓋了設(shè)計(jì)的方方面面, 從布線寬度, 對(duì)象的安全間距,內(nèi)電層的連接風(fēng)格, 過(guò)孔風(fēng)格等等。 設(shè)計(jì)規(guī)則不僅能在PCB設(shè)計(jì)的過(guò)程中實(shí)時(shí)檢測(cè), 而且也能夠在需要的時(shí)候進(jìn)行統(tǒng)一的批量檢測(cè)并生成錯(cuò)誤報(bào)告。
Altium Designer的設(shè)計(jì)規(guī)則不是PCB對(duì)象的屬性, 而是獨(dú)立定義的。 每條規(guī)則需針對(duì)具體的PCB對(duì)象。對(duì)于PCB規(guī)則系統(tǒng)來(lái)說(shuō),它必須知道給定的規(guī)則應(yīng)用于哪些對(duì)象,即規(guī)則的應(yīng)用范圍??梢栽赑CB Rules and Constraints Editor對(duì)話框中設(shè)定規(guī)則及規(guī)則的范圍。其中采用撰寫查詢語(yǔ)句的方式來(lái)定義范圍是經(jīng)常需要用到的,并且非常重要的方式方法。
查詢語(yǔ)句(Query)是對(duì)規(guī)則應(yīng)用對(duì)象的描述。設(shè)計(jì)規(guī)則的約束對(duì)象可以直接手動(dòng)輸入查詢語(yǔ)句, 或是在語(yǔ)言編輯區(qū)左側(cè)的控制區(qū)選擇,抑或是采用查詢語(yǔ)句構(gòu)造器來(lái)定義。
查詢語(yǔ)句(Query)如何組織?
查詢語(yǔ)句實(shí)際上是軟件的一條指令,定義了一系列的目標(biāo)設(shè)計(jì)對(duì)象。查詢語(yǔ)句由查詢的關(guān)鍵字組成。下面是一個(gè)查詢語(yǔ)句的示例:
? ? ? ? InNet('GND') And OnLayer('TopLayer')
? ? ? ? 如果在寬度規(guī)則中用該查詢語(yǔ)句定義范圍,那么設(shè)計(jì)者在切換到頂層對(duì)GND網(wǎng)絡(luò)布線時(shí),走線的寬度會(huì)自動(dòng)轉(zhuǎn)換到該規(guī)則指定的寬度值。如果執(zhí)行設(shè)計(jì)規(guī)則檢查(DRC),任何在頂層的GND網(wǎng)絡(luò)必須滿足這個(gè)寬度規(guī)則,否則就會(huì)被標(biāo)記為違反設(shè)計(jì)規(guī)則。
使用PCB規(guī)則約束編輯器( PCB Rules and Constraints Editor)對(duì)話框中的選項(xiàng)可以創(chuàng)建查詢語(yǔ)句。根據(jù)規(guī)則是一元的還是二元的,用戶可能需要相應(yīng)地定義一個(gè)或二個(gè)對(duì)象范圍。在PCB規(guī)則約束編輯器中,簡(jiǎn)單的查詢語(yǔ)句有如下幾種類型的范圍選項(xiàng)。
所有的的設(shè)計(jì)對(duì)象
指定網(wǎng)絡(luò)中的所有對(duì)象
指定網(wǎng)絡(luò)類中的所有對(duì)象
指定層上的所有對(duì)象
指定層上且屬于指定網(wǎng)絡(luò)的所有對(duì)象
選擇其中的任一選項(xiàng),如果需要的話,可以使用右邊的下拉菜單選定適當(dāng)?shù)哪繕?biāo),比如某個(gè)網(wǎng)絡(luò)或某個(gè)層。查詢語(yǔ)句會(huì)自動(dòng)出現(xiàn)在Full Query區(qū)域的右方。如下圖。
高級(jí)查詢Advanced (Query)選項(xiàng)允許設(shè)計(jì)者撰寫自己的更復(fù)雜但更為精確的查詢語(yǔ)句。設(shè)計(jì)者可以在Full Query區(qū)域直接輸入規(guī)則范圍的定制查詢語(yǔ)句。有兩個(gè)工具(Query Builder和Query Helper)可幫助創(chuàng)建高級(jí)查詢語(yǔ)句。當(dāng)不確定查詢語(yǔ)句的語(yǔ)法或者需要使用的關(guān)鍵字,這兩個(gè)工具就會(huì)相當(dāng)有用。
Query Builder定義規(guī)則范圍
???????Query Builder是一種較簡(jiǎn)單的創(chuàng)建查詢語(yǔ)句的方法,它允許設(shè)計(jì)者使用敏感的條 件類型和數(shù)值但只能使用相關(guān)的‘構(gòu)件’。對(duì)于高級(jí)查詢語(yǔ)句的創(chuàng)建,可以使用Query Helper來(lái)查詢關(guān)鍵字的說(shuō)明及操作符的語(yǔ)法。
點(diǎn)擊Query Builder按鈕可以打開Building Query from Board對(duì)話框, 該對(duì)話框使得用戶通過(guò)AND或OR等符號(hào)連接構(gòu)造字符串,從而可以創(chuàng)建指向設(shè)計(jì)文檔中特定對(duì)象的查詢語(yǔ)句。如下圖所示。
?????
????? ?在對(duì)話框中的左邊部分,用戶可以為某組對(duì)象指定所需要的條件類型。當(dāng)用戶在對(duì)話框左半部分定義好條件后,在右半部分就可以預(yù)覽顯示當(dāng)前創(chuàng)建的查詢語(yǔ)句。根據(jù)需要用戶可以繼續(xù)添加更多的條件以縮小用戶的設(shè)計(jì)對(duì)象目標(biāo)范圍。
Query Helper獲得幫助
???????要使用Query Helper,先選擇Advanced (Query) 選項(xiàng),然后點(diǎn)擊Query Helper按鈕就可以打開Query Helper對(duì)話框。系統(tǒng)背后的查詢引擎會(huì)分析PCB設(shè)計(jì),然后列出所有可用的對(duì)象與查詢語(yǔ)句中使用的通用關(guān)鍵字。如下圖所示。
???????使用對(duì)話框的Query區(qū)域,構(gòu)造一個(gè)查詢表達(dá)式語(yǔ)句。在默認(rèn)情況下,當(dāng)前有效規(guī)則范圍的表達(dá)式會(huì)顯示在這一區(qū)域。用戶可以在該區(qū)域內(nèi)直接輸入。當(dāng)用戶輸入時(shí),智能感知功能將根據(jù)用戶的輸入提示給用戶可能的關(guān)鍵字或?qū)ο罅斜怼?/p>
對(duì)話框中的左下角紅色圈出的Categories區(qū)域,提供了可以用來(lái)創(chuàng)建查詢語(yǔ)句的PCB函數(shù)、PCB對(duì)象列表和系統(tǒng)函數(shù)。當(dāng)用戶點(diǎn)擊此三個(gè)類別中的某個(gè)子類別,右方的區(qū)域?qū)?huì)顯示對(duì)應(yīng)的關(guān)鍵字或?qū)ο罅斜怼U业讲樵冋Z(yǔ)句需要用到的關(guān)鍵字或?qū)ο?,然后雙擊該條目,該條目就會(huì)被插入到上方區(qū)域中查詢表達(dá)式的當(dāng)前光標(biāo)處。
當(dāng)Query語(yǔ)句有錯(cuò)誤時(shí)
? ? ? ??如果你鍵入的查詢語(yǔ)句的語(yǔ)法有錯(cuò)誤,在PCB Rules and Constraints Editor對(duì)話框的左邊區(qū)域,該規(guī)則會(huì)被用紅色高亮出來(lái)。及時(shí)修正這樣的錯(cuò)誤非常重要,否則做在線實(shí)時(shí)檢測(cè)會(huì)非常慢。因?yàn)橐粋€(gè)有語(yǔ)法錯(cuò)誤的規(guī)則范圍會(huì)極大地降低在線或者批量DRC分析的速度。當(dāng)你試圖關(guān)閉規(guī)則設(shè)置框時(shí)系統(tǒng)也會(huì)彈出一個(gè)錯(cuò)誤對(duì)話框。所以請(qǐng)確保所有規(guī)則范圍的語(yǔ)法正確!
PCB Filter面板中使用查詢語(yǔ)句(Query)
???????同樣的道理,可以在過(guò)濾器面板使用查詢語(yǔ)句來(lái)查找指定的一系列對(duì)象,然后定義每個(gè)規(guī)則應(yīng)用到的對(duì)象。
PCB Filter面板為用戶提供了創(chuàng)建設(shè)計(jì)規(guī)則的途徑,創(chuàng)建的設(shè)計(jì)規(guī)則的應(yīng)用范圍將使用當(dāng)前在面板中央?yún)^(qū)域中定義的查詢語(yǔ)句來(lái)定義。
??????
???????如上圖所示。要添加一條新的設(shè)計(jì)規(guī)則,只要點(diǎn)擊Create Rule 按鈕,就會(huì)顯示Choose Design Rule Type對(duì)話框。此對(duì)話框列出了PCB文檔中所有可用的規(guī)則類別與規(guī)則種類。用戶只需選擇希望創(chuàng)建的規(guī)則種類然后點(diǎn)擊OK即可(或直接雙擊該規(guī)則種類入口)。
這時(shí)就會(huì)顯示PCB Rules and Constraints Editor對(duì)話框,在此對(duì)話框中系統(tǒng)已為用戶創(chuàng)建了一個(gè)該種類的規(guī)則,并將該規(guī)則顯示在主編輯窗口中,等待用戶為此規(guī)則定義特定的約束條件。而來(lái)自PCB Filter面板的查詢語(yǔ)句也已經(jīng)顯示在對(duì)話框中的Full Query區(qū)域中,作為此規(guī)則的應(yīng)用范圍。
采用Query Helper創(chuàng)建Query語(yǔ)句案例
??????案例前因:某項(xiàng)目的PCB設(shè)計(jì)中有諸多規(guī)則設(shè)置,特別是間距方面,由于12V網(wǎng)絡(luò)需要更大的間距規(guī)則,已為其設(shè)置了20mil安全距離。
??????然后PCB完成之后,對(duì)其進(jìn)行規(guī)則檢查,出現(xiàn)了2條違規(guī)信息。如上圖所示。兩個(gè)電容C3和C4違反了規(guī)則,已綠色高亮顯示。原因是這些電容的焊盤形狀已經(jīng)固定。沒辦法改變,我們只能修改規(guī)則的設(shè)置來(lái)適應(yīng)這兩個(gè)電容。打開12V網(wǎng)絡(luò)的間距規(guī)則設(shè)置,我們來(lái)修改規(guī)則范圍,使其排除這2個(gè)電容。操作如下。
設(shè)置時(shí),需要在第二個(gè)對(duì)象處“Where the second object matches”不選中C3和C4。即將C3和C4兩個(gè)元件排除20mil間距的規(guī)則約束。點(diǎn)擊自定義語(yǔ)句“Custom Query”,然后選擇“Query Helper”。
找到“Component membership”語(yǔ)句,將其添加到規(guī)則中。我們雙擊“In Component”條目,即可將其添加到語(yǔ)句對(duì)話框。
然后移動(dòng)到語(yǔ)句“Query” 對(duì)話框,在括號(hào)中鍵入一個(gè)單引號(hào),將會(huì)彈出一個(gè)列表,選擇C3。
然后添加“Or”到語(yǔ)句中,然后繼續(xù),我們先鍵入“In”。然后選中需要的條目“In component”。這次選擇C4。
現(xiàn)在我們選中了C3或者C4。接下來(lái)要做的是,規(guī)則設(shè)置的范圍不包含這兩個(gè)電容。于是我們添加邏輯非“Not”。點(diǎn)擊OK添加該條規(guī)則語(yǔ)句。
然后將其應(yīng)用到規(guī)則設(shè)置中。現(xiàn)在的12V間距規(guī)則,已經(jīng)排除了這2個(gè)電容。重新運(yùn)行間距規(guī)則的DRC檢查,結(jié)果很干凈。而且C3和C4也不再高亮。
采用PCB Filter面板生成Query語(yǔ)句案例
??????大家都深有體會(huì):讓我們自己去輸入一條條Query語(yǔ)句,熟練使用其語(yǔ)法條件,以及各條件之間的運(yùn)算關(guān)系,這玩意對(duì)于非代碼設(shè)計(jì)師來(lái)說(shuō),想想都頭暈。能不碰就不碰,能有變通方法盡量繞開!
那么這里介紹一套生成Query語(yǔ)句的法寶。通過(guò)這個(gè)法寶我們可以方便地組織所需的Query語(yǔ)句。甚至還方便智能到根據(jù)所選對(duì)象自動(dòng)生成Query語(yǔ)句的地步!廢話少說(shuō),案例過(guò)一遍就都清楚了。
要熟練運(yùn)用該法寶必須要與其左右兩大護(hù)法搞好關(guān)系:查找相似對(duì)象(Find similar objects)和PCB過(guò)濾器(PCB Filter)。
案例前因:一PCB設(shè)計(jì)中,有幾個(gè)連接器件,想讓它們互相交疊挨在一起而不報(bào)錯(cuò)。那就需要設(shè)置這幾個(gè)連接器件的元件之間間距(Component clearance)允許它們零距離親密接觸。
首先第一步,用查找相似對(duì)象的方式,來(lái)創(chuàng)建自定義Query語(yǔ)句。即選定一個(gè)對(duì)象,然后右鍵點(diǎn)擊,選擇查找相似對(duì)象“Find similar object”。
在封裝“Footprint”條目后面,選擇相同“Same” ,并確保創(chuàng)建表達(dá)式“Create expression”選項(xiàng)框被勾選。
現(xiàn)在點(diǎn)擊應(yīng)用“Apply”來(lái)看看是否所有符合條件的目標(biāo)元件被選中。結(jié)果如你所愿。
然后打開PCB過(guò)濾器窗口“PCB filter”,這里看到生成的語(yǔ)句表達(dá)式。
在過(guò)濾器窗口中,你可以拷貝并粘貼該表達(dá)式到規(guī)則設(shè)置中,或者直接點(diǎn)擊創(chuàng)建規(guī)則“Create rule”按鈕,來(lái)打開規(guī)則設(shè)置頁(yè)面。讓我們?yōu)椤癆nderson”連接器選擇元件間距。我們想要將它們擺放在一起,而不會(huì)報(bào)錯(cuò)。點(diǎn)擊OK打開該規(guī)則設(shè)置頁(yè)面。
讓我們?yōu)樵撘?guī)則命名為“Anderson”?,F(xiàn)在我們的新規(guī)則中,第一個(gè)對(duì)象匹配的Quuery語(yǔ)句是來(lái)自PCB Filter自動(dòng)導(dǎo)過(guò)來(lái)的。代表的是黑色“Black”Anderson連接器,我們想讓第二個(gè)對(duì)象匹配的語(yǔ)句是紅色“Red” Anderson連接器。這里偷下懶,直接從第一個(gè)對(duì)象的語(yǔ)句表達(dá)式拷貝粘貼到第二個(gè)對(duì)象的語(yǔ)句表達(dá)式,然后編輯,將黑色改為紅色。
現(xiàn)在我們有了一個(gè)關(guān)于黑色連接器和紅色連接器之間的元件間距的規(guī)則。將其水平方向的間距設(shè)置為-5 mil,以允許它們擺放連接在一起。 ???
定義好規(guī)則之后,現(xiàn)在我們要看一看,該規(guī)則的范圍是不是恰好準(zhǔn)確包含了想要涵蓋的對(duì)象。要檢查這個(gè),我們需要用到測(cè)試語(yǔ)句“Test queries”的功能。它會(huì)打開一個(gè)測(cè)試語(yǔ)句的結(jié)果對(duì)話框,顯示每個(gè)語(yǔ)句表達(dá)式的結(jié)果。點(diǎn)擊每個(gè)不同的條目,會(huì)跳轉(zhuǎn)并縮放到那些被選中的對(duì)象。點(diǎn)擊OK。 ???
???????現(xiàn)在讓我們放置一個(gè)紅色和黑色的連接器,毗連在一起,看看它們有沒有發(fā)生間距報(bào)錯(cuò)。并沒有!這就是剛才的規(guī)則所起的作用。
所以,采用查找相似對(duì)象(Find Similar Objects)找到你關(guān)注的對(duì)象,然后勾選Creat Expressions,自動(dòng)生成Query語(yǔ)句到PCB Filter面板,然后直接Creat Rule即可。So easy!干嗎還哼哧哼哧去查去寫Query語(yǔ)句呢?
評(píng)論