Document 12961225

advertisement
%! ! ("# !& " +*
'% !&$ " %! &!$
% ! '&" & !
"'& ""%
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
Download