|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
6 e9 j# n) f) N p8 S' D2 y
在编写设计规则时,我们经常会用Query语句来详细地限定设计规则的范围。如何准确地编写Query语句,并在编写完成之后检查Query语句的范围是否正确呢?下面详细地说明一下。2 `$ N& i' y; M4 _( N4 b) v
1.编写Query语句) J1 k; N, i! f* v9 `& F$ ?
在PCB文档界面,选择菜单Design-> Rules… 打开PCB Rules and Constraints Editor 对话框,将Where The Object Matches的范围设置为Custom Query,右侧的区域内就可以直接输入Query语句了, 如下图所示。 @& F/ ~6 Z% p- W9 [4 l! f) V
# Q8 {% ]8 S- Y0 N) j& g
+ O. a) |; W( C& u; V: m( _5 l9 n创建Query语句4 x% y( d1 S5 L! T0 \$ Y
当我们不了解Query语句的语法、可用的关键字时,可以使用Query Builder和Query Helper这两个功能项协助创建Query语句。
% N6 V3 l2 Q% y- w/ v& k! I& s. G1.1. 使用Query Builder构建查询语句, ]* U% B( W. ]7 h
Query Builder提供了一种构造查询语句的简单方法,它允许设计者利用条件类型和值构建相关的查询模块。点击Query Builder按钮来打开Building Query from Board对话框,可以在该对话框中创建由AND和OR 逻辑字符串构成的查询表达式。
/ I* K+ a% t* c: q$ a! V# V1 Q- s/ i% ?! j+ n5 f
2 Z, ^8 W1 ? Q) ^
$ J0 t1 B- w! T3 }8 ^
6 ]. Y& ?9 M; p/ A$ Q! P: A使用Query Builder创建查询表达式
$ j# V" f& J l; S, H9 F7 j4 F该对话框的左侧部分用于选择指定目标对象的条件,右侧部分会显示当前查询语句的预览,如上图所示,可以添加多个条件进一步限制目标对象。3 _0 I/ C. y {( X& c9 Z
1.2.使用Query Helper构建高级查询语句
; @7 D: r' ^3 u点击Query Helper按钮打开Query Helper对话框。查询引擎会分析PCB设计,列出所有可用的对象,以及所有查询关键字。' K/ O. r0 X$ b" ]5 i' ` Z
对话框的Query区域用来生成查询表达式。我们可以直接在该区域输入——会出现辅助的关键字或对象的提示列表。6 b* v+ ]- i) D7 n
对话框的Categories区域用于访问可用的PCB函数(PCB Functions)、PCB对象列表(PCB Object Lists)和系统函数(System Functions),它们用来创建查询表达式。在这三个区域中点击一个子类别,会在右侧区域中显示相应的关键字或对象列表。定位要在查询语句中使用的关键字或对象,并双击其条目,该条目就会出现在查询表达式区域的当前光标位置。
- u* I- V2 l6 @+ L" l5 E( G m9 G. N/ F) H" @3 N
$ B7 s: V2 ]2 @0 e
2 n7 g7 r) f9 e |3 n使用Query Helper编写更复杂的查询表达式
$ ]7 E6 A, e3 f4 f* d该对话框上的Check Syntax按钮可用来检查和标记查询表达式中的语法错误。% H4 Y% v0 H3 w" \
1.3. 使用PCB Filter 面板创建设计规则
4 C/ @' j8 @8 N$ E+ v9 c) j创建设计规则的另一种方法:利用PCB Filter面板的查询语句直接创建设计规则。使用Find Similar Objects对话框,可以为PCB Filter 面板创建查询表达式。然后在PCB Filter面板中使用Create Rule按钮,为Filter部分的查询表达式直接创建设计规则。步骤如下:9 D" @$ M) \/ z
5 _8 S5 {% s' z% Y4 `- 在PCB面板上选择一个目标对象,对其右键单击,然后在弹出的右键菜单中选择Find Similar Objects命令,打开Find Similar Objects对话框。在该对话框中,将目标对象具有的相同元素设置为Same (例如PCB封装相同,则将Footprint设置为Same),勾选Create Expression 对话框,设置如下图所示。; |. X: b6 P2 B0 J9 G) V& `5 L1 m
2 B7 K: F, e9 M5 v# f3 U6 b; ^. m
% t/ C: ^# t7 S- E; h: B4 m( }' m
5 I) C% k" z9 [; n* u利用Find Similar Objects 创建查询语句$ F5 M1 d9 U3 o1 X L% b; ~7 K
/ W2 k: j9 U* J' y6 J/ E
- 此时可以点击 Apply按钮, 查看目标对象是否都被选中。如果我们需要的对象都被选中,并且不需要的对象不在选择范围内,则说明设置的选择范围没有问题。点击OK按钮,此时已经打开的PCB Filter面板的Filter区域出现了 Find Similar object 对话框产生的查询表达式。如下图所示:: |. M1 V$ }$ b" \' a
( Y; ?+ B" s0 E S
+ `9 C/ O* Z( ~9 X4 L, C/ ? Z' M3 Z7 H6 k+ y
PCB Filter面板- O9 q) E3 Z6 ?' z
7 u% Y- j$ u- E a4 @, l- V# v
- 此时勾选面板上的Select 复选框,然后点击Apply to All按钮(如上图所示),将会选中PCB板上所有要查询的设计对象。
- 在确保查找对象的范围没有问题后,可以将Filter中的查询语句复制到设计规则对话框的Query语句区域。也可以按照下面所示的步骤创建新的设计规则:
& |5 F7 M1 d' p: A* {. ~, c $ y* J6 ?( }0 B% s1 `
- 点击Filter对话框上的Create Rule按钮,然后在弹出的Choose Design Rule Type对话框中选择要创建的规则类型;6 }2 A9 I6 u) X: |6 l
5 [' I4 b9 m# s! i! B5 r7 Y
) G# Q0 p3 V0 O
) B( a3 D3 [& o: e9 L @8 G选择要创建的设计规则的类型
) m2 K2 b& S: H/ z7 _2 h$ u- 这将打开PCB Rules and Constrains Editor窗口,查询语句已经被复制到相应的区域,此时只要对规则进行命名,然后进行后续的设置即可。
5 L6 E) H; d2 O8 g . H5 u0 x! t& t6 M4 R! C+ U7 o' m
0 z: U' T2 y/ B0 S+ J
' N6 D7 a$ f, m2 L
生成设计规则& W- f7 @8 G2 y! }7 m- U, o
4 K# J( x( Q/ B- G& w5 x# y$ a# |; a2. 检测Query语句; F; S# B" @; @
在设置设计规则时,了解规则的范围是否正确涵盖了所有预期的对象,且不包括其他的对象,是个很重要的步骤。# F2 k' ^/ a9 C5 b* D; ^* i
2.1. 使用Test Queries检测查询语句3 e* R+ H9 R; q) w$ q
Test Queries功能可以测试查询语句,验证查询表达式是否定位到正确的对象。$ L. \7 `3 m% L x
在设计规则界面点击窗口右上角的Test Queries按钮,打开Test Queries Result窗口,该窗口中会显示查询语句实际上应用到的对象数,如下图所示。6 U' P3 z% ]3 |. g' d
3 x- ]( b* c3 S4 {5 M) Q- f
* l S. z& [2 s. I! Z
# a) c* Z( C h% h' U: g! |
- y, Y; ~2 Z8 |% }3 L
检查当前查询语句应用到的对象8 {& v& k8 d+ h: P
点击Test Queries Result对话框上Expression result 后面的数字,PCB板上会高亮显示该条查询语句适用的设计对象,其它的设计对象会被遮蔽或变暗,以检测查询语句是否涵盖了正确的对象并且不包含多余的对象。
& v4 C) B. {. }5 c1 W; P2.2. 在PCB Filter中检测( X- V) Q: [- T3 D
还可以将查询语句复制到PCB Filter 面板的Filter区域内,在勾选Select复选框后,使用Apply to All 按钮测试查询语句的应用范围。具体的方法如 1.3.中的C步骤所述。1 @1 l3 [& @3 `4 ~
3. 用Query语句创建规则的实例
% M+ v+ ~9 S4 M: u0 E- B& m例如:我想限定电路板上特定区域内的线宽和间距,可以借助Query语句来创建设计规则,步骤如下:
# v+ c% i4 U2 u创建Room,并为其命名。! L, w* D$ I* m3 i
/ N7 e7 c% f+ |/ A" I4 M, |
选择菜单: Design>> Rooms >> Place Rectangular Room,创建包含特定区域的Room,并将其命名为RoomT 。0 x- M% C* H' I6 B9 m* [
- 创建一个新的Width设计规则。
- 在设计规则中编写Query语句来对Room内的对象进行限定。" v# u: o' `1 c+ @: j
+ B+ i8 S( Y2 Q: K% G; k0 L在设计规则中,打开Query Helper 对话框,找到PCB Functions下面的Membership Checks, 找到跟Room相关的关键字 WithinRoom 并双击,使其出现在Query语句预期,然后填入创建的Room的名称RoomT, 点击OK 按钮。如下图所示:2 ]: K6 M' }$ L% l* U
+ T% q- P8 ^ [7 X2 E* ?
U" x2 Z! ]5 K8 E
7 K1 ]2 K$ v7 t0 S
0 p& K* _7 q8 J/ P" q
- 编写好的Query语句会出现在设计规则的Query语句框内,然后设置线宽范围,并点击OK按钮。规则编写完成,如下图所示:
4 {+ B. n+ X1 Z% \ ; Y* y* ^- ~6 J
6 D/ G; r7 I6 |: x& v$ C* y" H
% H4 ~2 u& t& N) i7 J) u( }" X- 创建一个新的Clearance设计规则。并参考步骤c、d完成间距设计规则的编写。如下图所示:
0 J6 i2 M( y! S. h) s 8 J% N5 {9 ]. Z7 D" J
4 ?3 P3 o0 E; D* q( M- A$ |
' D( H1 D& {0 h6 ^0 h% z
Custom Query选项使设计人员能够自定义编写更复杂的查询语句,以便更具体地限定规则应用的范围。编写Query 语句并检测其准确性,在我们日常编写设计规则的时候应用非常广泛,通过本篇文章,大家是否对Query语句的编写和检测有了更多的了解呢? # L# w4 x" @) s% G% z+ @
0 a% e) w+ |; b/ t! o, U; N% a2 a3 B/ Z5 n! C2 `+ {7 e" T
|
|