|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
. s* S3 n; r7 i0 A/ X, A
在编写设计规则时,我们经常会用Query语句来详细地限定设计规则的范围。如何准确地编写Query语句,并在编写完成之后检查Query语句的范围是否正确呢?下面详细地说明一下。
: ^+ O; s6 d0 `8 P% b2 k1.编写Query语句
# Z. _/ L! G7 }7 j在PCB文档界面,选择菜单Design-> Rules… 打开PCB Rules and Constraints Editor 对话框,将Where The Object Matches的范围设置为Custom Query,右侧的区域内就可以直接输入Query语句了, 如下图所示。& n- J+ [' s4 |6 ^1 O
2 N: m2 M6 W0 g
- \1 r& G8 b4 D+ H
创建Query语句6 n' N7 n! a. c, M2 \
当我们不了解Query语句的语法、可用的关键字时,可以使用Query Builder和Query Helper这两个功能项协助创建Query语句。0 @5 Z. O% T$ g& B
1.1. 使用Query Builder构建查询语句3 l2 ~3 E$ M1 J6 H: A
Query Builder提供了一种构造查询语句的简单方法,它允许设计者利用条件类型和值构建相关的查询模块。点击Query Builder按钮来打开Building Query from Board对话框,可以在该对话框中创建由AND和OR 逻辑字符串构成的查询表达式。
1 Z1 q- s. t: W1 ~# h' D! e+ W1 w9 T; e
9 T4 m2 q3 z! m7 t* L$ X5 ~. ~0 O
1 p" ~& l" P. \' R% z* ?
0 m; e( C5 q0 M3 ~) [: U( H: _- y使用Query Builder创建查询表达式
% K' }3 ]; I0 j# E该对话框的左侧部分用于选择指定目标对象的条件,右侧部分会显示当前查询语句的预览,如上图所示,可以添加多个条件进一步限制目标对象。' d4 z4 `! M; P; K
1.2.使用Query Helper构建高级查询语句, W0 x7 e+ S+ U* P! [3 q c, _
点击Query Helper按钮打开Query Helper对话框。查询引擎会分析PCB设计,列出所有可用的对象,以及所有查询关键字。, J# @5 h s: `+ j: S) V
对话框的Query区域用来生成查询表达式。我们可以直接在该区域输入——会出现辅助的关键字或对象的提示列表。
+ T7 [& E# r5 c% d/ U对话框的Categories区域用于访问可用的PCB函数(PCB Functions)、PCB对象列表(PCB Object Lists)和系统函数(System Functions),它们用来创建查询表达式。在这三个区域中点击一个子类别,会在右侧区域中显示相应的关键字或对象列表。定位要在查询语句中使用的关键字或对象,并双击其条目,该条目就会出现在查询表达式区域的当前光标位置。+ S* F7 F$ ~$ @$ ]) `; D7 e& p
8 p4 z0 P+ t0 _
" N) J$ g9 W8 l9 N: @
7 d8 ], G; o: h' J% e# n使用Query Helper编写更复杂的查询表达式6 I* s; Z4 T$ {1 N: S. ?. L
该对话框上的Check Syntax按钮可用来检查和标记查询表达式中的语法错误。5 L6 R( c8 V) L# e: r
1.3. 使用PCB Filter 面板创建设计规则1 T: l" s& j% d2 l: i2 k' b: h
创建设计规则的另一种方法:利用PCB Filter面板的查询语句直接创建设计规则。使用Find Similar Objects对话框,可以为PCB Filter 面板创建查询表达式。然后在PCB Filter面板中使用Create Rule按钮,为Filter部分的查询表达式直接创建设计规则。步骤如下:6 a+ e, I4 x/ M# s
% E/ y, ?( s+ o2 y5 _4 C- 在PCB面板上选择一个目标对象,对其右键单击,然后在弹出的右键菜单中选择Find Similar Objects命令,打开Find Similar Objects对话框。在该对话框中,将目标对象具有的相同元素设置为Same (例如PCB封装相同,则将Footprint设置为Same),勾选Create Expression 对话框,设置如下图所示。9 b9 n/ Z; |2 U
; x% F. w' q/ G! T ~* l/ `, Q
4 h6 C, L. x- t) I, K; ?& {# E
/ [4 f2 F4 k. f9 R3 t7 b4 R- E- N利用Find Similar Objects 创建查询语句
! A( `' {7 T+ O$ f, a3 L3 P5 R, u9 q d
- 此时可以点击 Apply按钮, 查看目标对象是否都被选中。如果我们需要的对象都被选中,并且不需要的对象不在选择范围内,则说明设置的选择范围没有问题。点击OK按钮,此时已经打开的PCB Filter面板的Filter区域出现了 Find Similar object 对话框产生的查询表达式。如下图所示:
% E0 g, a* P: f) V* S# j$ D
Q* |3 `6 T2 K+ ^9 Q. s
$ a9 _5 W( _$ V6 ^+ l) `. Y( _/ @7 {( M* O" k, h% k
PCB Filter面板
+ |. w/ u6 }* F/ N" Q! i ]4 |# ~, k1 T4 [
- 此时勾选面板上的Select 复选框,然后点击Apply to All按钮(如上图所示),将会选中PCB板上所有要查询的设计对象。
- 在确保查找对象的范围没有问题后,可以将Filter中的查询语句复制到设计规则对话框的Query语句区域。也可以按照下面所示的步骤创建新的设计规则:9 f5 W, b7 x- A; A y; n7 m) o
4 s. T7 D# \! ?4 ^
- 点击Filter对话框上的Create Rule按钮,然后在弹出的Choose Design Rule Type对话框中选择要创建的规则类型;
8 B6 Q& u, j9 w6 k
8 R2 w+ x7 c7 A9 m! O
8 Q+ K. F+ t7 i. `+ Y
; F- Q5 _* W7 x$ l# m" h e7 q0 N选择要创建的设计规则的类型) C G$ l1 A6 k( x! e K* t) O4 \* [! Y
- 这将打开PCB Rules and Constrains Editor窗口,查询语句已经被复制到相应的区域,此时只要对规则进行命名,然后进行后续的设置即可。
$ W4 ]8 |) \& k8 \
* V) ?* i1 u8 A
R L6 ?+ N9 w7 A4 u: |$ v/ t! C
1 y. z+ v- g" K6 m1 g3 z
生成设计规则
5 i* c& K. K- O
* [0 z9 R, e9 a2. 检测Query语句9 O9 i! E/ u2 E5 Z5 v
在设置设计规则时,了解规则的范围是否正确涵盖了所有预期的对象,且不包括其他的对象,是个很重要的步骤。4 Y0 f* s8 L2 O6 F! s# u1 c
2.1. 使用Test Queries检测查询语句
$ j: U- V' S. D' OTest Queries功能可以测试查询语句,验证查询表达式是否定位到正确的对象。
# P& K- b/ b$ w& D1 K在设计规则界面点击窗口右上角的Test Queries按钮,打开Test Queries Result窗口,该窗口中会显示查询语句实际上应用到的对象数,如下图所示。( @* G1 T2 o+ c- |
1 N. @- L3 _6 Q5 l% x, K2 j ]* l
+ ]5 ~3 [3 d4 \3 \/ p
: z5 |3 w" R2 Z {6 V
2 \5 U r+ f) _4 n M$ [ f检查当前查询语句应用到的对象+ C Y5 T2 r7 r( G' Q; l: `2 I
点击Test Queries Result对话框上Expression result 后面的数字,PCB板上会高亮显示该条查询语句适用的设计对象,其它的设计对象会被遮蔽或变暗,以检测查询语句是否涵盖了正确的对象并且不包含多余的对象。, ^# L% }( H& u& \8 b% G! L
2.2. 在PCB Filter中检测: y" i, P8 a" V4 a$ F; ?
还可以将查询语句复制到PCB Filter 面板的Filter区域内,在勾选Select复选框后,使用Apply to All 按钮测试查询语句的应用范围。具体的方法如 1.3.中的C步骤所述。" w7 M$ q+ m' {3 a& y# \- R0 ]
3. 用Query语句创建规则的实例
1 x# X9 g! {4 B% ?" B) ~例如:我想限定电路板上特定区域内的线宽和间距,可以借助Query语句来创建设计规则,步骤如下:
0 ]! ?0 [ h3 h5 P8 l8 B创建Room,并为其命名。; z5 s! J; e9 e; Z7 v
0 _& F( [9 M2 P6 @+ C/ F( x选择菜单: Design>> Rooms >> Place Rectangular Room,创建包含特定区域的Room,并将其命名为RoomT 。4 n! @( R, p3 i! F# }- F( S
- 创建一个新的Width设计规则。
- 在设计规则中编写Query语句来对Room内的对象进行限定。
. y/ n9 ~/ [, l$ H2 H+ h8 p
! e$ U! E" d4 |' R. f, ]0 y在设计规则中,打开Query Helper 对话框,找到PCB Functions下面的Membership Checks, 找到跟Room相关的关键字 WithinRoom 并双击,使其出现在Query语句预期,然后填入创建的Room的名称RoomT, 点击OK 按钮。如下图所示:
, S$ g6 A3 v: O- _2 W; j
# N% B% E+ d" p. o& `0 a; S% S" L+ h6 J; y. L8 K# E7 [
, x/ {+ ]: N& X$ n* W; D) X- a1 @* |9 z$ f+ v7 o7 b- ^8 k( A
- 编写好的Query语句会出现在设计规则的Query语句框内,然后设置线宽范围,并点击OK按钮。规则编写完成,如下图所示:1 m7 Y$ |# c5 q/ _% m; L5 n) y! e
: y: N- O6 m. J; u& M4 e* V
4 e; v; P6 }3 \* C4 B8 f5 L: i6 W" L8 N! c7 l) f
- 创建一个新的Clearance设计规则。并参考步骤c、d完成间距设计规则的编写。如下图所示:( ~& x* k5 S; A" e( I
( W% O3 M4 L: Y5 u: c" p- A
( k& C `6 ?# ]
. O1 ]3 |: u# W4 a2 N/ i
Custom Query选项使设计人员能够自定义编写更复杂的查询语句,以便更具体地限定规则应用的范围。编写Query 语句并检测其准确性,在我们日常编写设计规则的时候应用非常广泛,通过本篇文章,大家是否对Query语句的编写和检测有了更多的了解呢? 8 ?7 F9 } X, J7 I5 r5 t- Z! o
- G& `4 ]+ g( u9 u+ Z. p$ y# ~) ~/ a" V
|
|