一、文檔背景
在Altium Designer中, 設計規則通常用來定義用戶的設計需求。 這些規則涵蓋了設計的方方面面, 從布線寬度, 對象的安全間距,內電層的連接風格, 過孔風格等等。 設計規則不僅能在PCB設計的過程中實時檢測, 而且也能夠在需要的時候進行統一的批量檢測并生成錯誤報告。
Altium Designer的設計規則不是PCB對象的屬性, 而是獨立定義的。 每條規則需針對具體的PCB對象。對于PCB規則系統來說,它必須知道給定的規則應用于哪些對象,即規則的應用范圍。可以在PCB規則約束管理器對話框中設定規則及規則的范圍。其中采用撰寫查詢語句的方式來定義范圍是經常需要用到的,并且非常重要的方式方法。
查詢語句(Query)是對規則應用對象的描述。設計規則的約束對象可以直接手動輸入查詢語句, 或是在語言編輯區左側的控制區選擇,或者是采用查詢語句構造器來定義。
二、 查詢語句含義
查詢語句實際上是軟件的一條指令,定義了一系列的目標設計對象。查詢語句由查詢的關鍵字組成。下面是一個查詢語句的示例: InNet(‘GND‘) And OnLayer(‘TopLayer‘);
如果在寬度規則中用該查詢語句定義范圍,那么設計者在切換到頂層對GND網絡布線時,走線的寬度會自動轉換到該規則指定的寬度值。如果執行設計規則檢查(DRC),任何在頂層的GND網絡必須滿足這個寬度規則,否則就會被標記為違反設計規則。
使用PCB規則約束編輯器( PCB Rules and Constraints Editor)對話框中的選項可以創建查詢語句。根據規則是一元的還是二元的,用戶可能需要相應地定義一個或兩個對象范圍。在PCB規則約束編輯器中,簡單的查詢語句有如下幾種類型的范圍選項。
● 所有的的設計對象
● 指定網絡中的所有對象
● 指定網絡類中的所有對象
● 指定層上的所有對象
● 指定層上且屬于指定網絡的所有對象

高級查詢(Custom Query)選項允許設計者撰寫自己的更復雜但更為精確的查詢語句。設計者可以在語句編寫區域直接輸入規則范圍的定制查詢語句。有兩個工具(Query Builder和Query Helper)可幫助創建高級查詢語句。當不確定查詢語句的語法或者需要使用的關鍵字,這兩個工具就會相當有用。


三、 三種規則語句設置
1、點擊Query Helper按鈕打開Query Helper對話框。查詢引擎會分析PCB設計,列出所有可用的對象,以及所有查詢關鍵字。
對話框的Query區域用來生成查詢表達式。JNH官網可以直接在該區域輸入——會出現輔助的關鍵字或對象的提示列表。對話框的Categories區域用于訪問可用的PCB函數(PCB Functions)、PCB對象列表(PCB Object Lists)和系統函數(System Functions),它們用來創建查詢表達式。在這三個區域中點擊一個子類別,會在右側區域中顯示相應的關鍵字或對象列表。定位要在查詢語句中使用的關鍵字或對象,并雙擊其條目,該條目就會出現在查詢表達式區域的當前光標位置。

