|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
. D7 t/ r- e5 e) Z
在编写设计规则时,我们经常会用Query语句来详细地限定设计规则的范围。如何准确地编写Query语句,并在编写完成之后检查Query语句的范围是否正确呢?下面详细地说明一下。
" m8 H0 c6 y c, M1.编写Query语句
/ D/ S1 }! J! p7 ?$ @" h( k" `, z# R在PCB文档界面,选择菜单Design-> Rules… 打开PCB Rules and Constraints Editor 对话框,将Where The Object Matches的范围设置为Custom Query,右侧的区域内就可以直接输入Query语句了, 如下图所示。" T* }; F9 t3 s7 g3 l
* b% u* o& x( M; @3 c7 _5 t- _1 C) |, ?1 s1 w3 S$ S8 |
创建Query语句- N8 V/ N/ o+ j6 ?/ K% D
当我们不了解Query语句的语法、可用的关键字时,可以使用Query Builder和Query Helper这两个功能项协助创建Query语句。
2 j4 m( z6 T+ f# N1.1. 使用Query Builder构建查询语句
# m$ b( ? U0 r3 k- R2 iQuery Builder提供了一种构造查询语句的简单方法,它允许设计者利用条件类型和值构建相关的查询模块。点击Query Builder按钮来打开Building Query from Board对话框,可以在该对话框中创建由AND和OR 逻辑字符串构成的查询表达式。( C4 Y O4 w* x% m4 J! z% D
, J4 B; L! M* B* w3 [# |2 Q: p! W+ y3 L. t. U1 K& n% ^
8 T, \8 Q- K. t+ A8 t6 g: K
& G9 {5 l/ \. i9 U2 o6 z使用Query Builder创建查询表达式- |4 m! |* x/ C8 S7 i& k1 G2 i
该对话框的左侧部分用于选择指定目标对象的条件,右侧部分会显示当前查询语句的预览,如上图所示,可以添加多个条件进一步限制目标对象。
+ J! o) z$ g, |/ v" [7 p1.2.使用Query Helper构建高级查询语句& D- J( S/ u) c- {4 ?0 B
点击Query Helper按钮打开Query Helper对话框。查询引擎会分析PCB设计,列出所有可用的对象,以及所有查询关键字。* [' {6 m9 x; ?/ X
对话框的Query区域用来生成查询表达式。我们可以直接在该区域输入——会出现辅助的关键字或对象的提示列表。
+ d h8 c# i$ @对话框的Categories区域用于访问可用的PCB函数(PCB Functions)、PCB对象列表(PCB Object Lists)和系统函数(System Functions),它们用来创建查询表达式。在这三个区域中点击一个子类别,会在右侧区域中显示相应的关键字或对象列表。定位要在查询语句中使用的关键字或对象,并双击其条目,该条目就会出现在查询表达式区域的当前光标位置。9 ]! D' D/ w2 k3 g$ s
& I9 V7 Z8 ~. K
; V2 X ~& A2 M; l4 x, @1 L
, C5 H- A8 x) U6 O! J. Y/ h7 \3 [使用Query Helper编写更复杂的查询表达式
0 {2 w+ d- X, D该对话框上的Check Syntax按钮可用来检查和标记查询表达式中的语法错误。
, _4 ]- R* {/ A6 h9 Z. F$ u1.3. 使用PCB Filter 面板创建设计规则 e+ }; I$ D1 U+ `" |
创建设计规则的另一种方法:利用PCB Filter面板的查询语句直接创建设计规则。使用Find Similar Objects对话框,可以为PCB Filter 面板创建查询表达式。然后在PCB Filter面板中使用Create Rule按钮,为Filter部分的查询表达式直接创建设计规则。步骤如下:6 J$ P* u1 s9 q+ V! B3 V
: D9 ^; t3 o# I( D
- 在PCB面板上选择一个目标对象,对其右键单击,然后在弹出的右键菜单中选择Find Similar Objects命令,打开Find Similar Objects对话框。在该对话框中,将目标对象具有的相同元素设置为Same (例如PCB封装相同,则将Footprint设置为Same),勾选Create Expression 对话框,设置如下图所示。9 U; o& }6 C$ E$ d7 b
8 Q4 W# d% @' i$ z7 W7 y
0 r5 R4 R7 P# n5 j3 s. N/ p& b9 P3 f2 a& q+ P
利用Find Similar Objects 创建查询语句
4 v4 R$ i3 Y7 e. w% e, R* H1 y: h& z+ ~! ?1 L
- 此时可以点击 Apply按钮, 查看目标对象是否都被选中。如果我们需要的对象都被选中,并且不需要的对象不在选择范围内,则说明设置的选择范围没有问题。点击OK按钮,此时已经打开的PCB Filter面板的Filter区域出现了 Find Similar object 对话框产生的查询表达式。如下图所示:
$ e6 t* K6 q- p" ]0 p: q& ]; P
* q4 B/ Q1 u+ T- ^
) B! @1 H1 n5 e/ [) X% K# X
7 u, ~' n0 Z0 [! `: X+ B6 m$ vPCB Filter面板6 s3 O1 e# _& E& g7 o) s
$ x* u2 X, x" s# D
- 此时勾选面板上的Select 复选框,然后点击Apply to All按钮(如上图所示),将会选中PCB板上所有要查询的设计对象。
- 在确保查找对象的范围没有问题后,可以将Filter中的查询语句复制到设计规则对话框的Query语句区域。也可以按照下面所示的步骤创建新的设计规则:; q3 E5 ^5 C3 c0 h7 q' Z; C
. S) m7 }" ^/ k. `/ ^; X8 n- 点击Filter对话框上的Create Rule按钮,然后在弹出的Choose Design Rule Type对话框中选择要创建的规则类型;. U6 T! J% H! o' c$ p: B
- }4 q# [2 l% J6 ]
8 k/ {7 F, n3 y5 G( z% M
2 i; p9 z3 g5 t8 |; G选择要创建的设计规则的类型
$ Z+ _) S$ d9 D3 \ _4 X% C- 这将打开PCB Rules and Constrains Editor窗口,查询语句已经被复制到相应的区域,此时只要对规则进行命名,然后进行后续的设置即可。
# U8 ]; Y: r: J7 M- ~3 a
6 l# q+ E6 f! k! }& x) v0 s5 Y
) g" a* V9 s4 @' d: k( c' b6 t% `
* A( H2 p: S2 T( _% s: x- ?' a生成设计规则
$ P! I- E5 W! J6 \; f! K3 r
, ~# }' i; U8 ~( ^" p2. 检测Query语句, j' Q9 A# \! ?9 f' L! Z
在设置设计规则时,了解规则的范围是否正确涵盖了所有预期的对象,且不包括其他的对象,是个很重要的步骤。4 `) ^, K) c; ]: i: g9 k
2.1. 使用Test Queries检测查询语句! K# D' }5 y# T7 U
Test Queries功能可以测试查询语句,验证查询表达式是否定位到正确的对象。
7 R* u7 U) m7 p7 s在设计规则界面点击窗口右上角的Test Queries按钮,打开Test Queries Result窗口,该窗口中会显示查询语句实际上应用到的对象数,如下图所示。
4 Q5 w* B8 {7 o; p8 [5 z) s9 X7 q0 i5 f/ K! v- q- N
9 z: }% L1 ]; {
( H; D* m: }9 ~; D% ?: M
/ F8 m2 o. U# k0 E
检查当前查询语句应用到的对象3 _$ d9 f* f2 U; {& }
点击Test Queries Result对话框上Expression result 后面的数字,PCB板上会高亮显示该条查询语句适用的设计对象,其它的设计对象会被遮蔽或变暗,以检测查询语句是否涵盖了正确的对象并且不包含多余的对象。
0 i1 n! l' s V ~: o/ k2.2. 在PCB Filter中检测
) o: Y( D% @0 w还可以将查询语句复制到PCB Filter 面板的Filter区域内,在勾选Select复选框后,使用Apply to All 按钮测试查询语句的应用范围。具体的方法如 1.3.中的C步骤所述。
6 ^2 C1 z1 s; I; {5 |3. 用Query语句创建规则的实例
+ Q9 u3 q! U2 o+ C5 J, n3 s例如:我想限定电路板上特定区域内的线宽和间距,可以借助Query语句来创建设计规则,步骤如下:. R' W& \5 K6 p: s- k
创建Room,并为其命名。
7 V& f, h$ t, T9 Y5 k: l5 d8 u6 _8 H& ` e5 v& g( p3 Z* M7 v
选择菜单: Design>> Rooms >> Place Rectangular Room,创建包含特定区域的Room,并将其命名为RoomT 。
3 C! }& e6 K9 o2 ]* Z d! p5 A7 z- 创建一个新的Width设计规则。
- 在设计规则中编写Query语句来对Room内的对象进行限定。: x) h' a/ f; n( M& x
* n( k$ o3 C3 R* x
在设计规则中,打开Query Helper 对话框,找到PCB Functions下面的Membership Checks, 找到跟Room相关的关键字 WithinRoom 并双击,使其出现在Query语句预期,然后填入创建的Room的名称RoomT, 点击OK 按钮。如下图所示:1 Z: R! p% x ?) s9 I
$ N9 |/ E9 n) A
- P9 {; u$ l" q
6 G I8 _& G$ n* y2 w
! A0 O8 N" p, v2 L7 J S( X- 编写好的Query语句会出现在设计规则的Query语句框内,然后设置线宽范围,并点击OK按钮。规则编写完成,如下图所示:
( t. {% I7 l+ D" x) l ' Z% I2 @! v" J9 _6 y
2 w; j Y& T) R* f3 n+ W
+ ` x. L0 i7 s4 O( W! ]- 创建一个新的Clearance设计规则。并参考步骤c、d完成间距设计规则的编写。如下图所示:' B5 A1 y$ ~) u2 m/ a) A4 H$ x5 }
9 `; ~* [5 z) ^7 ^7 V# M4 Z" F6 b: u, k
6 j3 D9 @5 j5 E% T+ j
. e2 A5 g* s# Q. {3 `. lCustom Query选项使设计人员能够自定义编写更复杂的查询语句,以便更具体地限定规则应用的范围。编写Query 语句并检测其准确性,在我们日常编写设计规则的时候应用非常广泛,通过本篇文章,大家是否对Query语句的编写和检测有了更多的了解呢? , e5 t* [; b( c8 D
# o, ~! d3 C4 a9 C; ^0 m1 c4 n
4 p+ ^& l& O3 h, ^ J7 Z* y7 M
|
|