原创
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约束
文章评论(0条评论)
登录后参与讨论