1. 程式人生 > >【轉】如何應用Query語句進行規則的語法設置?

【轉】如何應用Query語句進行規則的語法設置?

where 編輯 designer 屬性 member expr IT 找到你 過程

技術分享圖片

在Altium Designer中, 設計規則通常用來定義用戶的設計需求。 這些規則涵蓋了設計的方方面面, 從布線寬度, 對象的安全間距,內電層的連接風格, 過孔風格等等。 設計規則不僅能在PCB設計的過程中實時檢測, 而且也能夠在需要的時候進行統一的批量檢測並生成錯誤報告。

Altium Designer的設計規則不是PCB對象的屬性, 而是獨立定義的。 每條規則需針對具體的PCB對象。對於PCB規則系統來說,它必須知道給定的規則應用於哪些對象,即規則的應用範圍。可以在PCB Rules and Constraints Editor對話框中設定規則及規則的範圍。其中采用撰寫查詢語句的方式來定義範圍是經常需要用到的,並且非常重要的方式方法。

查詢語句(Query)是對規則應用對象的描述。設計規則的約束對象可以直接手動輸入查詢語句, 或是在語言編輯區左側的控制區選擇,抑或是采用查詢語句構造器來定義。

查詢語句(Query)如何組織?

查詢語句實際上是軟件的一條指令,定義了一系列的目標設計對象。查詢語句由查詢的關鍵字組成。下面是一個查詢語句的示例:
InNet(‘GND‘) And OnLayer(‘TopLayer‘)
如果在寬度規則中用該查詢語句定義範圍,那麽設計者在切換到頂層對GND網絡布線時,走線的寬度會自動轉換到該規則指定的寬度值。如果執行設計規則檢查(DRC),任何在頂層的GND網絡必須滿足這個寬度規則,否則就會被標記為違反設計規則。

使用PCB規則約束編輯器( PCB Rules and Constraints Editor)對話框中的選項可以創建查詢語句。根據規則是一元的還是二元的,用戶可能需要相應地定義一個或二個對象範圍。在PCB規則約束編輯器中,簡單的查詢語句有如下幾種類型的範圍選項。

  • 所有的的設計對象

  • 指定網絡中的所有對象

  • 指定網絡類中的所有對象

  • 指定層上的所有對象

  • 指定層上且屬於指定網絡的所有對象

選擇其中的任一選項,如果需要的話,可以使用右邊的下拉菜單選定適當的目標,比如某個網絡或某個層。查詢語句會自動出現在Full Query區域的右方。如下圖。

技術分享圖片

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

  1. Query Builder定義規則範圍

Query Builder是一種較簡單的創建查詢語句的方法,它允許設計者使用敏感的條 件類型和數值但只能使用相關的‘構件’。對於高級查詢語句的創建,可以使用Query Helper來查詢關鍵字的說明及操作符的語法。

點擊Query Builder按鈕可以打開Building Query from Board對話框, 該對話框使得用戶通過AND或OR等符號連接構造字符串,從而可以創建指向設計文檔中特定對象的查詢語句。如下圖所示。

技術分享圖片

在對話框中的左邊部分,用戶可以為某組對象指定所需要的條件類型。當用戶在對話框左半部分定義好條件後,在右半部分就可以預覽顯示當前創建的查詢語句。根據需要用戶可以繼續添加更多的條件以縮小用戶的設計對象目標範圍。

  1. Query Helper獲得幫助

要使用Query Helper,先選擇Advanced (Query) 選項,然後點擊Query Helper按鈕就可以打開Query Helper對話框。系統背後的查詢引擎會分析PCB設計,然後列出所有可用的對象與查詢語句中使用的通用關鍵字。如下圖所示。

技術分享圖片

使用對話框的Query區域,構造一個查詢表達式語句。在默認情況下,當前有效規則範圍的表達式會顯示在這一區域。用戶可以在該區域內直接輸入。當用戶輸入時,智能感知功能將根據用戶的輸入提示給用戶可能的關鍵字或對象列表。

對話框中的左下角紅色圈出的Categories區域,提供了可以用來創建查詢語句的PCB函數、PCB對象列表和系統函數。當用戶點擊此三個類別中的某個子類別,右方的區域將會顯示對應的關鍵字或對象列表。找到查詢語句需要用到的關鍵字或對象,然後雙擊該條目,該條目就會被插入到上方區域中查詢表達式的當前光標處。

  1. 當Query語句有錯誤時

如果你鍵入的查詢語句的語法有錯誤,在PCB Rules and Constraints Editor對話框的左邊區域,該規則會被用紅色高亮出來。及時修正這樣的錯誤非常重要,否則做在線實時檢測會非常慢。因為一個有語法錯誤的規則範圍會極大地降低在線或者批量DRC分析的速度。當你試圖關閉規則設置框時系統也會彈出一個錯誤對話框。所以請確保所有規則範圍的語法正確!

PCB Filter面板中使用查詢語句(Query)

同樣的道理,可以在過濾器面板使用查詢語句來查找指定的一系列對象,然後定義每個規則應用到的對象。

PCB Filter面板為用戶提供了創建設計規則的途徑,創建的設計規則的應用範圍將使用當前在面板中央區域中定義的查詢語句來定義。

技術分享圖片

如上圖所示。要添加一條新的設計規則,只要點擊Create Rule 按鈕,就會顯示Choose Design Rule Type對話框。此對話框列出了PCB文檔中所有可用的規則類別與規則種類。用戶只需選擇希望創建的規則種類然後點擊OK即可(或直接雙擊該規則種類入口)。

