!"$ $ $! !% "!%$! ! ("!" $ " # Coding guidelines for behavioral modeling and a process for generating wire load models that satisfy most timing constraints early in the design cycle are some of the techniques used in the design process for standard cell ASICs. ' ' !% !% . /$( 6/*6(-& / +- ..0- . *)/$)0 /* $)- . /# ) !*- .#*-/ - .$") 4' /$( . $. (*- 0-" )/ /#) 1 - / /# .( /$( /# () !*- #$"# + -!*-() $) ./)- '' . $. '.* $)- .$)" # . /- ). - 3+ / /* *)6 /$)0 . 0./*( -. '**& /* " / /# (*./ - /0-) *) $)1 ./( )/ !-*( /# '/ ./ +-* .. / #)*'*"$ . )4 *! /# .$") *).$ -/$*). ) /* #$ 1 /# . #$"#6+ -!*-() "*'. *(+ / $- /'4 "$)./ #$ 1$)" ,0$& /$( /* (-& / /4+$' ./)- '' .$") +-* .. $)'0 . . 1 -' $/ -6 /$*). $) 2#$# $)$1$0' ./ +. (0./ - + / /* %0./ !*- / / -($) / '/ - ./ +. *((*) 3(+' *! /#$. $. /# ) /* - .$") +*-/$*). *! /# $-0$/ 2# ) +#4.$' - .0'/. .0# . 3/-/ +-.$/$. - ! & $)/* .$(0'/*- ) + -!*-() "*'. #1 )*/ ) ( / #$. ++ - +- . )/. ( /#*. /#/ # '+ - 0 *- 1 ) '$($6 )/ /# ) !*- .$") $/ -/$*). 4 $)- .$)" /# #) *! 5!$-./ /$( + -! / / # .$") ./ + $-./ 2 $.0.. /# ( /#*. 1 '*+ !*- # *! /# ./ +. $) *0- .$") +-* .. . $" /* " / .#*-/ ) /#-*0"#+0/ /$( ) - 0 .$") $/ -/$*). 2#$' ./$'' +-*0$)" #$"#6+ -!*-() *(+*) )/. 3/ 2 +- . )/ /# - .0'/. *! ++'4$)" /# . ( /#*. /* /# .$") *! /#/ $. 0. $) . 6/ -($)' +-*0/. &!" ! $) #$"#6' 1 ' #1$*-' (* '$)" $. *) 1 -4 -'4 $) /# .$") !'*2 /# 24 $) 2#$# /# * $. 2-$// ) ) #1 -(/$ !! / *) /# *2)./- ( +-* .. . #1 1 '*+ . / *! #-2- .-$+/$*) ')"0" "0$ '$) . /#/ $! !*''*2 2$'' - 0 /#-*0"#+0/ /$( !*- /# )/$- .$") !'*2 # . "0$ '$) . 2 - *'6 ' / !-*( . 1 -' .$") -. 2$/#$) ) #1 ) 0+6 / ) (*$!$ . - . !*- $(+-*1 ( )/ #1 ) $ )/$!$ $) # *! /# *2)./- ( +-* .. . # *$)" "0$ '$) . $)'0 . /$*). *) '*&$)" ./-/ "$ . '*& #$ --#4 ) ./-0/0- !'$+6!'*+. ) '/# . .// (#$) . .$") !*- / ./ / #)$,0 . !*- )6 .0-$)" *).$./ )/ #1$*-' ) ./-0/0-' .$(0'/$*) ) 4)*+.4.6.+ $!$ $..0 . 4)*+.4. $. ) 0/*(/$ .$") .4)/# .$. /**' !-*( 4)*+.4. ) Hewlett-Packard Company 1995 *''*2$)" /# . "0$ '$) . ''*2. 0. /* 1*$ ()4 /$( 6 $)/ ).$1 ./ +. '/ - $) /# .$") +-* .. .0# . )( - (++$)" - )'4.$. ) $/ -/$1 ./-0/0-' ) #1$*-' .$(0'/$*) ' $## 0- "*' 0-$)" .4)/# .$. $. /* ' /* +-*0 .$") /#/ 2# ) -*0/ 2$'' ( / + -!*-() "*'. 2$/# /# .('' ./ +*..$' - '.* 2)/ /* * /#$. 2$/# . ! 2 $/ -/$*). $) /# #1$*-' (* ' ) /# .4)/# .$. .-$+/. . +*..$' Behavioral Model (HDL) Custom Wire Models Logic Synthesis (Synopsys) Netlist and Timing Constraints Placement and Routing (Cell3) Capacitance Static Timing Verification (Synopsys) Artwork Verification and Output .$ .$") !'*2 -0-4 2' //6&- *0-)' Coding Guidelines. The HDL coding guidelines mentioned above enable the creation of behavioral models that synĆ thesize predictably in a shorter amount of time with better performance than those created without guidelines. Generic Synthesis Script. To streamline synthesis we create generic synthesis scripts for our design that contain all of the designĆspecific constraints such as flipĆflop types, clock speed, behavioral model locations, and so on. These scripts also include input and output timing constraints, external loading, and drive capability. The scripts are used to syntheĆ size all submodules in the design from the bottom up. Only those modules that do not meet timing requirements when incorporated into their parent module are resynthesized with scripts written specifically for them. This allows the majority of the blocks to be synthesized very quickly. Fig. 2 shows a portion of a generic synthesis script. Custom Wire Load Models. One of our primary goals is to perĆ form a single route without any iteration. To accomplish this, the wire loading (capacitance on the line) estimates that are used during synthesis have to be conservative. However, if they are too conservative then it is not possible to meet perĆ formance goals. To determine a wire loading model with the appropriate amount of conservative estimation for our library and tool methodology, we performed several wire loading experiments. These experiments consisted of synthesizing modules of various sizes and design types, routing them, and then verifying that their performance with actual wire loads satisfies the timing constraints defined for the module. Several passes were done for each module using a wire load model with varying levels of conservatism. Fig. 3 summarizes the process we used to generate the wire /* These are fragments from the generic Synopsys dc_script */ /* the full script can be easily modified for a given model */ /* –––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– /* Read in Verilog HDL: */ /* –––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– read -f verilog mymodule.v check_design /* ––––––––––––––––––––––––––––––––––––––– /* Set the wire load model: /* ––––––––––––––––––––––––––––––––––––––– set_wire_load block –library wire_loads */ */ */ */ */ /* ––––––––––––––––––––––––––––––––––––––– */ /* Define the clocks: */ /* ––––––––––––––––––––––––––––––––––––––– */ create_clock CLK –period 20 –waveform {0 10} set_clock_skew –plus_uncertainty 0.5 –minus_uncertainty 0.5 –propagated CLK /* –––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– /* Set block operating environment: /* –––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– loader_pin = hp_cmos26g_table_slow/INVFF/A driver_pin = hp_cmos26g_table_slow/NINVFF/Q set_load 3 * load_of(loader_pin) all_outputs() set_load load_of(loader_pin) all_inputs() set_drive drive_of(loader_pin) all_inputs() set_input_delay 10 –clock CLK all_inputs() set_output_delay 10 –clock CLK all_outputs() –max */ */ */ /* –––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– /* Compile the design /* –––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– compile */ /* –––––––––––––––––––––––––––––––––––––––––––––– */ /* Write out results */ /* –––––––––––––––––––––––––––––––––––––––––––––– */ write –hierarchy –f verilog –output mymodule.vopt write_constraints –format sdf –output mymodle. sdf –max_paths 1000 report_design >> mymodule.sn_rpt report_hierarchy –full >> mymodule.sn_rpt report_timing >> mymodule.sn_rpt A portion of a generic synthesis script. February 1995 HewlettĆPackard Journal */ Original Wire Load Models Capacitance* Logic Synthesis Place and Route Actual Capacitance Check Timing Timing Constraints Met? No Create more pessimistic capacitance models based on data from route. Yes Wire Load Model Is Sufficiently Pessimistic *Estimated Capacitance Based on Fanout The process for generating wire load models. load model. This process was necessary because initial wire load estimates might be too optimistic. For example, the initial capacitance estimate for one connection between two inverters might be 0.04 pF, but after placement and routing the actual capacitance could be 0.1 pF, which might cause the chip's timing constraints not to be met. During these experiments, each module was first synthesized using average wire load estimates. After routing, if the modĆ ules failed timing, additional experiments were performed using a progressively more pessimistic wire load model. The wire load model that was used was generated by selecting a point in the distribution of actual capacitances for each fanĆ out that is greater than a given percentage of nets. Fig. 4 shows a sample distribution of interconnect capacitance for nets with a fanout of two in a typical module. In this examĆ ple, we wanted to use a model that would predict a capaciĆ tance such that 90% of the wires would typically have actual capacitance less than the predicted value. To do this we simĆ ply used the capacitance value from the distribution that was greater than 90% of the other wire capacitances. This was done for each fanout to create a synthesis wire load model called a 90% model." We used this method to test models that fell within the 50ĆtoĆ95Ćpercent range. We found that unless we used at least a 90% wire loading model we had some timing violaĆ tions after backĆannotation* that were not present during synthesis with estimated loads. We also discovered that the magnitude and distribution of the routed capacitance were fairly consistent across a wide * Back-annotation in this context refers to the process of taking the actual capacitance values extracted from routing and using them during static timing analysis. Hewlett-Packard Company 1995 31 .$0%-0+ ,"$ ,# #$,1(27 (+.0-4$+$,21 '$ .$0%-0+ ,"$ (1 (+.0-4$# !$" 31$ 2'$ 17,2'$1(1 2--* (1 ,-5 5-0)(,& -, 2'$ "-00$"2 . 2'1 ,# (1 !*$ 2- &$,$0 2$ % 12$0 "(0"3(21 $,1(27 (1 *1- (+.0-4$# %-0 2'$ 1 +$ 0$ 1-, (,"$ (,"-00$"2 . 2'1 0$ ,- *-,&$0 !$(,& -.2(+(8$# (,"-00$"2*7 ,# -4$0"-,120 (,9 (,& (1 ,-2 ,$"$11 07 2'$ -4$0 ** #$1(&, 1(8$ (1 1+ **$0 , ##(2(-, 2'$ (+.0-4$+$,2 (, 20 ,1(2(-,92(+$ +-#$*(,& ,# "-,120 (,21 4-(#1 2'$ ,$$# 2- ..*7 &*-! * 20 ,1(2(-,92(+$ "-,120 (,2 2- 2'$ #$1(&, 5'("' " , *$ # 2- -4$01(8(,& + ,7 "$**1 Library Default (Average) Number of Nets 90% Point (90% of Nets Are below this Value) 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 1 , ##(2(-, * +$2'-# -% $,130(,& 2' 2 -30 .$0%-0+ ,"$ &- *1 0$ +$2 5(2'-32 ' 4(,& 2- #- +3*2(.*$ 0-32(,& . 11$1 5$ ' 4$ ##$# 2'$ .0-"$11 -% #0(4(,& 2'$ .* "$+$,2 5(2' "-,120 (,21 #$0(4$# %0-+ 17,2'$1(1 0 50 100 150 200 250 300 350 400 Interconnect Capacitance (fF) 450 500 1 +.*$ #(120(!32(-, -% (,2$0"-,,$"2 " . "(2 ,"$ %-0 % ,-32 -% 25- (, 27.(" * +-#3*$ 0 ,&$ -% +-#3*$ 1(8$1 ,# #$1(&, 27.$1 '(1 5 1 130.0(1$ ,# (2 **-51 31 2- 31$ 2'$ 1 +$ 5(0$ *- # +-#$*1 %-0 ** #$1(&,1 #-,$ (, 2'$ 1 +$ *(!0 07 5(2'-32 ' 4(,& 2- 0$.$ 2 2'$ $6.$0(+$,2 %-0 $ "' #$1(&, $ 31$ 2'$ 5(0$ *- # +-#$* #$0(4$# %0-+ 2'$ !-4$ .0-"$11 2- '$*. &3 0 ,2$$ 1(,&*$9. 11 0-32(,& %-0 ** +-#3*$1 31(,& -30 *(!0 07 , ##(2(-, 5$ "0$ 2$ ,-2'$0 +-#$* %-0 5(0$1 2' 2 0$ 31$# %-0 &*-! * +-#3*$ (,2$0"-,,$"2 '(1 (1 #-,$ 31(,& 2'$ 1 +$ +$2'-# #$1"0(!$# !-4$ $6"$.2 2' 2 2'$ 5(0$1 31$# 2- "0$ 2$ 2'$ " . "(2 ,"$ #(120(!32(-,1 0$ *(+(2$# 2- &*-! * 5(0$1 '(1 +-#$* +-0$ ""30 2$*7 .0$#("21 2'$ '(&'$0 " . "(2 ,"$ 11-"( 2$# 5(2' 2-.9*$4$* (,2$0"-,9 ,$"2 7,-.171 -30 *-&(" 17,2'$1(1 2--* " , 32-+ 2(" **7 1$*$"2 2'$ ..0-.0( 2$ 5(0$ *- # +-#$* 2- 31$ %-0 $ "' &*-! * 5(0$ Table-Driven Models. ,-2'$0 % "2-0 (, -30 !(*(27 2- "'($4$ '(&' .$0%-0+ ,"$ ,# +(,(+(8$ "7"*$ 2(+$ (1 2'$ ""30 "7 -% 2'$ 7,-.171 *(!0 07 2(+(,& +-#$*1 $" 31$ 7,-.171 2(+(,& (1 4$07 ""30 2$ 5(2' 2 !*$9#0(4$, +-#$*1 (2 " , !$ 31$# #(0$"2*7 2- "0$ 2$ 2(+(,& "-,120 (,21 (+.-1$# -, 2'$ 0-32$0 '(1 (1 #-,$ 31(,& 2'$ 2 ,# 0# $* 7 -0+ 2 2(+(,& -32.32 (, 7,-.171 0(2(" * . 2' 2(+(,& (1 50(29 2$, (, 2 ,# 0# $* 7 -0+ 2 5'("' " , 2'$, !$ "-,4$02$# 2- $1(&, 6"' ,&$ -0+ 2 ,# (,.32 2- $** 5(2' 2'$ ,$2*(12 '$1$ 2(+(,& "-,120 (,21 !$"-+$ . 02 -% 2'$ -4$0 ** "-,120 (,2 $/3 2(-, %-0 2'$ .* "$0 $4$0 * 2'-31 ,# "-,120 (,21 " , !$ /3(")*7 ,# $ 1(*7 &$,9 $0 2$# 31(,& 2'(1 +$2'-# -5$4$0 -,*7 2'-1$ . 2'1 2' 2 0$ 5(2'(, %$5 .$0"$,2 -% % (*(,& 5(2' $12(+ 2$# *- #1 1'-3*# !$ "-,120 (,$# % , ..0-.0( 2$ 5(0$ *- # +-#$* (1 31$# 2'$ 0$12 -% 2'$ . 2'1 1'-3*# +$$2 2'$(0 2(+(,& 5(2'-32 !$(,& "-,120 (,$# 4(,& 2-- + ,7 . 2'1 "-,120 (,$# 5(** 1*-5 2'$ .* "$+$,2 .0-"$11 ,# + 7 .0-#3"$ (,%$0(-0 0$13*21 -59 $4$0 5$ ' 4$ 13""$11%3**7 "-,120 (,$# 3. 2- 2'-31 ,# . 2'1 30 &- *1 #30(,& .* "$+$,2 ,# 0-32(,& 0$ 2- (+.*$+$,2 2'$ #$1(&, (, 2'$ 1+ **$12 .-11(!*$ 0$ +$$2 ** 1.$"(%($# .$0%-0+ ,"$ &- *1 ,# +(,(+(8$ 2'$ ,3+!$0 -% (2$0 2(-,1 2'0-3&' 2'$ .0-"$11 Timing-Driven Placement. (+(,&9#0(4$, .* "$+$,2 (1 2'$ .0-9 '$ !(&&$12 .0-!*$+ "0$ 2$# !7 (, ""30 2$ 17,2'$1(1 2(+(,& "$11 -% #0(4(,& 2'$ .* "$0 5(2' 2'$ 2(+(,& "-,120 (,21 -32.32 +-#$*1 (1 2'$ 0$/3(0$+$,2 %-0 ,3+$0-31 (2$0 2(-,1 !$25$$, %0-+ 2(+(,& , *78$0 7,-.171 (, 2'(1 " 1$ '$ %-**-5(,& 17,2'$1(1 ,# 2(+(,& 4$0(%(" 2(-, 2- %(6 2(+(,& 4(-* 2(-,1 % "2-01 0$ (+.-02 ,2 (, 13""$11%3**7 31(,& 2'(1 2$"',(/3$ '$1$ (2$0 2(-,1 (,4-*4$ "' ,&(,& 17,2'$1(1 "-,120 (,21 -4$09 • ""30 2$ 2(+(,& +-#$*1 31$# %-0 12 2(" 2(+(,& , *71(1 1 "-,120 (,(,& ,# 0$.* "(,& "$**1 !7 ' ,# (, 1-+$ " 1$1 +$,2(-,$# !-4$ ""30 2$ 2(+(,& +-#$*1 0$ "0(2(" * 2- $,9 (+(,& (, ""30 "7 *1- *$ #1 2- .--0 -.2(+(8 2(-, #$"(1(-,1 130$ 2' 2 2'$ 17,2'$1(1 .0-&0 + 5-0)1 -, 2'$ 0(&'2 . 2'1 0$13*2(,& (, ,-,-.2(+ * "(0"3(21 (, 2$0+1 -% .$0%-0+ ,"$ ,# ,# 2' 2 2'$ 2(+(,& "-,120 (,21 0$ ""30 2$ 0$ • ""30 2$ "$** #$* 7 (,%-0+ 2(-, %$# 2- 2'$ .* "$0 30 .* "$9 +$,2 .0-&0 + $** 31$1 25-9 -0 2'0$$9. 0 +$2$0 #$* 7 '$1$ ,# -2'$0 .0-!*$+1 0$ $11$,2( **7 0$+-4$# !7 2'$ $/3 2(-, '$ 25-9. 0 +$2$0 $/3 2(-, " *"3* 2$1 #$* 7 5(2' ,$5 ,-,*(,$ 0 2 !*$9#0(4$, 2(+(,& +-#$*1 (, 7,-.171 (2' , (,20(,1(" "-+.-,$,2 ,# *- # #$.$,#$,2 "-+.-,$,2 2'$1$ +-#$*1 2(+(,& " , !$ + #$ 2- + 2"' 2'$ .("$ "' 09 '$ 2'0$$9. 0 +$2$0 $/3 2(-, +-#(%($1 2'$ (,20(,1(" #$* 7 2"2$0(8 2(-, 2 !*$1 %-0 $ "' "$** (, 2'$ *(!0 07 '$ 20 ,1(2(-, 0$%*$"2 (21 #$.$,#$,"7 -, 2'$ (,.32 1*-.$ - #0(4$ 2'$ .* "$0 2(+$ #$%(,(2(-, " , *1- !$ + #$ 2- + 2"' $6 "2*7 1- 2' 2 (2 5(2' ""30 2$ # 2 (2 (1 (+.-02 ,2 2' 2 $**1 #$* 7 " *"3* 9 " , !$ "-,120 (,$# .0-.$0*7 2(-, + 2"' 2' 2 31$# !7 2'$ 2(+(,& , *78$0 1 "*-1$*7 1 '$ *(!0 07 13..-021 2'(1 ,$5 +-#$* ,# .-11(!*$ !*$ 1'-51 2'$ "-00$* 2(-, -!2 (,$# %0-+ $ "' **-51 31 2- &$2 ""30 2$ 2(+(,& %0-+ -30 17,2'$1(1 . ") &$ -% 2'$1$ +-#$*1 "-+. 0$# 2- 2'$ # 2 31$# !7 2'$ 2(+(,& 1- 2' 2 2'$0$ 0$ ,- 2(+(,& -0 -.$0 2(,& "-,#(2(-, 4(-* 2(-,1 , *78$0 '$ # 2 (, 2'$ 2 !*$ (1 %-0 0$.0$1$,2 2(4$ (, 2'$ 2(+(,& 4$0(%(" 2(-, 12$. $1(#$1 2'$ -!4(-31 !$,$%(2 -% . 2'1 4 07(,& (, *$,&2' %0-+ 2- "$**1 0$#3"(,& (2$0 2(-,1 2'(1 ,$5 *(!0 07 ,# 2(+(,& +-#$* &(4$1 * Global wires are the interconnecting wires between submodules on a chip. Hewlett-Packard Company 1995 ** Cell3 is the placement and routing program we use, which comes from Cadence Design Systems. $!03 07 $5*$229 ") 0# -30, * 0); 8:7>-6 67< <7 *- ); :7*=;< ); ?- ?7=4, 413- ?- 0)>.7=6, <0)< )6 -);1-: )6, 5=+0 57:- :7*=;< 5-<07, 1; <7 =;-44; *)4)6+-, /47*)4 :7=<16/ ?01+0 5--<; <0- 6--,; 7. 57;< 01/0C8-:.7:5)6+- ;<)6,):, +-44 %; Table I Cell3 to Synopsys Correlation Timing Analyzer Data Cell3 (twoparameter) Cell3 (threeparameter) !1615=5 #)<0 6; 6; 6; !)@15=5 #)<0 6; 6; 6; • • -);< ::7: >-:;=; %A678;A; • :-)<-;< ::7: >-:;=; %A678;A; ::7: $)6/>-:;=; %A678;A; <7 <7 ; ;07?6 16 &)*4- -44; <0:--C8):)5-<-: 57,-4 8:7C >1,-; /:-)<4A 158:7>-, ,-4)A 57,-416/ +758):-, <7 <0<?7C8):)5-<-: 57,-4 -+)=;- 7. 1<; 158:7>-, )++=:)+A <0<0:--C8):)5-<-: 57,-4 1; 67? =;-, ); <0- ;<)6,):, ,=:16/ <1516/C,:1>-6 84)+-5-6< • ++=:)<- -;<15)<-; 7. 16<-:+766-+< 7: ;A6<0-;1; 16<-:+76C 6-+< ,-4)A 1; ;8-+1.1-, *A <0- ?1:- 47), 57,-4; 7: 84)+-5-6< 1< 1; 1587:<)6< <0)< <0- 84)+-: 0); ) /77, 1,-) 7. ?0)< 1< +)6 -@8-+< 16 <-:5; 7. )>-:)/- 8-:C4)A-: ?1:16/ +)C 8)+1<)6+- .7: -)+0 ;1/6)4 &0-;- 6=5*-:; ):- ,-<-:516-, *A )6)4AB16/ ?1:16/ ,1;<:1*=<176; 76 8:->17=;4A :7=<-, +018; Clock Tree Synthesis and Verification. &A81+)4 %% ):- ,:1>-6 *A ;16/4- 7: 5=4<184- 01/0C;8--, +47+3; &0-;- +47+3; ,:1><07=;)6,; 7. .418C.478; )6, 5=;< 0)>- 47? 16;-:<176 ,-4)A )6, ;3-? <7 5--< 8-:.7:5)6+- :-9=1:-5-6<; &7 1584-5-6< <0-;- *)4)6+-, +47+3; ;8-+1)4 84)+-5-6< )6, :7=<16/ .-)C <=:-; 5=;< *- =;-, -44; +47+3 <:-- ;A6<0-;1; <774; ):=;-, <7 16;-:< ) *=..-: <:-- .7: -)+0 +47+3 ;-- 1/ &0+47+3; ):- <0-6 8:-:7=<-, =;16/ >):17=; .7:5; 7. -44; *)4C )6+-, :7=<16/ <-+0619=-; &01; 5-<07, 0); 5-< ?1<0 51@-, ;=++-;; @+-44-6< :-;=4<; +)6 *- 7*<)16-, *A =;16/ <0- ,-<)14-, *)4)6+-, :7=<-: ?01+0 1; 16+4=,-, ); 8):< 7. -44; +47+3 <:-- ;A6<0-;1; 78<176 7?->-: ;16+- <01; <774 To Flip-Flops Clock Input <A81+)4 +47+3 *=..-: <:-- 6;-:<176 ,-4)A .7: <01; +76.1/=:)C <176 1; <0- )>-:)/- ,-4)A .:75 <0- +47+3 168=< <7 <0- .418C.478; %3-? 1; <0- ,1..-:-6+- *-<?--6 <0- ;07:<-;< )6, 476/-;< ,-4)A; -*:=):A -?4-<<C#)+3):, 7=:6)4 • • +<=)4 +47+3 ,-4)A )6, ;3-? ):- >-:1.1-, =;16/ <0- $ -@C <:)+<176 +)8)*141<A 8:7>1,-, 16 0-+3!)<- &0- /-6-:)4 ;<-8; 16>74>-, 16 =;16/ <01; )88:7)+0 16+4=,- 7584-<- <0- 80A;1+)4 1584-5-6<)<176 7. <0- +47+3; @<:)+< >1) 0-+3!)<- $ 16.7:5)<176 .7: )44 6-<; 16 <0,-;1/6 :-)<- ) %81+- 6-<41;< +76<)1616/ 764A <0- +-44; )6, 6-<; 16 <0- +47+3 <:--; &0- ,-;1:-, 6-<; )6, +-44; ):- ;8-+1.1-, <7 0-+3!)<-; %81+- ?:1<-: ,, +=;<75 +1:+=1< +76,1<176; -@<-:6)4 47),; -<+ $=6 <0- %81+- 27* -44 +)6 )4;7 8:7>1,- +47+3 )6, ;3-? 16.7:5)<176 *=< <0;<-8; 41;<-, )447? =; <7 7*<)16 57:- )++=:)+A )6, <7 *=14, +76.1,-6+- 16 <0- -44 6=5*-:; Automatic Scan Insertion. =<75)<1+ ;+)6 16;-:<176 1; ,76,=:16/ <0- :7=<16/ 8:7+-;; &01; 5)3-; 1< 87;;1*4- <7 16+4=,;+)6 47/1+ ?1<07=< 0)>16/ <7 ,-;1/6 1< 16 ,=:16/ *-0)>17:)4 +7,16/ 7?->-: <0-:- ):- :=4-; 16 <0- +7,16/ /=1,-C 416-; <0)< 5=;< *- .7447?-, <7 5)3- )=<75)<1+ 16;-:<176 87;C ;1*4- ';16/ )=<75)<1+ 16;-:<176 :-,=+-; <0- +7584-@1<A 7. <0- *-0)>17:)4 ,-;1/6 )6, -41516)<-; 1<-:)<176 *-+)=;- 7. ;+)6 +47+3 ;3-? ;+)6 +0)16 7:,-:16/ )6, <1516/ 8-:.7:C 5)6+- 1;;=-; &0- =;- 7. )=<75)<1+ ;+)6 16;-:<176 1; 5),87;;1*4- *A <0- =;- 7. )6 16<-:6)4 <774 <0)< 8-:.7:5; 16;-:<176 )6, 78<151B)<176 +018 16 ?01+0 <0- 8:7+-;;-; ,-;+:1*-, )*7>- 0)>- *--6 )8841-, 1; ) !"% % <0)< 1; =;-, 16 #; (C<-:516)4; <; 5)16 .=6+<176; ):- 5-57:A )6, ,)<) 8)<0 +76<:74 &0- +018 +76<)16; <:)6;1;<7:; )6, :=6; )< 5=4<184- +47+3 .:-9=-6+1-; 7. )6, !B 7: <01; +018 <0- <1516/ 8)<0; ?1<0 <0- ;5)44-;< <1516/ 5):/16 ?-:- 168=< ); +76;<:)16<; .-, <7 <0- -44 84)+-: -44 5-< )44 7. <0- +76;<:)16<; 76 <0- .1:;< 8);; )6, ;=*;-C 9=-6< <1516/ )6)4A;1; >-:1.1-, <0)< )44 <0- 8)<0; ?-:- ;)<1;.1-, !7:- 1587:<)6< 67 7<0-: <1516/ >174)<176; ?-:- +:-)<-, *-+)=;- 7. <0- +76;<:)16<; 76 <0- <1/0<-;< 8)<0; . <0)< 0), 7++=::-, ?- ?-:- 8:-8):-, <7 -@-:+1;- <0- %A678;A; 16C 84)+- 78<151B)<176 .47? &01; .47? ,7-; 16C84)+- =8 )6, ,7?6 ;1B16/ 7. +-44 ,:1>-; ); 6-+-;;):A <7 5--< <1516/ +76;<:)16<; &01; ;<-8 8:7>-, <7 *- =66-+-;;):A .7: 7=: (C<-:516)4 % &0- ?1:- 47), 57,-4; ?-:- ),-9=)<- &0- 5=4<184- +47+3 ,75)16; 76 <0- % ):- )44 ,-:1>-, .:75 ) C!B 168=< +47+3 &0- +018 0); <0:-- ,75)16; )6, -)+0 +76<)16; )88:7@15)<-4A .418C.478; &7 5--< 8-:.7:C 5)6+- /7)4; <0- ;3-? )+:7;; )44 7. <0-;- ,75)16; 0), <7 *4-;; <0)6 6; )6, <0- 16;-:<176 ,-4)A; 0), <7 *- 5)<+0-, ?1<016 6; .<-: 84)+-5-6< )6, :7=<16/ +47+3 ,-4)A )6, ;3-? >-:1.1+)<176 ?); ,76- =;16/ <0- 0-+3!)<- $ -@<:)+C <176 <774 1/ ;07?; <0- %81+- :-;=4<; 7*<)16-, 76 76:-8:-;-6<)<1>- +47+3 <:-- 44 +47+3 <:--; ?-:- .7=6, <7 0)>)++-8<)*4- ;3-? &01; <1/0< +47+3 ;3-? ?); ) 3-A .)+<7: 16 )+01->16/ <0- %; )//:-;;1>- 8-:.7:5)6+- /7)4; * CheckMate is an artwork verification and parasitic extraction tool from Mentor Graphics Corp. Hewlett-Packard Company 1995 550 90 500 80 450 70 400 60 350 Capacitance (fF) Number of Flip-Flops 100 50 40 300 250 30 200 20 150 10 100 0 6.40 HP C26101SH Library HP C26102SH Library 50 6.45 6.50 6.55 6.60 6.65 6.70 0 Delay (ns) 0 2 4 6 8 10 Fanout Spice clock delay and skew results. It is our goal to characterize Cell3's delay calculation to the point at which we can use its delay numbers for clock skew verification without the additional complexity of using Spice. Table II shows the correlation obtained between Cell3 and Spice for the clocks on the XĆterminal ASIC. Table II Cell3 to Spice Correlation Cell3 Spice Delta Best Case 2.84 ns 2.56 ns -9.9% Worst Case 2.96 ns 2.57 ns -13.2% The results of this correlation are very encouraging. The offset is relatively constant, and the Cell3 numbers are always more conservative than the Spice numbers. This is because Cell3's perĆlayer capacitance constants are intentionally skewed toward the conservative end of the range. Wire capacitance versus fanout in two cell libraries. The HP C26101SH library is the older CMOS26 library. router model generation provides fully gridded routing and optimum pin locations, which improves both density and run time. These factors result in a reduction in average wire length for a given fanout. The improvement in wire capaciĆ tance as compared to the previous cell library is shown in Fig. 7. Another area of improvement is in the drive sizes of the cells. The stairstep design"3 approach was used to deterĆ mine appropriate drive increments. The stairstep design apĆ proach is a method of sizing gates to provide optimum area versus performance characteristics for each cell in the liĆ brary. As a result of using this approach, the HP C26102SH library provides more drive increments for Synopsys to map to, avoiding the excessive area penalty imposed when a higher drive cell must be swapped into a path that is just missing timing. The following factors played a part in producing the results mentioned above and providing a chip that met the specifications. Finally, this is the first library to use the more accurate tableĆ driven Synopsys models. As discussed previously, this allows more accurate delay calculations and eliminates correlation issues with other timing verification tools. Library Design. One of the major contributing factors for meeting our density and performance goals is the use of highĆquality libraries such as the new HP C26102SH (0.8 m) standard cell library. This library is a scaledĆup version of the HP C14104SH library developed for our CMOS14 (0.5 m) process.2 Since the HP C26102SH library is a scaledĆup version of the HP C14104SH library, all these advantages will continue into the next process generation. One major improvement introduced with the HP C26102SH library is that it is tuned for Cell3 while maintaining comĆ patibility with other routers. For a roughly square core, the library allows a very even distribution of horizontal and verĆ tical routing resources. This gives the placer more freedom to find an optimal solution. The use of advanced layout techniques, along with the exploitation of new process deĆ sign rules, allows smaller cells that provide the same funcĆ tionality as previous library versions. Finally, advanced Hewlett-Packard Company 1995 Design Methodology. Our design methodology was carefully constructed to produce a chip that met aggressive timing goals in a reasonable amount of time. The 90% wire load models improved the chances of first time perfect through the routing cycle, albeit at some loss of performance and die size. This was an intentional choice designed to minimize the design cycle time, while still meeting performance targets. The HDL coding guidelines enabled the creation of a design that was easily synthesized. They also enabled the use of automatic scan insertion and test vector generation. February 1995 HewlettĆPackard Journal .3&11> '> .2548.3, & 8*9 4+ &:942&9*) 3&2.3, 7:1*8 ):7.3, 8>39-*8.8 9441 (425&9.'.1.9> .88:*8 <*7* 2.3.2.?*) "-*8* 3&2.3, 7*897.(9.438 *1.2.3&9*) 3&2* 7*2&55.3, &3) (7488A 7*+*7*3(.3, 9-74:,-4:9 9-* )*8.,3 +14< Point Tools. !*;*7&1 0*> 54.39 94418 &7* 3*(*88&7> 94 8:55479 9-* )*8.,3 +14< ).8(:88*) .3 9-.8 5&5*7 !>3458>8 <.9- 9&'1*A )7.;*3 )*1&> 24)*18 .8 7*6:.7*) 94 574;.)* &((:7&9* 89&9.( 9.2.3, &3&1>8.8 &3) ;&1.) (43897&.398 94 9-* 51&(*7 *11 8 9.2.3,A)7.;*3 51&(*2*39 .8 7*6:.7*) 94 .251*2*39 9-* (7.9.(&1 5&9- 9.2.3, 4:95:9 +742 !>3458>8 3 &:942&9.( 9*89 ,*3*7&A 9.43 " 9441 .8 7*6:.7*) 94 .38*79 &3) 459.2.?* 9-* 8(&3 (-&.3 &:942&9.(&11> &3) 574):(* &557457.&9* 9*89 ;*(9478 19-4:,- <* -&;* '**3 8:((*88+:1 <.9- 9-* 2*9-4)8 )*A 8(7.'*) .3 9-.8 5&5*7 9-*7* &7* 89.11 842* &7*&8 +47 .2574;*2*39 Timing Verification in Synopsys. 1.2.3&9* $*7.14, +:3(9.43&1 9.2.3, 8.2:1&9.43 '> 7*1>.3, 43 !>3458>8 89&9.( 9.2.3, &3&1>8.8 +47 ;*7.+.(&9.43 More Automation of Clock Insertion. 8 2*39.43*) +:79-*7 (-&7A &(9*7.?&9.43 4+ *11 8 )*1&> (&1(:1&9.43 .8 3*(*88&7> 94 *1.2.A 3&9* 9-* 3**) +47 !5.(* (14(0 ;*7.+.(&9.43 349-*7 &7*& 4+ .2574;*2*39 -*7* .8 94 <470 <.9- &)*3(* 94 .2574;* 9-* '&1&3(*) 74:9.3, (&5&'.1.9> 4+ *11 *'7:&7> *<1*99A&(0&7) 4:73&1 Alternate Ways of Prelayout Capacitance Estimation. 9-*7 2*9-A 4)8 +47 &((:7&9* *&71> (&5&(.9&3(* *89.2&9.43 &7* &;&.1&'1* 9-&9 )439 7*6:.7* & 57*1.2.3&7> 74:9* 742.8.3, .2574;*A 2*39 &7*&8 -*7* .3(1:)* :8.3, &);&3(*) +1447 51&33.3, *&7A 1.*7 .3 9-* )*8.,3 (>(1* &3) 3*91.89A'&8*) (&5&(.9&3(* *89.2&A 9.43 9-&9 .3(1:)*8 349 /:89 +&34:9 ':9 49-*7 +&(9478 8:(- &8 *89.2&9*) (-.5 8.?* &3) 9>5*8 4+ (*118 (433*(9*) 94 *&(<.7* In-Place Optimization. #8* 1*88 (438*7;&9.;* <.7* 14&)8 +47 57*74:9* *89.2&9.43 <.9- *=5&3)*) :8* 4+ 1.308A94A1&>4:9 ):7.3, 9-* 8>39-*8.8 &3) 51&(*2*39 1445 94 *3&'1* -.,-*7 5*7+472&3(* <.9- 2.3.2&1 .25&(9 43 (>(1* 9.2* :3, &3) (4:,&1 @3 59.2&1 !(&3 -&.3 :94A433*(9.43 *9-4)414,> &3) !(&3 !.,3&1 38*79.43 !(-*2* 94 *):(* -.5 7*& 55 A ! &93*7 &943 &79.3*? &3) %4:3 @*;*1452*39 4+ & *< *38* &3) 4:9*7 3)*5*3)*39 .! 425&9.'1* !9&3)&7) *11 .'7&7> 144751&3 +47 .! 55 A &943 @!9&.789*5 .'7&7> *8.,3 "-* 551.(&9.43 4+ 59.2.?&A 9.43 "*(-3.6:*8 94 9-* *8.,3 4+ 9-* ! !9&3)&7) *11 .'7&7> 55 A Hewlett-Packard Company 1995