Chip123 科技應用創新平台

標題: library compiler建DFF cell的疑問 [打印本頁]

作者: 霜淇淋    時間: 2009-9-17 02:02 AM
標題: library compiler建DFF cell的疑問
各位好,小弟打算跑HSPICE改變一下cell library的資料" u1 p- C- {3 N# ~. G  i2 J
但有部分還是不太理解,以下是D-Flip Flop(DFF)接腳D及CLK部分
: l" Q& b3 @! h4 x! w8 b9 [( v) X% x! Y. ]

6 ^( ~- R! a0 e% X& N  pin(D) {
* D9 y- z5 \$ R$ S& R2 K+ N    nextstate_type : data;
& f0 _6 D3 Q) M    direction : input ;2 {3 C% M' K% U( M8 [! o$ y) |
    capacitance : 0.001165;6 {' @3 {# X( y4 I
    internal_power() {. d1 s5 A4 ]% Y* x, O/ `* b
      when : "!CK";; o0 s3 D# D3 n: y' ~  W9 R4 V
      power(POWER_7x1) {' n5 E( @7 |3 `6 m$ D
        index_1("0.009652,0.016106,0.025992,0.046675,0.088958,0.216628,0.447814");
2 D! }" p9 q0 ^( W, d        values("0.003651,0.003635,0.003626,0.003611,0.003614,0.003725,0.004117");& p8 x2 x/ }. K* S5 C/ M3 o, p
      }
0 v7 d" z4 D. d' A8 Z/ C    }
9 A8 O  {( I- Q) J
# t4 z, Z5 R, e. w% o* D6 j/ |  o/ T6 ?values值是指不同的D端電容(index_1)在CLK=0時的POWER值嗎?
7 B# ]5 }1 N( d6 r, _
( ]3 {" R+ m0 M3 F3 a4 W    internal_power() {1 G8 `8 o( s$ J2 K# n# x+ ]
      when : "CK";. `  P: |2 |' U" k
      power(POWER_7x1) {
/ l; S6 c$ F$ Z( I# S: C- V        index_1("0.009645,0.016106,0.025991,0.046674,0.088957,0.216628,0.447814");
" L& r0 n; H7 A7 T* Z' }7 u        values("0.000127,0.000122,0.000120,0.000119,0.000117,0.000116,0.000114");
5 K9 c- K9 I7 a# Q      }
2 [) b% E, B  e4 H    }- Y# u3 U% M2 U
    timing() {
3 t+ d( E4 i) h4 X8 y! t      related_pin : "CK";5 P5 z- _2 u5 G3 i5 ^
      sdf_edges   : both_edges;* s4 k3 A* i0 T0 u- h
      timing_type : setup_rising;1 b, f' i9 b. ?# `7 n! I: `3 W/ g/ S
      rise_constraint(CONST_3x3) {
: \+ N' N2 |$ ^/ p3 k0 d: s        index_1("0.006000,0.217000,0.434000");
9 z0 [* F( g' G2 K7 p        index_2("0.006000,0.108000,0.217000");
0 u: T0 u7 [7 f        values("0.029659,0.026470,0.036963",\( I. K9 u+ A, c* m2 z8 `9 b3 F, N
               "0.032032,0.023912,0.031939",\
3 ]: V  P% v3 z& T: m. ?- H               "0.004917,0.000010,0.004825");) u8 Z& b, c/ W, I
      }8 Q, N/ a( q" h' V
, F8 b- O! Q2 z/ Z  V
values是指DATA輸入transition time(index_1)跟CLK輸入transition time(index_2)不同時所得到的setup timing嗎?& d( g5 b+ @5 p+ ]5 C

; ]) m- f4 C' l5 |+ J0 ]- P+ V' v  q) U8 q, `& a
      fall_constraint(CONST_3x3) {0 |5 t+ z+ y9 b) a
        index_1("0.006000,0.217000,0.434000");
9 P3 G' j. N8 Z& [& ~        index_2("0.006000,0.108000,0.217000");
. U! O2 N0 x& U4 R/ r        values("0.074043,0.058526,0.059156",\
, r6 H* @# c( X% G5 L* z9 L$ r( |               "0.152860,0.139810,0.137970",\' x  P; k1 {! n8 \
               "0.231770,0.216260,0.216890");
  a* m0 n' A+ t2 g, ?; A      }
! I. N  G2 z' B    }
作者: 霜淇淋    時間: 2009-9-17 02:02 AM
timing() {
" W* E5 m  D  j: i% l9 g, B      related_pin : "CK";8 @6 X. C+ X, @
      sdf_edges   : both_edges;' J, {: g2 k, _; M
      timing_type : hold_rising;9 D& R, {2 {- q! G
      rise_constraint(CONST_3x3) {
* U0 f# v3 J0 V1 y2 g9 h( i        index_1("0.006000,0.217000,0.434000");
: B. M$ D( T! Z5 [( c  S        index_2("0.006000,0.108000,0.217000");
  f  H( |: {) m) R% D# X        values("-0.005932,-0.005209,-0.015703",\  t6 ?! e9 T" a* F# h# T
               "0.013887,0.014610,0.004117",\
# ?* K* N9 s- ]# S               "0.060728,0.056519,0.043560");( K# d9 E# Y( j( z: ?
      }* `: P8 m. M8 F
      fall_constraint(CONST_3x3) {! ^! Q" p6 s- V( {
        index_1("0.006000,0.217000,0.434000");
) y' X% w1 i" X! R2 ]8 U        index_2("0.006000,0.108000,0.217000");
9 O0 L( R/ h/ m( M. u1 r        values("-0.018261,-0.002744,-0.005839",\+ T5 V, ]9 S0 {
               "-0.028829,-0.021521,-0.028745",\7 n+ s1 G4 q1 u1 \
               "-0.004426,0.053203,-0.004342");4 o8 Q4 L/ k9 H- ]
      }, n: t9 h3 C0 x0 n, X
    }
