|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
( X) i8 A9 z0 T$ _在编写设计规则时,我们经常会用Query语句来详细地限定设计规则的范围。如何准确地编写Query语句,并在编写完成之后检查Query语句的范围是否正确呢?下面详细地说明一下。
: O9 u) b5 V& K+ G. F1.编写Query语句: X* V1 K* d& K* B: v* k
在PCB文档界面,选择菜单Design-> Rules… 打开PCB Rules and Constraints Editor 对话框,将Where The Object Matches的范围设置为Custom Query,右侧的区域内就可以直接输入Query语句了, 如下图所示。
- E) Q1 i9 |" S
& W& K1 A& `7 [
3 b _ T* `0 X+ \. |创建Query语句
# T: V2 }1 p/ L: J当我们不了解Query语句的语法、可用的关键字时,可以使用Query Builder和Query Helper这两个功能项协助创建Query语句。
2 ~1 [" u4 v. H9 Y1.1. 使用Query Builder构建查询语句7 I' F# ~- q m9 c
Query Builder提供了一种构造查询语句的简单方法,它允许设计者利用条件类型和值构建相关的查询模块。点击Query Builder按钮来打开Building Query from Board对话框,可以在该对话框中创建由AND和OR 逻辑字符串构成的查询表达式。
3 z3 e5 F+ x b' x4 b9 ~" Y. \
5 Y+ ~% R* @$ C# g9 f
# u" l. z8 B: t: d
/ _& z9 R; A n7 h- j
9 R4 S- a3 T4 C7 Y/ o2 c3 }- L
使用Query Builder创建查询表达式
; q* N" G+ J! p9 n该对话框的左侧部分用于选择指定目标对象的条件,右侧部分会显示当前查询语句的预览,如上图所示,可以添加多个条件进一步限制目标对象。
. B2 p4 R6 s0 f2 J0 Q+ E1.2.使用Query Helper构建高级查询语句: y4 m) y# \ a$ Y6 W/ J+ y. d
点击Query Helper按钮打开Query Helper对话框。查询引擎会分析PCB设计,列出所有可用的对象,以及所有查询关键字。
3 J/ B3 L5 p- h+ e! W" c7 ?* m对话框的Query区域用来生成查询表达式。我们可以直接在该区域输入——会出现辅助的关键字或对象的提示列表。6 f( [$ j, P8 F$ a. D9 W
对话框的Categories区域用于访问可用的PCB函数(PCB Functions)、PCB对象列表(PCB Object Lists)和系统函数(System Functions),它们用来创建查询表达式。在这三个区域中点击一个子类别,会在右侧区域中显示相应的关键字或对象列表。定位要在查询语句中使用的关键字或对象,并双击其条目,该条目就会出现在查询表达式区域的当前光标位置。
; F) @6 s0 _" \9 {" h$ C
' B, t( ?4 E! W* n5 S) G: ^
4 E/ `3 @8 w# k& z; d$ ]$ X+ S1 F
$ K' F: u0 |# s. N# x' P
使用Query Helper编写更复杂的查询表达式
( Q. U0 S' S. X5 e5 \该对话框上的Check Syntax按钮可用来检查和标记查询表达式中的语法错误。2 ~9 [4 \2 C% i4 Z
1.3. 使用PCB Filter 面板创建设计规则 w3 K9 L+ w. a# ?; B0 ~
创建设计规则的另一种方法:利用PCB Filter面板的查询语句直接创建设计规则。使用Find Similar Objects对话框,可以为PCB Filter 面板创建查询表达式。然后在PCB Filter面板中使用Create Rule按钮,为Filter部分的查询表达式直接创建设计规则。步骤如下:: \* d+ L6 m% R C- j6 B
+ I) Y; l- b; I6 ?8 ~- 在PCB面板上选择一个目标对象,对其右键单击,然后在弹出的右键菜单中选择Find Similar Objects命令,打开Find Similar Objects对话框。在该对话框中,将目标对象具有的相同元素设置为Same (例如PCB封装相同,则将Footprint设置为Same),勾选Create Expression 对话框,设置如下图所示。
! y! j- A3 a0 G) g , C' B5 t& }# z2 x
8 k, h! {1 W% w
! v5 s/ ]$ B& w# J F& \5 @4 `" s
利用Find Similar Objects 创建查询语句
* H% E- K, `- _% x: u0 e' t+ T+ F3 U$ T/ x
- 此时可以点击 Apply按钮, 查看目标对象是否都被选中。如果我们需要的对象都被选中,并且不需要的对象不在选择范围内,则说明设置的选择范围没有问题。点击OK按钮,此时已经打开的PCB Filter面板的Filter区域出现了 Find Similar object 对话框产生的查询表达式。如下图所示:8 z9 ]9 V j% T
3 x; j& @' Q* Q
0 W) ]2 I! O# s
. v7 U E. e* K/ E' z( cPCB Filter面板8 g4 \5 V. E/ p
% V% O6 I* ~" C O
- 此时勾选面板上的Select 复选框,然后点击Apply to All按钮(如上图所示),将会选中PCB板上所有要查询的设计对象。
- 在确保查找对象的范围没有问题后,可以将Filter中的查询语句复制到设计规则对话框的Query语句区域。也可以按照下面所示的步骤创建新的设计规则:# F/ F8 {0 v0 B \# Q
* K9 j, M: [2 g& P8 m
- 点击Filter对话框上的Create Rule按钮,然后在弹出的Choose Design Rule Type对话框中选择要创建的规则类型;
* \* E9 D3 _# p9 l- E: X + ?, [8 E( O) T+ B
9 Q. b, ]- Q1 u& \4 a
' ?( g9 s* g# I8 p% M
选择要创建的设计规则的类型; ?4 T. U+ V! b" x! h
- 这将打开PCB Rules and Constrains Editor窗口,查询语句已经被复制到相应的区域,此时只要对规则进行命名,然后进行后续的设置即可。
. ^5 b% i* Q2 z2 ?9 S
& ]2 b& j( [5 p9 D7 P m8 l
: k. |4 y* Y$ g) p$ W7 u
# s* A' l9 s6 g
生成设计规则
; F4 d% K; U7 @# h$ J$ f
' `: ?9 _+ O) J2 b8 A/ W) P2. 检测Query语句: e* }9 a0 A8 o0 X: p# I
在设置设计规则时,了解规则的范围是否正确涵盖了所有预期的对象,且不包括其他的对象,是个很重要的步骤。
! H, T) y* D$ z" c: b& W2.1. 使用Test Queries检测查询语句
" N- N2 v# G" K2 r$ X* m/ k4 WTest Queries功能可以测试查询语句,验证查询表达式是否定位到正确的对象。8 e0 d7 _ m8 n" F( s4 @
在设计规则界面点击窗口右上角的Test Queries按钮,打开Test Queries Result窗口,该窗口中会显示查询语句实际上应用到的对象数,如下图所示。
2 v! b" \! K4 w b7 e2 l! l# I! e! ~! u
, l5 ^% t* A$ F* C' m* Z" h' Z
7 z0 y0 @" X! P) H% Q! h, y7 C! p5 C. a X# R) `% o
检查当前查询语句应用到的对象. q6 z& O7 U/ b& a, S/ w( V/ Q' r7 Q+ G
点击Test Queries Result对话框上Expression result 后面的数字,PCB板上会高亮显示该条查询语句适用的设计对象,其它的设计对象会被遮蔽或变暗,以检测查询语句是否涵盖了正确的对象并且不包含多余的对象。' q+ N n9 l/ \& \# V
2.2. 在PCB Filter中检测' D; P; P+ ]( L, H
还可以将查询语句复制到PCB Filter 面板的Filter区域内,在勾选Select复选框后,使用Apply to All 按钮测试查询语句的应用范围。具体的方法如 1.3.中的C步骤所述。( L% [4 X/ e+ H- e" Q3 {/ [- @
3. 用Query语句创建规则的实例; G/ W1 N( Z( C1 [, u) L
例如:我想限定电路板上特定区域内的线宽和间距,可以借助Query语句来创建设计规则,步骤如下:
+ o) f( u- T! F创建Room,并为其命名。9 ~8 }; {$ H E/ @0 |! \0 l( B
4 g6 G0 O1 i# J7 g8 V3 [- ^选择菜单: Design>> Rooms >> Place Rectangular Room,创建包含特定区域的Room,并将其命名为RoomT 。% }0 N, ]: S. V, z* g; I
- 创建一个新的Width设计规则。
- 在设计规则中编写Query语句来对Room内的对象进行限定。 p1 ` d$ h6 x2 U$ ^# G. E+ V
7 Q- h0 z( o1 o ?
在设计规则中,打开Query Helper 对话框,找到PCB Functions下面的Membership Checks, 找到跟Room相关的关键字 WithinRoom 并双击,使其出现在Query语句预期,然后填入创建的Room的名称RoomT, 点击OK 按钮。如下图所示:
- i# I- l5 _- D f; q7 S
1 t+ m" j- ] s& l
1 p+ T8 G" _8 K7 Y1 ?
|% A5 V8 w: H5 W' F$ P0 l3 Z1 {
2 \/ R) }/ {0 }. T- q
- 编写好的Query语句会出现在设计规则的Query语句框内,然后设置线宽范围,并点击OK按钮。规则编写完成,如下图所示:! B! G: B- M/ t% S5 I# e3 V/ k
. J! j/ E- r4 j1 e
. c9 |4 e+ ^5 S6 a- Y ^# F; m- j6 a+ C+ n, t
- 创建一个新的Clearance设计规则。并参考步骤c、d完成间距设计规则的编写。如下图所示:) _ p% J6 j! q1 X, h/ {% K9 e
" ^7 N+ N% n( D: g& h" [0 d- ^2 P. q
G' Z9 ]6 r2 h; C5 F: T) y1 k( s, _- |& E
Custom Query选项使设计人员能够自定义编写更复杂的查询语句,以便更具体地限定规则应用的范围。编写Query 语句并检测其准确性,在我们日常编写设计规则的时候应用非常广泛,通过本篇文章,大家是否对Query语句的编写和检测有了更多的了解呢? 6 `; V4 |1 u' e5 B, ^# n
3 r+ L9 y0 {9 y" H/ v' G/ K* _7 h; Y+ {* E* d
|
|