|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
0 q" Z% U8 e: n9 `+ ~2 [# K在编写设计规则时,我们经常会用Query语句来详细地限定设计规则的范围。如何准确地编写Query语句,并在编写完成之后检查Query语句的范围是否正确呢?下面详细地说明一下。
e4 N1 ^9 B7 `3 [. l2 a- P1.编写Query语句
: _. P) C& ^: U' w/ W% H1 D7 A _1 \在PCB文档界面,选择菜单Design-> Rules… 打开PCB Rules and Constraints Editor 对话框,将Where The Object Matches的范围设置为Custom Query,右侧的区域内就可以直接输入Query语句了, 如下图所示。: D8 |3 |7 S+ C, W: `% t
4 T* c8 M" W, A( a% `
' t8 ~8 m: u5 F! C$ E创建Query语句
! n5 n, y8 z, t; _" c当我们不了解Query语句的语法、可用的关键字时,可以使用Query Builder和Query Helper这两个功能项协助创建Query语句。. _& g h0 e$ a3 M0 H
1.1. 使用Query Builder构建查询语句
" o% h+ W& V/ }3 jQuery Builder提供了一种构造查询语句的简单方法,它允许设计者利用条件类型和值构建相关的查询模块。点击Query Builder按钮来打开Building Query from Board对话框,可以在该对话框中创建由AND和OR 逻辑字符串构成的查询表达式。
8 r1 T' H/ I4 c; S
* y7 c2 {0 c: ~( M- D
) p# u1 C1 n4 p- s7 O
. a" O" P5 j2 o" B6 _5 s" L. s! Q
使用Query Builder创建查询表达式
- l/ y3 V6 R: R/ L! [& d! R( d该对话框的左侧部分用于选择指定目标对象的条件,右侧部分会显示当前查询语句的预览,如上图所示,可以添加多个条件进一步限制目标对象。. M! R3 R0 \. x; n: K9 {: U
1.2.使用Query Helper构建高级查询语句, Y' g5 \! G* n! }# W/ P
点击Query Helper按钮打开Query Helper对话框。查询引擎会分析PCB设计,列出所有可用的对象,以及所有查询关键字。
% b) X4 t0 d7 {5 N; r对话框的Query区域用来生成查询表达式。我们可以直接在该区域输入——会出现辅助的关键字或对象的提示列表。
B0 P' N& l( h对话框的Categories区域用于访问可用的PCB函数(PCB Functions)、PCB对象列表(PCB Object Lists)和系统函数(System Functions),它们用来创建查询表达式。在这三个区域中点击一个子类别,会在右侧区域中显示相应的关键字或对象列表。定位要在查询语句中使用的关键字或对象,并双击其条目,该条目就会出现在查询表达式区域的当前光标位置。; j4 x( H }+ ^% E; N& ?5 Q) x
/ j S* ?+ P! O/ G C
$ Q# C: R2 G j+ C$ K0 Q; E
3 s* n4 y# B- v2 N0 {- C5 N
使用Query Helper编写更复杂的查询表达式
: r3 T) j( s" w$ _8 ~该对话框上的Check Syntax按钮可用来检查和标记查询表达式中的语法错误。; r- X& e& F% p+ T3 f+ X
1.3. 使用PCB Filter 面板创建设计规则
1 M5 I, G9 A/ J7 q& i创建设计规则的另一种方法:利用PCB Filter面板的查询语句直接创建设计规则。使用Find Similar Objects对话框,可以为PCB Filter 面板创建查询表达式。然后在PCB Filter面板中使用Create Rule按钮,为Filter部分的查询表达式直接创建设计规则。步骤如下:. s: W5 f0 [8 `- _; E4 Y2 m. b" l
1 U: ]) s0 i+ D1 q# o
- 在PCB面板上选择一个目标对象,对其右键单击,然后在弹出的右键菜单中选择Find Similar Objects命令,打开Find Similar Objects对话框。在该对话框中,将目标对象具有的相同元素设置为Same (例如PCB封装相同,则将Footprint设置为Same),勾选Create Expression 对话框,设置如下图所示。
: R3 ^ |" @' ^" F( v3 @$ E, ~
' n5 J+ F, Z# H2 K
, T; }+ {4 n! y5 Z1 p
% I9 H3 n& Z* O# I$ H
利用Find Similar Objects 创建查询语句) E5 q4 f( K( ~7 Z, j* T
7 x7 |% X! p3 q5 ]) @- 此时可以点击 Apply按钮, 查看目标对象是否都被选中。如果我们需要的对象都被选中,并且不需要的对象不在选择范围内,则说明设置的选择范围没有问题。点击OK按钮,此时已经打开的PCB Filter面板的Filter区域出现了 Find Similar object 对话框产生的查询表达式。如下图所示:" Y; F, ^8 Q, G
3 n7 f$ E( |' Q$ h$ o6 C
% b8 }- J( h9 Y M0 J; ?: r' ^7 s3 [" H! w9 V
PCB Filter面板3 A6 j7 t" Q7 _9 T
4 |, B6 C; s* j! x; M- 此时勾选面板上的Select 复选框,然后点击Apply to All按钮(如上图所示),将会选中PCB板上所有要查询的设计对象。
- 在确保查找对象的范围没有问题后,可以将Filter中的查询语句复制到设计规则对话框的Query语句区域。也可以按照下面所示的步骤创建新的设计规则:1 k" G0 ?( x( _; w2 X
$ `* z1 q2 l# E; l9 k' j/ D
- 点击Filter对话框上的Create Rule按钮,然后在弹出的Choose Design Rule Type对话框中选择要创建的规则类型;
# y' ~$ v% {9 O
' ]& E" g8 x' W1 j9 s, S
8 _! v% e& o/ z
. {; H3 O1 i3 S, a+ c选择要创建的设计规则的类型
! w7 A) w, l7 x! l- 这将打开PCB Rules and Constrains Editor窗口,查询语句已经被复制到相应的区域,此时只要对规则进行命名,然后进行后续的设置即可。
, k' q1 D7 c3 V6 S8 ?( V
8 s! z5 q8 W# w" [& M1 F5 z) g
( q; y! L4 }/ _8 o& H k( L6 H
+ n9 S1 ~# [8 ^) E
生成设计规则
! ~2 \" B+ N/ ^- e
* P7 t1 s. g7 y3 C2 y/ T H2. 检测Query语句" l6 i% P# L m% k
在设置设计规则时,了解规则的范围是否正确涵盖了所有预期的对象,且不包括其他的对象,是个很重要的步骤。
& Q( s; d# O8 O4 x% i2.1. 使用Test Queries检测查询语句
, x; g1 `3 ?6 L- i" L9 PTest Queries功能可以测试查询语句,验证查询表达式是否定位到正确的对象。! L; N+ Q1 u# m* l: Y5 Y) [
在设计规则界面点击窗口右上角的Test Queries按钮,打开Test Queries Result窗口,该窗口中会显示查询语句实际上应用到的对象数,如下图所示。
$ @( p x. D& [ D( j. E
8 b- Q5 e* o- S& n: T$ \* x1 d% } G$ I* x- y5 [
8 N2 l1 m D7 Y5 Y# Z
" `0 M8 u# o. h0 t6 a% f4 q) J% P! w检查当前查询语句应用到的对象2 w! X4 m- I5 ^4 W+ W _) X0 I
点击Test Queries Result对话框上Expression result 后面的数字,PCB板上会高亮显示该条查询语句适用的设计对象,其它的设计对象会被遮蔽或变暗,以检测查询语句是否涵盖了正确的对象并且不包含多余的对象。- F% c& W7 ^0 _9 ^% C% h8 p5 B
2.2. 在PCB Filter中检测' [* v* v7 o1 F! ~ p) V4 R' ?
还可以将查询语句复制到PCB Filter 面板的Filter区域内,在勾选Select复选框后,使用Apply to All 按钮测试查询语句的应用范围。具体的方法如 1.3.中的C步骤所述。* E5 N2 J4 @: O) D/ [: W: M
3. 用Query语句创建规则的实例
7 _ G" W8 l( D$ \例如:我想限定电路板上特定区域内的线宽和间距,可以借助Query语句来创建设计规则,步骤如下:3 M3 g& ^+ _$ w* ]4 o
创建Room,并为其命名。
9 }. p1 O- w/ s" Q
+ ]% [4 V# u& t& q) W2 N6 g- y9 p3 ]- R选择菜单: Design>> Rooms >> Place Rectangular Room,创建包含特定区域的Room,并将其命名为RoomT 。+ C' {7 M6 L! u$ O% A# _! B
- 创建一个新的Width设计规则。
- 在设计规则中编写Query语句来对Room内的对象进行限定。
3 g( x9 v# i/ D" s! m, H # B: X! R, w( z! R$ J, w v; u- q
在设计规则中,打开Query Helper 对话框,找到PCB Functions下面的Membership Checks, 找到跟Room相关的关键字 WithinRoom 并双击,使其出现在Query语句预期,然后填入创建的Room的名称RoomT, 点击OK 按钮。如下图所示:
' [$ V5 q$ X& a, t4 [( H' i5 H' q' L
; A9 h6 G' c0 E3 n7 v
# P: }1 p. ?( \1 l$ S' n# ^/ S+ y/ m9 ]1 I' d- D9 z
- 编写好的Query语句会出现在设计规则的Query语句框内,然后设置线宽范围,并点击OK按钮。规则编写完成,如下图所示:" b6 F8 X/ R+ ~2 J$ U
4 z E7 v% k% o) t9 D. D5 v% p+ u
0 e. f8 d0 o' I S6 p; p
5 v/ P" @- C2 t1 R, ^' o- 创建一个新的Clearance设计规则。并参考步骤c、d完成间距设计规则的编写。如下图所示:* W: S9 e) v# _# H% d) R
6 d* R8 Z# }% Z: C" T- U$ a! m
% S) I8 O+ B/ h7 y! a2 b2 C! Z S& g. Q4 {6 Z, @
Custom Query选项使设计人员能够自定义编写更复杂的查询语句,以便更具体地限定规则应用的范围。编写Query 语句并检测其准确性,在我们日常编写设计规则的时候应用非常广泛,通过本篇文章,大家是否对Query语句的编写和检测有了更多的了解呢?
* L& X) U. b# p' @2 @, g5 j/ q: G) u5 D0 |
+ ]& N7 R5 L1 s9 [; X% c& t
|
|