原创 Design Compiler Part 2 Constraint the design

2009-2-22 01:03 2549 6 6 分类: 工程师职场
Part 2 Constraint the design

" M4 c2 K/ b- g  v3 \( `6 u6 A4 T9 F' _4 O: K9 T' e+ Z

2.1 约束一个设计分为几个方面?

9 A) Q  h+ X; x6 L     总的分为,面积约束和时序约束。6 Z# U7 g% x" K  a# @* B5 ]7 `: L0 N

* Y+ G* |4 Z0 E

2.2 面积约束的命令是什么?( |3 ?" s+ W# `9 M4 b: |! Z+ D

      set_max_area6 B$ j0 K1 C" _/ S5 ~8 C



5 X( d4 W0 _, B2.3 如何对时钟进行约束?

, U0 H+ g5 P4 ?' l( q     对时钟进行约束是对时钟的周期,波形进行描述。4 Q7 d2 i4 ]' i- K/ b

     使用create_clock 建立时钟约束1 K7 R0 ^6 N1 U, e

3 ]2 R$ e% G, ~, o

2.4 如何对pll进行约束?/ r. \' n% H) [9 P: Q7 `9 L

     如果存在PLL,那么首先对输入的初始时钟用create_clock进行约束。

( K, n5 H1 Y; x- v% |     再用create_propagated_clock 对PLL输出时钟在基于输入时钟进行约束。

# P+ [) }3 _! o) D, A0 ~& c

# ]! c( b& P# a2.5 什么叫虚拟时钟约束?
  f, E3 x2 n  B/ Z
     虚拟时钟是指在当前要综合的模块中不存在的物理时钟。比如,设计外的DFF的时钟。

: p8 v! v! i3 ?0 P4 N     建立这样的时钟有益于描述异步电路间的约束关系。

2 \, U8 _7 C- ]4 ?, X6 E' a; @     4 \8 n  p8 Z, S: Q2 O  B

2.6 DC可以对时钟的哪些特性进行约束?

- d, a# \/ @3 i: Q$ E' i* i" w( W# ?5 k     DC支持对时钟的周期,波形,jitter,skew,latency 描述

; ?. N! Q8 E* `7 R' E. Y' O( s% ]5 o; A9 Y' R  b+ n6 g" ?  f( u

2.7 如何约束时钟的jitter?

+ k2 e( \9 G: H6 k4 q. ?4 y3 l    使用set_clock_uncertainty -setup(-hold) 约束时钟的jitter: s+ J, _2 n8 k' B) H" N

# d2 }2 n/ V9 w

2.8 如何约束时钟的skew?

1 V/ _! s8 ~1 Q     使用set_clock_uncertainty 约束时钟网络的skew

; ^, o* Z3 ^$ p3 K) T9 J, Q

7 d. c' A$ N/ Y2.9 如何约束时钟的latency?3 N" M# X  q4 g# X: }8 }3 _/ b/ V1 p

      使用 set_clock_latency

# E& `6 D, |( k* r+ J- R1 g4 K+ f+ B6 V: C. {9 U

2.10 如何对当前设计的端口外部条件进行约束?( A1 A% m2 }; _/ A9 X: J

      端口的外部条件包括 输入驱动大小,输出负载的大小,扇出大小。

! V+ l: X) W8 L" n, o2 L) _( b8 c

2.11 输入端口被多大的驱动所驱动?

. p9 `' t; U1 g$ l* m+ K& l       可以使用set_dirive 和set_driving_cell

0 k6 i$ Z" w$ e# F3 L+ x2 p$ p. S) N1 o4 c5 n0 j7 p0 j

2.12 输出端口要驱动多大的负载?

$ e5 f! M; i8 h9 T       使用set_load 对输出电容值进行约束' o: T% z; \  w( W( o9 I& F

& u" R+ z3 W8 ~# a; R

2.13 DC是基于path的综合,那么在约束时如何体现?1 f8 ~; z' A6 u& V; F$ h  i

      我们知道,基于path会有四种路径形式,DC中提供, o2 ~: k) V" b- G/ W0 O  x

      create_clock 定义寄存器和寄存器之间的路径;$ A$ J5 Z& X5 r  ^+ {

      set_input_delay 定义输入与寄存器之间的路径;- y+ F9 F& j% o- Q7 L! R% y9 ]

      set_output_delay 定义寄存器与输出之间的路径;

. f4 b& y. e2 i3 Q4 E- x% A1 ~      set_max_delay和 set_min_delay定义输入和输出的组合路径;! U* D: w" g& Y' p

1 Z8 ^9 t8 P6 q3 q  d3 ?3 |1 K

2.14 set_input_delay 的目的是什么?: k4 q* \0 Q8 b

      定义输入延时,来约束设计中输入逻辑的时序

% e( ~' n; |% Y7 [, ]

) \& O/ n: j: R+ B/ u/ W) g- e2.15 set_output_delay 的目的是什么?, v* W; ?2 M/ m4 B# D9 G  r1 _

      定义输出延时,来约束设计中的输出逻辑的时序7 K5 X9 ~7 f; \( J8 L1 V- _( a0 H

0 Q4 `4 O1 i8 A; [# N/ S; Z) M

2.16 如何对组合电路进行约束?2 S2 s. R6 F, P. e4 `9 |0 P5 k9 @

      组合电路有set_max_delay 和set_min_delay进行约束

% ]' `. g9 O6 J( x3 `+ y% t6 i9 |, B- F

2.17 如何对电路的速度进行约束?  I/ R* v9 F; o' v

      采用对电路时钟周期的约束的方式来约束电路的速度,使用create_clock

3 L! B" K5 F1 y% {; v3 ]* B( y5 d5 u7 ~' a+ h, O5 n; X

2.18 当一个组合电路超过了时钟周期约束,那么该如何处理?
  q- f7 P0 W% T- e$ J: _+ U
      如果必须要满足时钟周期约束,那必须修改设计,如果不必要严格要求,那么可以set_false_path可以躲过path check。

, [) G3 M  a9 {0 _2 O" l9 P5 v" @! R- x! x

2.19 当出现环路电路是,如何约束电路?

0 V# }8 [: Y) X( k6 i1 V& v      对某一路径使用set_false_path/ k$ g6 ^% @* o0 V6 G

0 Y& X: l; t. W" Z# J. m

2.20 如何加强设计规则的约束?+ Q" K) {1 J$ j' r  [, S

      DRC是电路必须满足的设计规则,使用8 b% f; e# }+ H

      set_max_capcitance 3 n! Q  F, X  _$ b5 \5 `8 g6 [

      set_max_fanout6 t% ?! i& P6 F& z1 y

      set_max_tansition' d, a5 E/ D( {7 y- ]

0 C6 r7 O9 E: d0 q

2.21 在添加了4种路径约束后,如何为某些路径移除约束呢?

: R$ F+ {; b- ~* q  _6 {      使用set_flase_path使得某些路径不进行timing check

  T% z: O/ R5 v% S1 d8 r5 W- t# i& T9 |: y% G2 _' U

2.22 对于某些路径需要在固定的几个周期内完成,如何对这些路径进行约束?

' ]: d' ?. Q; ?6 i; S9 s2 k     使用set_multicycle_path 对路径进行约束1 n1 T0 O% W$ e. j3 b- G' |# e2 [

3 m* V7 r/ N, u

2.23 在添加这些特殊的路径约束,如何恢复原来通用的时序约束?9 S) n/ B" ~1 E: n( M

      使用reset_path" s  M( i0 u7 \+ g; z% K6 F. K



& p0 c7 {2 W" O3 L2.24 如何对三态门进行约束?: f" b1 t/ V; i

       由于综合时,默认三态门是enable的,所以对某些路径要设置set_false_path

: I. Q# v5 v: R9 a& b  B

9 [$ E3 r) h- ^& ?* H6 U& U4 r2.25 如何对门控时钟进行约束,以保证功能正常?* ^# e0 b  U: [4 p

       对门控时钟电路进行setup和hold检查,使用set_gating_clock_check, z8 V* v, ?+ x  N  _4 r" m1 P

# J3 H6 m5 m8 f

2.26 设置对某些网络比如时钟或者复位不进行添加buffer等操作,应该怎么约束?

9 n5 y* a' |, T. Y: L       使用set_dont_touch_network

% E2 Y1 m7 d7 F& a! I. ]4 u5 t) a3 S, K* G$ j

2.27 如何修正hold 时间冲突?! Q& K$ |" N& `- d8 s

       加入set_fix_hold约束
PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
6
关闭 站长推荐上一条 /3 下一条