|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
( v1 Q' J: m" U) _. Z
在编写设计规则时,我们经常会用Query语句来详细地限定设计规则的范围。如何准确地编写Query语句,并在编写完成之后检查Query语句的范围是否正确呢?下面详细地说明一下。
5 R, j6 Z2 T7 A$ N1.编写Query语句
Y1 W- o" A4 K% `在PCB文档界面,选择菜单Design-> Rules… 打开PCB Rules and Constraints Editor 对话框,将Where The Object Matches的范围设置为Custom Query,右侧的区域内就可以直接输入Query语句了, 如下图所示。
2 {2 q# d) s; X# j' C! ~
1 `' B5 t/ E& p6 n8 x4 I# C4 T8 s1 N: `
创建Query语句" ~* z$ A# ^8 ~4 j* n
当我们不了解Query语句的语法、可用的关键字时,可以使用Query Builder和Query Helper这两个功能项协助创建Query语句。
# w0 _! U4 t4 y5 N& v( E1.1. 使用Query Builder构建查询语句
+ Q6 u: K, X# g: A/ sQuery Builder提供了一种构造查询语句的简单方法,它允许设计者利用条件类型和值构建相关的查询模块。点击Query Builder按钮来打开Building Query from Board对话框,可以在该对话框中创建由AND和OR 逻辑字符串构成的查询表达式。
. r$ l) K- e" K4 |: `4 e. @: _% f6 H& V# r. b
) @. n# Z3 |9 W# t
9 Y2 Y8 w4 r! _1 ?! b* r9 ^; J) ] [& [1 o4 ?- d: H- B
使用Query Builder创建查询表达式
# ?, k _% p7 f1 ]: _& y该对话框的左侧部分用于选择指定目标对象的条件,右侧部分会显示当前查询语句的预览,如上图所示,可以添加多个条件进一步限制目标对象。2 ~* u8 k3 q/ f( V: A
1.2.使用Query Helper构建高级查询语句8 Q( k" L9 o3 X: t; p$ }
点击Query Helper按钮打开Query Helper对话框。查询引擎会分析PCB设计,列出所有可用的对象,以及所有查询关键字。$ R9 T* m& [( y0 \+ b. P( ^% L' F
对话框的Query区域用来生成查询表达式。我们可以直接在该区域输入——会出现辅助的关键字或对象的提示列表。) G: K& Y/ j4 ]
对话框的Categories区域用于访问可用的PCB函数(PCB Functions)、PCB对象列表(PCB Object Lists)和系统函数(System Functions),它们用来创建查询表达式。在这三个区域中点击一个子类别,会在右侧区域中显示相应的关键字或对象列表。定位要在查询语句中使用的关键字或对象,并双击其条目,该条目就会出现在查询表达式区域的当前光标位置。' t) I, V8 X0 W( @% u+ j
9 \4 M) C) c+ V
/ A2 d! |8 A9 A
0 o+ @: f2 g$ A/ W+ ^使用Query Helper编写更复杂的查询表达式
3 v6 \3 a8 D4 U. r- S该对话框上的Check Syntax按钮可用来检查和标记查询表达式中的语法错误。
# x+ F8 V% A3 X6 S" [1.3. 使用PCB Filter 面板创建设计规则
; t) f4 _1 u1 B- b# F- ~; K- G创建设计规则的另一种方法:利用PCB Filter面板的查询语句直接创建设计规则。使用Find Similar Objects对话框,可以为PCB Filter 面板创建查询表达式。然后在PCB Filter面板中使用Create Rule按钮,为Filter部分的查询表达式直接创建设计规则。步骤如下:
3 }" r; H! w3 s$ E) e ~: u& |: S: W9 {- ~1 a
- 在PCB面板上选择一个目标对象,对其右键单击,然后在弹出的右键菜单中选择Find Similar Objects命令,打开Find Similar Objects对话框。在该对话框中,将目标对象具有的相同元素设置为Same (例如PCB封装相同,则将Footprint设置为Same),勾选Create Expression 对话框,设置如下图所示。" Y' u6 u( X1 v( W* I1 M, K
" J( G; d2 B( x
" F) G+ R( k6 i" J
" \4 q4 P' l: n
利用Find Similar Objects 创建查询语句6 y) p \# o8 D
- m4 U6 h5 l8 e# t- I$ R- 此时可以点击 Apply按钮, 查看目标对象是否都被选中。如果我们需要的对象都被选中,并且不需要的对象不在选择范围内,则说明设置的选择范围没有问题。点击OK按钮,此时已经打开的PCB Filter面板的Filter区域出现了 Find Similar object 对话框产生的查询表达式。如下图所示:9 B! k& k7 d1 K% A, r! I
: p2 k2 n) W/ @ }2 a
+ A/ o' v: l, _" Y: ^2 l
; ^( O& @$ W4 P8 Y9 YPCB Filter面板
- W7 K& `+ j# A6 l. u n& z6 _: u. m' w9 p- ~8 N. E2 P
- 此时勾选面板上的Select 复选框,然后点击Apply to All按钮(如上图所示),将会选中PCB板上所有要查询的设计对象。
- 在确保查找对象的范围没有问题后,可以将Filter中的查询语句复制到设计规则对话框的Query语句区域。也可以按照下面所示的步骤创建新的设计规则:
, q1 S I( \+ J. K0 _" Z 8 ~9 J- O9 y* T
- 点击Filter对话框上的Create Rule按钮,然后在弹出的Choose Design Rule Type对话框中选择要创建的规则类型;, z ^! |' A2 E+ n: ~' R
$ @2 Q7 U# |# t+ E" ^( r& @, v
Y/ R0 b+ k7 P7 e# \, V; ^# B6 C& e
选择要创建的设计规则的类型4 P7 k- f# c( `6 X
- 这将打开PCB Rules and Constrains Editor窗口,查询语句已经被复制到相应的区域,此时只要对规则进行命名,然后进行后续的设置即可。, A- W1 C6 }# w# ^ i& s* O6 h- E1 T
" t0 V8 T7 I1 _) S( A
2 f% ^, {. h" \% u
5 m8 f$ K- n. u* H7 b0 S生成设计规则7 f& w& q6 ~: @5 d, E5 c8 f% f& ?$ l
( F6 g3 }( `8 q" F7 \
2. 检测Query语句# s0 `/ {% _& H T( s' Z& P' w% ?
在设置设计规则时,了解规则的范围是否正确涵盖了所有预期的对象,且不包括其他的对象,是个很重要的步骤。
! ]; g( y6 A2 o+ _% n, ?2.1. 使用Test Queries检测查询语句, i6 n9 C; b. q5 P& J
Test Queries功能可以测试查询语句,验证查询表达式是否定位到正确的对象。" i- G7 d) f8 @& X& Z6 @; [
在设计规则界面点击窗口右上角的Test Queries按钮,打开Test Queries Result窗口,该窗口中会显示查询语句实际上应用到的对象数,如下图所示。% Y; r% k- s) a- S7 R7 G" Q2 H
& L3 p+ |5 d# a' Q4 s# [
s' s, u8 f; L( F$ u5 T! K
. H' m0 B, b# p2 ?8 F# T
6 o0 |/ }3 h7 S
检查当前查询语句应用到的对象4 f0 |% E: q" U0 ?4 v
点击Test Queries Result对话框上Expression result 后面的数字,PCB板上会高亮显示该条查询语句适用的设计对象,其它的设计对象会被遮蔽或变暗,以检测查询语句是否涵盖了正确的对象并且不包含多余的对象。
4 O* K# [. ~' U' u: ~- Z' v: h2.2. 在PCB Filter中检测
k+ M" ^8 m9 `1 o: D还可以将查询语句复制到PCB Filter 面板的Filter区域内,在勾选Select复选框后,使用Apply to All 按钮测试查询语句的应用范围。具体的方法如 1.3.中的C步骤所述。
8 g' j( N% O. U; h+ H! O6 l# C3. 用Query语句创建规则的实例
* w& } G- ]; c, V例如:我想限定电路板上特定区域内的线宽和间距,可以借助Query语句来创建设计规则,步骤如下:
) |% p3 c2 H/ @& M/ W创建Room,并为其命名。" [" Y. \' L3 V7 t" M( P7 p
- c( a! C/ P2 g$ G选择菜单: Design>> Rooms >> Place Rectangular Room,创建包含特定区域的Room,并将其命名为RoomT 。" _* g$ ]9 l! M$ v/ p
- 创建一个新的Width设计规则。
- 在设计规则中编写Query语句来对Room内的对象进行限定。
" W! y# B+ X7 b/ ~9 l
* ^6 v# s% h" L" B v9 G J% W2 n+ r) T在设计规则中,打开Query Helper 对话框,找到PCB Functions下面的Membership Checks, 找到跟Room相关的关键字 WithinRoom 并双击,使其出现在Query语句预期,然后填入创建的Room的名称RoomT, 点击OK 按钮。如下图所示:
( `5 }, s, I( {, }$ t4 L" W' y* U% X7 `0 T& E
- j7 E5 C. T( G Q, [5 ^8 W" s
1 E2 a: f. ~! `- Z6 p/ N8 w5 Y U b
- 编写好的Query语句会出现在设计规则的Query语句框内,然后设置线宽范围,并点击OK按钮。规则编写完成,如下图所示:
/ b! L3 X( l# C) j* V & A+ d+ S3 S6 p, U$ e- q- e
% S7 R/ @: M# n
' s! J* f! v/ h: c2 i
- 创建一个新的Clearance设计规则。并参考步骤c、d完成间距设计规则的编写。如下图所示:
! y& n9 [' J9 E# e5 A3 h+ R2 A- ] . v3 d8 r; b- c2 y$ W
) e5 X- T* r* E( Y* [1 ?
* X8 H8 c2 a- Q* w k4 O! DCustom Query选项使设计人员能够自定义编写更复杂的查询语句,以便更具体地限定规则应用的范围。编写Query 语句并检测其准确性,在我们日常编写设计规则的时候应用非常广泛,通过本篇文章,大家是否对Query语句的编写和检测有了更多的了解呢?
4 z5 ]2 Q6 D/ P9 k
: h/ {2 G) f2 p6 y* u) ?
! \$ [3 o, }. \, d, }4 ]0 U3 r |
|