|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
, p4 i( r' { L% ~在编写设计规则时,我们经常会用Query语句来详细地限定设计规则的范围。如何准确地编写Query语句,并在编写完成之后检查Query语句的范围是否正确呢?下面详细地说明一下。% P* G# c, y/ _. Y. X t
1.编写Query语句
) `& X8 I4 N7 O7 y d3 p在PCB文档界面,选择菜单Design-> Rules… 打开PCB Rules and Constraints Editor 对话框,将Where The Object Matches的范围设置为Custom Query,右侧的区域内就可以直接输入Query语句了, 如下图所示。
; ^, v# G" ?$ Z C# H: s
5 e+ ^+ O8 r! d) R( `
/ r/ L+ i( X' u4 o" r
创建Query语句
o* I: m3 \5 R' D1 K9 u' z当我们不了解Query语句的语法、可用的关键字时,可以使用Query Builder和Query Helper这两个功能项协助创建Query语句。
o+ f/ R: A! A; z. d1.1. 使用Query Builder构建查询语句# J5 T1 c& \9 {
Query Builder提供了一种构造查询语句的简单方法,它允许设计者利用条件类型和值构建相关的查询模块。点击Query Builder按钮来打开Building Query from Board对话框,可以在该对话框中创建由AND和OR 逻辑字符串构成的查询表达式。7 b8 G& T* Z: u" L, Q" n: x
8 d8 D9 O3 G/ x6 e
4 b# {$ j5 v, b) V: |9 r. o$ e: u
1 e7 h5 H0 {. P; D& U" \& g% V$ D9 F( l: { c4 d
使用Query Builder创建查询表达式
y6 B' r: |/ |该对话框的左侧部分用于选择指定目标对象的条件,右侧部分会显示当前查询语句的预览,如上图所示,可以添加多个条件进一步限制目标对象。
& \; B5 J: g. [: G& Y) z: r1.2.使用Query Helper构建高级查询语句/ z" N: k* X+ N4 z1 ?/ S
点击Query Helper按钮打开Query Helper对话框。查询引擎会分析PCB设计,列出所有可用的对象,以及所有查询关键字。6 ^3 |5 p: `% b% L3 \3 g/ }$ B
对话框的Query区域用来生成查询表达式。我们可以直接在该区域输入——会出现辅助的关键字或对象的提示列表。, m2 Z ^3 b* {7 A% W% B
对话框的Categories区域用于访问可用的PCB函数(PCB Functions)、PCB对象列表(PCB Object Lists)和系统函数(System Functions),它们用来创建查询表达式。在这三个区域中点击一个子类别,会在右侧区域中显示相应的关键字或对象列表。定位要在查询语句中使用的关键字或对象,并双击其条目,该条目就会出现在查询表达式区域的当前光标位置。
/ P+ L8 \2 k O0 O0 H
) G$ r5 p6 X6 ~; A0 G) W* w; w5 C
8 @8 c; ]% t1 M/ \: ~; S
, Z/ Y7 l3 G* Y7 _2 t/ H: T1 Y6 [使用Query Helper编写更复杂的查询表达式. X5 c% a( c6 q* {4 M! h* H
该对话框上的Check Syntax按钮可用来检查和标记查询表达式中的语法错误。' {6 @) m0 H4 K, _, l
1.3. 使用PCB Filter 面板创建设计规则
0 M; y+ E) w) Q7 }( g创建设计规则的另一种方法:利用PCB Filter面板的查询语句直接创建设计规则。使用Find Similar Objects对话框,可以为PCB Filter 面板创建查询表达式。然后在PCB Filter面板中使用Create Rule按钮,为Filter部分的查询表达式直接创建设计规则。步骤如下:1 q) h+ W* `2 N4 D0 O: {/ D* Z
" b* [& ?' m& Y9 ~7 h* H) x- 在PCB面板上选择一个目标对象,对其右键单击,然后在弹出的右键菜单中选择Find Similar Objects命令,打开Find Similar Objects对话框。在该对话框中,将目标对象具有的相同元素设置为Same (例如PCB封装相同,则将Footprint设置为Same),勾选Create Expression 对话框,设置如下图所示。
% {/ U4 _( Q; x
1 A# m9 b( \1 Z3 k* c4 {
3 R" z0 } v; P" J' u# H
) w+ e- ^( B% t! {& {
利用Find Similar Objects 创建查询语句6 O) k4 s) k' q0 L
/ h$ T/ m/ P" E2 p4 E# u/ [/ R
- 此时可以点击 Apply按钮, 查看目标对象是否都被选中。如果我们需要的对象都被选中,并且不需要的对象不在选择范围内,则说明设置的选择范围没有问题。点击OK按钮,此时已经打开的PCB Filter面板的Filter区域出现了 Find Similar object 对话框产生的查询表达式。如下图所示:! g/ z0 q @/ v- f! Q4 c
) I. X1 o5 @. j$ p5 d% f5 `
7 n4 @+ {2 z( G( A3 A# \5 `3 w
& g' U, t# p: z( DPCB Filter面板
/ V w! s- T: u$ S/ F$ _) m( V8 I$ ^" O1 g
- 此时勾选面板上的Select 复选框,然后点击Apply to All按钮(如上图所示),将会选中PCB板上所有要查询的设计对象。
- 在确保查找对象的范围没有问题后,可以将Filter中的查询语句复制到设计规则对话框的Query语句区域。也可以按照下面所示的步骤创建新的设计规则:
$ M# R; E& S# W9 _0 ^; u6 }! l' N
3 e @3 U: F! h1 m- 点击Filter对话框上的Create Rule按钮,然后在弹出的Choose Design Rule Type对话框中选择要创建的规则类型;
: B+ a! F" h8 z0 D, Z" V ?* `9 Z7 L9 D6 F8 T1 g
7 l* @5 Y- ^1 B# ]4 b$ d& s' ? P4 h' K8 \, G5 s
选择要创建的设计规则的类型
Q+ @; |0 N8 h# n* d- 这将打开PCB Rules and Constrains Editor窗口,查询语句已经被复制到相应的区域,此时只要对规则进行命名,然后进行后续的设置即可。 [; O- C5 _& _
' \; n2 \) S( g8 Z+ S$ `+ |
$ ~* v" P0 a( T) Y; v! O. K* m3 `' G# Y% {" |+ g" J+ w; N. W5 s
生成设计规则& _. x. s) p' C' ` T
; i7 ^2 P3 p. o* G5 E
2. 检测Query语句
, F7 u Q" p+ W2 e& A$ W* C在设置设计规则时,了解规则的范围是否正确涵盖了所有预期的对象,且不包括其他的对象,是个很重要的步骤。. F5 }7 n$ ?9 i, n! @1 u/ S. z7 P; N
2.1. 使用Test Queries检测查询语句
! @# }( c" Q& ATest Queries功能可以测试查询语句,验证查询表达式是否定位到正确的对象。# x; G& r+ j: \9 \) d: e
在设计规则界面点击窗口右上角的Test Queries按钮,打开Test Queries Result窗口,该窗口中会显示查询语句实际上应用到的对象数,如下图所示。6 \# e- F, G/ q3 f4 q
; x( b6 ~ X3 M& O* b$ B
% n- o& _7 S0 n
) t& J* ?5 a" Q% Y
5 M+ L: M p F9 J d0 ]* O% A检查当前查询语句应用到的对象0 S7 v! ]8 }3 P# X; Q
点击Test Queries Result对话框上Expression result 后面的数字,PCB板上会高亮显示该条查询语句适用的设计对象,其它的设计对象会被遮蔽或变暗,以检测查询语句是否涵盖了正确的对象并且不包含多余的对象。+ u9 v$ B3 V3 ^7 q% r
2.2. 在PCB Filter中检测
4 o( I+ ~, C7 T- s还可以将查询语句复制到PCB Filter 面板的Filter区域内,在勾选Select复选框后,使用Apply to All 按钮测试查询语句的应用范围。具体的方法如 1.3.中的C步骤所述。+ ~7 ~- `9 `$ n9 H5 }
3. 用Query语句创建规则的实例$ N7 c* o, m# R" Z
例如:我想限定电路板上特定区域内的线宽和间距,可以借助Query语句来创建设计规则,步骤如下:
- v( w) ]' @( @) C创建Room,并为其命名。
* G9 c2 r# X& S' S& ?( g4 a) ~& Q, h& f
选择菜单: Design>> Rooms >> Place Rectangular Room,创建包含特定区域的Room,并将其命名为RoomT 。
( \3 e" a. l% d6 k0 ]- G- 创建一个新的Width设计规则。
- 在设计规则中编写Query语句来对Room内的对象进行限定。
6 w; m6 W9 y; i $ J- x# v, |* U7 x [
在设计规则中,打开Query Helper 对话框,找到PCB Functions下面的Membership Checks, 找到跟Room相关的关键字 WithinRoom 并双击,使其出现在Query语句预期,然后填入创建的Room的名称RoomT, 点击OK 按钮。如下图所示:
) F* u! s$ s* n2 i' f0 M3 X+ k, H
1 s9 y3 ^, t! h, g7 b3 M( g* {+ O" I9 u
' S/ V5 J6 q) |2 s
- R% ]6 u# d( n2 E8 u- 编写好的Query语句会出现在设计规则的Query语句框内,然后设置线宽范围,并点击OK按钮。规则编写完成,如下图所示:( s. v) c$ N) o+ d
( q8 z( h* S. Z: p- S- G/ I6 [3 v
l+ n' X" e0 }8 S+ n3 v' `) C. O0 ?& n. I; x, r. r
- 创建一个新的Clearance设计规则。并参考步骤c、d完成间距设计规则的编写。如下图所示:2 k1 O2 J) A- C2 A4 i) z% C* a, H
( L( O0 Q. i0 F! M5 P
& v4 ?, O0 ?8 \
0 O3 v, j9 U7 q3 p$ k) U' |8 w
Custom Query选项使设计人员能够自定义编写更复杂的查询语句,以便更具体地限定规则应用的范围。编写Query 语句并检测其准确性,在我们日常编写设计规则的时候应用非常广泛,通过本篇文章,大家是否对Query语句的编写和检测有了更多的了解呢?
( Z* c# x' X$ ~$ e2 H
; d, w" n: s" Z# S3 @
2 m: n& V, Q% M% g) A |
|