%! ! ("# !& " +* '% !&$ " %! &!$ % ! '&" & ! "'& ""% The RW_IO block runs at 120 MHz and interfaces the master memory controller chip’s 60-MHz core with the 120-MHz processor bus drivers. A design approach using standard cells, automatic place and route tools, and a powerful database management and build tool was used to construct the RW_IO block. This approach was chosen over a full custom or data-path solution because of its reduced risk and the flexibility of the design tools. ) "$& )! %" )/0". )")+.5 +*0.+((". %&, &/ +*" +# 0%."" / ,,(& 0&+*7/," &#& &*0"$.0"! &. 1&0/ 0%0 )'" 1, 0%" )")+.5 /1/5/0") +# ".0&* 3+.'/00&+*/ *! 1/&*"// /".2"./ %" %&, &*0".# "/ 3&0% 0%" ,.+ "//+. 2& 0%" ,.+7 "//+. 1/ 3%& % .1*/ 0 6 0 (/+ +**" 0/ 0+ 0%" +0%". )")+.5 /1/5/0") +),+*"*0/ 2& 0%" )")+.5 1/ 3%& % .1*/ 0 6 +/0 +# 0%" &*0".*( (+$& +# 0%" %&, .1*/ 0 6 %" (+ ' ,+.0&+* +# 0%" %&,/ (+$& 0%0 .1*/ 0 6 0.*/#"./ !0 "03""* 0%" ,.+7 "//+. 1/ !.&2"./ *! 0%" 76 +." (+$& '!&"! %$#&"! %" %&$%7/,""! &*0".# " (+ ' &/ !"/&$*"! 0+ 0.*/7 #". !0 *! +*0.+( "03""* 0%" ,.+ "//+. 1/ .1**&*$ 0 6 *! 0%" +." (+$& +# 0%" )/0". )")+.5 +*0.+((". %&, 3%& % .1*/ 0 6 + 0.*/#". !0 #.+) 0%" ,.+7 "//+. 1/ "##& &"*0(5 ."-1&."/ 03& " 0%" *!3&!0% 0 0%" 76 &*0".# " * +,".0&+* 03+ 5 ("/ +# 0%" 76 !0 *! +*0.+( /&$*(/ ." ."$&/0"."! *! 0%"* 0%" ."$&/7 0"."! &*#+.)0&+* &/ 0.*/#".."! +* 0%" *"40 .&/&*$ "!$" +# 0%" 76 (+ ' &$ &/ / %")0& !&$.) +# 0%" &*,10 (+$& 76 (+ ' &$ %&/ /5* %.+*&60&+* / %")" ."-1&."/ 0%0 0%" ."$&/0".70+7."$&/0". 0.*/#". +# !0 #.+) 0%" 76 0+ 0%" 76 (+ ' !+)&*/ + 1. 3&0%&* */ 3+./0 /" %" ."2"./" ,.&* &,(" &/ 1/"! #+. 0.*/#"..&*$ !0 #.+) 0%" +." +# 0%" )/0". )")+.5 +*0.+((". %&, +10 +*0+ 0%" ,.+ "//+. 1/ 0 *! +*0.+( &*#+.)0&+* &/ 0.*/#".."! #.+) 0%" 76 0+ 0%" 76 !+)&*/ 3&0%&* 0%" (+ ' %&/ &*#+.)0&+* &/ 0%"* )1(0&,("4"! 0 0%" 76 .0" *! ,."/"*0"! 0+ 0%" ,.+ "//+. 1/ !.&2"./ /," &( /" "4&/0/ 3%"* 0%" ,.+ "//+. 1/ &/ &!(" *! 3" 3&/% 0+ ,."/"*0 0%" !0 !&." 0(5 #.+) 0%" 76 +." 0+ 0%" ,.+ "//+. 1/ 3&0%+10 ."$&/0".&*$ *! )1(0&,("4&*$ 0 0%" 76 .0" /," &( ,0% #/0 ,0% "4&/0/ 0+ %*!(" 0%&/ /" %&/ ,0% (/+ %/ 0%" ."-1&.")"*0 +# 0.*/#"..&*$ !0 #.+) 0%" 76 0+ 0%" 76 !+)&*/ 3&0%&* */ &$ &((1/0.0"/ 0%" 0&)&*$ +# 0%" #/0 ,0% *! &$ &/ / %")0& !&$.) +# 0%" +10,10 (+$& %! $&&'$ &2" !&/0&* 0 #1* 0&+*/ ." ."-1&."! 0+ 0.*/#". !0 "03""* 0%" ,.+ "//+. 1/ *! 0%" +." (+$& &0% 0%"/" #&2" %" !0 0.*/#". &/ /5* %.+*&6"! 5 !"(5&*$ 0%" 76 (+ ' 5 */ 3&0% ."/," 0 0+ 0%" .&/&*$ "!$" +# 0%" D Q 120 MHz Pad Q DoutA CKRW 120 MHz 60 MHz Synchronous I/O Driver D 120 MHz Q 60 MHz *,10 (+$& +# 0%" (+ ' D 8.33 ns 1*" "3("007 '.! +1.*( DoutB CK1X 60 MHz 16.66 ns 4.16 ns "(0&+*/%&, +# 0%" 76 (+ ' 0+ 0%" 76 (+ ' -$ !/(.$)(- !$( $. -&$ -$"( **,)# 1.% ( .) $'*& ' (. .# (.$, !/(.$)(&$.3 $. -&$ ',) 1- /$&. !), # )! .# !$0 !/(.$)(- /-$(" -.(, &&( && *& ( ,)/. .))&- !,)' ( -$"( 3-5 . '- ( # $. -&$ - 1 , -.% .)" .# , #),$4)(.&&3 .) , . .# )'*& . $(. ,! &)% # !)&&)1$(" .& !$( - .# !$0 $. -&$ !/(.$)(- ( .# $, ',) (' - (*/. )(&3 $.(*/. )(&3 $.$$, .$)(& .,(-! , 1$.# !-. *.# $$, .$)(& .,(-! , 1$.# !-. *.# ( *,) --), /- )/.*/. ". 1$.# data_valid $$, .$)(& .,(-! , 1$.# !-. *.# ( '/&.$*& 2$(" !), , -( . RWI2BS RWI3BS RWIOBS RWIOVBS 4.16 ns CKRW 120 MHz CK1X 60 MHz Register 60-MHz Core Data Transfer Fast Path Data to Processor Bus Driver -. *.# .$'$(" RWADIOBS ( */- !,' 1),% .))&- # - -.,.- 1 , .# ( /- .) /$& /* .# )'*& . !/(.$)(&$.3 /- # )! .# !$0 !/(.$)(- , +/$, &$'$. (/' , )! -$"( & ' (.- - '$/-.)' $'*& ' (..$)( /-$(" -.(, &&- 1- #)- ( # ')-. )'*&$. !/(.$)( RWADIOBS , +/$, &&- # !$0 !/(.$)(- 1 , *& ( ,)/. /-$(" *,)*,$ .,3 .))& && /.)*, ( ( && /.)*, 1- /- .) " ( ,. .# $. -&$ )/($(" )2 ( -.(, && ,)1- ( .) *& .# *),.- * $& , 1- .% ( $( && *& ' (. ( .# ,)/.5 $(" )! .# &)% -$"(&- ( )(.,)& -$"(&- ( *)1 , ( ",)/( -$"(&- 1 , ,)/. -) .#. )(( .$)(- )/& ' 3 /.' (. 1# ( .# $. -&$ - 1 , -.% .)5 " .# , ( .# )(-.,/.$)( )! .# $. -&$ - 1- )'*& . && -.,.- 1 , " ( ,. !), # $. -&$ /-$(" .# # .)*5& 0 & ,$&)" ( .&$-. !), .# &)% 1- " ( ,5 . 3 -,$*. $( -/# '(( , .#. .# $($0$/& $. -&$ !/(.$)(- 1 , &, $( .# ), , 1#$# .# 3 *#3-$&&3 ** , !,)' & !. .) ,$"#. 1$.#$( .# &)% - *,. )! .# ( .&$-. " ( ,.$)( -.%/* !$& 1- , . 1#$# 5 !$( .# ), , )! .# $. -&$ & ' (.- .# *$(- )( # $. -&$ ),, -*)($(" .) *),.- )( .# .)* ( )..)' )! .# &)% ( .# $, .$)( )! # *$( $( ), )/. -$'*& awk *,)",' 1- 0 &)* .#. , .# -.%/* !$& ( , . .1) )''( !$& - !), && # !$,-. !$& $, . .# *& ' (. )! .# *$(- )( .# &)% .) &$( /* 1$.# .# **,)*,$. $. -&$ # - )( )''( !$& $, . && .) *& .# $. -&$ )'*)( (.- $( .# ), , !$( RW_IO Fast Path From Core Logic D D0 Q 60 MHz Q D1 HOLDAB EN Y0 120 MHz Y1 D0 MUX A Q D1 HOLDCD EN DMUXCTL 120 MHz 120 MHz Y0 Y1 From Core Logic 60 MHz D D0 Q Y0 MUX Y1 A EN Y0 120 MHz Y1 D0 Synchronous I/O Driver Pad A Q D1 HOLDCD MUX RWMUXCTL_1 RWMUXCTL_0 120 MHz 120 MHz 120 MHz MUX A Q D1 HOLDAB 120 MHz EN DMUXCTL 120 MHz /.*/. &)"$ )! .# &)% RWADIOBS !/(.$)( /( 1& ..5%, )/,(& Clock Signal Bit Slices Bit Slices Bit Slices Standard Cells Bit Slices Standard Cells !" $.1%- .#;176 Power and GND $; 6*' 56#%-72 (+.' *' !" $.1%- 9#5 5'2#4#6'& +061 (174 5'%6+105 61 #..19 6*' /#+0 219'4 )4170& #0& %.1%5+)0#.5 61 2#55 6*417)* 6*' %'06'4 1( 6*' $.1%- #0& 61 #..19 (14 %.1%- 64'' 6#25 5'' +) *' $.1%- *#5 # 5+0).' 56#0&#4& %'.. 419 #.10) 6*' $1661/ 9*'4' %.1%- $7(('45 #0& # 5/#.. #/1706 1( %1/$+0#6+10#. .1)+% 4'5+&' '..5 %.1%- 64'' 5;06*'5+5 %#2#$+.+6+'5 9'4' 75'& 61 +05'46 $7(('45 +0 6*' ).1$#. &#6# %10641. 5+)0#.5 hold_abL hold_cdL mux_ctrl_rw_0 mux_ctrl_rw_1 mux_ctrl_rdata return_byte_swap *' 4176+0) 1( %.1%- && #0& GND 5+)0#.5 9#5 %7561/+<'& 75+0) 52'%+(+% '.. %1//#0&5 $ 0 6*' '#4.; 56#)'5 1( &'8'.12/'06 '#%* $+6 5.+%' (70%6+10 9#5 %*#4#%6'4+<'& 5'2#4#6'.; 75+0) +&#5 +/8'4 56#6+% 6+/= +0) #0#.;5+5 611. 9+6* .7/2'& %#2#%+6#0%' #0& &+564+$76'& &'.#; +0(14/#6+10 $#%-=#0016#6'& (41/ '.. +/+0) .+$4#4+'5 9'4' )'0'4#6'& #761/#6+%#..; $; +/8'4 (14 '#%* (70%6+10 616#. 1( '+)*6 +/8'4 4705 9'4' 4'37+4'& 61 %*#4= #%6'4+<' #.. 6*' (70%6+10#. 2#6*5 +0 '#%* $+6 5.+%' *' 4'57.65 1( 6*' '+)*6 #0#.;5+5 4705 9'4' /'4)'& +061 # 5+0).' 6+/+0) /1&'. 1( 6*' $+6 5.+%' 0'9 '4+.1) 0'6.+56 9#5 )'0'4#6'& (41/ 6*' 2*;5+%#. '.. &#6#$#5' 6*#6 +0%.7&'& 6*' $7(('45 +05'46'& $; '.. *' .+$4#4+'5 #0& 6*' 0'9 '4+.1) 0'6.+56 9'4' 75'& (14 6*' +0+6+#. /#56'4 /'/14; %10641..'4 %*+2 612= .'8'. 6+/+0) #0#.;5+5 +0#. 612=.'8'. 6+/+0) #0#.;5+5 75'& # '4+.1) 0'6.+56 $#%-=#0016#6'& (41/ '.. #0& (7.. &+564+$76'& $#%-=#0016#6+10 (14 6*' $.1%- +056'#& 1( 6*' +/8'4= )'0'4#6'& 6+/+0) .+$4#4+'5 *+5 4'&7%'& 6*' 216'06+#. (14 '4414 &74+0) (+0#. 6+/+0) #0#.;5+5 # ! $ *' !" $.1%- %105+565 1( $+6 5.+%'5 1( 9*+%* #4' 6*' RWADIOBS &'5+)0 '%#75' 6*' RWADIOBS +5 6*' /156 %1/= 2.': /#%41 #0& /#-'5 72 /156 1( 6*' !" $.1%- +6 9#5 #557/'& 6*#6 #.. $+6 5.+%'5 9'4' 1( 6*+5 6;2' (14 6*' /'6#. /+)4#6+10 #0#.;5+5 *' (+456 56'2 +0 6*' #0#.;5+5 9#5 61 &'6'4/+0' 6*' %744'06 4'37+4'& $; '#%* '.'/'06 +0 6*' RWADIOBS /#%41 *+5 9#5 &10' $; (+456 %#.%7.#6+0) 6*' #/1706 1( %#2#%+6#0%' $'+0) 59+6%*'& $; '#%* +0276 1( '8'4; %'.. #0& 6*'0 6*' %#2#%+6#0%' $'+0) 59+6%*'& $; '#%* 176276 9*+%* 9#5 6*' 57/ 1( 6*' &'8+%' 176276 &4+8'45 #0& 6*' 9+4' .1#& $#%-=#0016#6'& (41/ 6*' .#;176 0%' 6*+5 9#5 &10' 6*' '37#6+10 #8' ( 9#5 75'& 61 &'6'4/+0' 6*' %744'06 59+6%*+0) 1( '#%* '.'/'06 *' %744'06 4'37+4'/'065 1( 6*' '.'/'065 9'4' 57//'& 61 &'6'4/+0' 6*' 616#. (14 6*' RWADIOBS $.1%- *+5 8#.7' 9#5 75'& 61 &'6'4/+0' 6*' 616#. %74= 4'06 4'37+4'& $; 6*' !" $.1%- #0& 61 5+<' 6*' 219'4 #0& )4170& $75'5 #224124+#6'.; " *' (7..; 2.#%'& #0& 4176'& $.1%-=.'8'. &#6#$#5' 9#5 $417)*6 +061 6*' #&'0%' 275 (4#/'914- 9*'4' # #0& † 0'6.+56 1( 6*' %1/2.'6' !" $.1%- 9#5 )'0'4= #6'& *+5 &#6# 9#5 6*'0 64#05('44'& 61 '0614 4#2*+%5 *'%-#6' 611. 9*'4' .#;176=8'4575=5%*'/#6+% &'5+)0 47.' #0& '.'%64+%#. 47.' %*'%-5 9'4' 2'4(14/'& *'%-/#6' 9#5 +05647%6'& 61 (.#66'0 6*' &#6#$#5' 61 6*' 56#0&#4& %'.. .'8'. #0& 6*'0 2'4(14/ # %1/2.'6' &+564+$76'& ':64#%6 *+5 &#6# #.10) 9+6* 6*' $#%-=#0016#6'& 0'6.+56 9#5 6*'0 75'& (14 (+0#. (7..=%*+2 56#6+% 6+/+0) #0#.;5+5 *' '06+4' &'5+)0 241%'55 (41/ 6*' %105647%6+10 1( 6*' $+6 5.+%'5 61 (+0#. #0#.;5+5 1( 6*' !" $.1%- 9#5 /#0#)'& $; 6*' 64+# .'#4#5' 611.5 .'#4#5' +5 &'5+)0'& (14 /#0#)= +0) .#4)' 51(69#4' &'8'.12/'06 241,'%65 *' .'#4#5' 611.5 2418+&'& # &'8'.12/'06 '08+410/'06 9+6* %10(+)74#= 6+10 /#0#)'/'06 4'8+5+10 %10641. #0& $7+.& /#0#)'/'06 .'#4#-' .'#4#5'5 make=%1/2#6+$.' $7+.& 611. 9#5 75'& 61 $7+.& #.. 6*' 2#465 1( 6*' !" $.1%- #761/#6+%#..; † GDSII and CDL are industry-standard formats for data interchange. Processor Bus I/O Drivers Bit Slices Bit Slices Bit Slices Bit Slices +456 8'45+10 1( 6*' !" $.1%- 70' '9.'66=#%-#4& 1740#. Processor Bus I/O Drivers TAP Controller RW_IO block redesigned for area conservation and incluĆ sion of little endian functionality. Processor Bus I/O Drivers TAP Controller RW_IO block with relocated power rails. Makefiles were generated to optimize the overall construcĆ tion process and to allow for efficient rebuilding if necessary. ClearMake's parallel distributed building capabilities greatly improved the efficiency of the build process by parallelizing the construction of the independent sections and distributing the build processes across the networked machines. During all build steps ClearMake performs auditing of the build proĆ cesses. ClearMake keeps track of all the files read and writĆ ten during the build and creates an audit trail called a conĆ figuration record which is kept with the built object (derived object). The configuration records are used by future builds to determine if the object is out of date and needs to be rebuilt. ClearMake examines the versions of all the elements referenced in the configuration record to determine if a reĆ build is necessary. It does not rely on the dateĆtimeĆmodiĆ fied" of the object. The configuration records can be examĆ ined by the developer and used as a source of history information regarding any derived object. During the course of the master memory controller chip deĆ sign the RW_IO block went through many changes. The initial specification required that the block be long and narĆ row and cover the entire side of the chip that interfaces with the processor bus (see Fig. 6). Later in the project, area became critical, and it was necesĆ sary to reduce the size of the block. An additional requireĆ ment on the master memory controller chip was that it had to support little endian byte order (leastĆsignificant byte is byte 0). The structure of the RW_IO block was ideally suited to implement the little endian functionality which required byte swapping the data returned from memory before delivering it to the processor bus (see Fig. 7). The original specifications called for the main power and ground buses to pass through the center of the RW_IO block. Toward the end of the chip development the power buses changed and the VDD bus had to be moved. This again required reconstructing the RW_IO block (see Fig. 8). The use of standard cells and automatic place and route tools for the construction of the RW_IO block proved to be very advantageous. Because of the speed and flexibility of the tools the design team was not hindered when making changes to the highĆspeed interface block as they might have been if a full custom approach had been pursued. The most complex change to the block, which required rebuildĆ ing all of the bit slices and resizing and reconstructing the block, took only three days to complete, at which time the block was fully verified. The design approach of using standard cells and semicustom layout techniques was favored over a dataĆpath or full custom implementation because of its reduced risk. However, GDT schematics were generated for documentation purposes as well as a fallback position if a dataĆpath solution had been required. The combination of standard cells, custom Cell3 layout, and accurate static timing analysis proved to be an effective solution for the RW_IO highĆspeed interface block. 1. S. Clayton, et al, The Automation of Standard Cell Block Design for HighĆPerformance Structured Custom Integrated Circuits," Mentor Graphics is a trademark of Mentor Graphics Corporation in the U.S.A. and other countries. June 1995 HewlettĆPackard Journal