|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
a; t Q; W9 d( o: u1 {在编写设计规则时,我们经常会用Query语句来详细地限定设计规则的范围。如何准确地编写Query语句,并在编写完成之后检查Query语句的范围是否正确呢?下面详细地说明一下。
& G) H; |* \$ @1 f( L1.编写Query语句
3 ]' ^2 L- t7 F& }9 E- y在PCB文档界面,选择菜单Design-> Rules… 打开PCB Rules and Constraints Editor 对话框,将Where The Object Matches的范围设置为Custom Query,右侧的区域内就可以直接输入Query语句了, 如下图所示。
0 k. t4 ^( B. A |; c, f9 O
. a1 s! ?% I8 X4 B: k* S# Q( a2 l
0 p5 D4 Q, }3 [ d创建Query语句
$ C( r- r3 A3 k; t/ ^# o4 i: O当我们不了解Query语句的语法、可用的关键字时,可以使用Query Builder和Query Helper这两个功能项协助创建Query语句。! C5 y1 C$ T* k6 }
1.1. 使用Query Builder构建查询语句, K1 j& L- x* \( s @- H- {+ P
Query Builder提供了一种构造查询语句的简单方法,它允许设计者利用条件类型和值构建相关的查询模块。点击Query Builder按钮来打开Building Query from Board对话框,可以在该对话框中创建由AND和OR 逻辑字符串构成的查询表达式。" u/ Q r, p: x$ b* u# T
" _4 ?, Y# g" _6 g5 |$ M3 I
. F3 B3 T3 h( r [- x4 e5 M
0 O: o. Q; V3 C7 ?6 a8 A& ?( E" [& h! d& a3 o+ i$ A! `( `1 }
使用Query Builder创建查询表达式
6 R! w! E+ z5 s5 z) r, o该对话框的左侧部分用于选择指定目标对象的条件,右侧部分会显示当前查询语句的预览,如上图所示,可以添加多个条件进一步限制目标对象。
/ b$ {8 [ c3 g1.2.使用Query Helper构建高级查询语句9 U- }9 P( E( I% ^0 m
点击Query Helper按钮打开Query Helper对话框。查询引擎会分析PCB设计,列出所有可用的对象,以及所有查询关键字。
' q! }' Q6 w# L+ e& Y对话框的Query区域用来生成查询表达式。我们可以直接在该区域输入——会出现辅助的关键字或对象的提示列表。
" E0 t- @. p! e2 \对话框的Categories区域用于访问可用的PCB函数(PCB Functions)、PCB对象列表(PCB Object Lists)和系统函数(System Functions),它们用来创建查询表达式。在这三个区域中点击一个子类别,会在右侧区域中显示相应的关键字或对象列表。定位要在查询语句中使用的关键字或对象,并双击其条目,该条目就会出现在查询表达式区域的当前光标位置。
! b2 M# H" |& G3 ?3 D5 D
( @5 U2 U* c4 x6 ^
. k1 y4 d2 j9 j2 D5 f7 }
. A7 T0 [ p7 S2 `8 `使用Query Helper编写更复杂的查询表达式
0 a/ L2 L* c9 _9 C8 V该对话框上的Check Syntax按钮可用来检查和标记查询表达式中的语法错误。
# [( l: B9 B& K' _1.3. 使用PCB Filter 面板创建设计规则% N& C0 \; D) n: `7 ]$ H
创建设计规则的另一种方法:利用PCB Filter面板的查询语句直接创建设计规则。使用Find Similar Objects对话框,可以为PCB Filter 面板创建查询表达式。然后在PCB Filter面板中使用Create Rule按钮,为Filter部分的查询表达式直接创建设计规则。步骤如下:( X6 o) f( K3 z- Y
2 O( L% l# F Q B" h3 K- p& ~0 c# D4 q- 在PCB面板上选择一个目标对象,对其右键单击,然后在弹出的右键菜单中选择Find Similar Objects命令,打开Find Similar Objects对话框。在该对话框中,将目标对象具有的相同元素设置为Same (例如PCB封装相同,则将Footprint设置为Same),勾选Create Expression 对话框,设置如下图所示。
! _% v- S7 y. w
. ~2 g& Y) F- C8 W: P. J# [) p
, F* F4 I4 }6 X3 t/ }6 Q
& \* d4 v, B$ r& X9 b2 S利用Find Similar Objects 创建查询语句
4 w/ O3 e$ _3 F7 k0 R$ y! n0 w( r% F) X* B) v5 `
- 此时可以点击 Apply按钮, 查看目标对象是否都被选中。如果我们需要的对象都被选中,并且不需要的对象不在选择范围内,则说明设置的选择范围没有问题。点击OK按钮,此时已经打开的PCB Filter面板的Filter区域出现了 Find Similar object 对话框产生的查询表达式。如下图所示:
% t. k2 n7 ?1 A. m
* ?2 K9 F# F( [: T5 x
& d. u: x# u* K3 q7 d9 M' \3 E2 }7 q" m# S3 `+ x0 N% [
PCB Filter面板
& o% h& _9 ], C8 H& G3 X1 i+ I
8 z. U, c9 i- q' f- 此时勾选面板上的Select 复选框,然后点击Apply to All按钮(如上图所示),将会选中PCB板上所有要查询的设计对象。
- 在确保查找对象的范围没有问题后,可以将Filter中的查询语句复制到设计规则对话框的Query语句区域。也可以按照下面所示的步骤创建新的设计规则:
# o Q, o0 y- u0 d) b- J& B
* h0 D( T$ g) Z( }- 点击Filter对话框上的Create Rule按钮,然后在弹出的Choose Design Rule Type对话框中选择要创建的规则类型;
3 g. _7 Q! H1 t% t" }& Y) ~6 C8 g% V
3 t- b" a& k' ]( b/ b
- e* o. U5 V, N6 M2 u
+ O7 y) [2 s7 x9 w选择要创建的设计规则的类型
. J* W8 k1 x. E% o/ _ b- 这将打开PCB Rules and Constrains Editor窗口,查询语句已经被复制到相应的区域,此时只要对规则进行命名,然后进行后续的设置即可。
, v) v3 m# _" d 7 Y3 N8 r- E! g( \9 t
9 l. N8 z0 @9 _1 h Y& w2 K: n" N
: M9 Q; { T* L/ s: _. }
生成设计规则
/ W. x* ^7 p) a7 r/ v+ x
$ X. S) S; Z7 h2. 检测Query语句& T# f, C5 Y3 a9 r! o' i( v
在设置设计规则时,了解规则的范围是否正确涵盖了所有预期的对象,且不包括其他的对象,是个很重要的步骤。
# u0 Y9 @/ i4 W3 O1 U2.1. 使用Test Queries检测查询语句
+ ~8 H- U; B/ l: a; i) n! w; c3 XTest Queries功能可以测试查询语句,验证查询表达式是否定位到正确的对象。0 ]6 Y J! d; d8 U: C* Q
在设计规则界面点击窗口右上角的Test Queries按钮,打开Test Queries Result窗口,该窗口中会显示查询语句实际上应用到的对象数,如下图所示。
, m0 Q7 {+ P1 i' Y9 {$ L; I, I! f6 f
! B8 Z& ^! ]5 R- G8 y! Y
/ P! ~! b* l8 m1 T/ d) V, V$ b! D C% l3 W a* V8 x
检查当前查询语句应用到的对象3 c% w# Z7 O& v0 C" f* z8 ^
点击Test Queries Result对话框上Expression result 后面的数字,PCB板上会高亮显示该条查询语句适用的设计对象,其它的设计对象会被遮蔽或变暗,以检测查询语句是否涵盖了正确的对象并且不包含多余的对象。
4 T% O9 L3 s- W9 C- z2.2. 在PCB Filter中检测
* n3 \( z2 V* s- p2 A( ~还可以将查询语句复制到PCB Filter 面板的Filter区域内,在勾选Select复选框后,使用Apply to All 按钮测试查询语句的应用范围。具体的方法如 1.3.中的C步骤所述。9 p+ C0 d9 `6 x1 S C, m0 v
3. 用Query语句创建规则的实例
/ B+ U* P9 w0 ]; q) w; y# N- b5 Y @( _例如:我想限定电路板上特定区域内的线宽和间距,可以借助Query语句来创建设计规则,步骤如下:: |8 I3 V' }3 |% r9 C% a
创建Room,并为其命名。& B' Y" o7 E0 H; x! i/ d6 H Y
0 P% n/ X% f j. Q/ z1 Q
选择菜单: Design>> Rooms >> Place Rectangular Room,创建包含特定区域的Room,并将其命名为RoomT 。
. c& ]& x8 j3 u2 t- 创建一个新的Width设计规则。
- 在设计规则中编写Query语句来对Room内的对象进行限定。+ g8 { j" h# h6 R
( ~/ y# h! x/ c在设计规则中,打开Query Helper 对话框,找到PCB Functions下面的Membership Checks, 找到跟Room相关的关键字 WithinRoom 并双击,使其出现在Query语句预期,然后填入创建的Room的名称RoomT, 点击OK 按钮。如下图所示:
2 @2 H! Z1 s" U! _, V, q
8 @9 Z `. {% I! X* |8 S h( \0 n5 f& x: D
8 s1 l5 Y3 f% ?5 k
w% ~$ w# [. H4 c* Y- 编写好的Query语句会出现在设计规则的Query语句框内,然后设置线宽范围,并点击OK按钮。规则编写完成,如下图所示:
0 M. ?. i* D D: Q
; c/ I: T9 z7 k1 P8 z* P
+ G6 |8 a% Y- w9 [
: a9 [- ]: Y4 ^1 f* ^4 l
- 创建一个新的Clearance设计规则。并参考步骤c、d完成间距设计规则的编写。如下图所示:2 p* a* p2 r+ R( w, @- k& \
9 [! ~4 g$ T* l+ s$ v( o
1 ^# _, r+ |& q3 g
, x8 E& B9 f* t, D* w! F! f
Custom Query选项使设计人员能够自定义编写更复杂的查询语句,以便更具体地限定规则应用的范围。编写Query 语句并检测其准确性,在我们日常编写设计规则的时候应用非常广泛,通过本篇文章,大家是否对Query语句的编写和检测有了更多的了解呢? 9 i4 o3 _$ P8 D5 A
4 p$ r# J8 g8 J: |5 Z! D0 E1 Q5 }
$ z) E% T8 c& b: M ^7 ` b |
|