& Z& R. F2 ]/ r1 Z7 B  }
, B9 N: m$ ~! S9 c1 y% }7 |  pin(CK) {
6 O' ^  b# k  Y: |4 `- i2 ?7 j    direction : input ;* b7 \' Z# d2 C9 t% N
    capacitance : 0.001915;: L: t7 j+ X# u; s
    max_transition : 0.217000;. y! d1 F2 c4 v+ O" ?
    clock : true;
% U5 Y' O+ E/ N: {/ J  H$ ^    internal_power() {) V+ `5 v* ~! @& s1 `* V
      power(POWER_7x1) {
. Q( w( ~: g  z) q        index_1("0.009651,0.016105,0.025992,0.046675,0.088957,0.216628,0.447814");) g: p# H4 j: Y5 t# ?# P
        values("0.004066,0.004029,0.004007,0.004000,0.004050,0.004346,0.005062");* E7 Q4 R1 H2 H9 b1 E
      }
' H, I# r' e+ G. L/ {& n8 f    }9 g1 x# B2 v8 L9 `" ?
' u1 k4 _3 N9 a; y
  d& Z8 D1 {& Q1 s% ?# i( m( O
values值是指不同的CLK端電容(index_1)在CLK=0時的POWER值嗎?1 l- a% n: s8 `2 T2 k
* w0 {4 q) X3 v: U# f7 P* h
    min_pulse_width_high : 0.061268;
0 u* h# ~" W! k# U  t    min_pulse_width_low  : 0.125320;5 h* r' \+ S" Z% {3 }  L

# t, s: A8 c. |+ S) o. Y+ q# jCLK Hi/Low的長度?
; H7 X; y$ O+ r; ^. V* j0 I  }" t2 t4 q; T0 R% P. i
}
6 M0 k6 P0 l2 E+ k: Q0 w8 r9 o- V
7 c6 V: y4 @) y8 O
3 v7 ]  S+ V/ A4 W' B. e
' \1 u* z0 K. p* i& K; ^* w有觀念誤解的話希望幫忙修正..謝謝( o9 e2 K' v% }, {' M

7 h4 _+ F/ r, H" u% r( ^[ 本帖最後由 霜淇淋 於 2009-9-17 02:03 AM 編輯 ]
作者: yytseng    時間: 2009-9-28 09:40 PM
internal_power() {3 r% _. }6 U3 R$ R  f$ ]
      power(POWER_7x1) {8 _6 E, M4 d+ r# j3 t, x8 K
        index_1("0.009651,0.016105,0.025992,0.046675,0.088957,0.216628,0.447814");# c" A  c% l* ]3 B
        values("0.004066,0.004029,0.004007,0.004000,0.004050,0.004346,0.005062");" [% Y) I* e+ d0 ]
values值是指不同的CLK端電容(index_1)在CLK=0時的POWER值嗎?
  E; F# R  O9 O5 C. a===> Wrong !
1 ?( z; c. ]: \) {===> they mean while different input slew (transition) of CK, results different internal power
' x9 |' l5 q8 d. x2 Y1 e1 Z, _" c) `8 f5 I6 g, t0 P
min_pulse_width_high : 0.061268;
- y- L. y/ n+ B; fmin_pulse_width_low  : 0.125320;
/ y8 {; H+ Q: d* o' p) m3 z% ECLK Hi/Low的長度?! K! Y, x) ?$ H: A* c7 y
====> No, these mean minimum possible of clock waveform to prevent functional fail, for high (1) and low (0)( A3 Q' M  n! K, u: u' C  z* Y$ Q
8 q5 I1 a$ f- m! ^+ U8 m3 V
      index_1("0.009652,0.016106,0.025992,0.046675,0.088958,0.216628,0.447814");9 k7 T# ]& Y: R4 ]. X- t: W- P; J! G
        values("0.003651,0.003635,0.003626,0.003611,0.003614,0.003725,0.004117");
% u, K! s+ U0 \  P* Q4 q      }( K& s* y  Z0 R6 y
    }; S" z( c# @, M9 p3 {

+ W/ M- F3 H! t6 w; R2 Z1 t( Cvalues值是指不同的D端電容(index_1)在CLK=0時的POWER值嗎?4 s, G( V9 \) u* J) `6 Q3 x" r
==> No, index1 is often input transition. here represents input slew of D pin4 f6 z! F4 ?% J- c6 z9 k- X

/ v' w' h; L# Y: \" n" Q& k        index_1("0.006000,0.217000,0.434000");
6 \% a# X* f0 Z        index_2("0.006000,0.108000,0.217000");
% @- X! J7 G1 w/ m        values("0.029659,0.026470,0.036963",\; o$ p8 G4 J1 o2 E) s
               "0.032032,0.023912,0.031939",\
5 a* @/ ^* X2 B& f* {$ p               "0.004917,0.000010,0.004825");: E. e& ^3 Q& o' U
      }! t$ ]1 X& z  i! a; b) V; \/ W

4 o1 {) g2 Z. Q8 Z3 rvalues是指DATA輸入transition time(index_1)跟CLK輸入transition time(index_2)不同時所得到的setup timing嗎?8 J: e7 O6 X3 I8 h  |8 b& I
# N  i" ~: a. q' I- b) x3 H$ D7 @
===> yes, but you have to refer index_2 definition in the front of liberty file to make sure.




歡迎光臨 Chip123 科技應用創新平台 (http://free.vireal.world/chip123_website/innoingbbs/) Powered by Discuz! X3.2