|
EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
Allegro 16.0以后版本的约束规则设置较之前有很大改变,对于用惯了15.x的人来说,很多不习惯新的约束管理器。和在对待女人的态度上,恰相反。80后说90后脑残,15.7说16.2脑残,Xp说Vista脑残。Vista确实很脑残。新事物取代旧事物是自然界发展的客观规律。
8 h( o) l* ^8 V3 ~/ Q" O" s4 e说明:
5 Q v M: v9 ]+ ~. Z9 Z$ y) K1本文只介绍了Spacing约束的设置,因为Physical规则通常来说都设置的非常简单。掌握了Spacing规则Physical规则对你来说一定是小Case。另外,Physical规则的设置也写的话,一定显得都是在重复Spacing的设置;
; ~( K, A" o7 l8 }+ \2文中所有的规则(约束),如不特殊说明默认情况下均指Spacing规则(约束); 0 d* i1 q7 s+ @7 K) C) Z1 ^' Q
3对于Electrical的约束,是另一种约束,本文不作讨论。 - b9 g0 U/ [) r% g9 L
约束的设置方式:
6 X, R& Q1 j# S) w1直接的:Net中写数值,
' D: m- ^" k# W6 ^ s. f$ c2 间接的:创建Constraint Set,然后Assign给Net;
; Y$ r/ u' J- i$ D& M这两种都很常用,后者管理方便。在Physical和Spacing设置中用后者比较好,但是在Electrical中,我看到很多很多的人会混合使用。 " ^8 ^3 q4 U& v# ]) N
使用第二种约束设置方式的约束设置步骤: ' v2 E! w# Z" \1 E" w$ [1 c* }
1约束的对象
; s" K R+ j0 j7 d2约束的内容
( N, d, M7 c, H4 \4 v3给对象分配内容
# E% m1 ~4 v8 p这3个步骤默默的引导着所有间接约束的设置。
1 n5 Z) ~. ?( i6 N基本约束
x% W5 I5 N. x- R! b预备 , U+ {2 l# L s6 u- `
先理解:
* s9 Y) ^9 J; Y/ n: A8 WNet class
& I$ K) A; B8 Q3 qNet class-class
/ L# X; ~4 \ J# i; MRegion 9 `$ X9 `0 {/ E9 z* L' T& S5 C
Region-class ; w$ z+ L9 N7 t4 ]- b
Region-class-class
. L8 u# U7 t- l/ b9 t/ a% rBus % B, V" o& d- f+ }
…… ) p' y( c. B. H8 v/ V
现在不理解,想跳过去。没关系,你早晚都要理解的。
9 z) S1 q& @) {- {& r最简单和稍微复杂一点的约束:
0 T8 X2 `% C m. S) ^. r最简单的就是default的约束,稍微复杂一点的就是修改了一点默认的约束。 $ \* P% q8 Z4 E! D! P6 X4 E
再复杂一些的约束:
0 |5 [9 N( T5 w( u6 x n, P# u你可能会想让不断变化的CLK(我们不考虑是不是差分)和其他的线离的远一些。 ) r v. Q, }* j ^& g' r
在Constraint Set中Create规则并设置规则的内容: ( N k3 _2 l/ w. F
Creat & Set之后 7 R% t2 K4 z5 t+ A' G5 w
给Net分配规则:
' h) W9 K. i& Y1 J/ l更高级的约束: ' h4 [. s7 `0 F& K
What Can U Think? ! c* _4 g! F% ~" E
有了一根线的约束,贪婪的本性会使你你很快上升到两根线(通常是Diff)和更多线的约束。两根线(Diff)的约束是不敢称更高级约束的,顶多算一种特殊的约束。这里我们讨论更多线的约束。你会想到一组BUS。 ' \2 D. Z* h7 u7 D% y$ H- x7 f9 ]
接下来,你会Create一组Bus,并且很自然你会在Referenced Spacing CSet里给这组Bus加上约束。那么,我问你,这个Spacing究竟是什么呢?是BUS内部的Space吗?还是BUS和其他线的Space?恐怕你自己也说不清楚。你可能会说是所有的线的Space,包括内部和外部。你似乎觉得自己是对的。那么我再问你:如果BUS_A的Space为Spac_XMIL,BUS_B的Space为Spac_YMIL(X!=Y),BUS_A和BUS_B之间的Space会是多少呢?X?Y?应该都不是。(X+Y)/2?亏你想的出来。
! z8 @, ?+ K" u M7 H/ o其实你一开始就错了,问题不是这么Easy(当然也不复杂),否则怎么敢叫更高级的约束? % L; r* W7 m/ W* A
Create Net Class:
7 w Z6 R- K9 P8 X$ g/ N很多人不明白Net中Bus和Class的区别。 ' B( @7 M" }1 W8 ]
相同:都是一组线, ; N% ]9 ?( J% [6 i! `: X7 `
不同:一种是按照功能划分,一种按照规则划分。
0 _1 ]$ ?# B8 E有人会说Bus和Class也可以是一根线,我懒得理朝左右而不是前方,钻牛角尖的人。
9 t: ]4 h" U4 ?8 ^4 g) C这两种化划分是不是有点多此一举?NO,功能相同就规则相同吗? 3 z( o/ O6 w: K$ s
Net Class是按照功能划分,所以这里我们需要先创建Net Class。 + h, o' c2 z( i- ]
Net Class-Class 9 G' v( H( \ l4 b" |2 ]
在左侧的Folder区域你可能早就注意到这个神秘的东西了。他将带给我们什么样的惊喜呢?毫无疑问它将成为化解我们之前疑问的有力工具。如何使用呢? ( v- S5 ^; F; b6 k
Net Class-Class:
0 Z. Y- S6 O3 r$ u2 I( _BUS和其他线间距: - _% G; g; Z; ~/ E
BUS内部线间距: : R- [. b" c" `0 u7 o9 C
BUS与BUS之间 + Q. R. D6 a, e) Y1 l k2 }" P
Region约束
5 \ A" s0 Q [! d/ P没错,如你所想,这个约束就是15.X的Area约束。这是个很有意思,并且非常有用的约束。 ( B2 C* [2 m- Q: l% j/ ?' f
创建Region:
- E) u* `+ s" kAssign to Region:
5 q W, B2 B% q( j" C# ~Assign What to Region?
6 T( f6 p! B: ~$ u/ F6 S( HRegion!
, u' y& B" ?3 V, U2 S% m1 F* BAssign Region to Region?
. m" W c! r9 L Q a8 bFirst Region is具体(即能看得到的)的Region,Second Region is抽象的Region~ " g# p7 c. O( ]9 C4 f8 H
这是个很有意思的地方。Allegro里面有Assign different pair,Assign Refdes,这里却是Assign()to Region。这个命令放在Logic中是很合理的,但是Cadence公司干脆一不做二不休把这个命令去掉,需要在绘制区域的时候,在control panel中Assign。这时候Assign你就不用说括号中的内容了,因为Assign的肯定是你正在画的东西。Assign Area to Region也有点不妥当吧? & J: o& y' M/ F
(本文所有操作除了这个绘制约束Region(即具体的Region)在AllegroPCB完成外,其他操作均在约束管理器中完成。)
: p J8 p: s" y: Bshape->Rectangular矩形,Control Panel 的option的active class 选Constraint Region, subclass选择all.
. [0 U) {4 |- C4 I0 ?assgin to region刚刚在规则管理中建立的区域规则。
/ L" F% s; P' o4 X$ |) P7 r9 S: b2 k创建sapcing规则 8 E: i* q; O! \, `3 P Z
按层叠设置间距:
% Q% ^( u/ x& E# \/ ISpacing规则分配: * a& W7 r" P! I2 L" E: S
最高级的约束:
* T8 F# P3 s9 }+ h* {听到“最高级”你一定很激动,仿佛感觉自己已经练到了九阳神功的第九层。指的是什么?
: k; g* m; O9 `3 }0 ~9 [2 R3 R不要着急,先听我给你罗嗦几句话,这几句话你在除了这篇文章的任何资料上都看不到。 " o; w5 t. y" k2 h. E
规则可以分为Physical和Spacing规则,但是你有没有想过分成Line(这里的Line包括Bus,Bus也是Line)规则和Region规则也是很舒服呢?首先,这两个集合可以包括所有的规则而又没有冲突(真的没有冲突吗?);其次,这两个规则的划分会对更高级的约束设置带来意想不到的效果。Line和Region都是带规则的,Line的规则是流动的,Region的规则是固定的。当携带规则长驱直入的Line进入Region将怎么办呢?Region会觉得很爽吗?Line呢?究竟谁会更爽呢?比如一组线内部的间距是10mil,与其它线的间距是20mil,进入特殊的Region之后将使用何种规则? 其实你是导演,你想让谁爽谁就爽。他俩要是都爽了,你也就爽了。很河蟹。
: \# t1 Y+ v$ }: z6 e那么作为导演,你该如何满足他们的需求呢?(说白了就是解决规则冲突,让大家相安无事,共建河蟹PCB。)
; k' F# e/ B/ f当不同规则的Class与Class在同一个Region不期而遇,或100个Class在同一个Region不期而遇,后果将怎么样呢?面对如此错中复杂的局面,你将何去何从? 8 a. z8 ^" d1 d2 V+ ^, z( k
Create Net Class: ) r0 J# d# R* |
要是还不明白Class和Bus的区别,再琢磨琢磨。 4 \- m- D4 n# U
Create Region-Class。
1 f' D/ }2 T: Q8 z创建之后:
- H. H3 U; w$ e. x7 o F) r到这里我们就可以给Region-Class分配规则了,我们先不分。
; r2 N# B/ ^+ Y zCreate Region-Class-Class
( ~6 n0 w, K/ jClass与Class在同一个Region不期而遇了。
1 u; @* z% p! Z$ B$ y0 O0 S创建之后: 4 h2 S7 B1 ^( W' q0 `% O
局部放大,相信你能看明白这个是什么意思。
, p/ n( I& B) U8 u, xSpacing规则分配:
" l" E+ `# h0 k) T包括Region-Class,Region-Class-Class
+ X6 A( ?4 p' d( o, |) O7 z短短的时间之内,你就学会了九阳神功,从“欲渡黄河冰塞川,将登太行雪满山”的彷徨失措,摇身一变,你已经到了华山之巅,俨然一副“拔剑四顾心茫然”的独孤求败。 $ D+ A4 ^. b8 G
完。 |
|