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