這時就會顯示PCB Rules and Constraints Editor對話框,在此對話框中系統已為用戶創建了一個該種類的規則,並將該規則顯示在主編輯窗口中,等待用戶為此規則定義特定的約束條件。而來自PCB Filter面板的查詢語句也已經顯示在對話框中的Full Query區域中,作為此規則的應用範圍。

采用Query Helper創建Query語句案例

案例前因:某項目的PCB設計中有諸多規則設置,特別是間距方面,由於12V網絡需要更大的間距規則,已為其設置了20mil安全距離。

技術分享圖片

然後PCB完成之後,對其進行規則檢查,出現了2條違規信息。如上圖所示。兩個電容C3和C4違反了規則,已綠色高亮顯示。原因是這些電容的焊盤形狀已經固定。沒辦法改變,我們只能修改規則的設置來適應這兩個電容。打開12V網絡的間距規則設置,我們來修改規則範圍,使其排除這2個電容。操作如下。

  • 設置時,需要在第二個對象處“Where the second object matches”不選中C3和C4。即將C3和C4兩個元件排除20mil間距的規則約束。點擊自定義語句“Custom Query”,然後選擇“Query Helper”。

技術分享圖片

  • 找到“Component membership”語句,將其添加到規則中。我們雙擊“In Component”條目,即可將其添加到語句對話框。

技術分享圖片

  • 然後移動到語句“Query” 對話框,在括號中鍵入一個單引號,將會彈出一個列表,選擇C3。

技術分享圖片

  • 然後添加“Or”到語句中,然後繼續,我們先鍵入“In”。然後選中需要的條目“In component”。這次選擇C4。

技術分享圖片

  • 現在我們選中了C3或者C4。接下來要做的是,規則設置的範圍不包含這兩個電容。於是我們添加邏輯非“Not”。點擊OK添加該條規則語句。

技術分享圖片

  • 然後將其應用到規則設置中。現在的12V間距規則,已經排除了這2個電容。重新運行間距規則的DRC檢查,結果很幹凈。而且C3和C4也不再高亮。

技術分享圖片

采用PCB Filter面板生成Query語句案例

大家都深有體會:讓我們自己去輸入一條條Query語句,熟練使用其語法條件,以及各條件之間的運算關系,這玩意對於非代碼設計師來說,想想都頭暈。能不碰就不碰,能有變通方法盡量繞開!

那麽這裏介紹一套生成Query語句的法寶。通過這個法寶我們可以方便地組織所需的Query語句。甚至還方便智能到根據所選對象自動生成Query語句的地步!廢話少說,案例過一遍就都清楚了。

要熟練運用該法寶必須要與其左右兩大護法搞好關系:查找相似對象(Find similar objects)和PCB過濾器(PCB Filter)。

案例前因:一PCB設計中,有幾個連接器件,想讓它們互相交疊挨在一起而不報錯。那就需要設置這幾個連接器件的元件之間間距(Component clearance)允許它們零距離親密接觸。

  • 首先第一步,用查找相似對象的方式,來創建自定義Query語句。即選定一個對象,然後右鍵點擊,選擇查找相似對象“Find similar object”。

技術分享圖片

  • 在封裝“Footprint”條目後面,選擇相同“Same” ,並確保創建表達式“Create expression”選項框被勾選。

技術分享圖片

  • 現在點擊應用“Apply”來看看是否所有符合條件的目標元件被選中。結果如你所願。

技術分享圖片

  • 然後打開PCB過濾器窗口“PCB filter”,這裏看到生成的語句表達式。

技術分享圖片

  • 在過濾器窗口中,你可以拷貝並粘貼該表達式到規則設置中,或者直接點擊創建規則“Create rule”按鈕,來打開規則設置頁面。讓我們為“Anderson”連接器選擇元件間距。我們想要將它們擺放在一起,而不會報錯。點擊OK打開該規則設置頁面。

技術分享圖片

  • 讓我們為該規則命名為“Anderson”。現在我們的新規則中,第一個對象匹配的Quuery語句是來自PCB Filter自動導過來的。代表的是黑色“Black”Anderson連接器,我們想讓第二個對象匹配的語句是紅色“Red” Anderson連接器。這裏偷下懶,直接從第一個對象的語句表達式拷貝粘貼到第二個對象的語句表達式,然後編輯,將黑色改為紅色。

技術分享圖片

  • 現在我們有了一個關於黑色連接器和紅色連接器之間的元件間距的規則。將其水平方向的間距設置為-5 mil,以允許它們擺放連接在一起。

技術分享圖片

  • 定義好規則之後,現在我們要看一看,該規則的範圍是不是恰好準確包含了想要涵蓋的對象。要檢查這個,我們需要用到測試語句“Test queries”的功能。它會打開一個測試語句的結果對話框,顯示每個語句表達式的結果。點擊每個不同的條目,會跳轉並縮放到那些被選中的對象。點擊OK。

技術分享圖片

現在讓我們放置一個紅色和黑色的連接器,毗連在一起,看看它們有沒有發生間距報錯。並沒有!這就是剛才的規則所起的作用。

所以,采用查找相似對象(Find Similar Objects)找到你關註的對象,然後勾選Creat Expressions,自動生成Query語句到PCB Filter面板,然後直接Creat Rule即可。So easy!幹嗎還哼哧哼哧去查去寫Query語句呢?

【來源】

【轉】如何應用Query語句進行規則的語法設置?