|
各位好,小弟打算跑HSPICE改變一下cell library的資料
R. v) S4 O2 d; j8 f# r但有部分還是不太理解,以下是D-Flip Flop(DFF)接腳D及CLK部分
9 J. n/ ~# Y ?
' p0 e! A3 r! [9 s' D6 _( r' v
& t6 ] ~3 Y w( W7 Q4 }( Z U pin(D) {2 Z% H3 s& B+ t* K+ z) o- _
nextstate_type : data;+ {! C/ _' f' E$ ]+ a5 F9 O! a
direction : input ;# N! z3 b, u l/ k) U4 U0 ?
capacitance : 0.001165;, h: r; B# E: C! t0 T8 t% q
internal_power() {
, a7 b% _) Z; J. N when : "!CK";
+ {- t& ^5 y9 @% E power(POWER_7x1) {% y6 D( c" P( d, l
index_1("0.009652,0.016106,0.025992,0.046675,0.088958,0.216628,0.447814");( z. L9 V& e {' Q8 b0 P' _
values("0.003651,0.003635,0.003626,0.003611,0.003614,0.003725,0.004117");' f6 t+ t( k' l; e& Q# q
}
+ F f0 _- R9 x+ u$ r }; p7 A! c8 F; R
. \ ?7 z) o0 Y' H5 t& L5 n+ r
values值是指不同的D端電容(index_1)在CLK=0時的POWER值嗎?
& O" z4 L6 n' V/ ]2 c9 o
" N. ^2 {$ l" v) w4 A/ g internal_power() {; B7 [% l+ ^; @/ J& A s6 h
when : "CK";
) v* @& h3 f; @ power(POWER_7x1) {0 Z2 @0 G( V, X$ V+ ?
index_1("0.009645,0.016106,0.025991,0.046674,0.088957,0.216628,0.447814");! i4 v3 Q" |7 x. g
values("0.000127,0.000122,0.000120,0.000119,0.000117,0.000116,0.000114");
, Z$ f5 ]! P/ l/ l0 O5 z }. P" L6 \) k5 S- c1 \8 M
}
5 b7 C- O! g7 j, d& B0 z timing() {
& Y( l) R8 j! g, t! ^! m! ^ related_pin : "CK";7 x( A3 A8 k$ N, F1 d
sdf_edges : both_edges;1 F9 l6 I( C, U! m8 L2 W; t
timing_type : setup_rising;8 y3 g& ~3 p5 M6 f" ?- X0 ?
rise_constraint(CONST_3x3) {$ w; X. G0 m6 d; r+ G# b
index_1("0.006000,0.217000,0.434000");5 D0 s0 b' T) }9 Z& v2 B; i' t1 s
index_2("0.006000,0.108000,0.217000");, P) O/ q& i) [4 j
values("0.029659,0.026470,0.036963",\: ~7 S# P7 d4 Q4 U( F+ ?; I
"0.032032,0.023912,0.031939",\
9 x6 W- q0 e" h Q "0.004917,0.000010,0.004825");
7 @- K6 D5 ?1 j( O }( l3 s' g! h) g! Z" e$ y9 S
0 s3 m" L6 w/ l* ] q5 ?values是指DATA輸入transition time(index_1)跟CLK輸入transition time(index_2)不同時所得到的setup timing嗎?. k6 ^$ Q+ B1 z& |0 C' r9 @6 U
* \$ r5 ]* H. w% d2 S/ E F" H# E8 u- U
fall_constraint(CONST_3x3) {3 E$ D$ z+ o S' ~" ?; c/ j
index_1("0.006000,0.217000,0.434000");) O& c9 J; h0 v5 ]& K; t
index_2("0.006000,0.108000,0.217000");% y% Z5 l: H* ^& E1 C4 {
values("0.074043,0.058526,0.059156",\1 g7 P8 ^9 i5 t. H
"0.152860,0.139810,0.137970",\
1 @5 R3 X7 Q, X0 T' C1 p: ?/ o "0.231770,0.216260,0.216890");6 `7 d1 N: O" i7 j3 b, R: w/ i2 M9 K
}
v3 }; l% B4 M% x( p% l/ G } |
|