|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
( e! M4 R9 h! O' N. T6 a2 e
在编写设计规则时,我们经常会用Query语句来详细地限定设计规则的范围。如何准确地编写Query语句,并在编写完成之后检查Query语句的范围是否正确呢?下面详细地说明一下。
' x7 H e7 p" y7 h/ a: `2 V, k1.编写Query语句6 ~- o* R5 q% f8 e
在PCB文档界面,选择菜单Design-> Rules… 打开PCB Rules and Constraints Editor 对话框,将Where The Object Matches的范围设置为Custom Query,右侧的区域内就可以直接输入Query语句了, 如下图所示。9 @% \* }0 b4 Y: ?) u4 I4 v$ H
) m" h8 R$ Y! d& S4 z; | X3 [/ u2 u" H0 ^9 {) K7 ]/ C3 D
创建Query语句 N6 E# c7 c/ ?# s# a, F
当我们不了解Query语句的语法、可用的关键字时,可以使用Query Builder和Query Helper这两个功能项协助创建Query语句。) o- Q) n! o& |5 d& I
1.1. 使用Query Builder构建查询语句
* o- K% ?! P% O8 q6 x: n: HQuery Builder提供了一种构造查询语句的简单方法,它允许设计者利用条件类型和值构建相关的查询模块。点击Query Builder按钮来打开Building Query from Board对话框,可以在该对话框中创建由AND和OR 逻辑字符串构成的查询表达式。0 ^$ T$ f7 I! g9 m
R. c2 C6 p' F( q/ X
|) k$ p/ Q* }' @' r4 |
' a( r, h& ]: ^" N
* E9 G" `- W0 |# z) j7 f
使用Query Builder创建查询表达式4 B3 G* c# p" u% v
该对话框的左侧部分用于选择指定目标对象的条件,右侧部分会显示当前查询语句的预览,如上图所示,可以添加多个条件进一步限制目标对象。
$ _9 a; N- H1 b/ J1.2.使用Query Helper构建高级查询语句8 e# N9 {* B+ Z+ r& W; @) A5 M
点击Query Helper按钮打开Query Helper对话框。查询引擎会分析PCB设计,列出所有可用的对象,以及所有查询关键字。
x0 ~; G3 R3 ~! f( t, D) ~- s# t) P对话框的Query区域用来生成查询表达式。我们可以直接在该区域输入——会出现辅助的关键字或对象的提示列表。
- c8 b/ r4 {5 _对话框的Categories区域用于访问可用的PCB函数(PCB Functions)、PCB对象列表(PCB Object Lists)和系统函数(System Functions),它们用来创建查询表达式。在这三个区域中点击一个子类别,会在右侧区域中显示相应的关键字或对象列表。定位要在查询语句中使用的关键字或对象,并双击其条目,该条目就会出现在查询表达式区域的当前光标位置。0 Z+ @: W; a3 l. B8 h, M
( T( ~5 g, j# `4 Y* g. |
. S2 X7 t1 D" ?0 V% C9 ]3 t
6 O# {- q ^, }使用Query Helper编写更复杂的查询表达式
! e u: ~( V! F% `! \该对话框上的Check Syntax按钮可用来检查和标记查询表达式中的语法错误。) B, B2 i- ]5 c$ P2 D: }
1.3. 使用PCB Filter 面板创建设计规则
$ Y" o S" s7 F- y4 R/ b创建设计规则的另一种方法:利用PCB Filter面板的查询语句直接创建设计规则。使用Find Similar Objects对话框,可以为PCB Filter 面板创建查询表达式。然后在PCB Filter面板中使用Create Rule按钮,为Filter部分的查询表达式直接创建设计规则。步骤如下:
! n X1 A L) b5 P7 S. s
! Y0 H- f8 i6 f4 [; I. P! @/ \- 在PCB面板上选择一个目标对象,对其右键单击,然后在弹出的右键菜单中选择Find Similar Objects命令,打开Find Similar Objects对话框。在该对话框中,将目标对象具有的相同元素设置为Same (例如PCB封装相同,则将Footprint设置为Same),勾选Create Expression 对话框,设置如下图所示。
9 f( v% k0 m* e9 ]' O/ R
( J1 S9 b: h. T' w- ^2 C5 n
9 p2 J0 Z3 q, W/ D: j, |6 @ ]
9 J( \" h& F2 W9 @% z) ^# G
利用Find Similar Objects 创建查询语句+ i1 P, B3 ] V& Z Q( ~
% k& @. f3 v$ Y2 d9 f- T- 此时可以点击 Apply按钮, 查看目标对象是否都被选中。如果我们需要的对象都被选中,并且不需要的对象不在选择范围内,则说明设置的选择范围没有问题。点击OK按钮,此时已经打开的PCB Filter面板的Filter区域出现了 Find Similar object 对话框产生的查询表达式。如下图所示:
0 e0 o+ p- D: m
7 G/ W* ^1 Y) ?" O" T2 V7 ^
: {& p$ \2 s v: }& f+ p* F: Z
, o% v! k' E; YPCB Filter面板( ~5 I u8 b9 f) r4 b# I$ P
: @# z) ]* w/ }9 [
- 此时勾选面板上的Select 复选框,然后点击Apply to All按钮(如上图所示),将会选中PCB板上所有要查询的设计对象。
- 在确保查找对象的范围没有问题后,可以将Filter中的查询语句复制到设计规则对话框的Query语句区域。也可以按照下面所示的步骤创建新的设计规则:
4 ~& ~8 K+ J& Z2 f5 ? F
" T1 {" u* W7 O5 H6 N; C! f( @- 点击Filter对话框上的Create Rule按钮,然后在弹出的Choose Design Rule Type对话框中选择要创建的规则类型;7 |' b9 X. h! [8 K; f, R
" d, \/ s5 x7 n* M h
: i7 V9 M( ] k: c9 ~' c2 Q# D+ R4 @
选择要创建的设计规则的类型
/ C2 |$ E- k& m" R. t6 _% G$ ?- 这将打开PCB Rules and Constrains Editor窗口,查询语句已经被复制到相应的区域,此时只要对规则进行命名,然后进行后续的设置即可。
1 O# o4 c4 _4 o( p * Q3 E/ Y( p. ~) n& {
) ]* {; v, R/ |( l1 o, u* o6 |! |
$ W( ^7 Y7 `; K( [6 W$ F生成设计规则
$ t* M: x! o1 l
7 F( \9 \; T- k( U# s8 @: V2. 检测Query语句' W9 k, u. _2 g' P! u
在设置设计规则时,了解规则的范围是否正确涵盖了所有预期的对象,且不包括其他的对象,是个很重要的步骤。
- W$ t$ }, v: x7 F2.1. 使用Test Queries检测查询语句0 T4 x( ?: P6 `9 ^' u2 Y
Test Queries功能可以测试查询语句,验证查询表达式是否定位到正确的对象。# j: D, Q1 g" n3 B) C
在设计规则界面点击窗口右上角的Test Queries按钮,打开Test Queries Result窗口,该窗口中会显示查询语句实际上应用到的对象数,如下图所示。4 c4 i( g$ o j: f! |" {2 E+ J1 ]
0 O: @. R. F9 J& s1 |$ G& R: M
; D7 R( u: T( N3 |
( ?7 e6 R, Z/ ]& m7 v3 f/ n- I* w) K2 B, ^" l
检查当前查询语句应用到的对象
" |3 x5 r' Y; s7 Q( w+ V5 t! m2 f2 l/ x点击Test Queries Result对话框上Expression result 后面的数字,PCB板上会高亮显示该条查询语句适用的设计对象,其它的设计对象会被遮蔽或变暗,以检测查询语句是否涵盖了正确的对象并且不包含多余的对象。
8 g& O8 X! p Z9 D: a3 M1 [2.2. 在PCB Filter中检测9 g1 T" l! P5 x: I& ]9 }! B: k9 X& G
还可以将查询语句复制到PCB Filter 面板的Filter区域内,在勾选Select复选框后,使用Apply to All 按钮测试查询语句的应用范围。具体的方法如 1.3.中的C步骤所述。9 l: G( {3 \# v. n' n; @
3. 用Query语句创建规则的实例
y6 x' {. J& {+ T/ U例如:我想限定电路板上特定区域内的线宽和间距,可以借助Query语句来创建设计规则,步骤如下:
8 a& }5 ?. E. t! L/ g创建Room,并为其命名。
: P: N( g7 S2 h) y! \1 f$ g( y$ A+ x8 K2 X1 }$ D2 D
选择菜单: Design>> Rooms >> Place Rectangular Room,创建包含特定区域的Room,并将其命名为RoomT 。3 w4 x0 Q: |4 a2 ~! o% u
- 创建一个新的Width设计规则。
- 在设计规则中编写Query语句来对Room内的对象进行限定。
9 |2 M) V. Z- S7 F1 ^ + @0 K8 V% M, `4 v
在设计规则中,打开Query Helper 对话框,找到PCB Functions下面的Membership Checks, 找到跟Room相关的关键字 WithinRoom 并双击,使其出现在Query语句预期,然后填入创建的Room的名称RoomT, 点击OK 按钮。如下图所示:$ x. c/ h: w8 W; z
, k+ u$ H) z8 h7 M& x/ m2 |
9 P1 g$ }& X7 ^& b3 ^
- V9 Z6 Q3 r. N( T8 A
" Z6 z P# Q7 {# u- 编写好的Query语句会出现在设计规则的Query语句框内,然后设置线宽范围,并点击OK按钮。规则编写完成,如下图所示:
, A! S* B6 v' W9 I * N$ f/ @ q- H% _9 J4 E
, ~+ G# f6 P- M5 [# I% p
) u7 n1 O' n: x8 Z" K0 E
- 创建一个新的Clearance设计规则。并参考步骤c、d完成间距设计规则的编写。如下图所示:3 O% `) Q8 C5 N% S% V6 D4 h
0 Z' _. Z3 i) j s& H3 g
3 s. M% ?/ B2 g, m# }! _" w
0 u& [+ i: y$ [+ d0 zCustom Query选项使设计人员能够自定义编写更复杂的查询语句,以便更具体地限定规则应用的范围。编写Query 语句并检测其准确性,在我们日常编写设计规则的时候应用非常广泛,通过本篇文章,大家是否对Query语句的编写和检测有了更多的了解呢?
7 t2 x& h! F0 f) C6 B! h0 q
$ s4 y2 m3 Y) F1 ^- H4 |( I3 o$ v1 o* s7 M0 k1 \
|
|