數學運算符代表的含義:
(1)、算數運算符
操作符 | 描述 | 例子 |
+ | 加法運算 | NetPinCount + NetViaCount |
- | 減法運算 | ArcStopAngle - ArcStartAngle |
* | 乘法運算 | PadXSize_BottomLayer * PadYSize_BottomLayer |
/ | 除法運算 | HoleDiameter / ViaDiameter |
Div | 整除運算 | Color Div 65536 這將計算Color除以65536,結果的小數部分將被丟棄 |
Mod | 模數運算 | Color Mod 256 這將計算Color除以256時的余數,而不確定結果的小數部分 |
(2)、邏輯運算符
運算符 | 描述 | 例子 |
And | 與 | IsPad And OnMultiLayer 對象必須是一個PAD而且要位于MultiLayer層上 |
&& | 與 (低優先級) | IsPad && OnMultiLayer 對象必須是一個PAD而且要位于MultiLayer層上 |
Or | 或 | IsPad Or IsVia 對象要么是pad要么是via |
|| | 或 (低優先級) | IsPad || IsVia 對象要么是pad要么是via |
Xor | 異或 | OnMultiLayer Xor (HoleDiameter <> 0) 對象是位于MultiLayer且孔徑為0或者不在MultiLayer且孔徑不為0 |
Not | 非 | Not OnMultiLayer 不在MultiLayer層的對象 |
(3)、比較運算符
運算符 | 描述 | 例子 |
< | 小于 | HoleDiameter < 40 孔直徑小于40的對象 |
<= | 小于或等于 | HoleDiameter <= 40 孔直徑小于或等于40的對象 |
>= | 大于或等于 | HoleDiameter >= 40 孔直徑大于或等于 40的對象 |
> | 大于 | HoleDiameter > 40 孔直徑大于40的對象 |
<> | 不等于 | HoleDiameter <> 40 孔直徑不等于40的對象 |
= | 等于 | HoleDiameter = 40 孔直徑等于40的對象 |
Between...And... | 包括范圍 | HoleDiameter Between 30 And 50 孔徑大于等于30,小于等于50的對象 |
Like | Like 關聯 | Name Like 'ADDR?*' 具有Name屬性的對象其關聯的(文本)字符串以ADDR開頭,并且至少包含一個以上的字符 |
(4)、通配符
OPERATOR | DESCRIPTION | EXAMPLE |
? | 這個可以用任意類型代替的單個字符 | Footprint Like 'DIP1?' 具有DIP11、12、14、15等封裝屬性的對象 |
* | 這可以用任意數量的字符替換每個字符可以是任何類型 | Footprint Like 'SIP*' 具有SIP1、SIP12或SIP216等Footprint屬性的對象(任何具有SIP Footprint屬性的對象) |
2、使用Query Builder構建查詢語句
Query Builder提供了一種構造查詢語句的簡單方法,它允許設計者利用條件類型和值構建相關的查詢模塊。點擊“查詢構建器”(Query Builder)按鈕來打開Building Query from Board對話框,可以在該對話框中創建由AND和OR 邏輯字符串構成的查詢表達式。左側部分用于選擇指定目標對象的條件,右側部分會顯示當前查詢語句的預覽,如下圖所示,可以添加多個條件進一步限制目標對象

3、使用PCB Filter 面板創建設計規則
創建設計規則的另一種方法:利用PCB Filter面板的查詢語句直接創建設計規則。使用查找相似對象對話框,可以為PCB Filter 面板創建查詢表達式。然后在PCB Filter面板中使用創建按鈕,為Filter部分的查詢表達式直接創建設計規則。步驟如下:
在PCB面板上選擇一個目標對象,對其右鍵單擊,然后在彈出的右鍵菜單中選擇”查找相似對象“命令,打開查找相似對象對話框。在該對話框中,將目標對象具有的相同元素設置為”Same “(例如PCB封裝相同,則將Footprint設置為Same),勾選”創建表達式“對話框,設置如下圖所示。

此時可以點擊” 應用“按鈕, 查看目標對象是否都被選中。如果JNH官網需要的對象都被選中,并且不需要的對象不在選擇范圍內,則說明設置的選擇范圍沒有問題。點擊”確定“按鈕,此時已經打開的PCB Filter面板的”過濾器“區域出現了查找相似對象 對話框產生的查詢表達式。如下圖所示:

此時勾選面板上的”選擇“復選框,然后點擊”全部應用“按鈕,將會選中PCB板上所有要查詢的設計對象。在確保查找對象的范圍沒有問題后,可以將”過濾器“中的查詢語句復制到設計規則對話框的Query語句區域。也可以按照下面所示的步驟創建新的設計規則:點擊”過濾器“對話框上的”創建規則“按鈕,然后在彈出的選擇設計規則類型對話框中選擇要創建的規則類型;

這將打開PCB 規則及約束編輯器窗口,查詢語句已經被復制到相應的區域,此時只要對規則進行命名,然后進行后續的設置即可。

