|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
0 ?' u9 g0 F& m, m" T) U* O
在编写设计规则时,我们经常会用Query语句来详细地限定设计规则的范围。如何准确地编写Query语句,并在编写完成之后检查Query语句的范围是否正确呢?下面详细地说明一下。! ~. P6 c8 T/ A& @/ y
1.编写Query语句! ~2 V- u W0 L4 a7 P
在PCB文档界面,选择菜单Design-> Rules… 打开PCB Rules and Constraints Editor 对话框,将Where The Object Matches的范围设置为Custom Query,右侧的区域内就可以直接输入Query语句了, 如下图所示。
/ F; l% u& D- B+ X2 T: u s
+ d. N' Z4 h( b4 x) G. M( c a, A2 @" g; l+ D0 \8 Q
创建Query语句) J8 s W3 n: F, x# v$ j
当我们不了解Query语句的语法、可用的关键字时,可以使用Query Builder和Query Helper这两个功能项协助创建Query语句。
! R/ ~6 _5 T: k/ A2 ?1.1. 使用Query Builder构建查询语句" \3 b8 P6 D; z o* E
Query Builder提供了一种构造查询语句的简单方法,它允许设计者利用条件类型和值构建相关的查询模块。点击Query Builder按钮来打开Building Query from Board对话框,可以在该对话框中创建由AND和OR 逻辑字符串构成的查询表达式。
3 x- n" c4 W! k$ e" {7 _# D# O. v+ k: @; C0 u {* I
1 _* X7 Y5 E& h R" G/ L2 q
7 x0 Z; F& l, ~4 ~7 u
5 t5 F* G; z: g0 h/ u# H使用Query Builder创建查询表达式. ?9 V6 R( ?' k
该对话框的左侧部分用于选择指定目标对象的条件,右侧部分会显示当前查询语句的预览,如上图所示,可以添加多个条件进一步限制目标对象。
3 _) Z! u# [5 E+ {+ m' L7 c1.2.使用Query Helper构建高级查询语句6 G1 G/ g( S- D" a: U
点击Query Helper按钮打开Query Helper对话框。查询引擎会分析PCB设计,列出所有可用的对象,以及所有查询关键字。7 I. C8 g/ P1 w9 b+ J6 y
对话框的Query区域用来生成查询表达式。我们可以直接在该区域输入——会出现辅助的关键字或对象的提示列表。: Q3 d9 t6 `7 N4 A8 R
对话框的Categories区域用于访问可用的PCB函数(PCB Functions)、PCB对象列表(PCB Object Lists)和系统函数(System Functions),它们用来创建查询表达式。在这三个区域中点击一个子类别,会在右侧区域中显示相应的关键字或对象列表。定位要在查询语句中使用的关键字或对象,并双击其条目,该条目就会出现在查询表达式区域的当前光标位置。0 ^3 S& N3 w& j3 L( k0 [) p/ r
6 H' {6 w8 g; s( D2 i
3 D, l9 k/ S( A n) P
2 o3 s3 [9 ~( L2 L0 A/ `
使用Query Helper编写更复杂的查询表达式7 r" T7 z% L1 o X
该对话框上的Check Syntax按钮可用来检查和标记查询表达式中的语法错误。$ a* g3 g$ |8 v) k+ X
1.3. 使用PCB Filter 面板创建设计规则, u- T0 M' N+ d6 v6 j3 M W0 X
创建设计规则的另一种方法:利用PCB Filter面板的查询语句直接创建设计规则。使用Find Similar Objects对话框,可以为PCB Filter 面板创建查询表达式。然后在PCB Filter面板中使用Create Rule按钮,为Filter部分的查询表达式直接创建设计规则。步骤如下:# b* @. d8 Y& B7 f- t5 Z9 ]) f
1 }" ^& y. {/ b- 在PCB面板上选择一个目标对象,对其右键单击,然后在弹出的右键菜单中选择Find Similar Objects命令,打开Find Similar Objects对话框。在该对话框中,将目标对象具有的相同元素设置为Same (例如PCB封装相同,则将Footprint设置为Same),勾选Create Expression 对话框,设置如下图所示。
5 f$ c% j* ?- g% [& I k* R2 P0 D. n- ~: D
+ _) k; [: _" Y1 @4 J3 ^
( z+ A& p: g1 K* K I利用Find Similar Objects 创建查询语句
. |) P2 r+ r0 M, O% { n
' Z. ~/ I+ V8 {+ |1 _" u0 p2 U- 此时可以点击 Apply按钮, 查看目标对象是否都被选中。如果我们需要的对象都被选中,并且不需要的对象不在选择范围内,则说明设置的选择范围没有问题。点击OK按钮,此时已经打开的PCB Filter面板的Filter区域出现了 Find Similar object 对话框产生的查询表达式。如下图所示:
" A% G1 e; E! W& L3 x2 \" O+ x* f0 @
1 O' x/ Z+ ~" N
- M; ]& ?4 e$ V+ ~; _7 a% _5 C0 z+ {; C. l
PCB Filter面板
- u- O1 c" e$ E1 w
. j& `3 M1 G/ t6 A/ X8 u$ R- 此时勾选面板上的Select 复选框,然后点击Apply to All按钮(如上图所示),将会选中PCB板上所有要查询的设计对象。
- 在确保查找对象的范围没有问题后,可以将Filter中的查询语句复制到设计规则对话框的Query语句区域。也可以按照下面所示的步骤创建新的设计规则:
c0 Y# L6 [) r$ q. ~ 7 O7 C5 M X5 ~2 ?
- 点击Filter对话框上的Create Rule按钮,然后在弹出的Choose Design Rule Type对话框中选择要创建的规则类型;. z! ^$ }5 F b+ R* g
) [' R2 w+ i7 j U1 y9 K
6 w& {" `1 g8 X/ b4 `& k
9 i: l K8 x. Q8 v/ f8 x选择要创建的设计规则的类型
1 l9 W" R; ~% H5 o# N/ e0 O- 这将打开PCB Rules and Constrains Editor窗口,查询语句已经被复制到相应的区域,此时只要对规则进行命名,然后进行后续的设置即可。
, V- t8 N- m: f# B( u6 A
1 } K' @- J( i& A' X
5 ]4 Q# ~6 \+ J% D
! l$ E7 u; O; k! \0 m
生成设计规则
7 i4 ?0 c7 P& Q4 b# q
* q0 Q+ A* U8 \& G0 O7 {2. 检测Query语句" A# V9 v4 s. o* R( k7 g1 Q: B
在设置设计规则时,了解规则的范围是否正确涵盖了所有预期的对象,且不包括其他的对象,是个很重要的步骤。
. D8 u6 ~, [( {9 [9 G7 Q" k2.1. 使用Test Queries检测查询语句
) P2 F. K! Q' C5 h7 x2 {! ^Test Queries功能可以测试查询语句,验证查询表达式是否定位到正确的对象。; ^# U* O, g0 t- L, p/ m) O, k
在设计规则界面点击窗口右上角的Test Queries按钮,打开Test Queries Result窗口,该窗口中会显示查询语句实际上应用到的对象数,如下图所示。
6 J' C8 ~2 K, P. v. Z
+ d" V" g: c& u' w9 d) v* d; d; M/ Z5 E: Q: P9 W( Z H( q* u" c4 b% l6 n
! p7 J* V2 j" K, t
/ {- M! ^ ]) |3 y# i
检查当前查询语句应用到的对象9 m) V( h+ T* ~6 k9 E6 Y; `& @# G
点击Test Queries Result对话框上Expression result 后面的数字,PCB板上会高亮显示该条查询语句适用的设计对象,其它的设计对象会被遮蔽或变暗,以检测查询语句是否涵盖了正确的对象并且不包含多余的对象。
& X( O( {0 G9 ~: q( n! `2.2. 在PCB Filter中检测9 F7 C; P5 f0 n: Y6 F
还可以将查询语句复制到PCB Filter 面板的Filter区域内,在勾选Select复选框后,使用Apply to All 按钮测试查询语句的应用范围。具体的方法如 1.3.中的C步骤所述。
! X( k- X, @! x/ W3. 用Query语句创建规则的实例. Q3 L) u* V& ]/ c& [
例如:我想限定电路板上特定区域内的线宽和间距,可以借助Query语句来创建设计规则,步骤如下:9 u2 s9 ]2 z0 @5 ?- R, s
创建Room,并为其命名。
3 ^: c) t H5 M' p& q* c! J( G( g4 A; u+ T4 [; f' `& I1 \7 C# p) a
选择菜单: Design>> Rooms >> Place Rectangular Room,创建包含特定区域的Room,并将其命名为RoomT 。! D) _" {6 [ Y
- 创建一个新的Width设计规则。
- 在设计规则中编写Query语句来对Room内的对象进行限定。
, \6 }( z5 t) C( g: P( k 9 C6 V0 k- }, X+ h
在设计规则中,打开Query Helper 对话框,找到PCB Functions下面的Membership Checks, 找到跟Room相关的关键字 WithinRoom 并双击,使其出现在Query语句预期,然后填入创建的Room的名称RoomT, 点击OK 按钮。如下图所示:7 Q: E3 o" z3 ?# I9 \5 r0 j2 f( {
! D: ?! u& L# B: w
5 t/ ^- @: Z+ z4 O! y! K z( c
/ V7 J, o, q \+ q7 y. R3 H6 [+ ?0 }" i' }7 k X) m2 y: x
- 编写好的Query语句会出现在设计规则的Query语句框内,然后设置线宽范围,并点击OK按钮。规则编写完成,如下图所示:; x% |: d5 ]% i9 d+ |
5 t: `7 ~0 ~2 j2 a& [' d. h
2 @/ I y# A( @2 _+ {
3 O3 B0 m: t8 u# M9 y& O- 创建一个新的Clearance设计规则。并参考步骤c、d完成间距设计规则的编写。如下图所示:% x# L) m Q+ I0 R6 i* h0 p5 e
4 M" i" b2 {& t' V J8 r: W1 W
$ H6 o7 ^* B* G# L2 X4 w
" S$ K1 A, j& y! p9 h0 V# R- H" e
Custom Query选项使设计人员能够自定义编写更复杂的查询语句,以便更具体地限定规则应用的范围。编写Query 语句并检测其准确性,在我们日常编写设计规则的时候应用非常广泛,通过本篇文章,大家是否对Query语句的编写和检测有了更多的了解呢? & [$ y+ L" M# c
9 u6 ~8 O: O; f5 s2 b% G3 u1 b
2 N/ D2 w V) y h2 z+ u. L
|
|