|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
. n6 _, e! x. p9 H4 g在编写设计规则时,我们经常会用Query语句来详细地限定设计规则的范围。如何准确地编写Query语句,并在编写完成之后检查Query语句的范围是否正确呢?下面详细地说明一下。
7 {/ P c2 ~ x6 C5 y6 Y' m9 i1.编写Query语句
0 z2 _$ p% Y8 s" F在PCB文档界面,选择菜单Design-> Rules… 打开PCB Rules and Constraints Editor 对话框,将Where The Object Matches的范围设置为Custom Query,右侧的区域内就可以直接输入Query语句了, 如下图所示。7 x. y+ B0 t% ?1 r1 O8 V
/ D' r9 o2 T1 V: T1 Q
, c) v/ m/ O; k( L/ ?0 J# N创建Query语句# R' @5 v. s- ~
当我们不了解Query语句的语法、可用的关键字时,可以使用Query Builder和Query Helper这两个功能项协助创建Query语句。# `/ Z$ V1 i* l
1.1. 使用Query Builder构建查询语句6 {6 }/ }- M. H# R. z: P: p
Query Builder提供了一种构造查询语句的简单方法,它允许设计者利用条件类型和值构建相关的查询模块。点击Query Builder按钮来打开Building Query from Board对话框,可以在该对话框中创建由AND和OR 逻辑字符串构成的查询表达式。& H% ^( O5 I( b) v
1 l+ e; {( @; O1 S! z7 l7 `" N7 p, x2 r
1 V2 w) O9 L& ]' P# y; l& v b6 @: c
0 V' `; g2 C! ]6 L$ f使用Query Builder创建查询表达式0 a* `9 _' o7 b
该对话框的左侧部分用于选择指定目标对象的条件,右侧部分会显示当前查询语句的预览,如上图所示,可以添加多个条件进一步限制目标对象。
2 K) K, Q1 B, q8 S7 }# H# F1.2.使用Query Helper构建高级查询语句% v+ z1 ^0 @5 l% Q, e4 x" E
点击Query Helper按钮打开Query Helper对话框。查询引擎会分析PCB设计,列出所有可用的对象,以及所有查询关键字。
9 o0 r9 T2 h' z5 ?4 D对话框的Query区域用来生成查询表达式。我们可以直接在该区域输入——会出现辅助的关键字或对象的提示列表。
1 r& B& @2 H* x对话框的Categories区域用于访问可用的PCB函数(PCB Functions)、PCB对象列表(PCB Object Lists)和系统函数(System Functions),它们用来创建查询表达式。在这三个区域中点击一个子类别,会在右侧区域中显示相应的关键字或对象列表。定位要在查询语句中使用的关键字或对象,并双击其条目,该条目就会出现在查询表达式区域的当前光标位置。
' h0 _1 a& `8 D( M* C: \; a6 ]7 `, l# e$ n
' A R# S9 U$ E3 h3 @* W9 `- h# [7 s$ h: @/ v I
使用Query Helper编写更复杂的查询表达式
3 A0 I1 h6 O. Y2 Y该对话框上的Check Syntax按钮可用来检查和标记查询表达式中的语法错误。
) F+ P$ {4 c1 V8 W" G1.3. 使用PCB Filter 面板创建设计规则
* a& @6 l( X' o0 |, I) h创建设计规则的另一种方法:利用PCB Filter面板的查询语句直接创建设计规则。使用Find Similar Objects对话框,可以为PCB Filter 面板创建查询表达式。然后在PCB Filter面板中使用Create Rule按钮,为Filter部分的查询表达式直接创建设计规则。步骤如下:. k% S& Z8 w }; e! _9 B4 J
5 _9 h; T0 G+ i' }' U' I) p! f- 在PCB面板上选择一个目标对象,对其右键单击,然后在弹出的右键菜单中选择Find Similar Objects命令,打开Find Similar Objects对话框。在该对话框中,将目标对象具有的相同元素设置为Same (例如PCB封装相同,则将Footprint设置为Same),勾选Create Expression 对话框,设置如下图所示。 U2 B9 `! H/ ~; ]( E
( u( @- i/ U% \( v# ?. d3 @, ^
: }6 p' _4 a. U; J% P
9 C: y$ K5 r5 f0 _- [* M& F6 s利用Find Similar Objects 创建查询语句' n% c0 d; A: I6 K. Y+ g
. C. Q0 X$ k2 r& b3 v
- 此时可以点击 Apply按钮, 查看目标对象是否都被选中。如果我们需要的对象都被选中,并且不需要的对象不在选择范围内,则说明设置的选择范围没有问题。点击OK按钮,此时已经打开的PCB Filter面板的Filter区域出现了 Find Similar object 对话框产生的查询表达式。如下图所示: s& c, n3 c" m1 G8 C8 i: |
/ e0 R( T) y* r( s8 U
6 ^4 W8 b0 u C% c/ g( c2 j: F) u& Z: M( N# X" k; e3 w3 ^
PCB Filter面板
" H/ Y2 z- j8 a3 p n0 d- t( M, w: O5 o6 H0 V' W4 {' l
- 此时勾选面板上的Select 复选框,然后点击Apply to All按钮(如上图所示),将会选中PCB板上所有要查询的设计对象。
- 在确保查找对象的范围没有问题后,可以将Filter中的查询语句复制到设计规则对话框的Query语句区域。也可以按照下面所示的步骤创建新的设计规则: p8 [. {" x: I; ]# ?! z! m
# e" f J1 l$ D c% U- 点击Filter对话框上的Create Rule按钮,然后在弹出的Choose Design Rule Type对话框中选择要创建的规则类型;
Q( J6 G9 u0 I! O" Z/ \
% T9 S' t& _- i) t2 Q
) M+ o" |7 I0 N- _2 F, \! f1 U( f, N
7 y( j* u+ j9 O1 f& M) v% B# q
选择要创建的设计规则的类型% E( E. _% J, C% ^$ Y& Z U, H
- 这将打开PCB Rules and Constrains Editor窗口,查询语句已经被复制到相应的区域,此时只要对规则进行命名,然后进行后续的设置即可。: m$ Q3 t4 D/ p% d
" J$ z3 Y. X. G4 s
* ~9 B1 a% `, F# s* X9 j! ~ o1 f& s% h) B, Z5 y+ e* ?
生成设计规则
: Z! L s; p% B4 a: {0 ~
, c0 C" @5 s3 F2 l- r2 B2. 检测Query语句
0 X5 q0 d! R5 [$ f在设置设计规则时,了解规则的范围是否正确涵盖了所有预期的对象,且不包括其他的对象,是个很重要的步骤。$ P5 B- \) |: g; P% s+ \& B
2.1. 使用Test Queries检测查询语句$ |( V2 m- x% t/ ]" h. V% j+ Y. ~
Test Queries功能可以测试查询语句,验证查询表达式是否定位到正确的对象。. e3 {) L2 p! ?
在设计规则界面点击窗口右上角的Test Queries按钮,打开Test Queries Result窗口,该窗口中会显示查询语句实际上应用到的对象数,如下图所示。
, g% O' G6 Q1 M& h$ J+ s" F+ Y% N1 o& F
# Q, `5 A( @' f* L5 I
Q- E$ U0 T9 P& A. \, v% D
3 w t. @6 t' W9 _: `检查当前查询语句应用到的对象
0 T4 |) } n: g. [- q9 A) A点击Test Queries Result对话框上Expression result 后面的数字,PCB板上会高亮显示该条查询语句适用的设计对象,其它的设计对象会被遮蔽或变暗,以检测查询语句是否涵盖了正确的对象并且不包含多余的对象。! R% \9 j+ ^) U. N4 e2 p9 p8 t6 J, _
2.2. 在PCB Filter中检测
: f6 `" v% J! A还可以将查询语句复制到PCB Filter 面板的Filter区域内,在勾选Select复选框后,使用Apply to All 按钮测试查询语句的应用范围。具体的方法如 1.3.中的C步骤所述。
( h% H7 l5 M% h' q& r5 \/ u3. 用Query语句创建规则的实例
) Q- w6 A2 ` Q: K7 X5 f$ K例如:我想限定电路板上特定区域内的线宽和间距,可以借助Query语句来创建设计规则,步骤如下:
6 D6 e2 j; j# S& ^6 f创建Room,并为其命名。
4 I: ]+ g- ]9 {+ @- Z. [( X7 U4 ~) Y: v) g
选择菜单: Design>> Rooms >> Place Rectangular Room,创建包含特定区域的Room,并将其命名为RoomT 。
. I# K: Z" s5 \) ^! |! d/ |; X. K- 创建一个新的Width设计规则。
- 在设计规则中编写Query语句来对Room内的对象进行限定。
8 Y; r, Q' Z) _1 z6 V( n7 j* t
8 w' n# V' W( K3 j: J% `- M( F在设计规则中,打开Query Helper 对话框,找到PCB Functions下面的Membership Checks, 找到跟Room相关的关键字 WithinRoom 并双击,使其出现在Query语句预期,然后填入创建的Room的名称RoomT, 点击OK 按钮。如下图所示:
2 t" |( |* Z/ V( u9 M) I, W5 ~
3 e0 o" o# b% u- z
; ]' X9 a* C4 Y/ F l
0 v: j7 l9 q, @# Z
0 N8 X6 | t* E- 编写好的Query语句会出现在设计规则的Query语句框内,然后设置线宽范围,并点击OK按钮。规则编写完成,如下图所示:
1 @3 _; ~& J6 r$ Z0 n8 u5 v
! N; l8 d1 n& V2 \# c5 ~
R: n6 ?: B# o& ?1 u8 g4 \' m6 [6 r1 ~9 o
- 创建一个新的Clearance设计规则。并参考步骤c、d完成间距设计规则的编写。如下图所示:* a8 i, f4 Y* ]/ z
+ D0 W* w6 S" @6 B3 ~" o6 {
6 S. ~+ Y: s) H/ L
# f* ]% b$ Y2 T' r J+ x+ F* X; {
Custom Query选项使设计人员能够自定义编写更复杂的查询语句,以便更具体地限定规则应用的范围。编写Query 语句并检测其准确性,在我们日常编写设计规则的时候应用非常广泛,通过本篇文章,大家是否对Query语句的编写和检测有了更多的了解呢?
. S$ N! j+ \; [+ ?* T/ a) a: P* Y' }* q( ~; J- [( i
1 M4 t3 f( H- j8 l5 C& I; P! F
|
|