4、檢測Query語句
在設置設計規則時,了解規則的范圍是否正確涵蓋了所有預期的對象,且不包括其他的對象,是個很重要的步驟。測試語句功能可以測試查詢語句,驗證查詢表達式是否定位到正確的對象。在設計規則界面點擊窗口右上角的”測試語句“按鈕,打開測試查詢結果窗口,該窗口中會顯示查詢語句實際上應用到的對象數,如下圖所示。

四、討論分析
Query Helper和Query Builder是Altium Designer中用于構建查詢語句的兩個工具,它們各有優缺點:
Query Helper
優點:
1. 高級查詢支持:Query Helper提供了一個對話框,允許用戶使用PCB Functions、PCB Object Lists和System Functions來構建復雜的查詢表達式。
2. 語法檢查:提供了Check Syntax按鈕,用于驗證查詢表達式的語法是否正確。
3. 詳細文檔支持:對于每個關鍵字,提供了簡短的描述,并且可以通過按F1鍵訪問在線幫助文檔,獲取更多關于如何使用該關鍵字的信息。
4. 關鍵字搜索:通過Mask字段,可以快速搜索相關的關鍵字,這在不確定確切關鍵字時非常有用。
缺點:
1. 復雜性:對于初學者來說,可能需要一定的學習曲線來熟悉如何使用Query Helper構建復雜的查詢語句。
2. 手動輸入:需要用戶手動輸入查詢語句,這可能會增加出錯的機會,尤其是在不熟悉查詢語法的情況下。
Query Builder
優點:
1. 用戶友好:Query Builder提供了一個圖形界面,通過下拉列表選擇測試條件,適合不太熟悉查詢語法的用戶。
2. 自動生成查詢:QueryBuilder對話框可以幫助用戶自動生成與指定條件相對應的查詢,簡化了查詢構建過程。
3. 直觀操作:用戶可以通過直觀的界面添加和組合條件,構建由AND和OR邏輯字符串構成的查詢表達式。
缺點:
1. 限制性:QueryBuilder主要使用相關的“構建塊”來構建查詢,可能不如Query Helper那樣靈活,無法構建非常復雜的查詢語句。
2. 缺少高級功能:對于需要精確控制查詢語法和關鍵字的高級用戶來說,QueryBuilder可能不夠用。
總的來說,Query Helper適合那些需要構建復雜查詢并且熟悉查詢語法的用戶,而Query Builder則更適合初學者或者需要快速構建簡單查詢的用戶。兩者可以根據不同的需求和場景選擇使用。
使用PCB Filter 面板創建設計規則
優點:
1. 精確選擇和編輯:PCB Filter面板通過邏輯查詢提供精確選擇和編輯多個對象的能力,這對于復雜的PCB設計尤其有用。
2. 用戶友好的界面:面板提供了直觀的界面,使得用戶可以快速構建簡單的過濾表達式,針對任何組合的對象。
3. 動態查詢構建:隨著用戶在面板中進行過濾選擇,查詢表達式會動態構建并顯示在面板中,使得用戶可以實時看到過濾結果。
4. 視覺過濾效果:面板提供了不同的視覺過濾效果,如Normal、Mask和Dim,幫助用戶在工作區中區分過濾和未過濾的對象。
5. 輔助工具:PCB Filter面板提供了Query Helper和Query Builder工具,幫助用戶構建查詢語句,尤其是對于不熟悉查詢語法的用戶。
6. 設計規則創建:面板還提供了創建設計規則的功能,其范圍將使用面板中定義的查詢表達式。
7. 靈活性:用戶可以有效地應用新的過濾查詢來構建在之前過濾結果的基礎上,增加了設計的靈活性。
缺點:
1. 學習曲線:對于初學者來說,PCB Filter面板可能需要一定的學習曲線,尤其是當涉及到復雜的查詢語句構建時。
2. 性能影響:在處理大型或復雜的PCB設計時,應用復雜的過濾規則可能會對軟件性能產生一定影響,尤其是在計算機配置較低的情況下。
3. 忽略錯誤:在某些情況下,如DRC(設計規則檢查)時可能會忽略那些沒有放好的器件,如果設計規則設置不當,可能會導致設計中的問題被遺漏。
五、結論
Custom Query選項使設計人員能夠自定義編寫更復雜的查詢語句,以便更具體地限定規則應用的范圍。編寫Query 語句并檢測其準確性。