%!PS-Adobe-3.0 %%BoundingBox: (atend) %%Pages: (atend) %%PageOrder: (atend) %%DocumentFonts: (atend) %%Creator: Frame 5.1 %%DocumentData: Clean7Bit %%EndComments %%BeginProlog %- %- Frame ps_prolog 5.0, for use with Frame 5.0 products %- This ps_prolog file is Copyright (c) 1986-1996 Adobe Systems, Incoporated. %- All rights reserved. This ps_prolog file may be freely copied and %- distributed in conjunction with documents created using FrameMaker, %- FrameMaker/SGML FrameReader and FrameViewer as long as this %- copyright notice is preserved. %- %- FrameMaker users specify the proper paper size for each print job in the %- "Print" dialog's "Printer Paper Size" "Width" and "Height~ fields. If the %- printer that the PS file is sent to does not support the requested paper %- size, or if there is no paper tray of the proper size currently installed, %- then the job will not be printed. The following flag, if set to true, will %- cause the job to print on the default paper in such cases. /FMAllowPaperSizeMismatch false def %- %- Frame products normally print colors as their true color on a color printer %- or as shades of gray, based on luminance, on a black-and white printer. The %- following flag, if set to true, forces all non-white colors to print as pure %- black. This has no effect on bitmap images. /FMPrintAllColorsAsBlack false def %- %- Frame products can either set their own line screens or use a printer's %- default settings. Three flags below control this separately for no %- separations, spot separations and process separations. If a flag %- is true, then the default printer settings will not be changed. If it is %- false, Frame products will use their own settings from a table based on %- the printer's resolution. /FMUseDefaultNoSeparationScreen true def /FMUseDefaultSpotSeparationScreen true def /FMUseDefaultProcessSeparationScreen false def %- %- For any given PostScript printer resolution, Frame products have two sets of %- screen angles and frequencies for printing process separations, which are %- recomended by Adobe. The following variable chooses the higher frequencies %- when set to true or the lower frequencies when set to false. This is only %- effective if the appropriate FMUseDefault...SeparationScreen flag is false. /FMUseHighFrequencyScreens true def %- %- The following is a set of predefined optimal frequencies and angles for various %- common dpi settings. This is taken from "Advances in Color Separation Using %- PostScript Software Technology," from Adobe Systems (3/13/89 P.N. LPS 0043) %- and corrolated with information which is in various PPD (4.0) files. %- %- The "dpiranges" figure is the minimum dots per inch device resolution which %- can support this setting. The "low" and "high" values are controlled by the %- setting of the FMUseHighFrequencyScreens flag above. The "TDot" flags control %- the use of the "Yellow Triple Dot" feature whereby the frequency id divided by %- three, but the dot function is "trippled" giving a block of 3x3 dots per cell. %- %- PatFreq is a compromise pattern frequency for ps Level 2 printers which is close %- to the ideal WYSIWYG pattern frequency of 9 repetitions/inch but does not beat %- (too badly) against the screen frequencies of any separations for that DPI. % This is computed by taking dpi/9 as the ideal pixels per repetition, and then % computing a tiling size in printer pixels for each of the four separations as % (dpi/screenFreq)*(cos(screenAngle)+sin(screenAngle)) Actually, this is the same % for Cyan and Magenta). Then, we take a "nice" LCM of the tile sizes close to % the desired pattern tile where the beat factor is not more than 2 or 3. % /dpiranges [ 2540 2400 1693 1270 1200 635 600 0 ] def /CMLowFreqs [ 100.402 94.8683 89.2289 100.402 94.8683 66.9349 63.2456 47.4342 ] def /YLowFreqs [ 95.25 90.0 84.65 95.25 90.0 70.5556 66.6667 50.0 ] def /KLowFreqs [ 89.8026 84.8528 79.8088 89.8026 84.8528 74.8355 70.7107 53.033 ] def /CLowAngles [ 71.5651 71.5651 71.5651 71.5651 71.5651 71.5651 71.5651 71.5651 ] def /MLowAngles [ 18.4349 18.4349 18.4349 18.4349 18.4349 18.4349 18.4349 18.4349 ] def /YLowTDot [ true true false true true false false false ] def /CMHighFreqs [ 133.87 126.491 133.843 108.503 102.523 100.402 94.8683 63.2456 ] def /YHighFreqs [ 127.0 120.0 126.975 115.455 109.091 95.25 90.0 60.0 ] def /KHighFreqs [ 119.737 113.137 119.713 128.289 121.218 89.8026 84.8528 63.6395 ] def /CHighAngles [ 71.5651 71.5651 71.5651 70.0169 70.0169 71.5651 71.5651 71.5651 ] def /MHighAngles [ 18.4349 18.4349 18.4349 19.9831 19.9831 18.4349 18.4349 18.4349 ] def /YHighTDot [ false false true false false true true false ] def /PatFreq [ 10.5833 10.0 9.4055 10.5833 10.0 10.5833 10.0 9.375 ] def %- %- PostScript Level 2 printers contain an "Accurate Screens" feature which can %- improve process separation rendering at the expense of compute time. This %- flag is ignored by PostScript Level 1 printers. /FMUseAcccurateScreens true def %- %- The following PostScript procedure defines the spot function that Frame %- products will use for process separations. You may un-comment-out one of %- the alternative functions below, or use your own. %- %- Dot function /FMSpotFunction {abs exch abs 2 copy add 1 gt {1 sub dup mul exch 1 sub dup mul add 1 sub } {dup mul exch dup mul add 1 exch sub }ifelse } def %- %- Line function %- /FMSpotFunction { pop } def %- %- Elipse function %- /FMSpotFunction { dup 5 mul 8 div mul exch dup mul exch add %- sqrt 1 exch sub } def %- %- /FMversion (5.0) def % matches PS_VERSION in fmprintdriver % PostScript Level 1 = true, 2 = false /fMLevel1 /languagelevel where {pop languagelevel} {1} ifelse 2 lt def % Set up Color vs. Black-and-White /FMPColor fMLevel1 { false /colorimage where {pop pop true} if } { % statusdict /processcolors known { % statusdict /processcolors get exec % } {1} ifelse % 1 gt true } ifelse def /FrameDict 400 dict def % should check this value each time changes made % % For NeWS we add a fake errordict, so we can psh files % systemdict /errordict known not {/errordict 10 dict def errordict /rangecheck {stop} put} if %- The readline in PS 23.0 doesn't recognize cr's as nl's on AppleTalk FrameDict /tmprangecheck errordict /rangecheck get put % save old rangecheck errordict /rangecheck {FrameDict /bug true put} put % will flag bug found FrameDict /bug false put % flag bug not found mark % since we're not sure what will happen next %- Some PS machines read past the CR, so keep the following 3 lines together! currentfile 5 string readline 00 0000000000 cleartomark % junk from readline and rangecheck errordict /rangecheck FrameDict /tmprangecheck get put % restore rangecheck FrameDict /bug get { % redefine readline if last one got a rangecheck /readline { /gstring exch def /gfile exch def /gindex 0 def { gfile read pop % get a char dup 10 eq {exit} if % exit if LF dup 13 eq {exit} if % exit if CR gstring exch gindex exch put % store it away /gindex gindex 1 add def % bump index } loop pop % eol character gstring 0 gindex getinterval true % simulate real readline } bind def } if % outer-world defs /FMshowpage /showpage load def /FMquit /quit load def /FMFAILURE { % enter with two error strings on the stack dup = flush % send a copy of the message to the console FMshowpage % msg on a page by itself, so it can't be, say, black on black /Helvetica findfont 12 scalefont setfont 72 200 moveto show 72 220 moveto show FMshowpage % we might be in the middle of some EPS, where "showpage" FMquit % and "quit" are redefined } def % only used once at most, so no bind /FMVERSION { FMversion ne { (Adobe Frame product version does not match ps_prolog! Check installation;) (also check ~/fminit and ./fminit for old versions) FMFAILURE } if } def % only used at startup, so no bind /FMBADEPSF { % Call with bad operator name on stack (as a string) (Adobe's PostScript Language Reference Manual, 2nd Edition, section H.2.4) (says your EPS file is not valid, as it calls X ) dup dup (X) search pop exch pop exch pop length % parmstr errstr errstr indx 5 -1 roll % errstr errstr index parmstr putinterval % errstr FMFAILURE } def % standard concatprocs routine /fmConcatProcs { /proc2 exch cvlit def/proc1 exch cvlit def/newproc proc1 length proc2 length add array def newproc 0 proc1 putinterval newproc proc1 length proc2 putinterval newproc cvx }def % Put all local variables here in alphabetical order. FrameDict begin [ /ALDsave /FMdicttop /FMoptop /FMpointsize /FMsaveobject /b /bitmapsave /blut /bpside /bs /bstring /bwidth /c /cf /cs /cynu /depth /edown /fh /fillvals /fw /fx /fy /g /gfile /gindex /grnt /gryt /gstring /height /hh /i /im /indx /is /k /kk /landscape /lb /len /llx /lly /m /magu /manualfeed /n /offbits /onbits /organgle /orgbangle /orgbfreq /orgbproc /orgbxfer /orgfreq /orggangle /orggfreq /orggproc /orggxfer /orgmatrix /orgproc /orgrangle /orgrfreq /orgrproc /orgrxfer /orgxfer /pagesave /paperheight /papersizedict /paperwidth /pos /pwid /r /rad /redt /sl /str /tran /u /urx /ury /val /width /width /ws /ww /x /x1 /x2 /xindex /xpoint /xscale /xx /y /y1 /y2 /yelu /yindex /ypoint /yscale /yy ] { 0 def } forall % Start of PDF/Acrobat support % Bind def /FmBD {bind def} bind def systemdict /pdfmark known { /fMAcrobat true def % FmPD is a conditional PDFMark /FmPD /pdfmark load def % FmPT is a show text operator which only show up when distiller is active /FmPT /show load def % FmPD2 and FmPA are Acrobat 2.0-specific currentdistillerparams /CoreDistVersion get 2000 ge { % FmPD2 is like FmPD but for Acrobat 2.0-specific PDF /FmPD2 /pdfmark load def % x y/name FmPA % is equivalent to % [/Dest/name/View[/FitH x y FmDC exch pop]/DEST FmPD % It is a shortcut for pagragraph Uinique ID designators whic occurr commonly. /FmPA { mark exch /Dest exch 5 3 roll /View [ /XYZ null 6 -2 roll FmDC exch pop null] /DEST FmPD }FmBD } { % These are No-Ops for Distiller 1.0 /FmPD2 /cleartomark load def /FmPA {pop pop pop}FmBD } ifelse } { % these are the No-Ops for regular PostScript /fMAcrobat false def /FmPD /cleartomark load def /FmPD2 /cleartomark load def /FmPT /pop load def /FmPA {pop pop pop}FmBD } ifelse % This convert a set of X Y coordinates from the current user space to the default % PostScript coordinates needed by some pdfmark variants. We also convert to % integer because the distiller doesn't always like floats! /FmDC { transform fMDefaultMatrix itransform cvi exch cvi exch }FmBD % This converts four numbers into a bounding box making sure the first two are maller than the last two /FmBx { dup 3 index lt {3 1 roll exch} if 1 index 4 index lt {4 -1 roll 3 1 roll exch 4 1 roll} if }FmBD % End of PDF/Acrobat support % % Color separation code % % Constants. /FMnone 0 def /FMcyan 1 def /FMmagenta 2 def /FMyellow 3 def /FMblack 4 def /FMcustom 5 def /fMNegative false def % we are inverting the page % Variables. /FrameSepIs FMnone def % separation we are printing % If FrameSepIs is FMcustom, this is the custom color /FrameSepBlack 0 def /FrameSepYellow 0 def /FrameSepMagenta 0 def /FrameSepCyan 0 def /FrameSepRed 1 def /FrameSepGreen 1 def /FrameSepBlue 1 def /FrameCurGray 1 def /FrameCurPat null def /FrameCurColors [ 0 0 0 1 0 0 0 ] def % c m y k r g b % Utility routines /FrameColorEpsilon .001 def % epsilon by which values can differ and sill be equal /eqepsilon { % v1 v2 eqeps bool sub dup 0 lt {neg} if FrameColorEpsilon le } bind def % are the cmyk and cmykrgb arrays on the stack the same color? /FrameCmpColorsCMYK { % [ c1 m1 y1 k1 ] [ c2 m2 y2 k2 r2 g2 b2] -> bool 2 copy 0 get exch 0 get eqepsilon { 2 copy 1 get exch 1 get eqepsilon { 2 copy 2 get exch 2 get eqepsilon { 3 get exch 3 get eqepsilon } {pop pop false} ifelse }{pop pop false} ifelse } {pop pop false} ifelse } bind def % are the rgb and cmykrgb arrays on the stack the same color? /FrameCmpColorsRGB { % [ r1 g1 b1 ] [ c2 m2 y2 k2 r2 g2 b2] -> bool 2 copy 4 get exch 0 get eqepsilon { 2 copy 5 get exch 1 get eqepsilon { 6 get exch 2 get eqepsilon }{pop pop false} ifelse } {pop pop false} ifelse } bind def % convert r g b to c m y k /RGBtoCMYK { % r g b 1 exch sub % r g y 3 1 roll % y r g 1 exch sub % y r m 3 1 roll % m y r 1 exch sub % m y c 3 1 roll % c m y 3 copy % c m y c m y 2 copy % c m y c m y m y le { pop } { exch pop } ifelse % c m y c min(m,y) 2 copy % c m y c min(m,y) c min(m,y) le { pop } { exch pop } ifelse % c m y min(c, min(m,y)) dup dup dup % c m y k k k k 6 1 roll % c k m y k k k 4 1 roll % c k m k y k k 7 1 roll % k c k m k y k sub % k c k m k y 6 1 roll % y k c k m k sub % y k c k m 5 1 roll % m y k c k sub % m y k c 4 1 roll % c m y k } bind def /CMYKtoRGB { % c m y k CMYKtoRGB r g b dup dup 4 -1 roll add % c m k k y+k 5 1 roll 3 -1 roll add % y+k c k m+k 4 1 roll add % m+k y+k c+k 1 exch sub dup 0 lt {pop 0} if 3 1 roll % r m+k y+k 1 exch sub dup 0 lt {pop 0} if exch % r b m+k 1 exch sub dup 0 lt {pop 0} if exch % r g b } bind def % Public routines % Happens at the top of each page that is a separation /FrameSepInit { 1.0 RealSetgray } bind def % Tell the separation code that this separation is for a custom color /FrameSetSepColor { % c m y k r g b /FrameSepBlue exch def /FrameSepGreen exch def /FrameSepRed exch def /FrameSepBlack exch def /FrameSepYellow exch def /FrameSepMagenta exch def /FrameSepCyan exch def /FrameSepIs FMcustom def setCurrentScreen } bind def % Tell the separation code that this separation is Cyan /FrameSetCyan { /FrameSepBlue 1.0 def /FrameSepGreen 1.0 def /FrameSepRed 0.0 def /FrameSepBlack 0.0 def /FrameSepYellow 0.0 def /FrameSepMagenta 0.0 def /FrameSepCyan 1.0 def /FrameSepIs FMcyan def setCurrentScreen } bind def % Tell the separation code that this separation is Magenta /FrameSetMagenta { /FrameSepBlue 1.0 def /FrameSepGreen 0.0 def /FrameSepRed 1.0 def /FrameSepBlack 0.0 def /FrameSepYellow 0.0 def /FrameSepMagenta 1.0 def /FrameSepCyan 0.0 def /FrameSepIs FMmagenta def setCurrentScreen } bind def % Tell the separation code that this separation is Yellow /FrameSetYellow { /FrameSepBlue 0.0 def /FrameSepGreen 1.0 def /FrameSepRed 1.0 def /FrameSepBlack 0.0 def /FrameSepYellow 1.0 def /FrameSepMagenta 0.0 def /FrameSepCyan 0.0 def /FrameSepIs FMyellow def setCurrentScreen } bind def % Tell the separation code that this separation is Black /FrameSetBlack { /FrameSepBlue 0.0 def /FrameSepGreen 0.0 def /FrameSepRed 0.0 def /FrameSepBlack 1.0 def /FrameSepYellow 0.0 def /FrameSepMagenta 0.0 def /FrameSepCyan 0.0 def /FrameSepIs FMblack def setCurrentScreen } bind def % Tell the separation code we are not doing a separation /FrameNoSep { % /FrameSepIs FMnone def setCurrentScreen } bind def % Initialize the separation code with all the custom colors we are % separating (not process colors) /FrameSetSepColors { % list of arrays of [c m y k r g b] count FrameDict begin [ exch 1 add 1 roll ] /FrameSepColors % array of arrays of colors we are separating exch def end } bind def % is this color array in the array of custom color separations? /FrameColorInSepListCMYK { % [ c m y k ] -> bool FrameSepColors { % color elem-of-array exch dup 3 -1 roll % color color elem FrameCmpColorsCMYK % color bool { pop true exit } if } forall % exits with either [color] or true dup true ne {pop false} if } bind def /FrameColorInSepListRGB { % [ r g b ] -> bool FrameSepColors { % color elem-of-array exch dup 3 -1 roll % color color elem FrameCmpColorsRGB % color bool { pop true exit } if } forall % exits with either [color] or true dup true ne {pop false} if } bind def % Level 1 color operators saved and redefined /RealSetgray /setgray load def /RealSetrgbcolor /setrgbcolor load def /RealSethsbcolor /sethsbcolor load def end % Setgray patch /setgray { % num FrameDict begin FrameSepIs FMnone eq { RealSetgray } { % go to white unless the current sep color is black FrameSepIs FMblack eq { RealSetgray } { FrameSepIs FMcustom eq FrameSepRed 0 eq and FrameSepGreen 0 eq and FrameSepBlue 0 eq and { RealSetgray } { 1 RealSetgray pop } ifelse } ifelse } ifelse end } bind def /setrgbcolor { % r g b FrameDict begin FrameSepIs FMnone eq { RealSetrgbcolor } { 3 copy [ 4 1 roll ] % r g b [ r g b ] FrameColorInSepListRGB { FrameSepBlue eq exch FrameSepGreen eq and exch FrameSepRed eq and { 0 } { 1 } ifelse } { FMPColor { RealSetrgbcolor currentcmykcolor } { RGBtoCMYK } ifelse FrameSepIs FMblack eq {1.0 exch sub 4 1 roll pop pop pop} { FrameSepIs FMyellow eq {pop 1.0 exch sub 3 1 roll pop pop} { FrameSepIs FMmagenta eq {pop pop 1.0 exch sub exch pop } { FrameSepIs FMcyan eq {pop pop pop 1.0 exch sub } {pop pop pop pop 1} ifelse } ifelse } ifelse } ifelse } ifelse RealSetgray } ifelse end } bind def /sethsbcolor { FrameDict begin FrameSepIs FMnone eq { RealSethsbcolor } { RealSethsbcolor % safe since we will overwrite the color state currentrgbcolor % r g b - Let PostsCript to the conversion. setrgbcolor % call our version } ifelse end } bind def FrameDict begin /setcmykcolor where { pop /RealSetcmykcolor /setcmykcolor load def } { /RealSetcmykcolor { 4 1 roll 3 { 3 index add 0 max 1 min 1 exch sub 3 1 roll} repeat RealSetrgbcolor pop } bind def } ifelse userdict /setcmykcolor { % c m y k FrameDict begin FrameSepIs FMnone eq { RealSetcmykcolor } { 4 copy [ 5 1 roll ] FrameColorInSepListCMYK { FrameSepBlack eq exch FrameSepYellow eq and exch FrameSepMagenta eq and exch FrameSepCyan eq and { 0 } { 1 } ifelse } { FrameSepIs FMblack eq {1.0 exch sub 4 1 roll pop pop pop} { FrameSepIs FMyellow eq {pop 1.0 exch sub 3 1 roll pop pop} { FrameSepIs FMmagenta eq {pop pop 1.0 exch sub exch pop } { FrameSepIs FMcyan eq {pop pop pop 1.0 exch sub } {pop pop pop pop 1} ifelse } ifelse } ifelse } ifelse } ifelse RealSetgray } ifelse end } bind put % Set up a prototype pattern for PostScript Level 2 fMLevel1 { % set up screen functions for the patterns in PS level 1 % each entry contains an angle, spot function, flipped spot function, % gray level and frequency multiplier. /patScreenDict 7 dict dup begin <0f1e3c78f0e1c387> [ 45 { pop } {exch pop} .5 2 sqrt] FmBD <0f87c3e1f0783c1e> [ 135 { pop } {exch pop} .5 2 sqrt] FmBD [ 0 { pop } dup .5 2 ] FmBD [ 90 { pop } dup .5 2 ] FmBD <8142241818244281> [ 45 { 2 copy lt {exch} if pop} dup .75 2 sqrt] FmBD <03060c183060c081> [ 45 { pop } {exch pop} .875 2 sqrt] FmBD <8040201008040201> [ 135 { pop } {exch pop} .875 2 sqrt] FmBD end def } { % prototype level 2 pattern dictionary % define some PostScript procedures for known jaggy patterns. /patProcDict 5 dict dup begin <0f1e3c78f0e1c387> { 3 setlinewidth -1 -1 moveto 9 9 lineto stroke 4 -4 moveto 12 4 lineto stroke -4 4 moveto 4 12 lineto stroke} bind def <0f87c3e1f0783c1e> { 3 setlinewidth -1 9 moveto 9 -1 lineto stroke -4 4 moveto 4 -4 lineto stroke 4 12 moveto 12 4 lineto stroke} bind def <8142241818244281> { 1 setlinewidth -1 9 moveto 9 -1 lineto stroke -1 -1 moveto 9 9 lineto stroke } bind def <03060c183060c081> { 1 setlinewidth -1 -1 moveto 9 9 lineto stroke 4 -4 moveto 12 4 lineto stroke -4 4 moveto 4 12 lineto stroke} bind def <8040201008040201> { 1 setlinewidth -1 9 moveto 9 -1 lineto stroke -4 4 moveto 4 -4 lineto stroke 4 12 moveto 12 4 lineto stroke} bind def end def /patDict 15 dict dup begin /PatternType 1 def % Always 1 for PS Level 2 /PaintType 2 def % Uncolored pattern /TilingType 3 def % constant spacing and faster tiling /BBox [ 0 0 8 8 ] def % bounding box /XStep 8 def % X offset /YStep 8 def % Y offset /PaintProc { begin patProcDict bstring known { patProcDict bstring get exec } { 8 8 true [1 0 0 -1 0 8] bstring imagemask } ifelse end } bind def end def } ifelse %combineColor puts together the current gray value (which could also be %a fraction of on bits for a fill pattern and the current color and calls %the appropriate function % /combineColor { FrameSepIs FMnone eq { graymode fMLevel1 or not { % Level 2 pattern [/Pattern [/DeviceCMYK]] setcolorspace FrameCurColors 0 4 getinterval aload pop FrameCurPat setcolor } { FrameCurColors 3 get 1.0 ge { FrameCurGray RealSetgray } { fMAcrobat not FMPColor graymode and and { 0 1 3 { FrameCurColors exch get 1 FrameCurGray sub mul } for RealSetcmykcolor } { 4 1 6 { FrameCurColors exch get graymode { 1 exch sub 1 FrameCurGray sub mul 1 exch sub } { 1.0 lt {FrameCurGray} {1} ifelse } ifelse } for RealSetrgbcolor } ifelse } ifelse } ifelse } { % separation case FrameCurColors 0 4 getinterval aload FrameColorInSepListCMYK { FrameSepBlack eq exch FrameSepYellow eq and exch FrameSepMagenta eq and exch FrameSepCyan eq and FrameSepIs FMcustom eq and { FrameCurGray } { 1 } ifelse } { FrameSepIs FMblack eq {FrameCurGray 1.0 exch sub mul 1.0 exch sub 4 1 roll pop pop pop} { FrameSepIs FMyellow eq {pop FrameCurGray 1.0 exch sub mul 1.0 exch sub 3 1 roll pop pop} { FrameSepIs FMmagenta eq {pop pop FrameCurGray 1.0 exch sub mul 1.0 exch sub exch pop } { FrameSepIs FMcyan eq {pop pop pop FrameCurGray 1.0 exch sub mul 1.0 exch sub } {pop pop pop pop 1} ifelse } ifelse } ifelse } ifelse } ifelse graymode fMLevel1 or not { % Level 2 pattern [/Pattern [/DeviceGray]] setcolorspace FrameCurPat setcolor } { graymode not fMLevel1 and { % Level 1 patterns are either all there or not there at all dup 1 lt {pop FrameCurGray} if } if RealSetgray } ifelse } ifelse } bind def /savematrix { orgmatrix currentmatrix pop } bind def /restorematrix { orgmatrix setmatrix } bind def /fMDefaultMatrix matrix defaultmatrix def /fMatrix2 matrix def /dpi 72 0 fMDefaultMatrix dtransform dup mul exch dup mul add sqrt def % freq and sangle are used for ps Level 1 pattern building. /freq dpi dup 72 div round dup 0 eq {pop 1} if 8 mul div def /sangle 1 0 fMDefaultMatrix dtransform exch atan def sangle fMatrix2 rotate fMDefaultMatrix fMatrix2 concatmatrix dup 0 get /sflipx exch def 3 get /sflipy exch def % % screen index depending on dpi % - screenIndex smallint /screenIndex { 0 1 dpiranges length 1 sub { dup dpiranges exch get 1 sub dpi le {exit} {pop} ifelse } for } bind def % % These routines get the standard Adobe frequencies, angles, and spot functions % depending on the DPI % % - getCyanScreen freq angle spotfunction /getCyanScreen { FMUseHighFrequencyScreens { CHighAngles CMHighFreqs} {CLowAngles CMLowFreqs} ifelse screenIndex dup 3 1 roll get 3 1 roll get /FMSpotFunction load } bind def % % - getMagentaScreen freq angle spotFunction /getMagentaScreen { FMUseHighFrequencyScreens { MHighAngles CMHighFreqs } {MLowAngles CMLowFreqs} ifelse screenIndex dup 3 1 roll get 3 1 roll get /FMSpotFunction load } bind def % % - getYellowScreen freq angle spotFunction % note that some of these use a "tripple dot" function at 1/3 the frequency /getYellowScreen { FMUseHighFrequencyScreens { YHighTDot YHighFreqs} { YLowTDot YLowFreqs } ifelse screenIndex dup 3 1 roll get 3 1 roll get { 3 div {2 { 1 add 2 div 3 mul dup floor sub 2 mul 1 sub exch} repeat FMSpotFunction } } {/FMSpotFunction load } ifelse 0.0 exch } bind def % % - getBlackScreen freq angle spotFunction /getBlackScreen { FMUseHighFrequencyScreens { KHighFreqs } { KLowFreqs } ifelse screenIndex get 45.0 /FMSpotFunction load } bind def % % - getSpotScreen freq angle spotFunction /getSpotScreen { getBlackScreen } bind def % % - getCompositeScreen freq angle spotFunction /getCompositeScreen { getBlackScreen } bind def % FmSetScreen sets the screen for either PostScript Level 1 or Level 2 and optionally % sets the accuratescreens flag in the latter case % freq angle spotfunction FMSetScreen - /FMSetScreen fMLevel1 { /setscreen load }{ { 8 dict begin /HalftoneType 1 def /SpotFunction exch def /Angle exch def /Frequency exch def /AccurateScreens FMUseAcccurateScreens def currentdict end sethalftone } bind } ifelse def % This sets the default screen as was set at the beginning of the job % - setDefaultScreen - /setDefaultScreen { FMPColor { orgrxfer cvx orggxfer cvx orgbxfer cvx orgxfer cvx setcolortransfer } { orgxfer cvx settransfer } ifelse orgfreq organgle orgproc cvx setscreen } bind def % This sets the current screen depending on FrameSepIs % - setCurrentScreen - /setCurrentScreen { FrameSepIs FMnone eq { FMUseDefaultNoSeparationScreen { setDefaultScreen } { getCompositeScreen FMSetScreen } ifelse } { FrameSepIs FMcustom eq { FMUseDefaultSpotSeparationScreen { setDefaultScreen } { getSpotScreen FMSetScreen } ifelse } { FMUseDefaultProcessSeparationScreen { setDefaultScreen } { FrameSepIs FMcyan eq { getCyanScreen FMSetScreen } { FrameSepIs FMmagenta eq { getMagentaScreen FMSetScreen } { FrameSepIs FMyellow eq { getYellowScreen FMSetScreen } { getBlackScreen FMSetScreen } ifelse } ifelse } ifelse } ifelse } ifelse } ifelse } bind def end % End of Color separation code % /FMDOCUMENT { % xscale yscale edown negative paperwidth paperheight manfeed numcopies numfonts array /FMfonts exch def % Why isn't this in FrameDict??? /#copies exch def FrameDict begin 0 ne /manualfeed exch def /paperheight exch def /paperwidth exch def 0 ne /fMNegative exch def % invert page 0 ne /edown exch def % flip page along y axis /yscale exch def /xscale exch def fMLevel1 { manualfeed {setmanualfeed} if /FMdicttop countdictstack 1 add def % some PS's leave junk on dict ... /FMoptop count def % ...or on operand stack... setpapername % This stuff may alter the transfer/screen/angle manualfeed {true} {papersize} ifelse % true->more work to do {manualpapersize} {false} ifelse % true->more work to do {desperatepapersize} {false} ifelse % true->failed completely {papersizefailure} if count -1 FMoptop {pop pop} for countdictstack -1 FMdicttop {pop end} for %...if tray not installed } {2 dict dup /PageSize [paperwidth paperheight] put manualfeed {dup /ManualFeed manualfeed put} if {setpagedevice} stopped {papersizefailure} if } ifelse % fMLevel1 FMPColor { currentcolorscreen cvlit /orgproc exch def /organgle exch def /orgfreq exch def cvlit /orgbproc exch def /orgbangle exch def /orgbfreq exch def cvlit /orggproc exch def /orggangle exch def /orggfreq exch def cvlit /orgrproc exch def /orgrangle exch def /orgrfreq exch def currentcolortransfer fMNegative { 1 1 4 { pop { 1 exch sub } fmConcatProcs 4 1 roll } for 4 copy setcolortransfer } if cvlit /orgxfer exch def cvlit /orgbxfer exch def cvlit /orggxfer exch def cvlit /orgrxfer exch def } { currentscreen cvlit /orgproc exch def /organgle exch def /orgfreq exch def currenttransfer fMNegative { { 1 exch sub } fmConcatProcs dup settransfer } if cvlit /orgxfer exch def } ifelse end % FrameDict } def % only used at startup, so no bind /FMBEGINPAGE { % pagewidth pageheight landscape color-arrays count FrameDict begin % for the whole page... /pagesave save def 3.86 setmiterlimit /landscape exch 0 ne def landscape { % check for landscape 90 rotate 0 exch dup /pwid exch def neg translate pop }{ pop /pwid exch def } ifelse edown { [-1 0 0 1 pwid 0] concat } if % paint the whole page in "white". If the page is inverted, then % this will actually paint our black background 0 0 moveto paperwidth 0 lineto paperwidth paperheight lineto 0 paperheight lineto 0 0 lineto 1 setgray fill xscale yscale scale /orgmatrix matrix def gsave % for CLIP } def % only used infrequently, so no bind /FMENDPAGE { grestore % for CLIP pagesave restore end % FrameDict showpage } def % only used infrequently, so no bind /FMFONTDEFINE { % fontindex nonstd_encoding fontname -- FrameDict begin findfont % fontindex nonstd_encoding font ReEncode % fontindex font' 1 index exch % fontindex fontindex font' definefont % fontindex font" FMfonts 3 1 roll % FMfonts fontindex font" put end % FrameDict } def % only used infrequently, so no bind /FMFILLS { FrameDict begin dup array /fillvals exch def dict /patCache exch def end % framedict } def % Only called once, so no bind /FMFILL { FrameDict begin fillvals 3 1 roll put end % FrameDict } def % only used infrequently, so no bind % Set things to a known, quiescent state, for when we switch to another writer /FMNORMALIZEGRAPHICS { newpath 1 setlinewidth 0 setlinecap 0 0 0 sethsbcolor 0 setgray % Not FMsetgray; only called outside of our environment! } bind def /FMBEGINEPSF { % llx lly urx ury fw fh fx fy end % FrameDict /FMEPSF save def % in userdict /showpage {} def % this def is in userdict %- See Adobe's "PostScript Language Reference Manual, 2nd Edition", page 714. %- "...the following operators MUST NOT be used in an EPS file:" (emphasis ours) /banddevice {(banddevice) FMBADEPSF} def /clear {(clear) FMBADEPSF} def /cleardictstack {(cleardictstack) FMBADEPSF} def % FMBADEPSF knows this is the longest! /copypage {(copypage) FMBADEPSF} def /erasepage {(erasepage) FMBADEPSF} def /exitserver {(exitserver) FMBADEPSF} def /framedevice {(framedevice) FMBADEPSF} def /grestoreall {(grestoreall) FMBADEPSF} def /initclip {(initclip) FMBADEPSF} def /initgraphics {(initgraphics) FMBADEPSF} def % /initmatrix {(initmatrix) FMBADEPSF} def % Aldus Freehand 4.0 epsf uses this harmlessly /quit {(quit) FMBADEPSF} def /renderbands {(renderbands) FMBADEPSF} def /setglobal {(setglobal) FMBADEPSF} def /setpagedevice {(setpagedevice) FMBADEPSF} def /setshared {(setshared) FMBADEPSF} def /startjob {(startjob) FMBADEPSF} def /lettertray {(lettertray) FMBADEPSF} def /letter {(letter) FMBADEPSF} def /lettersmall {(lettersmall) FMBADEPSF} def /11x17tray {(11x17tray) FMBADEPSF} def /11x17 {(11x17) FMBADEPSF} def /ledgertray {(ledgertray) FMBADEPSF} def /ledger {(ledger) FMBADEPSF} def /legaltray {(legaltray) FMBADEPSF} def /legal {(legal) FMBADEPSF} def /statementtray {(statementtray) FMBADEPSF} def /statement {(statement) FMBADEPSF} def /executivetray {(executivetray) FMBADEPSF} def /executive {(executive) FMBADEPSF} def /a3tray {(a3tray) FMBADEPSF} def /a3 {(a3) FMBADEPSF} def /a4tray {(a4tray) FMBADEPSF} def /a4 {(a4) FMBADEPSF} def /a4small {(a4small) FMBADEPSF} def /b4tray {(b4tray) FMBADEPSF} def /b4 {(b4) FMBADEPSF} def /b5tray {(b5tray) FMBADEPSF} def /b5 {(b5) FMBADEPSF} def FMNORMALIZEGRAPHICS % in case we're in a strange state [/fy /fx /fh /fw /ury /urx /lly /llx] {exch def} forall % neat trick fx fw 2 div add fy fh 2 div add translate rotate fw 2 div neg fh 2 div neg translate fw urx llx sub div fh ury lly sub div scale % then scale llx neg lly neg translate % then compensate for LL offset /FMdicttop countdictstack 1 add def % high-water mark of dict stack /FMoptop count def % tricky! "/FMoptop" on stack } bind def /FMENDEPSF { count -1 FMoptop {pop pop} for % clear EPS junk from operand stack countdictstack -1 FMdicttop {pop end} for % ditto for dict stack FMEPSF restore FrameDict begin % for the whole page... } bind def FrameDict begin % put most defs here /setmanualfeed { %%BeginFeature *ManualFeed True statusdict /manualfeed true put %%EndFeature } bind def /max {2 copy lt {exch} if pop} bind def /min {2 copy gt {exch} if pop} bind def /inch {72 mul} def /pagedimen { % name width height paperheight sub abs 16 lt exch % 16pt is an arbitrary slop amount paperwidth sub abs 16 lt and {/papername exch def} {pop} ifelse } bind def /setpapername { % Already set up: paperwidth paperheight and manualfeed /papersizedict 14 dict def % one for /papername, one for /unknown papersizedict begin /papername /unknown def % in case no match /Letter 8.5 inch 11.0 inch pagedimen /LetterSmall 7.68 inch 10.16 inch pagedimen /Tabloid 11.0 inch 17.0 inch pagedimen /Ledger 17.0 inch 11.0 inch pagedimen /Legal 8.5 inch 14.0 inch pagedimen /Statement 5.5 inch 8.5 inch pagedimen /Executive 7.5 inch 10.0 inch pagedimen /A3 11.69 inch 16.5 inch pagedimen /A4 8.26 inch 11.69 inch pagedimen /A4Small 7.47 inch 10.85 inch pagedimen /B4 10.125 inch 14.33 inch pagedimen /B5 7.16 inch 10.125 inch pagedimen end } bind def /papersize { papersizedict begin /Letter {lettertray letter} def /LetterSmall {lettertray lettersmall} def /Tabloid {11x17tray 11x17} def /Ledger {ledgertray ledger} def /Legal {legaltray legal} def /Statement {statementtray statement} def /Executive {executivetray executive} def /A3 {a3tray a3} def /A4 {a4tray a4} def /A4Small {a4tray a4small} def /B4 {b4tray b4} def /B5 {b5tray b5} def /unknown {unknown} def papersizedict dup papername known {papername} {/unknown} ifelse get end statusdict begin stopped end % return true if more work to do } bind def /manualpapersize { papersizedict begin /Letter {letter} def /LetterSmall {lettersmall} def /Tabloid {11x17} def /Ledger {ledger} def /Legal {legal} def /Statement {statement} def /Executive {executive} def /A3 {a3} def /A4 {a4} def /A4Small {a4small} def /B4 {b4} def /B5 {b5} def /unknown {unknown} def papersizedict dup papername known {papername} {/unknown} ifelse get end stopped % return true if more work to do } bind def /desperatepapersize { statusdict /setpageparams known { paperwidth paperheight 0 1 statusdict begin {setpageparams} stopped % return true iff failed end } {true} ifelse % return true iff failed } bind def /papersizefailure { FMAllowPaperSizeMismatch not { (The requested paper size is not available in any currently-installed tray) (Edit the PS file to "FMAllowPaperSizeMismatch true" to use default tray) FMFAILURE } if } def % % Font re-encoding to include diacritics % /DiacriticEncoding [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quotesingle /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /grave /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef /Adieresis /Aring /Ccedilla /Eacute /Ntilde /Odieresis /Udieresis /aacute /agrave /acircumflex /adieresis /atilde /aring /ccedilla /eacute /egrave /ecircumflex /edieresis /iacute /igrave /icircumflex /idieresis /ntilde /oacute /ograve /ocircumflex /odieresis /otilde /uacute /ugrave /ucircumflex /udieresis /dagger /.notdef /cent /sterling /section /bullet /paragraph /germandbls /registered /copyright /trademark /acute /dieresis /.notdef /AE /Oslash /.notdef /.notdef /.notdef /.notdef /yen /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /ordfeminine /ordmasculine /.notdef /ae /oslash /questiondown /exclamdown /logicalnot /.notdef /florin /.notdef /.notdef /guillemotleft /guillemotright /ellipsis /.notdef /Agrave /Atilde /Otilde /OE /oe /endash /emdash /quotedblleft /quotedblright /quoteleft /quoteright /.notdef /.notdef /ydieresis /Ydieresis /fraction /currency /guilsinglleft /guilsinglright /fi /fl /daggerdbl /periodcentered /quotesinglbase /quotedblbase /perthousand /Acircumflex /Ecircumflex /Aacute /Edieresis /Egrave /Iacute /Icircumflex /Idieresis /Igrave /Oacute /Ocircumflex /.notdef /Ograve /Uacute /Ucircumflex /Ugrave /dotlessi /circumflex /tilde /macron /breve /dotaccent /ring /cedilla /hungarumlaut /ogonek /caron ] def /ReEncode { % nonstd_encoding font -- reencodedfont dup % nonstd_encoding font font length % nonstd_encoding font dictlength dict begin % nonstd_encoding font % currentdict = newdict {% forall % forall is over font to be copied 1 index /FID ne % skip FID {def} % defs go into newfontdict which is currentdict {pop pop} ifelse % copy all keys including /Encoding } forall % nonstd_encoding 0 eq {/Encoding DiacriticEncoding def} if % -- currentdict % push a copy of the copied font dict onto operand stack end % font' % before popping it off dictionary stack } bind def FMPColor % setup procs for color printing { /BEGINBITMAPCOLOR { % iw, ih, width, height, theta, x y BITMAPCOLOR} def /BEGINBITMAPCOLORc { % iw, ih, width, height, theta, x y BITMAPCOLORc} def /BEGINBITMAPTRUECOLOR { BITMAPTRUECOLOR } def /BEGINBITMAPTRUECOLORc { BITMAPTRUECOLORc } def /BEGINBITMAPCMYK { BITMAPCMYK } def /BEGINBITMAPCMYKc { BITMAPCMYKc } def } % setup procs for B&W printing { /BEGINBITMAPCOLOR { % iw, ih, width, height, theta, x y BITMAPGRAY} def /BEGINBITMAPCOLORc { % iw, ih, width, height, theta, x y BITMAPGRAYc} def /BEGINBITMAPTRUECOLOR { BITMAPTRUEGRAY } def /BEGINBITMAPTRUECOLORc { BITMAPTRUEGRAYc } def /BEGINBITMAPCMYK { BITMAPCMYKGRAY } def /BEGINBITMAPCMYKc { BITMAPCMYKGRAYc } def } ifelse /K { % c m y k r g b SEPARATION FMPrintAllColorsAsBlack { dup 1 eq 2 index 1 eq and 3 index 1 eq and not {7 {pop} repeat 0 0 0 1 0 0 0} if } if FrameCurColors astore pop combineColor } bind def % % graymode is true if we are just doing gray fills, this way do not keep calling % setscreen. I don't know what the cost is on calling setscreen with defaults, but % this is easy to keep track of, and we know for sure we aren't wasting cycles. % if graymode is false and fMLevel1 is false, then we are using Level 2 patterns. % /graymode true def % used by level 1 patterns % defaultflip matrixentry fmGetFlit -> eith -1 or 1 fMLevel1 { /fmGetFlip { fMatrix2 exch get mul 0 lt { -1 } { 1 } ifelse } FmBD } if /setPatternMode { fMLevel1 { 2 index patScreenDict exch known { pop pop patScreenDict exch get aload pop % angle spot fspot gray mult freq % freq mul % times multiplier 5 2 roll % angle spot fspot gray mult freq -> gray freq angle spot fspot fMatrix2 currentmatrix 1 get 0 ne { 3 -1 roll 90 add 3 1 roll % landscape sflipx 1 fmGetFlip sflipy 2 fmGetFlip neg mul } { % portrait sflipx 0 fmGetFlip sflipy 3 fmGetFlip mul } ifelse 0 lt {exch pop} {pop} ifelse % take regular or flipped spot function fMNegative { {neg} fmConcatProcs % invert spot function } if bind % we need to bypass any screen filter and go directly to systemdict % to avoid problems with Kodak Precision calibration software % systemdict /setscreen get exec % leave graylevel on stack /FrameCurGray exch def } { /bwidth exch def /bpside exch def /bstring exch def /onbits 0 def /offbits 0 def freq sangle landscape {90 add} if {/ypoint exch def /xpoint exch def /xindex xpoint 1 add 2 div bpside mul cvi def /yindex ypoint 1 add 2 div bpside mul cvi def bstring yindex bwidth mul xindex 8 idiv add get 1 7 xindex 8 mod sub bitshift and 0 ne fMNegative {not} if {/onbits onbits 1 add def 1} {/offbits offbits 1 add def 0} ifelse } setscreen offbits offbits onbits add div fMNegative {1.0 exch sub} if /FrameCurGray exch def } ifelse } { % Level 2 version pop pop dup patCache exch known { patCache exch get } { % not in cache dup patDict /bstring 3 -1 roll put patDict 9 PatFreq screenIndex get div dup matrix scale % 9 orgfreq % organgle sin abs organgle cos abs add div % dup 16 div round dup 0 le {pop 1} if % Unix pattern size % dup 9 div round dup 0 le {pop 1} if % Mac larger (WYSIWYG) size % div div dup matrix scale % This gives Unix pattern size. makepattern dup patCache 4 -1 roll 3 -1 roll put } ifelse /FrameCurGray 0 def /FrameCurPat exch def } ifelse /graymode false def combineColor } bind def /setGrayScaleMode { graymode not { /graymode true def fMLevel1 { setCurrentScreen } if } if /FrameCurGray exch def combineColor } bind def /normalize { transform round exch round exch itransform } bind def /dnormalize { dtransform round exch round exch idtransform } bind def /lnormalize { % line widths are always odd so that arrow heads work 0 dtransform exch cvi 2 idiv 2 mul 1 add exch idtransform pop } bind def /H { % THICK lnormalize setlinewidth } bind def /Z { setlinecap } bind def % This is used to fill or stroke white behind a Level 2 pattern /PFill { graymode fMLevel1 or not { gsave 1 setgray eofill grestore } if } bind def /PStroke { graymode fMLevel1 or not { gsave 1 setgray stroke grestore } if stroke } bind def /X { % TEXTURE fillvals exch get dup type /stringtype eq {8 1 setPatternMode} % Silly to pass parameters here {setGrayScaleMode} ifelse } bind def /V { % FILL PFill gsave eofill grestore } bind def /Vclip { clip } bind def /Vstrk { currentlinewidth exch setlinewidth PStroke setlinewidth } bind def /N { % PEN PStroke } bind def /Nclip { strokepath clip newpath } bind def /Nstrk { currentlinewidth exch setlinewidth PStroke setlinewidth } bind def /M {newpath moveto} bind def /E {lineto} bind def /D {curveto} bind def /O {closepath} bind def /L { % POLYLINE /n exch def newpath normalize moveto 2 1 n {pop normalize lineto} for } bind def /Y { % POLYGON !!! L % POLYLINE closepath } bind def /R { % RECT x1 y1 x2 y2 /y2 exch def /x2 exch def /y1 exch def /x1 exch def x1 y1 x2 y1 x2 y2 x1 y2 4 Y % POLYGON } bind def /rarc % Leaves all sorts of junk on the operand stack for caller to clear off {rad % arcto might fail if we're scaled way down arcto } bind def /RR { % ROUNDRECT x1 y1 x2 y2 r /rad exch def normalize /y2 exch def /x2 exch def normalize /y1 exch def /x1 exch def mark newpath { x1 y1 rad add moveto x1 y2 x2 y2 rarc x2 y2 x2 y1 rarc x2 y1 x1 y1 rarc x1 y1 x1 y2 rarc closepath } stopped {x1 y1 x2 y2 R} if % in case rarc failed for degenerate arcs cleartomark } bind def /RRR { % ROUNDRECT ROTATED xs ys x1 y1 x2 y2 x3 y3 x4 y4 r /rad exch def normalize /y4 exch def /x4 exch def normalize /y3 exch def /x3 exch def normalize /y2 exch def /x2 exch def normalize /y1 exch def /x1 exch def newpath normalize moveto % eats xs ys mark { x2 y2 x3 y3 rarc x3 y3 x4 y4 rarc x4 y4 x1 y1 rarc x1 y1 x2 y2 rarc closepath } stopped {x1 y1 x2 y2 x3 y3 x4 y4 newpath moveto lineto lineto lineto closepath} if cleartomark } bind def /C { % CLIP grestore gsave R % RECT clip setCurrentScreen } bind def /CP { % CLIPPOLY p1x p1y p2x p2y ... n grestore gsave Y % POLYGON clip setCurrentScreen } bind def /F { % FONT FMfonts exch get FMpointsize scalefont setfont } bind def /Q { % POINTSIZE (& font) /FMpointsize exch def F % could be slightly optimized here } bind def /T { % TEXT moveto show } bind def % Callers of RF (rotate/flip) must gsave (or save) first; (g)restore when done /RF { % rotate 0 ne {-1 1 scale} if } bind def /TF { % TEXTFLIPROTATE gsave moveto RF show grestore } bind def /P { % PADTEXT moveto 0 32 3 2 roll widthshow } bind def /PF { % PADTEXTFLIPROTATE gsave moveto RF 0 32 3 2 roll widthshow grestore } bind def /S { % SPREADTEXT moveto 0 exch ashow } bind def /SF { % SPREADTEXTFLIPROTATE gsave moveto RF 0 exch ashow grestore } bind def /B { % PADSPREADTEXT moveto 0 32 4 2 roll 0 exch awidthshow } bind def /BF { % PADSPREADTEXTFLIPROTATE gsave moveto RF 0 32 4 2 roll 0 exch awidthshow grestore } bind def /G { % ARCFILL theta1 theta2 width height x y gsave newpath normalize translate 0.0 0.0 moveto % eats x y dnormalize scale % eats width height 0.0 0.0 1.0 5 3 roll arc % eats theta1 theta2 closepath PFill fill grestore } bind def /Gstrk { savematrix newpath 2 index 2 div add exch 3 index 2 div sub exch % theta1 theta2 width height x y normalize 2 index 2 div sub exch 3 index 2 div add exch % theta1 theta2 width height x y translate scale % eats width height 0.0 0.0 1.0 5 3 roll arc % eats theta1 theta2 restorematrix currentlinewidth exch setlinewidth PStroke setlinewidth } bind def /Gclip { % ARCFILL theta1 theta2 width height x y swid newpath savematrix normalize translate 0.0 0.0 moveto % eats x y dnormalize scale % eats width height 0.0 0.0 1.0 5 3 roll arc % eats theta1 theta2 closepath clip newpath restorematrix } bind def /GG { % ARCFILL ROTATED theta1 theta2 width height angle x y gsave newpath normalize translate 0.0 0.0 moveto % eats x y rotate % eats angle dnormalize scale % eats width height 0.0 0.0 1.0 5 3 roll arc % eats theta1 theta2 closepath PFill fill grestore } bind def /GGclip { % ARCFILL ROTATED theta1 theta2 width height angle x y savematrix newpath normalize translate 0.0 0.0 moveto % eats x y rotate % eats angle dnormalize scale % eats width height 0.0 0.0 1.0 5 3 roll arc % eats theta1 theta2 closepath clip newpath restorematrix } bind def /GGstrk { % ARCFILL ROTATED swid theta1 theta2 width height angle x y savematrix newpath normalize translate 0.0 0.0 moveto % eats x y rotate % eats angle dnormalize scale % eats width height 0.0 0.0 1.0 5 3 roll arc % eats theta1 theta2 closepath restorematrix currentlinewidth exch setlinewidth PStroke setlinewidth } bind def /A { % ARCPEN theta1 theta2 width height x y gsave savematrix newpath 2 index 2 div add exch 3 index 2 div sub exch % theta1 theta2 width height x y normalize 2 index 2 div sub exch 3 index 2 div add exch % theta1 theta2 width height x y translate scale % eats width height 0.0 0.0 1.0 5 3 roll arc % eats theta1 theta2 restorematrix PStroke grestore } bind def /Aclip { newpath savematrix normalize translate 0.0 0.0 moveto % eats x y dnormalize scale % eats width height 0.0 0.0 1.0 5 3 roll arc % eats theta1 theta2 closepath strokepath clip newpath restorematrix } bind def /Astrk { Gstrk } bind def /AA { % ARCPEN ROTATED theta1 theta2 width height angle x y gsave savematrix newpath % theta1 theta2 width height angle x y 3 index 2 div add exch 4 index 2 div sub exch % theta1 theta2 width height angle x y normalize 3 index 2 div sub exch 4 index 2 div add exch translate % eats x y rotate % eats angle scale % eats width height 0.0 0.0 1.0 5 3 roll arc % eats theta1 theta2 restorematrix PStroke grestore } bind def /AAclip { savematrix newpath normalize translate 0.0 0.0 moveto % eats x y rotate % eats angle dnormalize scale % eats width height 0.0 0.0 1.0 5 3 roll arc % eats theta1 theta2 closepath strokepath clip newpath restorematrix } bind def /AAstrk { GGstrk } bind def /BEGINPRINTCODE { % -x -y width height /FMdicttop countdictstack 1 add def % high-water mark of dict stack /FMoptop count 7 sub def % tricky! 7 params on stack, plus "/FMoptop" /FMsaveobject save def userdict begin % insulate user from FrameDict; not in /FMdicttop count /showpage {} def % this def is in userdict FMNORMALIZEGRAPHICS % in case we're in a strange state 3 index neg 3 index neg translate } bind def /ENDPRINTCODE { count -1 FMoptop {pop pop} for % clear user junk from operand stack countdictstack -1 FMdicttop {pop end} for % ditto for dict stack FMsaveobject restore % this is now safe, unless user very malicious } bind def /gn { % get a number in a funny encoding scheme 0 % result on stack { 46 mul % shift old digits cf read pop % get next character 32 sub % zero is the space character dup 46 lt {exit} if % quit if we're the last digit 46 sub add % add in this digit and loop around for next } loop add % result on stack } bind def /cfs { % create a string of length "sl" filled with "val"s /str sl string def % create string as "str" 0 1 sl 1 sub {str exch val put} for % fill array str def % define real array name, too; name is on stack from caller } bind def /ic [ % "case" stmt list of procedures that the image commands should call 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0223 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0223 0 {0 hx} {1 hx} {2 hx} {3 hx} {4 hx} {5 hx} {6 hx} {7 hx} {8 hx} {9 hx} {10 hx} {11 hx} {12 hx} {13 hx} {14 hx} {15 hx} {16 hx} {17 hx} {18 hx} {19 hx} {gn hx} {0} {1} {2} {3} {4} {5} {6} {7} {8} {9} {10} {11} {12} {13} {14} {15} {16} {17} {18} {19} {gn} {0 wh} {1 wh} {2 wh} {3 wh} {4 wh} {5 wh} {6 wh} {7 wh} {8 wh} {9 wh} {10 wh} {11 wh} {12 wh} {13 wh} {14 wh} {gn wh} {0 bl} {1 bl} {2 bl} {3 bl} {4 bl} {5 bl} {6 bl} {7 bl} {8 bl} {9 bl} {10 bl} {11 bl} {12 bl} {13 bl} {14 bl} {gn bl} {0 fl} {1 fl} {2 fl} {3 fl} {4 fl} {5 fl} {6 fl} {7 fl} {8 fl} {9 fl} {10 fl} {11 fl} {12 fl} {13 fl} {14 fl} {gn fl} ] def /ms { % make all the strings /sl exch def % remember length of currently existing strings /val 255 def % that's white /ws cfs % make "ws" a string filled with white /im cfs % and "im" is a complete image scanline /val 0 def % that's black /bs cfs % make "bs" a string filled with black /cs cfs % here's where we'll put complete command lines } bind def 400 ms % make strings that will be plenty long for most applications /ip { % image procedure; reads and executes commands to make scanlines is % leave image string and... 0 % ...image position on stack all through this procedure cf cs readline pop % get a string of commands { ic exch get exec % execute next command add % all commands leave a length on the stack; update pos } forall % step through all commands pop % get rid of image position pointer % image string left on stack, so it's returned to image primitive } bind def /rip { % this is similar to ip above, except for 24 bit images % this takes an extra argument, the width of the image % do red bis ris copy pop % copy blue to red is 0 cf cs readline pop { ic exch get exec add } forall pop pop % remove is and position from stack ris gis copy pop % copy red to green dup is exch % position of green is width bytes into is % do green cf cs readline pop { ic exch get exec add } forall pop pop gis bis copy pop % copy green to blue dup add is exch % position of blue is 2*width bytes into is % do blue cf cs readline pop { ic exch get exec add } forall pop } bind def /rip4 { % this is similar to ip above, except for 32 bit images % this takes an extra argument, the width of the image % do cyan kis cis copy pop % copy black to cyan is 0 cf cs readline pop { ic exch get exec add } forall pop pop % remove is and position from stack cis mis copy pop % copy cyan to magenta dup is exch % position of magenta is width bytes into is % do magenta cf cs readline pop { ic exch get exec add } forall pop pop mis yis copy pop % copy magenta to yellow dup dup add is exch % position of yellow is 2*width bytes into is % do yellow cf cs readline pop { ic exch get exec add } forall pop pop yis kis copy pop % copy yellow to black 3 mul is exch % position of black is 3*width bytes into is % do black cf cs readline pop { ic exch get exec add } forall pop } bind def /wh { % fill a number of bytes with "white" /len exch def % number of bytes to fill /pos exch def % position to put them at ws 0 len getinterval im pos len getinterval copy pop pos len % remember where we got to } bind def /bl { % fill a number of bytes with "black" /len exch def % number of bytes to fill /pos exch def % position to put them at bs 0 len getinterval im pos len getinterval copy pop pos len % remember where we got to } bind def /s1 1 string def /fl { % fill a number of bytes with a specific hex value /len exch def % number of bytes to fill /pos exch def % position to put them at /val cf s1 readhexstring pop 0 get def pos 1 pos len add 1 sub {im exch val put} for pos len % remember where we got to } bind def /hx { % read hex bytes directly; on entry, stack has 3 copy getinterval % stack has cf exch readhexstring pop pop % stack back to } bind def /wbytes { % width depth -> wb find width in bytes given 1, 2, 8 or 24 or 32 dup dup 8 gt { pop 8 idiv mul } { 8 eq {pop} {1 eq {7 add 8 idiv} {3 add 4 idiv} ifelse} ifelse } ifelse } bind def /BEGINBITMAPBWc { % iw, ih, width, height, theta, x y 1 {} COMMONBITMAPc } bind def /BEGINBITMAPGRAYc { % iw, ih, width, height, theta, x y 8 {} COMMONBITMAPc } bind def /BEGINBITMAP2BITc { % iw, ih, width, height, theta, x y 2 {} COMMONBITMAPc } bind def % % Common routine for imaging compressed images % /COMMONBITMAPc { % iw, ih, width, height, theta, x y depth proc % (x,y) is the lower left corner of the image /cvtProc exch def /depth exch def gsave % rotate about center of image 3 index 2 div add exch % iw ih width height theta y+(height/2) x 4 index 2 div add exch % iw ih width height theta x+(width/2) y+(height/2) translate % iw ih width height theta rotate % iw ih width height 1 index 2 div neg % iw ih width height -(width/2) 1 index 2 div neg % iw ih width height -(width/2) -(height/2) translate % iw ih width height scale % iw ih /height exch def /width exch def /lb width depth wbytes def % so "lb" has width in bytes sl lb lt {lb ms} if % maybe make bigger strings /bitmapsave save def % LW+ has a buggy memory leak! cvtProc % run the desired proc after save has occurred /is im 0 lb getinterval def % image substring ws 0 lb getinterval is copy pop % whiten it /cf currentfile def % evaluate "currentfile" only once width height depth [width 0 0 height neg 0 height] % top to bottom {ip} image % zap! bitmapsave restore % avoid occasional disaster on the LW+ grestore } bind def /BEGINBITMAPBW { % iw, ih, width, height, theta, x y 1 {} COMMONBITMAP } bind def /BEGINBITMAPGRAY { % iw, ih, width, height, theta, x y 8 {} COMMONBITMAP } bind def /BEGINBITMAP2BIT { % iw, ih, width, height, theta, x y 2 {} COMMONBITMAP } bind def % % Common routine for uncompressed images % /COMMONBITMAP { % iw, ih, width, height, theta, x y depth proc /cvtProc exch def /depth exch def gsave % rotate about center of image 3 index 2 div add exch % iw ih width height theta y+(height/2) x 4 index 2 div add exch % iw ih width height theta x+(width/2) y+(height/2) translate % iw ih width height theta rotate % iw ih width height 1 index 2 div neg % iw ih width height -(width/2) 1 index 2 div neg % iw ih width height -(width/2) -(height/2) translate % iw ih width height scale % iw ih /height exch def /width exch def /bitmapsave save def % LW+ has a buggy memory leak! cvtProc % run the desired proc after save has occurred /is width depth wbytes string def /cf currentfile def % evaluate "currentfile" only once width height depth [width 0 0 height neg 0 height] % top to bottom {cf is readhexstring pop} image bitmapsave restore % avoid occasional disaster on the LW+ grestore } bind def % % All this hairy color setup stuff gus wrote on the mac, I just copied and % changed the variable names to be humanly readable. /ngrayt 256 array def /nredt 256 array def /nbluet 256 array def /ngreent 256 array def fMLevel1 { /colorsetup { currentcolortransfer /gryt exch def /blut exch def /grnt exch def /redt exch def 0 1 255 { /indx exch def /cynu 1 red indx get 255 div sub def /magu 1 green indx get 255 div sub def /yelu 1 blue indx get 255 div sub def /kk cynu magu min yelu min def % The HP PaintJet XL300 ignores the gray transfer curve but still sets its % default black generation and undercolor removal functions as if it is % used. This causes black colors not to work. Bug#56844 % - We go back to the old (correct?) way of doing this since this code % is now bypassed for PS Level 2 printers in favor of colorSetup2 which % uses PS Level 2 indexed color, which is much cleaner. /u kk currentundercolorremoval exec def %- /u 0 def nredt indx 1 0 cynu u sub max sub redt exec put ngreent indx 1 0 magu u sub max sub grnt exec put nbluet indx 1 0 yelu u sub max sub blut exec put ngrayt indx 1 kk currentblackgeneration exec sub gryt exec put } for {255 mul cvi nredt exch get} {255 mul cvi ngreent exch get} {255 mul cvi nbluet exch get} {255 mul cvi ngrayt exch get} setcolortransfer {pop 0} setundercolorremoval {} setblackgeneration } bind def } { % Here, we set up indexed color for imaging on PS Level 2 without mucking around % with the transfer functions. /colorSetup2 { [ /Indexed /DeviceRGB 255 {dup red exch get 255 div exch dup green exch get 255 div exch blue exch get 255 div} ] setcolorspace } bind def } ifelse % % Setup a transfer function to convert psuedo color values into grayscale % values based on the color lookup tables. % /fakecolorsetup { /tran 256 string def 0 1 255 {/indx exch def tran indx red indx get 77 mul green indx get 151 mul blue indx get 28 mul add add 256 idiv put} for currenttransfer {255 mul cvi tran exch get 255.0 div} exch fmConcatProcs settransfer } bind def % % image a color image % /BITMAPCOLOR { % iw, ih, width, height, theta, x y /depth 8 def gsave % rotate about center of image 3 index 2 div add exch % iw ih width height theta y+(height/2) x 4 index 2 div add exch % iw ih width height theta x+(width/2) y+(height/2) translate % iw ih width height theta rotate % iw ih width height 1 index 2 div neg % iw ih width height -(width/2) 1 index 2 div neg % iw ih width height -(width/2) -(height/2) translate % iw ih width height scale % iw ih /height exch def /width exch def /bitmapsave save def fMLevel1 { colorsetup /is width depth wbytes string def /cf currentfile def % evaluate "currentfile" only once width height depth [width 0 0 height neg 0 height] % top to bottom {cf is readhexstring pop} {is} {is} true 3 colorimage } { colorSetup2 /is width depth wbytes string def /cf currentfile def % evaluate "currentfile" only once 7 dict dup begin /ImageType 1 def /Width width def /Height height def /ImageMatrix [width 0 0 height neg 0 height] def /DataSource {cf is readhexstring pop} bind def /BitsPerComponent depth def /Decode [0 255] def end image } ifelse bitmapsave restore grestore } bind def % % Compressed color image rendering % /BITMAPCOLORc { % iw, ih, width, height, theta, x y /depth 8 def gsave % rotate about center of image 3 index 2 div add exch % iw ih width height theta y+(height/2) x 4 index 2 div add exch % iw ih width height theta x+(width/2) y+(height/2) translate % iw ih width height theta rotate % iw ih width height 1 index 2 div neg % iw ih width height -(width/2) 1 index 2 div neg % iw ih width height -(width/2) -(height/2) translate % iw ih width height scale % iw ih /height exch def /width exch def /lb width depth wbytes def % so "lb" has width in bytes sl lb lt {lb ms} if % maybe make bigger strings /bitmapsave save def fMLevel1 { colorsetup /is im 0 lb getinterval def % image substring ws 0 lb getinterval is copy pop % whiten it /cf currentfile def % evaluate "currentfile" only once width height depth [width 0 0 height neg 0 height] % top to bottom {ip} {is} {is} true 3 colorimage } { colorSetup2 /is im 0 lb getinterval def % image substring ws 0 lb getinterval is copy pop % whiten it /cf currentfile def % evaluate "currentfile" only once 7 dict dup begin /ImageType 1 def /Width width def /Height height def /ImageMatrix [width 0 0 height neg 0 height] def /DataSource {ip} bind def /BitsPerComponent depth def /Decode [0 255] def end image } ifelse bitmapsave restore grestore } bind def /BITMAPTRUECOLORc { /depth 24 def gsave % rotate about center of image 3 index 2 div add exch % iw ih width height theta y+(height/2) x 4 index 2 div add exch % iw ih width height theta x+(width/2) y+(height/2) translate % iw ih width height theta rotate % iw ih width height 1 index 2 div neg % iw ih width height -(width/2) 1 index 2 div neg % iw ih width height -(width/2) -(height/2) translate % iw ih width height scale % iw ih /height exch def /width exch def /lb width depth wbytes def % so "lb" has width in bytes sl lb lt {lb ms} if % maybe make bigger strings /bitmapsave save def /is im 0 lb getinterval def % Whole scanline /ris im 0 width getinterval def % red part of im /gis im width width getinterval def % green part of im /bis im width 2 mul width getinterval def % blue part of im ws 0 lb getinterval is copy pop /cf currentfile def width height 8 [width 0 0 height neg 0 height] {width rip pop ris} {gis} {bis} true 3 colorimage bitmapsave restore grestore } bind def /BITMAPCMYKc { /depth 32 def gsave % rotate about center of image 3 index 2 div add exch % iw ih width height theta y+(height/2) x 4 index 2 div add exch % iw ih width height theta x+(width/2) y+(height/2) translate % iw ih width height theta rotate % iw ih width height 1 index 2 div neg % iw ih width height -(width/2) 1 index 2 div neg % iw ih width height -(width/2) -(height/2) translate % iw ih width height scale % iw ih /height exch def /width exch def /lb width depth wbytes def % so "lb" has width in bytes sl lb lt {lb ms} if % maybe make bigger strings /bitmapsave save def /is im 0 lb getinterval def % Whole scanline /cis im 0 width getinterval def % cyan part of im /mis im width width getinterval def % magenta part of im /yis im width 2 mul width getinterval def % yellow part of im /kis im width 3 mul width getinterval def % black part of im ws 0 lb getinterval is copy pop /cf currentfile def width height 8 [width 0 0 height neg 0 height] {width rip4 pop cis} {mis} {yis} {kis} true 4 colorimage bitmapsave restore grestore } bind def /BITMAPTRUECOLOR { gsave % rotate about center of image 3 index 2 div add exch % iw ih width height theta y+(height/2) x 4 index 2 div add exch % iw ih width height theta x+(width/2) y+(height/2) translate % iw ih width height theta rotate % iw ih width height 1 index 2 div neg % iw ih width height -(width/2) 1 index 2 div neg % iw ih width height -(width/2) -(height/2) translate % iw ih width height scale % iw ih /height exch def /width exch def /bitmapsave save def /is width string def /gis width string def /bis width string def /cf currentfile def width height 8 [width 0 0 height neg 0 height] { cf is readhexstring pop } { cf gis readhexstring pop } { cf bis readhexstring pop } true 3 colorimage bitmapsave restore grestore } bind def /BITMAPCMYK { gsave % rotate about center of image 3 index 2 div add exch % iw ih width height theta y+(height/2) x 4 index 2 div add exch % iw ih width height theta x+(width/2) y+(height/2) translate % iw ih width height theta rotate % iw ih width height 1 index 2 div neg % iw ih width height -(width/2) 1 index 2 div neg % iw ih width height -(width/2) -(height/2) translate % iw ih width height scale % iw ih /height exch def /width exch def /bitmapsave save def /is width string def /mis width string def /yis width string def /kis width string def /cf currentfile def width height 8 [width 0 0 height neg 0 height] { cf is readhexstring pop } { cf mis readhexstring pop } { cf yis readhexstring pop } { cf kis readhexstring pop } true 4 colorimage bitmapsave restore grestore } bind def % % image a color image to a b&width device % /BITMAPTRUEGRAYc { /depth 24 def gsave % rotate about center of image 3 index 2 div add exch % iw ih width height theta y+(height/2) x 4 index 2 div add exch % iw ih width height theta x+(width/2) y+(height/2) translate % iw ih width height theta rotate % iw ih width height 1 index 2 div neg % iw ih width height -(width/2) 1 index 2 div neg % iw ih width height -(width/2) -(height/2) translate % iw ih width height scale % iw ih /height exch def /width exch def /lb width depth wbytes def % so "lb" has width in bytes sl lb lt {lb ms} if % maybe make bigger strings /bitmapsave save def /is im 0 lb getinterval def % Whole scanline /ris im 0 width getinterval def % red part of im /gis im width width getinterval def % green part of im /bis im width 2 mul width getinterval def % blue part of im ws 0 lb getinterval is copy pop /cf currentfile def width height 8 [width 0 0 height neg 0 height] {width rip pop ris gis bis width gray} image bitmapsave restore grestore } bind def /BITMAPCMYKGRAYc { /depth 32 def gsave % rotate about center of image 3 index 2 div add exch % iw ih width height theta y+(height/2) x 4 index 2 div add exch % iw ih width height theta x+(width/2) y+(height/2) translate % iw ih width height theta rotate % iw ih width height 1 index 2 div neg % iw ih width height -(width/2) 1 index 2 div neg % iw ih width height -(width/2) -(height/2) translate % iw ih width height scale % iw ih /height exch def /width exch def /lb width depth wbytes def % so "lb" has width in bytes sl lb lt {lb ms} if % maybe make bigger strings /bitmapsave save def /is im 0 lb getinterval def % Whole scanline /cis im 0 width getinterval def % cyan part of im /mis im width width getinterval def % magenta part of im /yis im width 2 mul width getinterval def % yellow part of im /kis im width 3 mul width getinterval def % black part of im ws 0 lb getinterval is copy pop /cf currentfile def width height 8 [width 0 0 height neg 0 height] {width rip pop cis mis yis kis width cgray} image bitmapsave restore grestore } bind def /cgray { % c m y k width /ww exch def /k exch def /y exch def /m exch def /c exch def 0 1 ww 1 sub { /i exch def c i get m i get y i get k i get CMYKtoRGB .144 mul 3 1 roll .587 mul 3 1 roll .299 mul add add c i 3 -1 roll floor cvi put } for c } bind def /gray { % r g b width /ww exch def /b exch def /g exch def /r exch def 0 1 ww 1 sub { /i exch def r i get .299 mul g i get .587 mul b i get .114 mul add add r i 3 -1 roll floor cvi put } for r } bind def /BITMAPTRUEGRAY { gsave % rotate about center of image 3 index 2 div add exch % iw ih width height theta y+(height/2) x 4 index 2 div add exch % iw ih width height theta x+(width/2) y+(height/2) translate % iw ih width height theta rotate % iw ih width height 1 index 2 div neg % iw ih width height -(width/2) 1 index 2 div neg % iw ih width height -(width/2) -(height/2) translate % iw ih width height scale % iw ih /height exch def /width exch def /bitmapsave save def /is width string def /gis width string def /bis width string def /cf currentfile def width height 8 [width 0 0 height neg 0 height] { cf is readhexstring pop cf gis readhexstring pop cf bis readhexstring pop width gray} image bitmapsave restore grestore } bind def /BITMAPCMYKGRAY { gsave % rotate about center of image 3 index 2 div add exch % iw ih width height theta y+(height/2) x 4 index 2 div add exch % iw ih width height theta x+(width/2) y+(height/2) translate % iw ih width height theta rotate % iw ih width height 1 index 2 div neg % iw ih width height -(width/2) 1 index 2 div neg % iw ih width height -(width/2) -(height/2) translate % iw ih width height scale % iw ih /height exch def /width exch def /bitmapsave save def /is width string def /yis width string def /mis width string def /kis width string def /cf currentfile def width height 8 [width 0 0 height neg 0 height] { cf is readhexstring pop cf mis readhexstring pop cf yis readhexstring pop cf kis readhexstring pop width cgray} image bitmapsave restore grestore } bind def /BITMAPGRAY { % iw, ih, width, height, theta, x y 8 {fakecolorsetup} COMMONBITMAP } bind def /BITMAPGRAYc { % iw, ih, width, height, theta, x y 8 {fakecolorsetup} COMMONBITMAPc } bind def /ENDBITMAP { } bind def end % of FrameDict definitions % OPI stuff /ALDmatrix matrix def ALDmatrix currentmatrix pop /StartALD { /ALDsave save def savematrix ALDmatrix setmatrix } bind def /InALD { restorematrix } bind def /DoneALD { ALDsave restore } bind def % Dashed lines stuff /I { setdash } bind def /J { [] 0 setdash } bind def %%EndProlog %%BeginSetup (5.0) FMVERSION 1 1 0 0 612 792 0 1 18 FMDOCUMENT 0 0 /Times-Roman FMFONTDEFINE 1 0 /Times-Bold FMFONTDEFINE 2 0 /Times-Italic FMFONTDEFINE 3 1 /Symbol FMFONTDEFINE 32 FMFILLS 0 0 FMFILL 1 0.1 FMFILL 2 0.3 FMFILL 3 0.5 FMFILL 4 0.7 FMFILL 5 0.9 FMFILL 6 0.97 FMFILL 7 1 FMFILL 8 <0f1e3c78f0e1c387> FMFILL 9 <0f87c3e1f0783c1e> FMFILL 10 FMFILL 11 FMFILL 12 <8142241818244281> FMFILL 13 <03060c183060c081> FMFILL 14 <8040201008040201> FMFILL 16 1 FMFILL 17 0.9 FMFILL 18 0.7 FMFILL 19 0.5 FMFILL 20 0.3 FMFILL 21 0.1 FMFILL 22 0.03 FMFILL 23 0 FMFILL 24 FMFILL 25 FMFILL 26 <3333333333333333> FMFILL 27 <0000ffff0000ffff> FMFILL 28 <7ebddbe7e7dbbd7e> FMFILL 29 FMFILL 30 <7fbfdfeff7fbfdfe> FMFILL %%EndSetup %%Page: "1" 1 %%BeginPaperSize: Letter %%EndPaperSize 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K J 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 10 Q 0 X 0 0 0 1 0 0 0 K (1 of 22) 291.83 36.66 T 0 16 Q (Ef) 122.98 721.83 T (fect of the Pref) 137.68 721.83 T (abricated Routing T) 233.04 721.83 T (rack Distrib) 360.46 721.83 T (ution on) 436.13 721.83 T ( FPGA Area-Ef) 227.58 705.83 T (\336cienc) 327.6 705.83 T (y) 370.02 705.83 T 0 12.8 Q (1) 378.02 712.23 T 0 12 Q (V) 228.68 676.5 T (aughn Betz and Jonathan Rose) 236.01 676.5 T (Department of Electrical and Computer Engineering, Uni) 125.25 662.5 T (v) 400.57 662.5 T (ersity of T) 406.39 662.5 T (oronto) 455.42 662.5 T (T) 215.32 648.5 T (oronto, Ontario, Canada) 221.69 648.5 T (M5S 3G4) 349.67 648.5 T ({v) 222.55 634.5 T (aughn, jayar}@eecg.utoronto.ca) 234.01 634.5 T 1 F (Abstract) 283.67 606.5 T 2 11 Q -0.25 (In most commer) 108 585.17 P -0.25 (cial F) 177.97 585.17 P -0.25 (ield-Pr) 203.2 585.17 P -0.25 (o) 233.87 585.17 P -0.25 (gr) 239.26 585.17 P -0.25 (ammable Gate Arr) 248.88 585.17 P -0.25 (ays \050FPGAs\051 the number of wiring tr) 330.71 585.17 P -0.25 (ac) 491.61 585.17 P -0.25 (ks in) 501.77 585.17 P 0.82 (eac) 90 571.17 P 0.82 (h c) 105.1 571.17 P 0.82 (hannel is the same acr) 118.9 571.17 P 0.82 (oss the entir) 220.69 571.17 P 0.82 (e c) 275.71 571.17 P 0.82 (hip. A long-standing open question for both FPGAs) 288.89 571.17 P -0.09 (and c) 90 557.17 P -0.09 (hannelled gate arr) 113.88 557.17 P -0.09 (ays is whether or not some une) 195.43 557.17 P -0.09 (ven distrib) 331 557.17 P -0.09 (ution of r) 377.45 557.17 P -0.09 (outing tr) 417.73 557.17 P -0.09 (ac) 455.68 557.17 P -0.09 (ks acr) 465.84 557.17 P -0.09 (oss the) 491.84 557.17 P 1.2 (c) 90 543.17 P 1.2 (hip would lead to an ar) 94.72 543.17 P 1.2 (ea bene\336t. F) 203.29 543.17 P 1.2 (or e) 259.21 543.17 P 1.2 (xample) 277.6 543.17 P 1.2 (, many cir) 309.26 543.17 P 1.2 (cuit designer) 355.55 543.17 P 1.2 (s intuitively belie) 413.77 543.17 P 1.2 (ve that) 491.17 543.17 P 1.5 (most cong) 90 529.17 P 1.5 (estion occur) 136.3 529.17 P 1.5 (s near the center of a c) 191.77 529.17 P 1.5 (hip, and hence e) 301.41 529.17 P 1.5 (xpect that having wider r) 377.78 529.17 P 1.5 (outing) 493.88 529.17 P (c) 90 515.17 T (hannels near the c) 94.72 515.17 T (hip center would be bene\336cial.) 175.51 515.17 T 0.17 (In this paper we determine the r) 108 501.17 P 0.17 (elative ar) 249.78 501.17 P 0.17 (ea-ef) 291.4 501.17 P 0.17 (\336ciency of se) 313.19 501.17 P 0.17 (ver) 370.18 501.17 P 0.17 (al dif) 384.06 501.17 P 0.17 (fer) 406.96 501.17 P 0.17 (ent r) 418.78 501.17 P 0.17 (outing tr) 438.92 501.17 P 0.17 (ac) 477.14 501.17 P 0.17 (k distri-) 487.3 501.17 P 1.32 (b) 90 487.17 P 1.32 (utions. W) 95.28 487.17 P 1.32 (e \336r) 137.14 487.17 P 1.32 (st in) 155.76 487.17 P 1.32 (vestigate FPGAs in whic) 175.29 487.17 P 1.32 (h horizontal and vertical c) 288.15 487.17 P 1.32 (hannels contain dif) 409.97 487.17 P 1.32 (fer) 496.74 487.17 P 1.32 (ent) 508.56 487.17 P 0.86 (number) 90 473.17 P 0.86 (s of tr) 123.5 473.17 P 0.86 (ac) 150.71 473.17 P 0.86 (ks in or) 160.88 473.17 P 0.86 (der to determine if suc) 195.18 473.17 P 0.86 (h a dir) 297.42 473.17 P 0.86 (ectional bias pr) 328.06 473.17 P 0.86 (o) 398.34 473.17 P 0.86 (vides a density advanta) 403.73 473.17 P 0.86 (g) 509.14 473.17 P 0.86 (e) 514.53 473.17 P 0.86 (.) 519.25 473.17 P 0.52 (Secondly) 90 459.17 P 0.52 (, we e) 129.1 459.17 P 0.52 (xamine r) 155.28 459.17 P 0.52 (outing tr) 194.11 459.17 P 0.52 (ac) 232.67 459.17 P 0.52 (k distrib) 242.83 459.17 P 0.52 (utions in whic) 279.5 459.17 P 0.52 (h the tr) 342.11 459.17 P 0.52 (ac) 374.77 459.17 P 0.52 (k capacities vary fr) 384.93 459.17 P 0.52 (om c) 470.62 459.17 P 0.52 (hannel) 492.06 459.17 P -0.15 (to c) 90 445.17 P -0.15 (hannel. W) 105.87 445.17 P -0.15 (e compar) 149.31 445.17 P -0.15 (e the ar) 189.99 445.17 P -0.15 (ea-ef) 222.88 445.17 P -0.15 (\336ciency of these non-uniform r) 244.67 445.17 P -0.15 (outing ar) 378.6 445.17 P -0.15 (c) 418.69 445.17 P -0.15 (hitectur) 423.4 445.17 P -0.15 (es to that of an) 457.22 445.17 P (FPGA with uniform c) 90 431.17 T (hannel capacities acr) 184.86 431.17 T (oss the entir) 279.08 431.17 T (e c) 332.45 431.17 T (hip.) 344.8 431.17 T 0.41 (The main r) 108 417.17 P 0.41 (esult is that the most ar) 156.7 417.17 P 0.41 (ea-ef) 261.35 417.17 P 0.41 (\336cient global r) 283.14 417.17 P 0.41 (outing ar) 348.26 417.17 P 0.41 (c) 388.91 417.17 P 0.41 (hitectur) 393.63 417.17 P 0.41 (e is one with uniform) 427.44 417.17 P -0.02 (\050or very nearly uniform\051 c) 90 403.17 P -0.02 (hannel capacities acr) 204.61 403.17 P -0.02 (oss the entir) 298.79 403.17 P -0.02 (e c) 352.12 403.17 P -0.02 (hip in both the horizontal and verti-) 364.45 403.17 P 0.3 (cal dir) 90 389.17 P 0.3 (ections. This paper shows why this r) 118.92 389.17 P 0.3 (esult, whic) 280.11 389.17 P 0.3 (h is contr) 327.3 389.17 P 0.3 (ary to the intuition of many FPGA) 369.28 389.17 P 0.05 (ar) 90 375.17 P 0.05 (c) 99.37 375.17 P 0.05 (hitects, is true) 104.09 375.17 P 0.05 (. While a uniform r) 166.06 375.17 P 0.05 (outing ar) 249.8 375.17 P 0.05 (c) 290.09 375.17 P 0.05 (hitectur) 294.81 375.17 P 0.05 (e is the most ar) 328.62 375.17 P 0.05 (ea-ef) 395.65 375.17 P 0.05 (\336cient, se) 417.44 375.17 P 0.05 (ver) 458.87 375.17 P 0.05 (al non-uni-) 472.76 375.17 P 2.32 (form and dir) 90 361.17 P 2.32 (ectionally-biased ar) 149.85 361.17 P 2.32 (c) 240.06 361.17 P 2.32 (hitectur) 244.78 361.17 P 2.32 (es ar) 278.59 361.17 P 2.32 (e fairly ar) 302.2 361.17 P 2.32 (ea-ef) 350.43 361.17 P 2.32 (\336cient pr) 372.23 361.17 P 2.32 (o) 413.46 361.17 P 2.32 (vided that appr) 418.85 361.17 P 2.32 (opriate) 490.22 361.17 P (c) 90 347.17 T (hoices ar) 94.72 347.17 T (e made for the pin positions on the lo) 134.95 347.17 T (gic bloc) 298.61 347.17 T (ks and the lo) 333.53 347.17 T (gic bloc) 389.33 347.17 T (k arr) 424.25 347.17 T (ay aspect r) 445.77 347.17 T (atio.) 493.88 347.17 T 1 14 Q (1) 72 321.17 T (Intr) 90 321.17 T (oduction) 113.86 321.17 T 0 11 Q 1.89 (Field-Programmable Gate Arrays \050FPGAs\051 ha) 90 299.17 P 1.89 (v) 300.19 299.17 P 1.89 (e seen e) 305.52 299.17 P 1.89 (xplosi) 343.95 299.17 P 1.89 (v) 370.57 299.17 P 1.89 (e mark) 375.9 299.17 P 1.89 (et gro) 407.92 299.17 P 1.89 (wth because the) 434.89 299.17 P 1.89 (y of) 508.76 299.17 P 1.89 (fer) 527.79 299.17 P 2.3 (instant manuf) 72 280.17 P 2.3 (acturing and much lo) 134.38 280.17 P 2.3 (wer non-recurring engineering costs than Mask-Programmed Gate) 234.18 280.17 P 1.81 (Arrays. FPGAs enable f) 72 261.17 P 1.81 (ast manuf) 183.01 261.17 P 1.81 (acturing and lo) 227.79 261.17 P 1.81 (w de) 297.12 261.17 P 1.81 (v) 319.73 261.17 P 1.81 (elopment costs because their logic and routing) 325.07 261.17 P 0.03 (resources are pref) 72 242.17 P 0.03 (abricated and the user implements a circuit by programming the appropriate connections) 150.13 242.17 P (between these pref) 72 223.17 T (abricated resources [1].) 154.36 223.17 T -0.05 (The pref) 90 204.17 P -0.05 (abrication of routing resources implies that the number of routing tracks in each channel is set) 127.4 204.17 P 0.75 (by the FPGA manuf) 72 185.17 P 0.75 (acturer) 163.06 185.17 P 0.75 (. These routing resources should be distrib) 192.99 185.17 P 0.75 (uted in a manner that permits their) 383.95 185.17 P 0.17 (ef) 72 166.17 P 0.17 (\336cient utilization by the lar) 80.27 166.17 P 0.17 (gest class of circuits. If there are too fe) 199.93 166.17 P 0.17 (w tracks in some area of the chip then) 371.81 166.17 P 0.81 (man) 72 147.17 P 0.81 (y circuits will be unroutable, while if there are too man) 90.78 147.17 P 0.81 (y tracks, the) 341.02 147.17 P 0.81 (y may be w) 395.95 147.17 P 0.81 (asted. The relati) 449.3 147.17 P 0.81 (v) 521.22 147.17 P 0.81 (ely) 526.56 147.17 P (lo) 72 128.17 T (w density of FPGAs mak) 80.28 128.17 T (es an area-ef) 191.39 128.17 T (\336cient distrib) 246.69 128.17 T (ution of routing tracks essential.) 304.84 128.17 T 0.4 (W) 90 109.17 P 0.4 (e call the distrib) 99.5 109.17 P 0.4 (ution of routing tracks to the dif) 171.06 109.17 P 0.4 (ferent channels within an FPGA the) 313.73 109.17 P 2 F 0.4 (global r) 476.83 109.17 P 0.4 (outing) 511.88 109.17 P 72 93.33 540 101.48 C 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 71.67 98.48 225 98.48 2 L 0.5 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 0 612 792 C 0 10 Q 0 X 0 0 0 1 0 0 0 K 0.51 (1. This w) 72 86.67 P 0.51 (ork w) 110.42 86.67 P 0.51 (as supported by the Information T) 133.88 86.67 P 0.51 (echnology Centre of Excellence of Ontario, the W) 272.1 86.67 P 0.51 (alter C. Sumner) 475.93 86.67 P (F) 72 72.67 T (oundation, and the Natural Sciences and Engineering Research Council of Canada.) 77.41 72.67 T FMENDPAGE %%EndPage: "1" 1 %%Page: "2" 2 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 10 Q 0 X 0 0 0 1 0 0 0 K (2 of 22) 291.83 36.66 T 2 11 Q 0.08 (ar) 72 712.67 P 0.08 (c) 81.37 712.67 P 0.08 (hitectur) 86.09 712.67 P 0.08 (e) 119.9 712.67 P 0 F 0.08 ( of the FPGA. This paper addresses tw) 124.79 712.67 P 0.08 (o fundamental questions concerning FPGA global rout-) 295.1 712.67 P 0.32 (ing architectures. First, should the number of tracks in the horizontal channels be dif) 72 693.67 P 0.32 (ferent from the num-) 447.09 693.67 P 0.9 (ber in the v) 72 674.67 P 0.9 (ertical channels? Fig. 1\050a\051 depicts an FPGA with such a) 124.32 674.67 P 2 F 0.9 (dir) 381.05 674.67 P 0.9 (ectional bias) 393.48 674.67 P 0 F 0.9 (. In essence, we are) 450.9 674.67 P 0.12 (in) 72 655.67 P 0.12 (v) 80.12 655.67 P 0.12 (estig) 85.45 655.67 P 0.12 (ating if there is an intrinsic property of circuits that mak) 106.18 655.67 P 0.12 (es a directional bias more area-ef) 353.53 655.67 P 0.12 (\336cient. If) 499.55 655.67 P 0.23 (so, what amount of bias is best? Commercial FPGAs with both unbiased routing [2, 3] and biased routing) 72 636.67 P ([4, 5] e) 72 617.67 T (xist, so this question has commercial rele) 103.29 617.67 T (v) 284.2 617.67 T (ance.) 289.43 617.67 T 1.14 (Second, should all routing channels in the same direction in an FPGA contain the same number of) 90 598.67 P 0.26 (tracks or is a) 72 579.67 P 2 F 0.26 (non-uniform) 131.71 579.67 P 0 F 0.26 (routing architecture, in which some channels are wider than others, preferable?) 189.73 579.67 P 1.27 (An e) 72 560.67 P 1.27 (xample FPGA with a non-uniform routing architecture is sho) 94.19 560.67 P 1.27 (wn in Fig. 1\050b\051.) 372.97 560.67 P 0 8.8 Q 1.02 (2) 445.55 565.07 P 0 11 Q 1.27 ( Intuiti) 449.95 560.67 P 1.27 (v) 480.59 560.67 P 1.27 (ely) 485.93 560.67 P 1.27 (, such an) 498.65 560.67 P 1.11 (architecture may f) 72 541.67 P 1.11 (acilitate routing in congested re) 154.13 541.67 P 1.11 (gions. Ho) 297.08 541.67 P 1.11 (we) 340.69 541.67 P 1.11 (v) 353.24 541.67 P 1.11 (er) 358.58 541.67 P 1.11 (, if the wider channels cannot be used) 366.69 541.67 P -0.17 (ef) 72 522.67 P -0.17 (\336ciently the) 80.27 522.67 P -0.17 (y will w) 132.18 522.67 P -0.17 (aste area. Man) 167.79 522.67 P -0.17 (y in the FPGA community belie) 231.11 522.67 P -0.17 (v) 370.84 522.67 P -0.17 (e that most routing congestion occurs) 376.18 522.67 P 0.69 (near the center of an FPGA, and therefore e) 72 503.67 P 0.69 (xpect that wider channels in this re) 269.49 503.67 P 0.69 (gion w) 426.83 503.67 P 0.69 (ould be bene\336cial.) 457.66 503.67 P 1.08 (The Lucent T) 72 484.67 P 1.08 (echnologies ORCA 2C FPGAs emplo) 133.27 484.67 P 1.08 (y a non-uniform routing architecture of this type, in) 304.33 484.67 P -0.21 (which the center channel is wider than the others [6]. On the other hand, board-le) 72 465.67 P -0.21 (v) 426.23 465.67 P -0.21 (el constraints often force) 431.57 465.67 P 0.7 (designers to \336x the position of an FPGA) 72 446.67 P 0.7 (\325) 253.24 446.67 P 0.7 (s I/Os, and some belie) 256.3 446.67 P 0.7 (v) 356.3 446.67 P 0.7 (e that this increases congestion near the) 361.64 446.67 P 0.34 (chip edges, and therefore the channel between the pads and the logic block array should be widened. The) 72 427.67 P 0.44 (Xilinx 4000 and 5000 series FPGAs ha) 72 408.67 P 0.44 (v) 246.77 408.67 P 0.44 (e a wide channel between the pads and logic, at least partially to) 252.1 408.67 P -0.12 (impro) 72 389.67 P -0.12 (v) 98.11 389.67 P -0.12 (e routability when the I/O locations are \336x) 103.45 389.67 P -0.12 (ed [7, 8]. In this paper) 289.15 389.67 P -0.12 (, we determine the best distrib) 385.58 389.67 P -0.12 (ution) 517.38 389.67 P 0.22 (of tracks across an FPGA both when the I/O assignment to pads is unconstrained and when it is \336x) 72 370.67 P 0.22 (ed in a) 510.24 370.67 P (poor con\336guration.) 72 351.67 T 72 114 540 122.14 C 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 71.67 119.14 225 119.14 2 L 0.5 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 0 612 792 C 0 10 Q 0 X 0 0 0 1 0 0 0 K 0.51 (2. Note that an) 72 107.33 P 0.51 (y gi) 132.27 107.33 P 0.51 (v) 147.82 107.33 P 0.51 (en channel will al) 152.67 107.33 P 0.51 (w) 224.93 107.33 P 0.51 (ays ha) 232.05 107.33 P 0.51 (v) 257.64 107.33 P 0.51 (e the same number of tracks along its entire length. W) 262.49 107.33 P 0.51 (e did not con-) 483.18 107.33 P (sider v) 72 93.33 T (arying the channel capacity along its length as this mak) 98.69 93.33 T (es it v) 319.95 93.33 T (ery dif) 343.7 93.33 T (\336cult, and lik) 369.83 93.33 T (ely impractical, to lay out the) 422.79 93.33 T (FPGA.) 72 79.33 T 72 72 540 720 C 88.47 122.14 523.53 346.29 C 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 193.79 150.57 215 161.44 R 7 X 0 0 0 1 0 0 0 K V 0 10 Q 0 X (\050a\051) 198.84 154.77 T 391.46 150.55 408.43 162.14 R 7 X V 0 X (\050b\051) 394.12 155.47 T 93.72 128.52 517.32 141.31 R 7 X V 0 11 Q 0 X (Fig. 1. Global routing architectures: \050a\051 directionally-biased and \050b\051 non-uniform.) 125.12 133.98 T 182.41 328.88 228.76 338.76 R 7 X V 0 10 Q 0 X (2 T) 188.4 332.09 T (racks) 201.66 332.09 T 265 306.94 316.18 315.39 R 7 X V 0 X (4 T) 273.41 308.72 T (racks) 286.67 308.72 T 440.37 170.71 455.66 186 R 4 X V 0.5 H 0 Z 0 X N 385.58 170.77 400.87 186.07 R 4 X V 0 X N 355.12 170.71 370.41 186 R 4 X V 0 X N 440.17 195.2 455.47 210.49 R 4 X V 0 X N 385.38 195.27 400.67 210.56 R 4 X V 0 X N 354.92 195.2 370.21 210.49 R 4 X V 0 X N 440.17 256.06 455.47 271.35 R 4 X V 0 X N 385.38 256.12 400.67 271.41 R 4 X V 0 X N 354.92 256.06 370.21 271.35 R 4 X V 0 X N 437.07 295.66 437.07 170.72 2 L 4 X V 2 Z 0 X N 434.02 295.66 434.02 170.72 2 L 4 X V 0 X N 382.53 170.37 382.53 295.66 2 L 4 X V 0 X N 379.49 170.37 379.49 295.66 2 L 4 X V 0 X N 376.44 170.37 376.44 295.66 2 L 4 X V 0 X N 373.39 170.37 373.39 295.66 2 L 4 X V 0 X N 455.75 189.11 330.82 189.11 2 L 4 X V 0 X N 455.75 192.16 330.82 192.16 2 L 4 X V 0 X N 455.75 243.88 330.82 243.88 2 L 4 X V 0 X N 455.75 246.92 330.82 246.92 2 L 4 X V 0 X N 455.75 249.97 330.82 249.97 2 L 4 X V 0 X N 455.75 253.01 330.82 253.01 2 L 4 X V 0 X N 440.24 280.43 455.53 295.72 R 4 X V 0 Z 0 X N 385.44 280.49 400.73 295.78 R 4 X V 0 X N 354.98 280.43 370.27 295.72 R 4 X V 0 X N 455.75 274.34 330.82 274.34 2 L 4 X V 2 Z 0 X N 455.75 277.38 330.82 277.38 2 L 4 X V 0 X N 330.76 170.71 346.05 186 R 4 X V 0 Z 0 X N 330.55 195.2 345.85 210.49 R 4 X V 0 X N 330.55 256.06 345.85 271.35 R 4 X V 0 X N 352.14 170.72 352.14 295.66 2 L 4 X V 2 Z 0 X N 349.09 170.72 349.09 295.66 2 L 4 X V 0 X N 330.62 280.43 345.91 295.72 R 4 X V 0 Z 0 X N 362.22 320.34 410.4 328.9 R 7 X V 0 X (4 T) 369.13 322.23 T (racks) 382.39 322.23 T 442.12 314.39 488.89 324.3 R 7 X V 0 X (2 T) 448.32 317.64 T (racks) 461.58 317.64 T 440.29 225.43 455.58 240.72 R 4 X V 0 X N 385.49 225.49 400.78 240.78 R 4 X V 0 X N 355.04 225.43 370.33 240.72 R 4 X V 0 X N 330.67 225.43 345.96 240.72 R 4 X V 0 X N 455.75 213.71 330.82 213.71 2 L 4 X V 2 Z 0 X N 455.75 216.76 330.82 216.76 2 L 4 X V 0 X N 455.75 219.8 330.82 219.8 2 L 4 X V 0 X N 455.75 222.85 330.82 222.85 2 L 4 X V 0 X N 415.74 170.77 431.04 186.07 R 4 X V 0 Z 0 X N 415.55 195.27 430.84 210.56 R 4 X V 0 X N 415.55 256.12 430.84 271.41 R 4 X V 0 X N 412.7 170.37 412.7 295.66 2 L 4 X V 2 Z 0 X N 409.65 170.37 409.65 295.66 2 L 4 X V 0 X N 406.61 170.37 406.61 295.66 2 L 4 X V 0 X N 403.56 170.37 403.56 295.66 2 L 4 X V 0 X N 415.61 280.49 430.9 295.78 R 4 X V 0 Z 0 X N 415.66 225.49 430.95 240.78 R 4 X V 0 X N 401.2 305.92 402.98 307.57 406.96 299.73 399.42 304.27 4 Y N 401.2 305.92 402.98 307.57 406.96 299.73 399.42 304.27 4 Y V 401.03 306.1 389.53 318.48 2 L N 380.59 307.75 382.85 306.85 377.45 299.9 378.34 308.65 4 Y N 380.59 307.75 382.85 306.85 377.45 299.9 378.34 308.65 4 Y V 380.69 307.99 384.89 318.48 2 L N 445.63 303.31 446.83 301.2 438.29 299.11 444.43 305.42 4 Y N 445.63 303.31 446.83 301.2 438.29 299.11 444.43 305.42 4 Y V 445.85 303.43 460.83 312 2 L N 144.04 293.71 159.33 309 R 4 X V 0 X N 144.04 263.06 159.33 278.35 R 4 X V 0 X N 165.54 169.87 165.54 309.22 2 L 4 X V 2 Z 0 X N 162.49 169.87 162.49 309.22 2 L 4 X V 0 X N 259.39 281.5 144.19 281.5 2 L 4 X V 0 X N 259.39 284.55 144.19 284.55 2 L 4 X V 0 X N 259.39 287.6 144.19 287.6 2 L 4 X V 0 X N 259.39 290.64 144.19 290.64 2 L 4 X V 0 X N 144.04 232.08 159.33 247.38 R 4 X V 0 Z 0 X N 259.06 250.53 144.19 250.53 2 L 4 X V 2 Z 0 X N 259.06 253.58 144.19 253.58 2 L 4 X V 0 X N 259.06 256.62 144.19 256.62 2 L 4 X V 0 X N 259.06 259.67 144.19 259.67 2 L 4 X V 0 X N 144.04 201.11 159.33 216.4 R 4 X V 0 Z 0 X N 258.28 219.56 144.19 219.56 2 L 4 X V 2 Z 0 X N 258.28 222.6 144.19 222.6 2 L 4 X V 0 X N 258.28 225.65 144.19 225.65 2 L 4 X V 0 X N 258.28 228.7 144.19 228.7 2 L 4 X V 0 X N 144.04 170.14 159.33 185.43 R 4 X V 0 Z 0 X N 258.28 188.58 144.19 188.58 2 L 4 X V 2 Z 0 X N 258.28 191.63 144.19 191.63 2 L 4 X V 0 X N 258.28 194.67 144.19 194.67 2 L 4 X V 0 X N 258.28 197.72 144.19 197.72 2 L 4 X V 0 X N 169.05 293.71 184.35 309 R 4 X V 0 Z 0 X N 169.05 263.06 184.35 278.35 R 4 X V 0 X N 190.55 169.87 190.55 309.22 2 L 4 X V 2 Z 0 X N 187.5 169.87 187.5 309.22 2 L 4 X V 0 X N 169.05 232.08 184.35 247.38 R 4 X V 0 Z 0 X N 169.05 201.11 184.35 216.4 R 4 X V 0 X N 169.05 170.14 184.35 185.43 R 4 X V 0 X N 194.07 293.71 209.36 309 R 4 X V 0 X N 194.07 263.06 209.36 278.35 R 4 X V 0 X N 215.56 169.87 215.56 309.22 2 L 4 X V 2 Z 0 X N 212.52 169.87 212.52 309.22 2 L 4 X V 0 X N 194.07 232.08 209.36 247.38 R 4 X V 0 Z 0 X N 194.07 201.11 209.36 216.4 R 4 X V 0 X N 194.07 170.14 209.36 185.43 R 4 X V 0 X N 219.08 293.71 234.37 309 R 4 X V 0 X N 219.08 263.06 234.37 278.35 R 4 X V 0 X N 240.57 169.87 240.57 309.22 2 L 4 X V 2 Z 0 X N 237.53 169.87 237.53 309.22 2 L 4 X V 0 X N 219.08 232.08 234.37 247.38 R 4 X V 0 Z 0 X N 219.08 201.11 234.37 216.4 R 4 X V 0 X N 219.08 170.14 234.37 185.43 R 4 X V 0 X N 244.09 293.71 259.38 309 R 4 X V 0 X N 244.09 263.06 259.38 278.35 R 4 X V 0 X N 244.09 232.08 259.38 247.38 R 4 X V 0 X N 244.09 201.11 259.38 216.4 R 4 X V 0 X N 244.09 170.14 259.38 185.43 R 4 X V 0 X N 194.5 319.12 196.49 317.74 189.68 312.17 192.5 320.5 4 Y N 194.5 319.12 196.49 317.74 189.68 312.17 192.5 320.5 4 Y V 194.64 319.33 202.02 330 2 L N 211.54 320.58 213.73 321.63 215.2 312.96 209.36 319.53 4 Y N 211.54 320.58 213.73 321.63 215.2 312.96 209.36 319.53 4 Y V 211.44 320.81 207.02 330 2 L N 270.05 292.69 271.68 290.89 263.77 287.03 268.43 294.49 4 Y N 270.05 292.69 271.68 290.89 263.77 287.03 268.43 294.49 4 Y V 270.24 292.86 284.52 305.71 2 L N 266.62 261.92 268.78 260.82 262.79 254.38 264.45 263.02 4 Y N 266.62 261.92 268.78 260.82 262.79 254.38 264.45 263.02 4 Y V 288.1 304.28 266.73 262.14 2 L N 460.71 286.89 463.05 286.27 458.56 278.71 458.36 287.5 4 Y N 460.71 286.89 463.05 286.27 458.56 278.71 458.36 287.5 4 Y V 467.5 312.83 460.77 287.13 2 L N 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 72 72 540 720 C 0 0 612 792 C FMENDPAGE %%EndPage: "2" 2 %%Page: "3" 3 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 10 Q 0 X 0 0 0 1 0 0 0 K (3 of 22) 291.83 36.66 T 0 11 Q 2.87 (W) 90 712.67 P 2.87 (e e) 99.5 712.67 P 2.87 (v) 114.62 712.67 P 2.87 (aluate FPGA architectures e) 119.84 712.67 P 2.87 (xperimentally; benchmark circuits are placed and routed into) 252 712.67 P -0.06 (FPGAs with dif) 72 693.67 P -0.06 (ferent global routing architectures to determine the relati) 141.29 693.67 P -0.06 (v) 389.59 693.67 P -0.06 (e area consumed by the circuit in) 394.93 693.67 P 0.24 (each architecture. T) 72 674.67 P 0.24 (o obtain meaningful results, the CAD tools used to place and route these circuits must) 158.65 674.67 P -0.2 (tak) 72 655.67 P -0.2 (e adv) 85.33 655.67 P -0.2 (antage of the biased and non-uniform nature of these architectures. Accordingly) 108.37 655.67 P -0.2 (, we ha) 457.22 655.67 P -0.2 (v) 488.05 655.67 P -0.2 (e created a) 493.38 655.67 P 1.49 (ne) 72 636.67 P 1.49 (w placement and routing tool which aggressi) 82.11 636.67 P 1.49 (v) 288.12 636.67 P 1.49 (ely seeks to minimize congestion and fully utilize the) 293.45 636.67 P (channels of the speci\336ed architecture during both placement and global routing.) 72 617.67 T 0.99 (The or) 90 598.67 P 0.99 (g) 119.81 598.67 P 0.99 (anization of this paper is as follo) 125.25 598.67 P 0.99 (ws. Section 2 outlines the e) 274.49 598.67 P 0.99 (xperimental frame) 399.65 598.67 P 0.99 (w) 481.31 598.67 P 0.99 (ork used to) 489.14 598.67 P 1.33 (e) 72 579.67 P 1.33 (v) 76.61 579.67 P 1.33 (aluate the dif) 81.83 579.67 P 1.33 (ferent FPGA architectures. Section 3 describes the custom placement and routing CAD) 141.65 579.67 P 0.22 (tools. W) 72 560.67 P 0.22 (e e) 108.62 560.67 P 0.22 (v) 121.09 560.67 P 0.22 (aluate the area-ef) 126.31 560.67 P 0.22 (\336cienc) 202.22 560.67 P 0.22 (y of FPGAs with dif) 231.38 560.67 P 0.22 (fering amounts of directional routing bias in Sec-) 321.83 560.67 P 0.31 (tion 4. In Section 5 we address the uniform vs. non-uniform channel thickness question. Finally) 72 541.67 P 0.31 (, we sum-) 496.31 541.67 P 2.51 (marize our results and conclusions. An earlier and less detailed e) 72 522.67 P 2.51 (xamination of man) 381.9 522.67 P 2.51 (y of the issues) 469.85 522.67 P (discussed in this paper appeared in [9].) 72 503.67 T 1 14 Q (2) 72 472.67 T (Experimental Methodology) 90 472.67 T 0 11 Q 0.29 (T) 90 450.67 P 0.29 (o compare the area-ef) 95.84 450.67 P 0.29 (\336cienc) 192.02 450.67 P 0.29 (y of the dif) 221.19 450.67 P 0.29 (ferent global routing architectures we technology-map, place) 270.36 450.67 P 1.86 (and route 26 of the lar) 72 431.67 P 1.86 (gest MCNC benchmark circuits [10] into each architecture. In this section we) 178.57 431.67 P 1.25 (describe the CAD \337o) 72 412.67 P 1.25 (w) 168.65 412.67 P 1.25 (, the area-ef) 175.88 412.67 P 1.25 (\336cienc) 230.32 412.67 P 1.25 (y metric used to compare architectures, and se) 259.48 412.67 P 1.25 (v) 471.4 412.67 P 1.25 (eral important) 476.73 412.67 P (architectural details.) 72 393.67 T 1 12 Q (2.1) 72 364 T (CAD Flo) 90 364 T (w) 135.54 364 T 0 11 Q 1.22 ( Fig. 2 summarizes the CAD \337o) 90 342.67 P 1.22 (w) 237.31 342.67 P 1.22 (. First, SIS [11] is used to perform technology-independent logic) 244.54 342.67 P 0.06 (optimization on a circuit. Ne) 72 323.67 P 0.06 (xt this circuit is technology-mapped by Flo) 198.27 323.67 P 0.06 (wmap [12] into four) 387.82 323.67 P 0.06 (-input look-up) 476.69 323.67 P -0.05 (tables \0504-LUTs\051 and \337ip \337ops. The logic block used in these e) 72 304.67 P -0.05 (xperiments contains a 4-LUT and a \337ip-\337op,) 343.84 304.67 P 1 (as illustrated in Fig. 3. A custom-b) 72 285.67 P 1 (uilt program \050blifmap\051 packs the 4-LUTs and \337ip \337ops together into) 230.57 285.67 P (these logic blocks.) 72 266.67 T -0.04 (The netlist of logic blocks and a description of the FPGA global routing architecture are then read into) 90 247.67 P 0.86 (our placement and global routing tool, v) 72 228.67 P 0.86 (ersatile place and route \050VPR\051. This program places the circuit,) 253.92 228.67 P 0.21 (and then repeatedly routes \050or attempts to route\051 the circuit with dif) 72 209.67 P 0.21 (ferent numbers of tracks in each chan-) 370.11 209.67 P 0.32 (nel \050) 72 190.67 P 2 F 0.32 (c) 92.17 190.67 P 0.32 (hannel capacities\051) 96.89 190.67 P 0 F 0.32 (. VPR performs a binary search on the channel capacities, increasing them after a) 178.17 190.67 P 1.82 (f) 72 171.67 P 1.82 (ailed routing and reducing them after a successful one, until it \336nds the minimum number of tracks) 75.55 171.67 P 1.15 (required for the circuit to route successfully on a gi) 72 152.67 P 1.15 (v) 307.25 152.67 P 1.15 (en global routing architecture. Note that while the) 312.58 152.67 P 0.03 (absolute number of tracks per channel is adjusted upw) 72 133.67 P 0.03 (ards or do) 311.05 133.67 P 0.03 (wnw) 354.83 133.67 P 0.03 (ards after each attempted routing, the) 376.1 133.67 P 2 F 0.13 (r) 72 114.67 P 0.13 (elative) 75.87 114.67 P 0 F 0.13 ( numbers of tracks in the v) 105.2 114.67 P 0.13 (arious channels across the FPGA are al) 223.01 114.67 P 0.13 (w) 395.96 114.67 P 0.13 (ays k) 403.79 114.67 P 0.13 (ept at the v) 426.73 114.67 P 0.13 (alues speci\336ed) 475.41 114.67 P 0.72 (by the FPGA architecture. F) 72 95.67 P 0.72 (or e) 199.05 95.67 P 0.72 (xample, VPR\325) 216.4 95.67 P 0.72 (s \336rst attempt at routing a circuit in an architecture with a) 279.45 95.67 P 0.1 (tw) 72 76.67 P 0.1 (o-to-one directional bias might assume horizontal channel capacities of twelv) 82.89 76.67 P 0.1 (e tracks and v) 424.29 76.67 P 0.1 (ertical chan-) 485.23 76.67 P FMENDPAGE %%EndPage: "3" 3 %%Page: "4" 4 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 10 Q 0 X 0 0 0 1 0 0 0 K (4 of 22) 291.83 36.66 T 0 11 Q -0.22 (nel capacities of six tracks. If this routing w) 72 338.1 P -0.22 (as successful, VPR w) 262.88 338.1 P -0.22 (ould ne) 356.8 338.1 P -0.22 (xt attempt to route the circuit in an) 389.11 338.1 P 0.42 (FPGA with horizontal channel capacities of six tracks and v) 72 319.1 P 0.42 (ertical channel capacities of three tracks, and) 339.86 319.1 P (so on until the minimum number of tracks required for routing is determined.) 72 300.1 T 1.94 (The benchmark circuits used in this study consist of 14 combinational and 12 sequential MCNC) 90 281.1 P (benchmark circuits [10], which v) 72 262.1 T (ary in size from 222 to 1878 of our logic blocks.) 217.44 262.1 T 1 12 Q (2.2) 72 232.43 T (Ar) 90 232.43 T (ea-Ef\336ciency Metric) 103.78 232.43 T 0 11 Q -0.05 (Our goal is to measure the area-ef) 90 211.1 P -0.05 (\336cienc) 238.46 211.1 P -0.05 (y of dif) 267.62 211.1 P -0.05 (ferent global routing architectures without reference to) 299.62 211.1 P 1.64 (the detailed routing architecture \050e.g. se) 72 192.1 P 1.64 (gmentation and switch block topology\051. At this le) 254.49 192.1 P 1.64 (v) 483.89 192.1 P 1.64 (el, it is the) 489.23 192.1 P 0.77 (amount of \322global wiring\323 that changes as we v) 72 173.1 P 0.77 (ary the architecture. A simple track count will not accu-) 287.46 173.1 P 0.32 (rately represent the wiring area of rectangular FPGAs, as the tracks in one direction are longer than those) 72 154.1 P -0.16 (in the other) 72 135.1 P -0.16 (. Accordingly) 121.19 135.1 P -0.16 (, we de\336ne a) 180.81 135.1 P 2 F -0.16 (tr) 238.53 135.1 P -0.16 (ac) 245.71 135.1 P -0.16 (k se) 255.87 135.1 P -0.16 (gment) 272.07 135.1 P 0 F -0.16 ( to be a pref) 298.96 135.1 P -0.16 (abricated wire that spans one logic block; a) 350.76 135.1 P 1.12 (channel of width W tracks that spans L logic blocks contains WL track se) 72 116.1 P 1.12 (gments. The total number of) 410.55 116.1 P 0.55 (track se) 72 97.1 P 0.55 (gments an FPGA must contain to globally route a circuit is a representati) 106.29 97.1 P 0.55 (v) 433.47 97.1 P 0.55 (e metric of the \322global) 438.8 97.1 P 0.38 (wiring\323 area. In order to a) 72 78.1 P 0.38 (v) 187.93 78.1 P 0.38 (erage the results from circuits of dif) 193.26 78.1 P 0.38 (fering sizes we use the a) 352.91 78.1 P 0.38 (v) 461.82 78.1 P 0.38 (erage number of) 467.15 78.1 P 72 72 540 720 C 0 0 0 1 0 0 0 K 143.17 446.51 468.83 720 C 0 0 0 1 0 0 0 K 0 10 Q 0 X 0 0 0 1 0 0 0 K (Adjust Channel) 366.53 551.64 T (W) 383.53 538.64 T (idths) 392.57 538.64 T (P) 206.32 634.29 T (ack FFs and LUTs into logic blocks \050Blifmap\051) 211.73 634.29 T 222.75 660.61 370.17 691.4 R 0.5 H 0 Z N (Logic Optimization \050SIS\051) 247.4 679.77 T (T) 232.32 666.77 T (echnology Mapping \050Flo) 237.73 666.77 T (wmap\051) 336.92 666.77 T 234.98 595 343.52 608.25 R N (Placement \050VPR\051) 254.01 598.87 T 233.66 561.09 346.01 575.81 R N (Global Routing \050VPR\051) 246.4 565.28 T 291.7 547.88 259.94 522.18 291.02 497.03 322.72 522.68 4 Y N 291.3 585.64 293.73 585.64 291.3 577.19 288.88 585.64 4 Y N 291.3 585.64 293.73 585.64 291.3 577.19 288.88 585.64 4 Y V 291.3 594.98 291.3 585.89 2 L N 292.19 556.42 294.61 556.42 292.19 547.96 289.77 556.42 4 Y N 292.19 556.42 294.61 556.42 292.19 547.96 289.77 556.42 4 Y V 292.19 561.11 292.19 556.67 2 L N 291.19 488.2 293.61 488.2 291.19 479.75 288.77 488.2 4 Y N 291.19 488.2 293.61 488.2 291.19 479.75 288.77 488.2 4 Y V 291.19 497.57 291.19 488.45 2 L N (No) 324.82 525.7 T (Y) 295.82 486.79 T (es) 302.04 486.79 T 191.13 629.41 409.44 645.11 R N 362.17 534.53 431.61 561.26 R N 401.91 525.53 399.49 525.53 401.91 533.99 404.34 525.53 4 Y N 401.91 525.53 399.49 525.53 401.91 533.99 404.34 525.53 4 Y V 321.95 522.53 401.91 522.53 401.91 525.28 3 L N 172.39 447.03 416.9 458.16 R 7 X V 0 11 Q 0 X (Fig. 2. Architecture e) 214.15 450.82 T (v) 310.41 450.82 T (aluation \337o) 315.63 450.82 T (w) 365.17 450.82 T (.) 372.39 450.82 T 291.25 654.61 293.68 654.61 291.25 646.16 288.83 654.61 4 Y N 291.25 654.61 293.68 654.61 291.25 646.16 288.83 654.61 4 Y V 291.25 660.48 291.25 654.86 2 L 7 X V 0 X N 0 10 Q (Record # T) 248.6 469.05 T (racks/T) 293.24 469.05 T (ile) 322.89 469.05 T (Min #) 280.28 527.45 T (T) 277.24 514.32 T (racks?) 283 514.32 T 355.03 567.65 355.03 565.23 346.58 567.65 355.03 570.08 4 Y N 355.03 567.65 355.03 565.23 346.58 567.65 355.03 570.08 4 Y V 401.27 560.93 401.27 567.65 355.28 567.65 3 L N 291.3 617.91 293.73 617.91 291.3 609.46 288.88 617.91 4 Y N 291.3 617.91 293.73 617.91 291.3 609.46 288.88 617.91 4 Y V 291.3 629.65 291.3 618.16 2 L N (Circuit) 274.71 711.72 T 290.92 700.7 293.34 700.7 290.92 692.24 288.49 700.7 4 Y N 290.92 700.7 293.34 700.7 290.92 692.24 288.49 700.7 4 Y V 290.92 709.28 290.92 700.95 2 L N 226.03 602.49 226.04 604.92 234.49 602.49 226.04 600.07 4 Y N 226.03 602.49 226.04 604.92 234.49 602.49 226.04 600.07 4 Y V 218.64 602.49 225.79 602.49 2 L N 225.42 569.08 225.42 571.5 233.88 569.08 225.42 566.65 4 Y N 225.42 569.08 225.42 571.5 233.88 569.08 225.42 566.65 4 Y V 219.01 602.59 219.01 569.08 225.17 569.08 3 L N (Global) 170.2 593.65 T ( Routing) 166.45 580.65 T ( Architecture) 157.57 567.65 T 205.42 583.84 218.64 583.84 2 L 2 Z N 0 0 0 1 0 0 0 K 72 72 540 720 C 0 0 612 792 C 72 72 540 720 C 0 0 0 1 0 0 0 K 132.3 345.43 479.7 446.51 C 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 219.43 383.9 265.73 430.2 R 7 X 0 0 0 1 0 0 0 K V 0.5 H 0 Z 0 X N 0 10 Q (4-Input) 229.35 408.44 T (LUT) 234.35 395.44 T 210.07 423.59 210.07 426.01 218.52 423.59 210.07 421.16 4 Y N 210.07 423.59 210.07 426.01 218.52 423.59 210.07 421.16 4 Y V 199.58 423.59 209.82 423.59 2 L N 210.07 412.56 210.07 414.99 218.52 412.56 210.07 410.14 4 Y N 210.07 412.56 210.07 414.99 218.52 412.56 210.07 410.14 4 Y V 199.58 412.56 209.82 412.56 2 L N 210.07 401.54 210.07 403.96 218.52 401.54 210.07 399.11 4 Y N 210.07 401.54 210.07 403.96 218.52 401.54 210.07 399.11 4 Y V 199.58 401.54 209.82 401.54 2 L N 210.07 390.52 210.07 392.94 218.52 390.52 210.07 388.09 4 Y N 210.07 390.52 210.07 392.94 218.52 390.52 210.07 388.09 4 Y V 199.58 390.52 209.82 390.52 2 L N 265.89 410.36 326.27 410.36 2 L 2 Z N 296.08 410.36 296.08 428.85 387.22 428.85 387.22 418.37 399.37 418.37 5 L N 325.92 377.28 365.61 416.97 R 0 Z N (D Flip) 334.37 402.69 T (Flop) 338.12 389.69 T 325.92 387.94 332.54 383.53 325.92 379.12 3 L 2 Z N 316.74 383.53 316.74 385.96 325.2 383.53 316.74 381.11 4 Y 0 Z N 316.74 383.53 316.74 385.96 325.2 383.53 316.74 381.11 4 Y V 316.49 383.53 307.73 383.53 2 L N (Clock) 283.11 380.91 T 365.83 404.48 399.54 404.48 2 L 2 Z N 400.16 429.59 400.16 392.23 413.02 400.19 413.02 420.4 4 Y 0 Z N 420.19 409.38 420.19 411.8 428.65 409.38 420.19 406.95 4 Y N 420.19 409.38 420.19 411.8 428.65 409.38 420.19 406.95 4 Y V 413.02 409.38 419.94 409.38 2 L N 430.53 401.15 451.13 412.91 R 7 X V 0 X (Out) 433.33 406.24 T (Inputs) 169.62 405.55 T 216.36 350.32 409.13 364.71 R 7 X V 0 11 Q 0 X (Fig. 3. Logic block structure.) 247.36 357.38 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 72 72 540 720 C 0 0 612 792 C FMENDPAGE %%EndPage: "4" 4 %%Page: "5" 5 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 10 Q 0 X 0 0 0 1 0 0 0 K (5 of 22) 291.83 36.66 T 0 11 Q 0.27 (track se) 72 712.67 P 0.27 (gments per tile \050i.e. per logic block\051 as our area measure. F) 106.01 712.67 P 0.27 (or e) 367.85 712.67 P 0.27 (xample, in a square N x N uniform) 384.75 712.67 P 1.09 (FPGA with W tracks in each channel, the total number of track se) 72 693.67 P 1.09 (gments is 2WN) 374.79 693.67 P 0 8.8 Q 0.87 (2) 445.41 698.07 P 0 11 Q 1.09 (, and the number of) 449.81 693.67 P 0.08 (tracks per tile is 2W) 72 674.67 P 0.08 (. Note that the routing area is gi) 159.88 674.67 P 0.08 (v) 299.45 674.67 P 0.08 (en by the total number of track se) 304.78 674.67 P 0.08 (gments in the entire) 452.7 674.67 P (FPGA, and not the number of track se) 72 655.67 T (gments which are actually used by a circuit.) 239.26 655.67 T 1 12 Q (2.3) 72 626 T (Signi\336cant FPGA Ar) 90 626 T (chitectural Details) 197.12 626 T 0 11 Q -0.12 (Se) 90 604.67 P -0.12 (v) 100.72 604.67 P -0.12 (eral architectural parameters other than the global routing architecture must be speci\336ed in order to) 106.06 604.67 P (de\336ne an FPGA. W) 72 585.67 T (e set these parameters to be as close to those of commercial FPGAs as possible.) 157.89 585.67 T 0.44 (First, the size of the FPGA array used for a gi) 90 566.67 P 0.44 (v) 294.86 566.67 P 0.44 (en circuit \050i.e. the number of logic blocks\051 is set to be) 300.2 566.67 P 1.21 (the smallest FPGA with the desired aspect ratio \050number of columns / number of ro) 72 547.67 P 1.21 (ws\051 with suf) 455.96 547.67 P 1.21 (\336cient) 512.5 547.67 P 1.22 (logic blocks to accommodate the circuit. This situation, in which there is minimal \322spare room\323 in the) 72 528.67 P 0.29 (FPGA, presents the greatest challenge to routing completion and is normally the case manuf) 72 509.67 P 0.29 (acturers wish) 481.37 509.67 P (to optimize.) 72 490.67 T 0.13 ( In this study the number of I/O pads that can \336t into the height or width of a logic block is set to tw) 90 471.67 P 0.13 (o.) 531.75 471.67 P 0.6 (This number is commensurate with the relati) 72 452.67 P 0.6 (v) 272.08 452.67 P 0.6 (e sizes of I/O pads and 4-LUTs in current FPGAs [2, 3, 5]) 277.41 452.67 P (and ensures that none of the 26 benchmarks is pad-limited.) 72 433.67 T -0.2 (Finally) 90 414.67 P -0.2 (, we do not route the clock net \050all the MCNC benchmarks use only a single clock\051 in sequential) 120.46 414.67 P (circuits, since this net is normally distrib) 72 395.67 T (uted through a special clocking netw) 250.53 395.67 T (ork in commercial FPGAs.) 412.03 395.67 T 1 14 Q (3) 72 364.67 T (T) 90 364.67 T (uned Placement and Routing Algorithms) 98.05 364.67 T 0 11 Q 1.94 (In FPGA architecture e) 90 342.67 P 1.94 (xplorations of this kind [1] one must ensure that the CAD tools used are) 197.98 342.67 P -0.01 (responsi) 72 323.67 P -0.01 (v) 108.39 323.67 P -0.01 (e to the architectural parameters being v) 113.72 323.67 P -0.01 (aried. T) 289.95 323.67 P -0.01 (o ensure a f) 323.27 323.67 P -0.01 (air comparison between dif) 374.14 323.67 P -0.01 (ferent glo-) 493.89 323.67 P 1.8 (bal routing architectures, we created a ne) 72 304.67 P 1.8 (w placement and global routing tool which directly e) 263.03 304.67 P 1.8 (xploits) 510.05 304.67 P -0.02 (biased and non-uniform routing architectures. As this CAD tool is capable of mapping to a wide v) 72 285.67 P -0.02 (ariety of) 503.06 285.67 P -0.18 (FPGA architectures, we named it VPR, short for V) 72 266.67 P -0.18 (ersatile Place and Route. VPR is publicly a) 293.56 266.67 P -0.18 (v) 481.5 266.67 P -0.18 (ailable from) 486.72 266.67 P 0.64 (http://www) 72 247.67 P 0.64 (.eecg.toronto.edu/~jayar/softw) 121.4 247.67 P 0.64 (are.html and is capable of mapping to a wider v) 255.85 247.67 P 0.64 (ariety of FPGA) 470.9 247.67 P (architectures than are discussed in this paper) 72 228.67 T (.) 267.51 228.67 T 1 12 Q (3.1) 72 199 T (Global Routing Resour) 90 199 T (ce-A) 208.46 199 T (war) 230.7 199 T (e Placement) 250.48 199 T 0 11 Q 0.11 (W) 90 177.67 P 0.11 (e emplo) 99.5 177.67 P 0.11 (y the simulated annealing algorithm [13] for placement. The annealing schedule is based on) 134.64 177.67 P 0.86 (feedback control of the accepted mo) 72 158.67 P 0.86 (v) 235.89 158.67 P 0.86 (e rate, which w) 241.22 158.67 P 0.86 (as found to be crucial to obtaining e) 310.89 158.67 P 0.86 (xcellent place-) 474.69 158.67 P 0.87 (ments in [14, 15]. The k) 72 139.67 P 0.87 (e) 182.27 139.67 P 0.87 (y to a routing-resource-a) 186.99 139.67 P 0.87 (w) 297.88 139.67 P 0.87 (are placement tool is ensuring that the cost function) 305.71 139.67 P 1.35 (correctly models the relati) 72 120.67 P 1.35 (v) 190.96 120.67 P 1.35 (e dif) 196.29 120.67 P 1.35 (\336culty of routing connections in re) 217.23 120.67 P 1.35 (gions with dif) 376.29 120.67 P 1.35 (ferent channel widths.) 439.84 120.67 P 1.08 (After considerable e) 72 101.67 P 1.08 (xperimentation with man) 163.19 101.67 P 1.08 (y alternati) 275.8 101.67 P 1.08 (v) 320.9 101.67 P 1.08 (es [19], we ha) 326.23 101.67 P 1.08 (v) 390.96 101.67 P 1.08 (e de) 396.3 101.67 P 1.08 (v) 415.12 101.67 P 1.08 (eloped a) 420.46 101.67 P 2 F 1.08 (linear cong) 462.33 101.67 P 1.08 (estion) 513.72 101.67 P 0 F (cost function which pro) 72 82.67 T (vides the best results in reasonable computation time. Its functional form is) 176.02 82.67 T FMENDPAGE %%EndPage: "5" 5 %%Page: "6" 6 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 10 Q 0 X 0 0 0 1 0 0 0 K (6 of 22) 291.83 36.66 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 11 Q 0.1 (where the summation is o) 72 645.32 P 0.1 (v) 185.29 645.32 P 0.1 (er the M nets in the circuit. F) 190.62 645.32 P 0.1 (or each net, bb) 318.88 645.32 P 0 8.8 Q 0.08 (x) 383.95 642.57 P 0 11 Q 0.1 ( and bb) 388.35 645.32 P 0 8.8 Q 0.08 (y) 420.93 642.57 P 0 11 Q 0.1 ( denote the horizontal and) 425.33 645.32 P 0.02 (v) 72 626.32 P 0.02 (ertical spans of its bounding box, respecti) 77.33 626.32 P 0.02 (v) 260.18 626.32 P 0.02 (ely) 265.51 626.32 P 0.02 (. The q\050n\051 f) 278.24 626.32 P 0.02 (actor compensates for the f) 328.28 626.32 P 0.02 (act that the bounding) 447.37 626.32 P -0.17 (box wire length model underestimates the wiring necessary to connect nets with more than three terminals,) 72 607.32 P 0.21 (as suggested in [16]. Its v) 72 588.32 P 0.21 (alue depends on the number of terminals of net n; q is 1 for nets with 3 or fe) 185.2 588.32 P 0.21 (wer) 523.51 588.32 P 1.08 (terminals, and slo) 72 569.32 P 1.08 (wly increases to 2.79 for nets with 50 terminals. C) 151.79 569.32 P 0 8.8 Q 0.86 (a) 382.99 566.57 P 0.86 (v) 386.72 566.57 P 0.86 (,x) 390.55 566.57 P 0 11 Q 1.08 (\050n\051 and C) 397.15 569.32 P 0 8.8 Q 0.86 (a) 440.85 566.57 P 0.86 (v) 444.58 566.57 P 0.86 (,y) 448.41 566.57 P 0 11 Q 1.08 (\050n\051 are the a) 455.01 569.32 P 1.08 (v) 510.85 569.32 P 1.08 (erage) 516.18 569.32 P (channel capacities \050in tracks\051 in the x and y directions, respecti) 72 550.32 T (v) 348.19 550.32 T (ely) 353.52 550.32 T (, o) 366.25 550.32 T (v) 377.08 550.32 T (er the bounding box of net n.) 382.42 550.32 T 0.88 (This cost function penalizes placements which require more routing in areas of the FPGA that ha) 90 531.32 P 0.88 (v) 529.78 531.32 P 0.88 (e) 535.12 531.32 P 0.07 (narro) 72 512.32 P 0.07 (wer channels. The e) 94.93 512.32 P 0.07 (xponent,) 182.95 512.32 P 3 F 0.07 (a) 223.96 512.32 P 0 F 0.07 (, in the cost function allo) 230.9 512.32 P 0.07 (ws the relati) 340.36 512.32 P 0.07 (v) 393.99 512.32 P 0.07 (e cost of using narro) 399.33 512.32 P 0.07 (w and wide) 489.15 512.32 P 0.26 (channels to be adjusted. When) 72 493.32 P 3 F 0.26 (a) 210.18 493.32 P 0 F 0.26 ( is zero the linear congestion cost function re) 217.12 493.32 P 0.26 (v) 416.3 493.32 P 0.26 (erts to the standard bound-) 421.63 493.32 P -0.19 (ing box cost function. The lar) 72 474.32 P -0.19 (ger the v) 201 474.32 P -0.19 (alue of) 238.83 474.32 P 3 F -0.19 (a) 271.43 474.32 P 0 F -0.19 (, the more wiring in narro) 278.38 474.32 P -0.19 (w channels is penalized relati) 390.18 474.32 P -0.19 (v) 518.66 474.32 P -0.19 (e to) 524 474.32 P 0.75 (wiring in wider channels; we ha) 72 455.32 P 0.75 (v) 216.37 455.32 P 0.75 (e e) 221.71 455.32 P 0.75 (xperimentally found that setting) 234.81 455.32 P 3 F 0.75 (a) 381.43 455.32 P 0 F 0.75 ( to 1 results in the highest quality) 388.37 455.32 P (placements.) 72 436.32 T -0.12 (Since C) 90 417.32 P 0 8.8 Q -0.09 (a) 124.41 414.57 P -0.09 (v) 128.14 414.57 P 0 11 Q -0.12 ( depends only on the channel capacities, which do not change during a placement, and on the) 132.54 417.32 P 0.16 (maximum and minimum coordinates of the bounding box, we precompute all possible C) 72 398.32 P 0 8.8 Q 0.13 (a) 463.48 395.57 P 0.13 (v) 467.21 395.57 P 0.13 (,x) 471.04 395.57 P 0 11 Q 0.16 ( and C) 477.64 398.32 P 0 8.8 Q 0.13 (a) 506.68 395.57 P 0.13 (v) 510.41 395.57 P 0.13 (,y) 514.24 395.57 P 0 11 Q 0.16 (v) 523.17 398.32 P 0.16 (al-) 528.4 398.32 P 1.87 (ues. Consequently) 72 379.32 P 1.87 (, recomputing this cost function is essentially as f) 153.82 379.32 P 1.87 (ast as recomputing the traditional) 385.88 379.32 P (bounding box cost function.) 72 360.32 T -0.13 (In an FPGA where all channels ha) 90 341.32 P -0.13 (v) 239.9 341.32 P -0.13 (e the same capacity) 245.23 341.32 P -0.13 (, C) 329.95 341.32 P 0 8.8 Q -0.11 (a) 342.66 338.57 P -0.11 (v) 346.39 338.57 P 0 11 Q -0.13 (is also a constant and hence the linear con-) 352.88 341.32 P 1.22 (gestion cost function reduces to a bounding box cost function. In non-uniform and directionally-biased) 72 322.32 P -0.17 (FPGAs, ho) 72 303.32 P -0.17 (we) 120.45 303.32 P -0.17 (v) 133 303.32 P -0.17 (er) 138.33 303.32 P -0.17 (, this cost function results in higher quality placements than a bounding box cost function.) 146.44 303.32 P 0.56 (The e) 72 284.32 P 0.56 (xact amount of routability impro) 97.13 284.32 P 0.56 (v) 242.8 284.32 P 0.56 (ement depends on the precise global routing architecture used; as) 248.13 284.32 P 0.85 (one w) 72 265.32 P 0.85 (ould e) 99.32 265.32 P 0.85 (xpect, those in which there is a lar) 127.19 265.32 P 0.85 (ge dif) 283.26 265.32 P 0.85 (ference between the widths of channels in dif) 309.19 265.32 P 0.85 (ferent) 514.35 265.32 P 1.18 (re) 72 246.32 P 1.18 (gions sho) 80.38 246.32 P 1.18 (w the lar) 123.15 246.32 P 1.18 (gest impro) 163.79 246.32 P 1.18 (v) 211.55 246.32 P 1.18 (ement. F) 216.89 246.32 P 1.18 (or the architectures studied in this paper) 256.4 246.32 P 1.18 (, placements produced) 438.98 246.32 P 0.59 (with the linear congestion cost function typically require 5 to 10% fe) 72 227.32 P 0.59 (wer tracks to route than placements) 380.96 227.32 P (produced with a bounding box cost function.) 72 208.32 T 0.63 (W) 90 189.32 P 0.63 (e also implemented the cost function of [16], which we call a) 99.5 189.32 P 2 F 0.63 (non-linear cong) 378.71 189.32 P 0.63 (estion) 449.82 189.32 P 0 F 0.63 ( cost function.) 476.1 189.32 P 1.13 (This cost function di) 72 170.32 P 1.13 (vides the FPGA into an array of N x N re) 165.86 170.32 P 1.13 (gions and attempts to model the routing) 358.45 170.32 P 1.76 (resource demand and supply in each of these re) 72 151.32 P 1.76 (gions. When a placement causes the routing resource) 294.27 151.32 P 0.14 (demand to e) 72 132.32 P 0.14 (xceed the supply in some re) 125.87 132.32 P 0.14 (gions, the placement is hea) 248.89 132.32 P 0.14 (vily penalized. W) 368.06 132.32 P 0.14 (e found that this non-) 445.35 132.32 P 1 (linear congestion cost function, when computed on a 4 x 4 grid \05016 re) 72 113.32 P 1 (gions\051, generally produces place-) 390.98 113.32 P 0.12 (ments which require 2 to 4% fe) 72 94.32 P 0.12 (wer tracks to route than those produced by the linear congestion cost func-) 210.51 94.32 P 185.8 660.65 426.2 720 C 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 2 11 Q 0 X 0 0 0 1 0 0 0 K (C) 196.95 691.25 T (o) 204.94 691.25 T (s) 211.09 691.25 T (t) 216.01 691.25 T 2 9 Q (l) 219.69 687.35 T (i) 222.73 687.35 T (n) 225.76 687.35 T (e) 230.79 687.35 T (a) 235.32 687.35 T (r) 240.35 687.35 T 2 11 Q (q) 282.4 691.25 T (n) 293 691.25 T 3 F (\050) 288.55 691.25 T (\051) 299.28 691.25 T 2 F (b) 315.28 700.76 T (b) 321.43 700.76 T 2 9 Q (x) 327.59 696.86 T 2 11 Q (n) 336.71 700.76 T 3 F (\050) 332.26 700.76 T (\051) 342.99 700.76 T 2 F (C) 308.25 678.97 T 2 9 Q (a) 316.25 675.08 T (v) 321.28 675.08 T 0 F (,x) 325.8 675.08 T 2 11 Q (n) 337.64 678.97 T 3 F (\050) 333.2 678.97 T (\051) 343.92 678.97 T 3 9 Q (a) 348 685.39 T 0 11 Q (-) 308.25 691.25 T (-) 310.08 691.25 T (-) 311.91 691.25 T (-) 313.74 691.25 T (-) 315.58 691.25 T (-) 317.41 691.25 T (-) 319.24 691.25 T (-) 321.07 691.25 T (-) 322.9 691.25 T (-) 324.73 691.25 T (-) 326.57 691.25 T (-) 328.4 691.25 T (-) 330.23 691.25 T (-) 332.06 691.25 T (-) 333.89 691.25 T (-) 335.72 691.25 T (-) 337.55 691.25 T (-) 339.39 691.25 T (-) 341.22 691.25 T (-) 343.05 691.25 T (-) 344.88 691.25 T (-) 346.71 691.25 T (-) 348.54 691.25 T (-) 350.02 691.25 T 2 F (b) 372.95 700.76 T (b) 379.1 700.76 T 2 9 Q (y) 385.23 696.86 T 2 11 Q (n) 394.32 700.76 T 3 F (\050) 389.87 700.76 T (\051) 400.6 700.76 T 2 F (C) 365.82 681.9 T 2 9 Q (a) 373.82 678 T (v) 378.85 678 T 0 F (,y) 383.37 678 T 2 11 Q (n) 395.21 681.9 T 3 F (\050) 390.77 681.9 T (\051) 401.49 681.9 T 3 9 Q (a) 405.71 685.39 T 0 11 Q (-) 365.82 691.25 T (-) 367.65 691.25 T (-) 369.48 691.25 T (-) 371.32 691.25 T (-) 373.15 691.25 T (-) 374.98 691.25 T (-) 376.81 691.25 T (-) 378.64 691.25 T (-) 380.47 691.25 T (-) 382.3 691.25 T (-) 384.14 691.25 T (-) 385.97 691.25 T (-) 387.8 691.25 T (-) 389.63 691.25 T (-) 391.46 691.25 T (-) 393.29 691.25 T (-) 395.12 691.25 T (-) 396.95 691.25 T (-) 398.79 691.25 T (-) 400.62 691.25 T (-) 402.45 691.25 T (-) 404.28 691.25 T (-) 406.11 691.25 T (-) 407.72 691.25 T (+) 356.65 691.25 T 2 9 Q (n) 261.24 676.7 T 0 F (1) 276.81 676.7 T (=) 268.74 676.7 T 2 F (M) 267.43 705.51 T 3 16 Q (\345) 265.57 688.48 T 0 11 Q (=) 249.55 691.25 T 307.98 678.44 304.69 678.44 304.69 708.46 3 L 0.5 H 2 Z N 304.69 708.46 307.98 708.46 2 L N 411.65 678.44 414.95 678.44 414.95 708.46 3 L N 414.95 708.46 411.65 708.46 2 L N 0 0 612 792 C FMENDPAGE %%EndPage: "6" 6 %%Page: "7" 7 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 10 Q 0 X 0 0 0 1 0 0 0 K (7 of 22) 291.83 36.66 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 11 Q -0.15 (tion. Ho) 72 712.67 P -0.15 (we) 107.63 712.67 P -0.15 (v) 120.18 712.67 P -0.15 (er) 125.51 712.67 P -0.15 (, k) 133.62 712.67 P -0.15 (eeping track of the routing resource demand in the v) 144.36 712.67 P -0.15 (arious chip re) 372.73 712.67 P -0.15 (gions is computationally) 432.13 712.67 P 0.2 (e) 72 693.67 P 0.2 (xpensi) 76.72 693.67 P 0.2 (v) 105.17 693.67 P 0.2 (e, and placement with this cost function requires \336v) 110.5 693.67 P 0.2 (e times greater CPU time than the linear con-) 339.52 693.67 P 0.93 (gestion function. Di) 72 674.67 P 0.93 (viding the FPGA into smaller subre) 161.27 674.67 P 0.93 (gions to mak) 322.5 674.67 P 0.93 (e localized congestion more visible) 381.09 674.67 P 0.86 (did not w) 72 655.67 P 0.86 (ork well; a non-linear congestion cost function computed on a 16 x 16 grid \050256 re) 115.17 655.67 P 0.86 (gions\051 per-) 491.18 655.67 P -0.09 (forms only mar) 72 636.67 P -0.09 (ginally better than a cost function computed on a 4 x 4 grid, yet consumes sixteen times the) 139.45 636.67 P (CPU time.) 72 617.67 T 0.77 (W) 90 598.67 P 0.77 (e considered the reductions in track count achie) 99.5 598.67 P 0.77 (v) 313.88 598.67 P 0.77 (ed by the non-linear congestion cost function too) 319.21 598.67 P -0.15 (small to w) 72 579.67 P -0.15 (arrant the additional CPU time, so the results presented in this study all use the linear congestion) 117.42 579.67 P 1.39 (cost function. Nonetheless, we did rerun a fe) 72 560.67 P 1.39 (w of our e) 277.9 560.67 P 1.39 (xperiments with the non-linear congestion cost) 326.81 560.67 P (function and found that its use did not change an) 72 541.67 T (y of the architectural conclusions presented belo) 286.01 541.67 T (w) 498.35 541.67 T (.) 505.58 541.67 T 1 12 Q (3.2) 72 512 T (Congestion-Dri) 90 512 T (v) 168.54 512 T (en Global Routing) 174.42 512 T 0 11 Q -0.2 (It is crucial for the global router to le) 90 490.67 P -0.2 (v) 250.67 490.67 P -0.2 (erage the dif) 256 490.67 P -0.2 (ferences in the capacities of the v) 310.31 490.67 P -0.2 (arious FPGA chan-) 455.46 490.67 P 0.11 (nels. The global router de) 72 471.67 P 0.11 (v) 184.91 471.67 P 0.11 (eloped for this study emplo) 190.24 471.67 P 0.11 (ys a v) 310.97 471.67 P 0.11 (ariant of the P) 336.59 471.67 P 0.11 (athFinder ne) 398.79 471.67 P 0.11 (gotiated congestion) 454.03 471.67 P 0.77 (algorithm [17]. This algorithm consists of routing each net with a maze router [18], then ripping up and) 72 452.67 P 1.13 (rerouting each net in sequence se) 72 433.67 P 1.13 (v) 223.1 433.67 P 1.13 (eral times. In each of these subsequent routing iterations, the cost of) 228.44 433.67 P 0.11 (using a node \050which is either a channel se) 72 414.67 P 0.11 (gment or a logic block input pin\051 is modi\336ed, based on the com-) 256.03 414.67 P 1.17 (petition for that node in both the current iteration and all pre) 72 395.67 P 1.17 (vious iterations. A channel se) 349.51 395.67 P 1.17 (gment is the) 483.88 395.67 P -0.1 (length of channel that spans one logic block; in an FPGA composed of an N x N array of logic blocks each) 72 376.67 P -0.16 (channel contains N se) 72 357.67 P -0.16 (gments. W) 167.58 357.67 P -0.16 (e de\336ne the cost of a routing node some) 214.21 357.67 P -0.16 (what dif) 388.02 357.67 P -0.16 (ferently than [17]; the cost) 423.94 357.67 P (of using routing node) 72 338.67 T 2 F (n) 169.16 338.67 T 0 F ( is) 174.66 338.67 T 1.04 (The p) 90 284.18 P 0 8.8 Q 0.83 (n) 116.4 281.43 P 0 11 Q 1.04 ( term is a measure of the present congestion at this node. It is updated) 120.8 284.18 P 2 F 1.04 ( e) 441.79 284.18 P 1.04 (very time any net) 450.3 284.18 P 0 F 1.04 ( is) 528.87 284.18 P 0.41 (ripped-up and rerouted. The v) 72 265.18 P 0.41 (alue of p) 205.03 265.18 P 0 8.8 Q 0.33 (n) 244.34 262.43 P 0 11 Q 0.41 ( is equal to the o) 248.74 265.18 P 0.41 (v) 323.04 265.18 P 0.41 (eruse of this node that w) 328.37 265.18 P 0.41 (ould occur if one more) 438.16 265.18 P 1.13 (route were to use it, since the decision we are making during routing is whether another net should go) 72 246.18 P 0.59 (through this node or not. F) 72 227.18 P 0.59 (or e) 192.11 227.18 P 0.59 (xample, consider a channel with a capacity of six tracks and a se) 209.33 227.18 P 0.59 (gment of) 500 227.18 P 0.48 (this channel in which all six tracks are currently used. The p) 72 208.18 P 0 8.8 Q 0.38 (n) 341.86 205.43 P 0 11 Q 0.48 ( v) 346.26 208.18 P 0.48 (alue of this channel se) 354.71 208.18 P 0.48 (gment is one, since) 454.23 208.18 P (routing one more net through this channel will result in an o) 72 189.18 T (v) 336.12 189.18 T (eruse of one.) 341.46 189.18 T 1.11 (The h) 90 170.18 P 0 8.8 Q 0.89 (n) 116.47 167.43 P 0 11 Q 1.11 ( term accounts for the historical, or past, congestion at this node. It is updated) 120.87 170.18 P 2 F 1.11 (only after an) 481.55 170.18 P 0.03 (entir) 72 151.18 P 0.03 (e r) 92.37 151.18 P 0.03 (outing iter) 103.82 151.18 P 0.03 (ation) 149.83 151.18 P 0 F 0.03 ( is completed; i.e. after e) 172.45 151.18 P 0.03 (v) 280.78 151.18 P 0.03 (ery net in the circuit has been ripped up and rerouted. Ini-) 286.11 151.18 P 0.44 (tially h) 72 132.18 P 0 8.8 Q 0.35 (n) 103.3 129.43 P 0 11 Q 0.44 ( is 0; at the end of each routing iteration h) 107.7 132.18 P 0 8.8 Q 0.35 (n) 295.99 129.43 P 0 11 Q 0.44 ( is increased by the amount by which demand for this) 300.39 132.18 P (node outstrips its capacity) 72 113.18 T (.) 185.86 113.18 T 0.29 (The b) 90 94.18 P 0 8.8 Q 0.23 (n,n-1) 115.65 91.43 P 0 11 Q 0.29 ( term penalizes bends, since global routes with man) 133.98 94.18 P 0.29 (y bends in them present a more dif) 363.16 94.18 P 0.29 (\336cult) 517.38 94.18 P 194.5 299.51 417.5 319 C 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 2 11 Q 0 X 0 0 0 1 0 0 0 K (c) 197.87 310.49 T 2 9 Q (n) 203.17 306.59 T 0 11 Q (1) 229.3 310.49 T 2 F (h) 246.5 310.49 T 2 9 Q (n) 252.42 306.59 T 2 11 Q (h) 265.16 310.49 T 2 9 Q (f) 272.4 306.59 T (a) 275.43 306.59 T (c) 280.46 306.59 T 3 11 Q (\327) 259.67 310.49 T 0 F (+) 237.55 310.49 T 3 F (\050) 224.86 310.49 T (\051) 285.24 310.49 T 0 F (1) 304.88 310.49 T 2 F (p) 322.9 310.49 T 2 9 Q (n) 328.82 306.59 T 2 11 Q (p) 342.39 310.49 T 2 9 Q (f) 349.63 306.59 T (a) 352.66 306.59 T (c) 357.69 306.59 T 3 11 Q (\327) 336.07 310.49 T 0 F (+) 313.12 310.49 T 3 F (\050) 300.43 310.49 T (\051) 362.46 310.49 T (\264) 291.65 310.49 T 2 F (b) 377.83 310.49 T 2 9 Q (n) 383.74 306.59 T (n) 392.74 306.59 T 0 F (1) 406.23 306.59 T (\320) 399.49 306.59 T 3 F (,) 388.24 306.59 T 0 11 Q (.) 411.38 310.49 T (+) 368.88 310.49 T (=) 213.16 310.49 T 0 0 612 792 C FMENDPAGE %%EndPage: "7" 7 %%Page: "8" 8 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 10 Q 0 X 0 0 0 1 0 0 0 K (8 of 22) 291.83 36.66 T 0 11 Q 0.17 (detailed routing problem in FPGAs with se) 72 712.67 P 0.17 (gmented routing, and will generally lead to detailed routes that) 262.29 712.67 P -0.04 (are both slo) 72 693.67 P -0.04 (wer and require more tracks. The v) 122.98 693.67 P -0.04 (alue of b) 276.74 693.67 P 0 8.8 Q -0.03 (n,n-1) 315.16 690.92 P 0 11 Q -0.04 ( is one if making the connection from node n-1) 333.49 693.67 P -0.22 (to node n implies a bend \050i.e. node n-1 is a horizontal channel se) 72 674.67 P -0.22 (gment and node n is a v) 352.12 674.67 P -0.22 (ertical channel se) 455.09 674.67 P -0.22 (g-) 530.84 674.67 P 0.62 (ment or vice v) 72 655.67 P 0.62 (ersa\051, and is zero otherwise. Including this bend cost in the total cost of using a node pro-) 136.93 655.67 P (duces routes with v) 72 636.67 T (ery fe) 157.07 636.67 T (w unnecessary bends and increases the global routing track count v) 182.14 636.67 T (ery little.) 477.69 636.67 T 1.41 (The k) 90 617.67 P 1.41 (e) 116.65 617.67 P 1.41 (y idea of P) 121.37 617.67 P 1.41 (ath\336nder is that the p) 172.78 617.67 P 0 8.8 Q 1.12 (f) 271.29 614.92 P 1.12 (ac) 274.13 614.92 P 0 11 Q 1.41 ( term is 0 for the \336rst routing iteration, and is gradually) 281.94 617.67 P 0.16 (increased in successi) 72 598.67 P 0.16 (v) 163.69 598.67 P 0.16 (e iterations. Hence, each net is initially routed by the shortest path found. In succes-) 169.02 598.67 P -0.15 (si) 72 579.67 P -0.15 (v) 79.06 579.67 P -0.15 (e iterations, the p) 84.4 579.67 P 0 8.8 Q -0.12 (f) 159.71 576.92 P -0.12 (ac) 162.55 576.92 P 0 11 Q -0.15 ( term is gradually made lar) 170.37 579.67 P -0.15 (ger so that congestion becomes more e) 287.64 579.67 P -0.15 (xpensi) 457.03 579.67 P -0.15 (v) 485.48 579.67 P -0.15 (e and those) 490.81 579.67 P 0.48 (nets which ha) 72 560.67 P 0.48 (v) 133.24 560.67 P 0.48 (e alternate routes mo) 138.57 560.67 P 0.48 (v) 231.8 560.67 P 0.48 (e out of the congested areas. The history term, h) 237.14 560.67 P 0 8.8 Q 0.39 (f) 453.19 557.92 P 0.39 (ac) 456.03 557.92 P 0 11 Q 0.48 (, allo) 463.85 560.67 P 0.48 (ws informa-) 486.06 560.67 P 0.41 (tion from pre) 72 541.67 P 0.41 (vious routing iterations to af) 130.59 541.67 P 0.41 (fect the current routing, further impro) 256.62 541.67 P 0.41 (ving the router\325) 424.08 541.67 P 0.41 (s ability to) 492.73 541.67 P 0.68 (\336nd and a) 72 522.67 P 0.68 (v) 116.53 522.67 P 0.68 (oid congestion. By treating both channel se) 121.81 522.67 P 0.68 (gments and input pins as routing nodes, this algo-) 316.08 522.67 P 0.06 (rithm mak) 72 503.67 P 0.06 (es use of the functional equi) 117.48 503.67 P 0.06 (v) 241.24 503.67 P 0.06 (alence of LUT input pins in a v) 246.47 503.67 P 0.06 (ery natural w) 384.52 503.67 P 0.06 (ay) 442.57 503.67 P 0.06 (. Initially) 452.24 503.67 P 0.06 (, each con-) 491.93 503.67 P -0.21 (nection uses the logic block input pin which leads to the shortest route. As the cost of congestion increases,) 72 484.67 P (nets are gradually forced to use unique input pins.) 72 465.67 T 0.1 (In our implementation each channel can ha) 90 446.67 P 0.1 (v) 279.77 446.67 P 0.1 (e a dif) 285.1 446.67 P 0.1 (ferent capacity) 312.51 446.67 P 0.1 (. Since the cost of a channel se) 376.95 446.67 P 0.1 (gment) 512.5 446.67 P 0.16 (is based on the amount by which routing demand e) 72 427.67 P 0.16 (xceeds its capacity) 297.19 427.67 P 0.16 (, this router will automatically act to) 379.27 427.67 P (relie) 72 408.67 T (v) 91.27 408.67 T (e pressure on narro) 96.61 408.67 T (w channels by rerouting nets through wider channels whene) 180.33 408.67 T (v) 444 408.67 T (er necessary) 449.33 408.67 T (.) 502.67 408.67 T -0.22 (Considerable ef) 90 389.67 P -0.22 (fort w) 158.85 389.67 P -0.22 (as spent tuning the) 185.09 389.67 P 2 F -0.22 (r) 269.14 389.67 P -0.22 (outing sc) 272.93 389.67 P -0.22 (hedule) 312.57 389.67 P 0 F -0.22 ( \050the v) 341.89 389.67 P -0.22 (alues of p) 369.28 389.67 P 0 8.8 Q -0.18 (f) 411.6 386.92 P -0.18 (ac) 414.45 386.92 P 0 11 Q -0.22 ( and h) 422.26 389.67 P 0 8.8 Q -0.18 (f) 448.7 386.92 P -0.18 (ac) 451.54 386.92 P 0 11 Q -0.22 ( o) 459.36 389.67 P -0.22 (v) 467.22 389.67 P -0.22 (er the course of) 472.55 389.67 P 0.82 (the iterations\051. The best routing schedule we found set p) 72 370.67 P 0 8.8 Q 0.66 (f) 326.23 367.92 P 0.66 (ac) 329.07 367.92 P 0 11 Q 0.82 ( to 0 for the \336rst iteration, 0.5 for the second) 336.88 370.67 P -0.09 (iteration, and 1.5 times the pre) 72 351.67 P -0.09 (vious p) 205.38 351.67 P 0 8.8 Q -0.08 (f) 237.37 348.92 P -0.08 (ac) 240.21 348.92 P 0 11 Q -0.09 ( v) 248.02 351.67 P -0.09 (alue for all subsequent iterations. The v) 255.9 351.67 P -0.09 (alue of h) 428.9 351.67 P 0 8.8 Q -0.08 (f) 467.2 348.92 P -0.08 (ac) 470.04 348.92 P 0 11 Q -0.09 ( w) 477.85 351.67 P -0.09 (as set to 0.2) 488.34 351.67 P 0 (for all iterations; the f) 72 332.67 P 0 (act that h) 167.84 332.67 P 0 8.8 Q 0 (n) 208.18 329.92 P 0 11 Q 0 ( can only increase from iteration to iteration pro) 212.58 332.67 P 0 (vides suf) 423.25 332.67 P 0 (\336cient increase in) 462.39 332.67 P -0.22 (the historical congestion penalty) 72 313.67 P -0.22 (. This routing schedule increases the cost of congestion slo) 213.31 313.67 P -0.22 (wly enough that) 469.55 313.67 P 0.7 (the net ordering is not v) 72 294.67 P 0.7 (ery important -- nets with the most alternate routes mo) 180.15 294.67 P 0.7 (v) 426.16 294.67 P 0.7 (e out of congested areas) 431.49 294.67 P -0.2 (\336rst. Increasing the cost of congestion more slo) 72 275.67 P -0.2 (wly than this reduced the number of tracks required only by) 278.68 275.67 P 0.27 (1 - 2% while increasing the CPU time by a f) 72 256.67 P 0.27 (actor of 2 to 3. Setting h) 269.47 256.67 P 0 8.8 Q 0.21 (n) 377.7 253.92 P 0 11 Q 0.27 ( to 0 so that the router has no infor-) 382.1 256.67 P (mation about past congestion increased the number of tracks required by 15%.) 72 237.67 T 1 14 Q (4) 72 206.67 T (Experimental Results f) 90 206.67 T (or FPGAs with Dir) 226.53 206.67 T (ectionally-Biased Routing) 340.21 206.67 T (Resour) 90 190.67 T (ces) 132.52 190.67 T 0 11 Q 0.12 (The e) 90 168.67 P 0.12 (xperimental frame) 114.7 168.67 P 0.12 (w) 195.5 168.67 P 0.12 (ork and tools described abo) 203.33 168.67 P 0.12 (v) 324.64 168.67 P 0.12 (e were emplo) 329.98 168.67 P 0.12 (yed to answer the questions posed) 389.37 168.67 P 0.25 (in the introduction to this paper: \336rst, is there an area-ef) 72 149.67 P 0.25 (\336cienc) 319.55 149.67 P 0.25 (y adv) 348.71 149.67 P 0.25 (antage to a directionally-biased archi-) 372.82 149.67 P 0.09 (tecture? Recall that in a directionally-biased FPGA the number of routing tracks in the horizontal and v) 72 130.67 P 0.09 (er-) 527.79 130.67 P 0.72 (tical directions are dif) 72 111.67 P 0.72 (ferent. In essence, we are in) 170.1 111.67 P 0.72 (v) 295.73 111.67 P 0.72 (estig) 301.06 111.67 P 0.72 (ating if there is an e) 321.79 111.67 P 0.72 (xploitable directional bias in) 412.27 111.67 P 0.09 (the basic nature of circuits. W) 72 92.67 P 0.09 (e characterize directionally-biased FPGAs by the ratio of the width of a hor-) 203.52 92.67 P FMENDPAGE %%EndPage: "8" 8 %%Page: "9" 9 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 10 Q 0 X 0 0 0 1 0 0 0 K (9 of 22) 291.83 36.66 T 0 11 Q 0.29 (izontal channel to the width of a v) 72 572.16 P 0.29 (ertical channel, denoted as R) 223.87 572.16 P 0 8.8 Q 0.23 (h) 351.81 569.41 P 0 11 Q 0.29 (. F) 356.21 572.16 P 0.29 (or e) 367.95 572.16 P 0.29 (xample, Fig. 1\050a\051 depicts an FPGA) 384.87 572.16 P (with a 2:1 directional bias, i.e. R) 72 553.16 T 0 8.8 Q (h) 215.3 550.41 T 0 11 Q ( = 2.) 219.7 553.16 T 0.33 (W) 90 534.16 P 0.33 (e need to de\336ne an additional architectural feature which mark) 99.5 534.16 P 0.33 (edly af) 377.61 534.16 P 0.33 (fects our results: the position-) 407.9 534.16 P 0.29 (ing of the pins on the logic block. The tw) 72 515.16 P 0.29 (o main cases of interest are illustrated in Fig. 4. In Fig. 4\050a\051, the) 256.02 515.16 P -0.2 (logic block input and output pins are distrib) 72 496.16 P -0.2 (uted e) 262.58 496.16 P -0.2 (v) 288.68 496.16 P -0.2 (enly around the entire perimeter of each logic block. W) 294.02 496.16 P -0.2 (e) 535.12 496.16 P -0.16 (call this the) 72 477.16 P 2 F -0.16 (full-perimeter) 124.99 477.16 P 0 F -0.16 ( pin positioning, and it is similar to the pin positioning used in Xilinx and ORCA) 186.09 477.16 P 0.22 (FPGAs [2, 3]. Fig. 4\050b\051 illustrates the) 72 458.16 P 2 F 0.22 (top/bottom) 240.99 458.16 P 0 F 0.22 ( pin positioning, which restricts the logic block input pin) 288.67 458.16 P 0.74 (locations to lie only on the top and bottom of the logic block; it is similar to the pin positioning used in) 72 439.16 P -0.14 (Actel FPGAs [4]. In all the results we sho) 72 420.16 P -0.14 (w in this paper) 254.84 420.16 P -0.14 (, each logic block pin appears \050ph) 319.06 420.16 P -0.14 (ysically\051 on only) 466.33 420.16 P 0.18 (one side of a logic block. W) 72 401.16 P 0.18 (e ha) 195.91 401.16 P 0.18 (v) 213.89 401.16 P 0.18 (e found that for the channel connecti) 219.23 401.16 P 0.18 (vity v) 381.31 401.16 P 0.18 (alues \050F) 406.58 401.16 P 0 8.8 Q 0.14 (c) 441.89 398.41 P 0 11 Q 0.18 ( [1]\051 found in today\325) 445.8 401.16 P 0.18 (s) 535.72 401.16 P (commercial FPGAs this leads to the most area-ef) 72 382.16 T (\336cient FPGAs [19].) 287.72 382.16 T 0.08 (W) 90 363.16 P 0.08 (e ha) 99.5 363.16 P 0.08 (v) 117.38 363.16 P 0.08 (e also found that the ratio of the number of columns to the number of ro) 122.71 363.16 P 0.08 (ws in an FPGA, which) 439.78 363.16 P 0.46 (we call the aspect ratio, signi\336cantly af) 72 344.16 P 0.46 (fects area ef) 246.46 344.16 P 0.46 (\336cienc) 300.23 344.16 P 0.46 (y) 329.39 344.16 P 0.46 (. Since most FPGAs ha) 334.17 344.16 P 0.46 (v) 438.14 344.16 P 0.46 (e the same number of) 443.48 344.16 P 1.16 (ro) 72 325.16 P 1.16 (ws and columns, we \336rst present the results for square \050aspect ratio 1\051 FPGAs, before discussing the) 80.89 325.16 P (more general case of rectangular FPGAs in Section 4.2.) 72 306.16 T 1 12 Q (4.1) 72 276.5 T (Results f) 90 276.5 T (or Squar) 134.03 276.5 T (e FPGAs) 179.48 276.5 T 0 11 Q 0.52 (T) 90 255.16 P 0.52 (wenty-six lar) 95.84 255.16 P 0.52 (ge MCNC benchmarks were passed through the e) 153.9 255.16 P 0.52 (xperimental \337o) 375.81 255.16 P 0.52 (w of Fig. 2 for v) 442.96 255.16 P 0.52 (alues) 517.4 255.16 P 0.11 (of R) 72 236.16 P 0 8.8 Q 0.09 (h) 91.36 233.41 P 0 11 Q 0.11 ( ranging from 1 to 4. As discussed in Section 2, the result for each circuit is the number of track se) 95.76 236.16 P 0.11 (g-) 530.84 236.16 P 0.46 (ments per tile) 72 217.16 P 0.46 (needed to successfully global route the circuit in an FPGA) 136 217.16 P 0 8.8 Q 0.37 (3) 397.05 221.56 P 0 11 Q 0.46 ( with the speci\336ed v) 401.45 217.16 P 0.46 (alue of R) 491.61 217.16 P 0 8.8 Q 0.37 (h) 532.85 214.41 P 0 11 Q 0.46 (.) 537.25 217.16 P 0.01 (Fig. 5 is a plot of area-ef) 72 198.16 P 0.01 (\336cienc) 180.26 198.16 P 0.01 (y v) 209.43 198.16 P 0.01 (ersus the de) 223.03 198.16 P 0.01 (gree of routing direction bias, R) 274.82 198.16 P 0 8.8 Q 0.01 (h) 415.43 195.41 P 0 11 Q 0.01 (, for both types of pin posi-) 419.83 198.16 P 1.29 (tioning. The v) 72 179.16 P 1.29 (ertical axis is the a) 136.44 179.16 P 1.29 (v) 223.25 179.16 P 1.29 (erage number of tracks per tile required to successfully route the 26) 228.59 179.16 P 0.17 (benchmarks. T) 72 160.16 P 0.17 (ables 1 and 2 summarize ho) 136.67 160.16 P 0.17 (w well each of the se) 259.77 160.16 P 0.17 (v) 352.93 160.16 P 0.17 (en lar) 358.26 160.16 P 0.17 (gest circuits maps into FPGAs with) 382.98 160.16 P 0.26 (dif) 72 141.16 P 0.26 (fering amounts of directional bias; the results for indi) 83.95 141.16 P 0.26 (vidual circuits closely parallel the o) 320.41 141.16 P 0.26 (v) 478.29 141.16 P 0.26 (erall a) 483.63 141.16 P 0.26 (v) 510.85 141.16 P 0.26 (erage) 516.18 141.16 P (sho) 72 122.16 T (wn in Fig. 5.) 87 122.16 T 72 100 540 108.14 C 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 71.67 105.14 225 105.14 2 L 0.5 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 0 612 792 C 0 10 Q 0 X 0 0 0 1 0 0 0 K 0.48 (3. T) 72 93.33 P 0.48 (rack se) 88.24 93.33 P 0.48 (gments are counted whether or not the) 116.62 93.33 P 0.48 (y are actually used, so this is a true representation of the area that) 272.67 93.33 P (must be de) 72 79.33 T (v) 115.08 79.33 T (oted to routing in the layout.) 119.88 79.33 T 72 72 540 720 C 97.65 579.5 514.35 720 C 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 359.13 656.95 405.61 700.92 R 0.5 H 0 Z 0 X 0 0 0 1 0 0 0 K N 214.42 658.8 257.03 701.41 R N 233.4 702.03 238.05 706.67 R V N 248.89 653.54 253.54 658.19 R V N 209.38 677.78 214.03 682.43 R V N 257.64 677.78 262.29 682.43 R V N 217.9 653.54 222.55 658.19 R V N 0 10 Q (in1) 230.46 711.92 T (out) 244.07 642.9 T (in3) 214.27 643.21 T (in2) 193.9 677.32 T (in4) 266.75 676.91 T (\050a\051) 227.51 624.21 T 364.08 701.38 370.13 706.43 R V N 399.17 651.84 403.82 656.49 R V N 361.14 651.66 365.78 656.31 R V N (in1) 362.45 711.38 T (out) 396.64 642.42 T (in3) 356.42 641.8 T (\050b\051) 376.04 624.48 T 391.33 701.42 396.67 706.07 R V N (in2) 387.34 710.67 T 379.21 651.96 383.86 656.6 R V N (in4) 375.82 641.8 T 102.86 587.53 507.02 610.36 R 7 X V 0 11 Q 0 X (Fig. 4. Logic block pin positions: \050a\051 full-perimeter pin positioning and) 147.12 603.03 T (\050b\051 top/bottom pin positioning) 238.47 591.03 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 72 72 540 720 C 0 0 612 792 C FMENDPAGE %%EndPage: "9" 9 %%Page: "10" 10 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 10 Q 0 X 0 0 0 1 0 0 0 K (10 of 22) 289.33 36.66 T 1 11 Q (T) 76.8 462.9 T (able 1:) 83.12 462.9 T 0 F (Routing requirements of the lar) 117.35 462.9 T (gest benchmarks when mapped to FPGAs with distrib) 255.24 462.9 T (uted pins.) 492.42 462.9 T (Circuit) 164.29 429.9 T (Number) 205.05 442.9 T -0.26 (of Logic) 204.29 429.9 P (Blocks) 207.8 416.9 T (T) 251.52 442.9 T (racks per T) 257.85 442.9 T (ile Required for Global Routing) 306.95 442.9 T (R) 258.23 419.4 T 0 8.8 Q (h) 265.56 416.65 T 0 11 Q ( = 1) 269.96 419.4 T (R) 302.56 419.4 T 0 8.8 Q (h) 309.89 416.65 T 0 11 Q ( = 1.33) 314.29 419.4 T (R) 360.64 419.4 T 0 8.8 Q (h) 367.97 416.65 T 0 11 Q ( = 2) 372.37 419.4 T (R) 411.84 419.4 T 0 8.8 Q (h) 419.18 416.65 T 0 11 Q ( = 4) 423.58 419.4 T (alu4) 170.1 397.9 T (1522) 212.08 397.9 T (16) 267.2 397.9 T (16) 318.4 397.9 T (17) 369.61 397.9 T (28) 420.81 397.9 T (ape) 166.52 380.9 T (x2) 181.62 380.9 T (1878) 212.08 380.9 T (18) 267.2 380.9 T (18) 318.4 380.9 T (20) 369.61 380.9 T (28) 420.81 380.9 T (ape) 166.52 363.9 T (x4) 181.62 363.9 T (1262) 212.08 363.9 T (18) 267.2 363.9 T (18) 318.4 363.9 T (20) 369.61 363.9 T (28) 420.81 363.9 T (dif) 166.58 346.9 T (feq) 178.52 346.9 T (1497) 212.08 346.9 T (12) 267.2 346.9 T (11) 318.4 346.9 T (12) 369.61 346.9 T (19) 420.81 346.9 T (e) 168.96 329.9 T (x5p) 173.68 329.9 T (1064) 212.08 329.9 T (20) 267.2 329.9 T (21) 318.4 329.9 T (23) 369.61 329.9 T (35) 420.81 329.9 T (mise) 163.77 312.9 T (x3) 184.38 312.9 T (1397) 212.08 312.9 T (16) 267.2 312.9 T (16) 318.4 312.9 T (20) 369.61 312.9 T (31) 420.81 312.9 T (seq) 172.24 295.9 T (1750) 212.08 295.9 T (16) 267.2 295.9 T (18) 318.4 295.9 T (20) 369.61 295.9 T (33) 420.81 295.9 T 1 F (T) 76.07 269.9 T (able 2:) 82.4 269.9 T 0 F (Routing requirements of the lar) 116.62 269.9 T (gest benchmarks when mapped to FPGAs with top/bottom pins.) 254.51 269.9 T (Circuit) 164.54 236.9 T (Number) 206.86 249.9 T (of Logic) 206.1 236.9 T (Blocks) 209.61 223.9 T (T) 253.08 249.9 T (racks per T) 259.42 249.9 T (ile Required for Global Routing) 308.51 249.9 T (R) 260.83 226.4 T 0 8.8 Q (h) 268.17 223.65 T 0 11 Q ( = 1) 272.57 226.4 T (R) 304.47 226.4 T 0 8.8 Q (h) 311.8 223.65 T 0 11 Q ( = 1.33) 316.2 226.4 T (R) 361.85 226.4 T 0 8.8 Q (h) 369.19 223.65 T 0 11 Q ( = 2) 373.59 226.4 T (R) 412.36 226.4 T 0 8.8 Q (h) 419.7 223.65 T 0 11 Q ( = 4) 424.1 226.4 T (alu4) 170.35 204.9 T (1522) 213.89 204.9 T (16) 269.8 204.9 T (18) 320.31 204.9 T (17) 370.82 204.9 T (18) 421.33 204.9 T (ape) 166.77 187.9 T (x2) 181.87 187.9 T (1878) 213.89 187.9 T (20) 269.8 187.9 T (19) 320.31 187.9 T (18) 370.82 187.9 T (20) 421.33 187.9 T (ape) 166.77 170.9 T (x4) 181.87 170.9 T (1262) 213.89 170.9 T (22) 269.8 170.9 T (21) 320.31 170.9 T (20) 370.82 170.9 T (23) 421.33 170.9 T (dif) 166.82 153.9 T (feq) 178.77 153.9 T (1497) 213.89 153.9 T (14) 269.8 153.9 T (14) 320.31 153.9 T (12) 370.82 153.9 T (13) 421.33 153.9 T (e) 169.21 136.9 T (x5p) 173.93 136.9 T (1064) 213.89 136.9 T (22) 269.8 136.9 T (21) 320.31 136.9 T (20) 370.82 136.9 T (28) 421.33 136.9 T (mise) 164.01 119.9 T (x3) 184.63 119.9 T (1397) 213.89 119.9 T (18) 269.8 119.9 T (16) 320.31 119.9 T (17) 370.82 119.9 T (20) 421.33 119.9 T (seq) 172.49 102.9 T (1750) 213.89 102.9 T (20) 269.8 102.9 T (18) 320.31 102.9 T (18) 370.82 102.9 T (23) 421.33 102.9 T 160.09 454.98 160.09 289.48 2 L V 0.5 H 0 Z N 199.06 455.48 199.06 288.98 2 L V N 245.85 454.98 245.85 289.48 2 L V N 248.35 454.98 248.35 289.48 2 L V N 298.3 434.48 298.3 288.98 2 L V N 349.51 434.48 349.51 288.98 2 L V N 400.71 434.48 400.71 288.98 2 L V N 451.92 454.98 451.92 289.48 2 L V N 159.84 455.23 452.17 455.23 2 L V N 248.6 434.23 452.17 434.23 2 L V N 160.34 409.48 451.67 409.48 2 L V N 160.34 406.98 451.67 406.98 2 L V N 159.84 391.23 452.17 391.23 2 L V N 159.84 374.23 452.17 374.23 2 L V N 159.84 357.23 452.17 357.23 2 L V N 159.84 340.23 452.17 340.23 2 L V N 159.84 323.23 452.17 323.23 2 L V N 159.84 306.23 452.17 306.23 2 L V N 159.84 289.23 452.17 289.23 2 L V N 159.91 261.98 159.91 96.48 2 L V N 199.73 262.48 199.73 95.98 2 L V N 248.8 261.98 248.8 96.48 2 L V N 251.3 261.98 251.3 96.48 2 L V N 300.56 241.48 300.56 95.98 2 L V N 351.07 241.48 351.07 95.98 2 L V N 401.58 241.48 401.58 95.98 2 L V N 452.08 261.98 452.08 96.48 2 L V N 159.66 262.23 452.33 262.23 2 L V N 251.55 241.23 452.33 241.23 2 L V N 160.16 216.48 451.83 216.48 2 L V N 160.16 213.98 451.83 213.98 2 L V N 159.66 198.23 452.33 198.23 2 L V N 159.66 181.23 452.33 181.23 2 L V N 159.66 164.23 452.33 164.23 2 L V N 159.66 147.23 452.33 147.23 2 L V N 159.66 130.23 452.33 130.23 2 L V N 159.66 113.23 452.33 113.23 2 L V N 159.66 96.23 452.33 96.23 2 L V N 72 72 540 720 C 120.31 482.23 491.69 720 C 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 72 584 374 780 302 196 166.8 520.42 FMBEGINEPSF %%BeginDocument: /jayar/d0/vaughn/thesis/place/trans-vlsi/figs/ani2.eps %!PS-Adobe-2.0 EPSF-1.2 %%BoundingBox: 72 584 374 780 %!PS-Adobe-1.0 %%Creator: gractus.eecg:vaughn (Vaughn Betz,EECG,LP 392,1653,7662197,G,G ) %%Title: stdin (ditroff) %%CreationDate: Mon Sep 16 15:05:18 1996 %%EndComments % Start of psdit.pro -- prolog for ditroff translator % Copyright (c) 1985,1987 Adobe Systems Incorporated. All Rights Reserved. % GOVERNMENT END USERS: See Notice file in TranScript library directory % -- probably /usr/lib/ps/Notice % RCS: $Header: psdit.pro,v 1.2 88/10/29 07:37:27 moraes Exp $ /$DITroff 140 dict def $DITroff begin %% Psfig additions /DocumentInitState [ matrix currentmatrix currentlinewidth currentlinecap currentlinejoin currentdash currentgray currentmiterlimit ] cvx def /startFig { /SavedState save def userdict maxlength dict begin currentpoint transform DocumentInitState setmiterlimit setgray setdash setlinejoin setlinecap setlinewidth setmatrix itransform moveto /ury exch def /urx exch def /lly exch def /llx exch def /y exch 72 mul resolution div def /x exch 72 mul resolution div def currentpoint /cy exch def /cx exch def /sx x urx llx sub div def % scaling for x /sy y ury lly sub div def % scaling for y sx sy scale % scale by (sx,sy) cx sx div llx sub cy sy div ury sub translate /DefFigCTM matrix currentmatrix def /initmatrix { DefFigCTM setmatrix } def /defaultmatrix { DefFigCTM exch copy } def /initgraphics { DocumentInitState setmiterlimit setgray setdash setlinejoin setlinecap setlinewidth setmatrix DefFigCTM setmatrix } def /showpage { initgraphics } def } def % Args are llx lly urx ury (in figure coordinates) /clipFig { currentpoint 6 2 roll newpath 4 copy 4 2 roll moveto 6 -1 roll exch lineto exch lineto exch lineto closepath clip newpath moveto } def % doclip, if called, will always be just after a `startfig' /doclip { llx lly urx ury clipFig } def /endFig { end SavedState restore } def /globalstart { % Push details about the enviornment on the stack. fontnum fontsize fontslant fontheight firstpage mh my resolution slotno currentpoint pagesave restore gsave } def /globalend { grestore moveto /slotno exch def /resolution exch def /my exch def /mh exch def /firstpage exch def /fontheight exch def /fontslant exch def /fontsize exch def /fontnum exch def F /pagesave save def } def %% end Psfig additions /fontnum 1 def /fontsize 10 def /fontheight 10 def /fontslant 0 def /xi {0 72 11 mul translate 72 resolution div dup neg scale 0 0 moveto /fontnum 1 def /fontsize 10 def /fontheight 10 def /fontslant 0 def F /pagesave save def}def /PB{save /psv exch def currentpoint translate resolution 72 div dup neg scale 0 0 moveto}def /PE{psv restore}def /m1 matrix def /m2 matrix def /m3 matrix def /oldmat matrix def /tan{dup sin exch cos div}bind def /point{resolution 72 div mul}bind def /dround {transform round exch round exch itransform}bind def /xT{/devname exch def}def /xr{/mh exch def /my exch def /resolution exch def}def /xp{}def /xs{docsave restore end}def /xt{}def /xf{/fontname exch def /slotno exch def fontnames slotno get fontname eq not {fonts slotno fontname findfont put fontnames slotno fontname put}if}def /xH{/fontheight exch def F}bind def /xS{/fontslant exch def F}bind def /s{/fontsize exch def /fontheight fontsize def F}bind def /f{/fontnum exch def F}bind def /F{fontheight 0 le {/fontheight fontsize def}if fonts fontnum get fontsize point 0 0 fontheight point neg 0 0 m1 astore fontslant 0 ne{1 0 fontslant tan 1 0 0 m2 astore m3 concatmatrix}if makefont setfont .04 fontsize point mul 0 dround pop setlinewidth}bind def /X{exch currentpoint exch pop moveto show}bind def /N{3 1 roll moveto show}bind def /Y{exch currentpoint pop exch moveto show}bind def /S /show load def /ditpush{}def/ditpop{}def /AX{3 -1 roll currentpoint exch pop moveto 0 exch ashow}bind def /AN{4 2 roll moveto 0 exch ashow}bind def /AY{3 -1 roll currentpoint pop exch moveto 0 exch ashow}bind def /AS{0 exch ashow}bind def /MX{currentpoint exch pop moveto}bind def /MY{currentpoint pop exch moveto}bind def /MXY /moveto load def /cb{pop}def % action on unknown char -- nothing for now /n{}def/w{}def /p{pop showpage pagesave restore /pagesave save def}def /abspoint{currentpoint exch pop add exch currentpoint pop add exch}def /dstroke{currentpoint stroke moveto}bind def /Dl{2 copy gsave rlineto stroke grestore rmoveto}bind def /arcellipse{oldmat currentmatrix pop currentpoint translate 1 diamv diamh div scale /rad diamh 2 div def rad 0 rad -180 180 arc oldmat setmatrix}def /Dc{gsave dup /diamv exch def /diamh exch def arcellipse dstroke grestore diamh 0 rmoveto}def /De{gsave /diamv exch def /diamh exch def arcellipse dstroke grestore diamh 0 rmoveto}def /Da{currentpoint /by exch def /bx exch def /fy exch def /fx exch def /cy exch def /cx exch def /rad cx cx mul cy cy mul add sqrt def /ang1 cy neg cx neg atan def /ang2 fy fx atan def cx bx add cy by add 2 copy rad ang1 ang2 arcn stroke exch fx add exch fy add moveto}def /Barray 200 array def % 200 values in a wiggle /D~{mark}def /D~~{counttomark Barray exch 0 exch getinterval astore /Bcontrol exch def pop /Blen Bcontrol length def Blen 4 ge Blen 2 mod 0 eq and {Bcontrol 0 get Bcontrol 1 get abspoint /Ycont exch def /Xcont exch def Bcontrol 0 2 copy get 2 mul put Bcontrol 1 2 copy get 2 mul put Bcontrol Blen 2 sub 2 copy get 2 mul put Bcontrol Blen 1 sub 2 copy get 2 mul put /Ybi /Xbi currentpoint 3 1 roll def def 0 2 Blen 4 sub {/i exch def Bcontrol i get 3 div Bcontrol i 1 add get 3 div Bcontrol i get 3 mul Bcontrol i 2 add get add 6 div Bcontrol i 1 add get 3 mul Bcontrol i 3 add get add 6 div /Xbi Xcont Bcontrol i 2 add get 2 div add def /Ybi Ycont Bcontrol i 3 add get 2 div add def /Xcont Xcont Bcontrol i 2 add get add def /Ycont Ycont Bcontrol i 3 add get add def Xbi currentpoint pop sub Ybi currentpoint exch pop sub rcurveto }for dstroke}if}def end /ditstart{$DITroff begin /nfonts 60 def % NFONTS makedev/ditroff dependent! /fonts[nfonts{0}repeat]def /fontnames[nfonts{()}repeat]def /docsave save def }def % character outcalls /oc {/pswid exch def /cc exch def /name exch def /ditwid pswid fontsize mul resolution mul 72000 div def /ditsiz fontsize resolution mul 72 div def ocprocs name known{ocprocs name get exec}{name cb} ifelse}def /fractm [.65 0 0 .6 0 0] def /fraction {/fden exch def /fnum exch def gsave /cf currentfont def cf fractm makefont setfont 0 .3 dm 2 copy neg rmoveto fnum show rmoveto currentfont cf setfont(\244)show setfont fden show grestore ditwid 0 rmoveto} def /oce {grestore ditwid 0 rmoveto}def /dm {ditsiz mul}def /ocprocs 50 dict def ocprocs begin (14){(1)(4)fraction}def (12){(1)(2)fraction}def (34){(3)(4)fraction}def (13){(1)(3)fraction}def (23){(2)(3)fraction}def (18){(1)(8)fraction}def (38){(3)(8)fraction}def (58){(5)(8)fraction}def (78){(7)(8)fraction}def (sr){gsave .05 dm .16 dm rmoveto(\326)show oce}def (is){gsave 0 .15 dm rmoveto(\362)show oce}def (->){gsave 0 .02 dm rmoveto(\256)show oce}def (<-){gsave 0 .02 dm rmoveto(\254)show oce}def (==){gsave 0 .05 dm rmoveto(\272)show oce}def end % DIThacks fonts for some special chars 50 dict dup begin /FontType 3 def /FontName /DIThacks def /FontMatrix [.001 0.0 0.0 .001 0.0 0.0] def /FontBBox [-220 -280 900 900] def% a lie but ... /Encoding 256 array def 0 1 255{Encoding exch /.notdef put}for Encoding dup 8#040/space put %space dup 8#110/rc put %right ceil dup 8#111/lt put %left top curl dup 8#112/bv put %bold vert dup 8#113/lk put %left mid curl dup 8#114/lb put %left bot curl dup 8#115/rt put %right top curl dup 8#116/rk put %right mid curl dup 8#117/rb put %right bot curl dup 8#120/rf put %right floor dup 8#121/lf put %left floor dup 8#122/lc put %left ceil dup 8#140/sq put %square dup 8#141/bx put %box dup 8#142/ci put %circle dup 8#143/br put %box rule dup 8#144/rn put %root extender dup 8#145/vr put %vertical rule dup 8#146/ob put %outline bullet dup 8#147/bu put %bullet dup 8#150/ru put %rule dup 8#151/ul put %underline pop /DITfd 100 dict def /BuildChar{0 begin /cc exch def /fd exch def /charname fd /Encoding get cc get def /charwid fd /Metrics get charname get def /charproc fd /CharProcs get charname get def charwid 0 fd /FontBBox get aload pop setcachedevice 40 setlinewidth newpath 0 0 moveto gsave charproc grestore end}def /BuildChar load 0 DITfd put %/UniqueID 5 def /CharProcs 50 dict def CharProcs begin /space{}def /.notdef{}def /ru{500 0 rls}def /rn{0 750 moveto 500 0 rls}def /vr{20 800 moveto 0 -770 rls}def /bv{20 800 moveto 0 -1000 rls}def /br{20 770 moveto 0 -1040 rls}def /ul{0 -250 moveto 500 0 rls}def /ob{200 250 rmoveto currentpoint newpath 200 0 360 arc closepath stroke}def /bu{200 250 rmoveto currentpoint newpath 200 0 360 arc closepath fill}def /sq{80 0 rmoveto currentpoint dround newpath moveto 640 0 rlineto 0 640 rlineto -640 0 rlineto closepath stroke}def /bx{80 0 rmoveto currentpoint dround newpath moveto 640 0 rlineto 0 640 rlineto -640 0 rlineto closepath fill}def /ci{355 333 rmoveto currentpoint newpath 333 0 360 arc 50 setlinewidth stroke}def /lt{20 -200 moveto 0 550 rlineto currx 800 2cx s4 add exch s4 a4p stroke}def /lb{20 800 moveto 0 -550 rlineto currx -200 2cx s4 add exch s4 a4p stroke}def /rt{20 -200 moveto 0 550 rlineto currx 800 2cx s4 sub exch s4 a4p stroke}def /rb{20 800 moveto 0 -500 rlineto currx -200 2cx s4 sub exch s4 a4p stroke}def /lk{20 800 moveto 20 300 -280 300 s4 arcto pop pop 1000 sub currentpoint stroke moveto 20 300 4 2 roll s4 a4p 20 -200 lineto stroke}def /rk{20 800 moveto 20 300 320 300 s4 arcto pop pop 1000 sub currentpoint stroke moveto 20 300 4 2 roll s4 a4p 20 -200 lineto stroke}def /lf{20 800 moveto 0 -1000 rlineto s4 0 rls}def /rf{20 800 moveto 0 -1000 rlineto s4 neg 0 rls}def /lc{20 -200 moveto 0 1000 rlineto s4 0 rls}def /rc{20 -200 moveto 0 1000 rlineto s4 neg 0 rls}def end /Metrics 50 dict def Metrics begin /.notdef 0 def /space 500 def /ru 500 def /br 0 def /lt 250 def /lb 250 def /rt 250 def /rb 250 def /lk 250 def /rk 250 def /rc 250 def /lc 250 def /rf 250 def /lf 250 def /bv 250 def /ob 350 def /bu 350 def /ci 750 def /bx 750 def /sq 750 def /rn 500 def /ul 500 def /vr 0 def end DITfd begin /s2 500 def /s4 250 def /s3 333 def /a4p{arcto pop pop pop pop}def /2cx{2 copy exch}def /rls{rlineto stroke}def /currx{currentpoint pop}def /dround{transform round exch round exch itransform} def end end /DIThacks exch definefont pop ditstart (psc)xT 576 1 1 xr 1(Times-Roman)xf 1 f 2(Times-Italic)xf 2 f 3(Times-Bold)xf 3 f 4(Times-BoldItalic)xf 4 f 5(Helvetica)xf 5 f 6(Helvetica-Bold)xf 6 f 7(Courier)xf 7 f 8(Courier-Bold)xf 8 f 9(Symbol)xf 9 f 10(DIThacks)xf 10 f 10 s 1 f xi %%EndProlog %%Page: 1 1 10 s 0 xH 0 xS 1 f 1055 1478 MXY 0 -1382 Dl 1900 0 Dl 2956 MX 0 1382 Dl -1900 0 Dl 1004 1659(Horizontal)N 1367(Channel)X 1654(Capacity)X 1959(/)X 2001(Vertical)X 2280(Channel)X 2567(Capacity)X 2872(\()X 2 f 2899(R)X 7 s 2948 1675(h)N 1 f 10 s 2982 1659(\))N 593 659(Average)N 635 755(Track)N 574 851(Segments)N 603 947(per)N 726(Tile)X 1055 1393 MXY 28 0 Dl 955 1409(13)N 1055 1275 MXY 28 0 Dl 955 1291(14)N 1055 1156 MXY 28 0 Dl 955 1172(15)N 1055 1037 MXY 28 0 Dl 955 1053(16)N 1055 919 MXY 28 0 Dl 955 935(17)N 1055 800 MXY 28 0 Dl 955 816(18)N 1055 681 MXY 28 0 Dl 955 697(19)N 1055 563 MXY 28 0 Dl 955 579(20)N 1055 444 MXY 28 0 Dl 955 460(21)N 1055 325 MXY 28 0 Dl 955 341(22)N 1055 207 MXY 28 0 Dl 955 223(23)N 1172 1478 MXY 0 -28 Dl 1152 1566(1)N 1728 1478 MXY 0 -28 Dl 1708 1566(2)N 2284 1478 MXY 0 -28 Dl 2264 1566(3)N 2840 1478 MXY 0 -28 Dl 2820 1566(4)N 5 s 10 f 1165 1357(g)N 10 s 1172 1341 MXY 75 -28 Dl 5 s 1241 1329(g)N 10 s 1248 1313 MXY 109 -9 Dl 5 s 1350 1319(g)N 10 s 1357 1303 MXY 141 -55 Dl 5 s 1491 1263(g)N 10 s 1498 1247 MXY 229 -100 Dl 5 s 1721 1162(g)N 10 s 1728 1146 MXY 351 -331 Dl 5 s 2072 831(g)N 10 s 2079 815 MXY 760 -634 Dl 5 s 2833 196(g)N 1165 1043(g)N 10 s 1172 1027 MXY 21 19 Dl 1226 1075 MXY 21 19 Dl 5 s 1241 1110(g)N 10 s 1248 1094 MXY 28 1 Dl 1328 1098 MXY 28 1 Dl 5 s 1350 1116(g)N 10 s 1357 1100 MXY 23 17 Dl 1397 1130 MXY 23 17 Dl 1436 1159 MXY 23 17 Dl 1475 1189 MXY 23 17 Dl 5 s 1491 1223(g)N 10 s 1498 1207 MXY 28 0 Dl 1566 1208 MXY 28 0 Dl 1632 1210 MXY 28 0 Dl 1699 1212 MXY 28 0 Dl 5 s 1721 1229(g)N 10 s 1728 1213 MXY 28 -1 Dl 1782 1211 MXY 28 -1 Dl 1835 1209 MXY 28 -1 Dl 1889 MX 28 -1 Dl 1943 1206 MXY 28 -1 Dl 1996 1204 MXY 28 -1 Dl 2051 MX 28 -1 Dl 5 s 2072 1218(g)N 10 s 2079 1202 MXY 27 -8 Dl 2136 1186 MXY 27 -8 Dl 2192 1169 MXY 27 -8 Dl 2248 1153 MXY 27 -8 Dl 2305 1137 MXY 27 -8 Dl 2361 1121 MXY 27 -8 Dl 2418 1104 MXY 27 -8 Dl 2474 1088 MXY 27 -8 Dl 2530 1072 MXY 27 -8 Dl 2586 1056 MXY 27 -8 Dl 2643 1040 MXY 27 -8 Dl 2699 1023 MXY 27 -8 Dl 2756 1007 MXY 27 -8 Dl 2812 991 MXY 27 -8 Dl 5 s 2833 999(g)N 1 p %%Trailer xt xs %%EndDocument FMENDEPSF 0 10 Q 0 X 0 0 0 1 0 0 0 K (Full-Perimeter Pins) 330.7 674.29 T (T) 366.01 604.33 T (op/Bottom Pins) 371.32 604.33 T 181.26 497.21 473.96 510.22 R 7 X V 0 11 Q 0 X (Fig. 5. Area-ef) 191.43 502.89 T (\336cienc) 258.66 502.89 T (y vs. directional bias for square FPGAs.) 287.82 502.89 T 72 72 540 720 C 0 0 612 792 C FMENDPAGE %%EndPage: "10" 10 %%Page: "11" 11 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 10 Q 0 X 0 0 0 1 0 0 0 K (11 of 22) 289.33 36.66 T 0 11 Q 0.47 (Fig. 5 sho) 90 556.82 P 0.47 (ws that for the full-perimeter logic block pin positioning the best architecture has no direc-) 134.38 556.82 P 0.56 (tional bias. Ho) 72 537.82 P 0.56 (we) 137.31 537.82 P 0.56 (v) 149.86 537.82 P 0.56 (er) 155.19 537.82 P 0.56 (, when the pins are restricted to the top and bottom of the logic block, the most ef) 163.3 537.82 P 0.56 (\336-) 530.22 537.82 P 2.3 (cient architecture has horizontal channels which are roughly twice as thick as the v) 72 518.82 P 2.3 (ertical channels.) 466.22 518.82 P 0.84 (Another important conclusion is that the best full-perimeter architecture is about 8% more area-ef) 72 499.82 P 0.84 (\336cient) 512.5 499.82 P (than the best top/bottom pin architecture.) 72 480.82 T 0.66 (The full-perimeter architecture is more area-ef) 90 461.82 P 0.66 (\336cient because there is a greater chance that the block) 297.35 461.82 P 0.12 (input pins are closer to their desired connections when the) 72 442.82 P 0.12 (y are in this con\336guration than when the) 328.61 442.82 P 0.12 (y are in) 506.77 442.82 P (the top/bottom con\336guration. F) 72 423.82 T (or e) 209.35 423.82 T (xample, consider the tw) 225.98 423.82 T (o routings of a multi-terminal net sho) 330.96 423.82 T (wn in Fig.) 495.08 423.82 T 1.17 (6. The top/bottom pin con\336guration needs six track se) 72 404.82 P 1.17 (gments to route this net, while the full-perimeter) 318.57 404.82 P 0.96 (con\336guration requires only \336v) 72 385.82 P 0.96 (e. By making use of the functional equi) 208.23 385.82 P 0.96 (v) 388.19 385.82 P 0.96 (alence of LUT input pins during) 393.42 385.82 P -0.1 (routing, the router can often connect to a logic block pin adjoining a track se) 72 366.82 P -0.1 (gment it needs to use for other) 406.79 366.82 P 0.46 (connections, essentially making the connection to this logic block for free. Since the top/bottom pin con-) 72 347.82 P 1.41 (\336guration has input pins bordering on only the horizontal channels, such \322free\323 connections into logic) 72 328.82 P (blocks are less frequent, reducing area-ef) 72 309.82 T (\336cienc) 252.54 309.82 T (y) 281.7 309.82 T (.) 286.49 309.82 T 0.25 (The full-perimeter pins con\336guration achie) 90 290.82 P 0.25 (v) 280.15 290.82 P 0.25 (es the highest area-ef) 285.48 290.82 P 0.25 (\336cienc) 379.12 290.82 P 0.25 (y when there is no directional) 408.29 290.82 P 0.15 (bias to the routing because this mak) 72 271.82 P 0.15 (es the dif) 230.47 271.82 P 0.15 (\336culty of routing to each of a logic block\325) 270.83 271.82 P 0.15 (s nearest neighbors) 455.38 271.82 P 0.49 (roughly equal. Consequently) 72 252.82 P 0.49 (, the placement softw) 199.07 252.82 P 0.49 (are can use all the nearby logic block locations equally) 294.53 252.82 P 0.69 (to cluster the f) 72 233.82 P 0.69 (anout of a net around its dri) 137.21 233.82 P 0.69 (v) 262.68 233.82 P 0.69 (er) 268.02 233.82 P 0.69 (. Essentially) 275.96 233.82 P 0.69 (, this allo) 329.71 233.82 P 0.69 (ws one to cluster tightly coupled por-) 371.47 233.82 P 0.1 (tions of logic in the smallest possible area. The top/bottom pins con\336guration, on the other hand, prefers a) 72 214.82 P 0.69 (2:1 directional bias because e) 72 195.82 P 0.69 (v) 204.03 195.82 P 0.69 (ery connection to a logic block pin must come from a horizontal channel.) 209.36 195.82 P 1.37 (This e) 72 176.82 P 1.37 (xtra pressure on the horizontal routing resources is signi\336cant, since the a) 100.4 176.82 P 1.37 (v) 438.46 176.82 P 1.37 (erage distance routed) 443.8 176.82 P (between pins is only about 3 track se) 72 157.82 T (gments.) 234.06 157.82 T 1 12 Q (4.2) 72 128.15 T (Rectangular FPGAs) 90 128.15 T 0 11 Q 0.14 (In order to increase the IO-to-logic ratio, FPGA manuf) 90 106.82 P 0.14 (acturers may w) 332.05 106.82 P 0.14 (ant to b) 399.42 106.82 P 0.14 (uild rectangular FPGAs,) 432.48 106.82 P 0.06 (as this increases the die perimeter and hence the number of pads. In this case the channels in one direction) 72 87.82 P 72 72 540 720 C 97.38 564.15 514.62 720 C 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 130.76 663.32 147.83 680.39 R 7 X 0 0 0 1 0 0 0 K V 0.5 H 0 Z 0 X N 138.34 660.92 140.3 663.37 R V 2 Z N 147.9 670.72 149.86 673.17 R V N 128.79 670.72 130.75 673.17 R V N 138.34 680.28 140.3 682.73 R V N 130.76 629.02 147.83 646.09 R 7 X V 0 Z 0 X N 138.34 626.62 140.3 629.07 R V 2 Z N 147.9 636.42 149.86 638.87 R V N 128.79 636.42 130.75 638.87 R V N 138.34 645.98 140.3 648.43 R V N 127.24 604.96 267.63 617.02 R 7 X V 0 10 Q 0 X (\050a\051) 191.88 610.35 T 350.02 606.58 469.41 617.85 R 7 X V 0 X (\050b\051) 403.89 611.19 T 130.76 697.62 147.83 714.69 R 4 X V 0 Z 0 X N 105.26 573.22 509.54 598.32 R 7 X V 0 11 Q 0 X (Fig. 6. Example multi-terminal net routing with \050a\051 full-perimeter pins and) 141.95 590.99 T (\050b\051 top/bottom pins.) 263.55 578.99 T 138.34 695.22 140.3 697.67 R V 2 Z N 147.9 705.02 149.86 707.47 R V N 128.79 705.02 130.75 707.47 R V N 138.34 714.58 140.3 717.03 R V N 170.45 663.32 187.52 680.39 R 7 X V 0 Z 0 X N 178.03 660.92 179.99 663.37 R V 2 Z N 187.59 670.72 189.55 673.17 R V N 168.48 670.72 170.44 673.17 R V N 178.03 680.28 179.99 682.73 R V N 170.45 629.02 187.52 646.09 R 7 X V 0 Z 0 X N 178.03 626.62 179.99 629.07 R V 2 Z N 187.59 636.42 189.55 638.87 R V N 168.48 636.42 170.44 638.87 R V N 178.03 645.98 179.99 648.43 R V N 170.45 697.62 187.52 714.69 R 7 X V 0 Z 0 X N 178.03 695.22 179.99 697.67 R V 2 Z N 187.59 705.02 189.55 707.47 R V N 168.48 705.02 170.44 707.47 R V N 178.03 714.58 179.99 717.03 R V N 210.14 663.32 227.21 680.39 R 7 X V 0 Z 0 X N 217.72 660.92 219.68 663.37 R V 2 Z N 227.28 670.72 229.24 673.17 R V N 208.17 670.72 210.13 673.17 R V N 217.72 680.28 219.68 682.73 R V N 210.14 629.02 227.21 646.09 R 4 X V 0 Z 0 X N 217.72 626.62 219.68 629.07 R V 2 Z N 227.28 636.42 229.24 638.87 R V N 208.17 636.42 210.13 638.87 R V N 217.72 645.98 219.68 648.43 R V N 210.14 697.62 227.21 714.69 R 4 X V 0 Z 0 X N 217.72 695.22 219.68 697.67 R V 2 Z N 227.28 705.02 229.24 707.47 R V N 208.17 705.02 210.13 707.47 R V N 217.72 714.58 219.68 717.03 R V N 249.83 663.32 266.9 680.39 R 7 X V 0 Z 0 X N 257.41 660.92 259.37 663.37 R V 2 Z N 266.97 670.72 268.93 673.17 R V N 247.86 670.72 249.82 673.17 R V N 257.41 680.28 259.37 682.73 R V N 249.83 629.02 266.9 646.09 R 4 X V 0 Z 0 X N 257.41 626.62 259.37 629.07 R V 2 Z N 266.97 636.42 268.93 638.87 R V N 247.86 636.42 249.82 638.87 R V N 257.41 645.98 259.37 648.43 R V N 249.83 697.62 266.9 714.69 R 7 X V 0 Z 0 X N 257.41 695.22 259.37 697.67 R V 2 Z N 266.97 705.02 268.93 707.47 R V N 247.86 705.02 249.82 707.47 R V N 257.41 714.58 259.37 717.03 R V N 338.27 697.72 355.34 714.79 R 4 X V 0 Z 0 X N 350.01 714.93 351.97 717.38 R V 2 Z N 342.42 714.93 344.38 717.38 R V N 139.32 695.47 139.32 690.08 218.7 690.08 218.7 695.71 4 L 1 H N 218.7 690.08 238.06 690.08 238.06 637.89 248.1 637.89 4 L N 237.81 637.89 228.99 637.89 2 L N 350.01 695.08 351.97 697.53 R V 0.5 H N 342.42 695.08 344.38 697.53 R V N 338.27 663.54 355.34 680.61 R 7 X V 0 Z 0 X N 350.01 680.75 351.97 683.2 R V 2 Z N 342.42 680.75 344.38 683.2 R V N 350.01 660.91 351.97 663.35 R V N 342.42 660.91 344.38 663.35 R V N 338.27 629.37 355.34 646.44 R 7 X V 0 Z 0 X N 350.01 646.57 351.97 649.02 R V 2 Z N 342.42 646.57 344.38 649.02 R V N 350.01 626.73 351.97 629.18 R V N 342.42 626.73 344.38 629.18 R V N 379.1 697.72 396.17 714.79 R 7 X V 0 Z 0 X N 390.85 714.93 392.81 717.38 R V 2 Z N 383.25 714.93 385.21 717.38 R V N 390.85 695.08 392.81 697.53 R V N 383.25 695.08 385.21 697.53 R V N 379.1 663.54 396.17 680.61 R 7 X V 0 Z 0 X N 390.85 680.75 392.81 683.2 R V 2 Z N 383.25 680.75 385.21 683.2 R V N 390.85 660.91 392.81 663.35 R V N 383.25 660.91 385.21 663.35 R V N 379.1 629.37 396.17 646.44 R 7 X V 0 Z 0 X N 390.85 646.57 392.81 649.02 R V 2 Z N 383.25 646.57 385.21 649.02 R V N 390.85 626.73 392.81 629.18 R V N 383.25 626.73 385.21 629.18 R V N 419.93 697.72 437 714.79 R 4 X V 0 Z 0 X N 431.68 714.93 433.64 717.38 R V 2 Z N 424.08 714.93 426.04 717.38 R V N 431.68 695.08 433.64 697.53 R V N 424.08 695.08 426.04 697.53 R V N 419.93 663.54 437 680.61 R 7 X V 0 Z 0 X N 431.68 680.75 433.64 683.2 R V 2 Z N 424.08 680.75 426.04 683.2 R V N 431.68 660.91 433.64 663.35 R V N 424.08 660.91 426.04 663.35 R V N 419.93 629.37 437 646.44 R 4 X V 0 Z 0 X N 431.68 646.57 433.64 649.02 R V 2 Z N 424.08 646.57 426.04 649.02 R V N 431.68 626.73 433.64 629.18 R V N 424.08 626.73 426.04 629.18 R V N 460.76 697.72 477.83 714.79 R 7 X V 0 Z 0 X N 472.51 714.93 474.47 717.38 R V 2 Z N 464.91 714.93 466.87 717.38 R V N 472.51 695.08 474.47 697.53 R V N 464.91 695.08 466.87 697.53 R V N 460.76 663.54 477.83 680.61 R 7 X V 0 Z 0 X N 472.51 680.75 474.47 683.2 R V 2 Z N 464.91 680.75 466.87 683.2 R V N 472.51 660.91 474.47 663.35 R V N 464.91 660.91 466.87 663.35 R V N 460.76 629.37 477.83 646.44 R 4 X V 0 Z 0 X N 472.51 646.57 474.47 649.02 R V 2 Z N 464.91 646.57 466.87 649.02 R V N 472.51 626.73 474.47 629.18 R V N 464.91 626.73 466.87 629.18 R V N 351.75 695.24 351.75 691.57 424.98 691.57 424.98 695.24 4 L 1 H N 424.98 691.57 449.23 691.57 449.23 655.8 473.49 655.8 473.49 648.21 5 L N 448.99 655.8 432.33 655.8 432.33 648.21 3 L N 138.88 690 124.25 690 2 L N 238 638.25 238 623.75 2 L N 350.5 691.5 330 691.5 2 L N 432.25 655.75 412.75 655.75 2 L N 473.5 655.75 485.25 655.75 2 L N 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 72 72 540 720 C 0 0 612 792 C FMENDPAGE %%EndPage: "11" 11 %%Page: "12" 12 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 10 Q 0 X 0 0 0 1 0 0 0 K (12 of 22) 289.33 36.66 T 0 11 Q 0.99 (are longer and ha) 72 574.32 P 0.99 (v) 150.81 574.32 P 0.99 (e more blocks connected to them than the orthogonal channel, so the best amount of) 156.14 574.32 P 0.18 (directional bias may change. W) 72 555.32 P 0.18 (e refer to the ratio of the number of columns in an FPGA to the number of) 210.84 555.32 P (ro) 72 536.32 T (ws as its aspect ratio. Fig. 7 depicts an FPGA with an aspect ratio of tw) 80.89 536.32 T (o.) 394.55 536.32 T (Fig. 8 is a plot of the required tracks per tile v) 90 517.32 T (ersus R) 291.47 517.32 T 0 8.8 Q (h) 324.16 514.57 T 0 11 Q ( for v) 328.56 517.32 T (arious chip aspect ratios for an FPGA with) 352.11 517.32 T 0.09 (the full-perimeter logic block pin positioning. There are tw) 72 498.32 P 0.09 (o features of interest in Fig. 8. First, notice that) 332.01 498.32 P 0.01 (the minimum of the aspect ratio = 1 curv) 72 479.32 P 0.01 (e is the lo) 251.68 479.32 P 0.01 (west of the three, indicating that a square FPGA is most) 293.92 479.32 P 0.87 (area-ef) 72 460.32 P 0.87 (\336cient. Secondly) 102.25 460.32 P 0.87 (, the v) 176.35 460.32 P 0.87 (alue of R) 205.01 460.32 P 0 8.8 Q 0.7 (h) 247.09 457.57 P 0 11 Q 0.87 ( at which the minimum area occurs increases as the aspect ratio) 251.49 460.32 P 0.54 (increases. As the aspect ratio increases, the horizontal channels become longer than the v) 72 441.32 P 0.54 (ertical channels) 470.73 441.32 P 0.1 (and this results in greater demand for horizontal track se) 72 422.32 P 0.1 (gments. The best v) 320.5 422.32 P 0.1 (alue of R) 403.64 422.32 P 0 8.8 Q 0.08 (h) 444.17 419.57 P 0 11 Q 0.1 ( increases from 1 for) 448.57 422.32 P (a square FPGA to 1.33 and 1.59 for aspect ratios of 2 and 3, respecti) 72 403.32 T (v) 372.64 403.32 T (ely) 377.98 403.32 T (.) 390.7 403.32 T -0.24 (The solid curv) 90 384.32 P -0.24 (e in Fig. 9 sho) 152.91 384.32 P -0.24 (ws ho) 214.33 384.32 P -0.24 (w area-ef) 239.79 384.32 P -0.24 (\336cienc) 280.49 384.32 P -0.24 (y v) 309.65 384.32 P -0.24 (aries with aspect ratio when we set R) 322.89 384.32 P 0 8.8 Q -0.19 (h) 484.67 381.57 P 0 11 Q -0.24 ( to the most) 489.07 384.32 P 0.78 (appropriate v) 72 365.32 P 0.78 (alue for each aspect ratio. The dotted curv) 130.85 365.32 P 0.78 (e in Fig. 9 k) 321.23 365.32 P 0.78 (eeps R) 377.09 365.32 P 0 8.8 Q 0.62 (h) 407.5 362.57 P 0 11 Q 0.78 ( \336x) 411.9 365.32 P 0.78 (ed at 1, which is the best) 426.88 365.32 P 1.35 (v) 72 346.32 P 1.35 (alue for a square FPGA. The routing resource requirements increase moderately with aspect ratio; an) 77.22 346.32 P -0.04 (FPGA with an aspect ratio of 3 requires 18% more tracks per tile than a square FPGA when R) 72 327.32 P 0 8.8 Q -0.03 (h) 485.6 324.57 P 0 11 Q -0.04 ( is 1. When) 490 327.32 P 0.13 (the most appropriate v) 72 308.32 P 0.13 (alue of R) 170.78 308.32 P 0 8.8 Q 0.1 (h) 211.36 305.57 P 0 11 Q 0.13 ( is used for each aspect ratio, ho) 215.76 308.32 P 0.13 (we) 357.49 308.32 P 0.13 (v) 370.05 308.32 P 0.13 (er) 375.38 308.32 P 0.13 (, an FPGA with an aspect ratio of 3) 383.49 308.32 P 72 72 540 720 C 118.12 581.66 493.88 720 C 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 213.15 701.01 230.22 718.08 R 4 X 0 0 0 1 0 0 0 K V 0.5 H 0 Z 0 X N 247.31 700.95 264.38 718.02 R 4 X V 0 X N 281.31 701.01 298.38 718.08 R 4 X V 0 X N 213.22 667.01 230.29 684.08 R 4 X V 0 X N 247.38 666.94 264.45 684.01 R 4 X V 0 X N 281.38 667.01 298.45 684.08 R 4 X V 0 X N 213.22 633.01 230.29 650.08 R 4 X V 0 X N 247.38 632.94 264.45 650.01 R 4 X V 0 X N 281.38 633.01 298.45 650.08 R 4 X V 0 X N 233.62 633.08 233.62 718.08 2 L 4 X V 2 Z 0 X N 237.02 633.08 237.02 718.08 2 L 4 X V 0 X N 240.42 633.08 240.42 718.08 2 L 4 X V 0 X N 243.82 633.08 243.82 718.08 2 L 4 X V 0 X N 267.62 718.08 267.62 633.08 2 L 4 X V 0 X N 271.02 718.08 271.02 633.08 2 L 4 X V 0 X N 274.42 718.08 274.42 633.08 2 L 4 X V 0 X N 277.82 718.08 277.82 633.08 2 L 4 X V 0 X N 213.22 697.68 400.16 697.68 2 L 4 X V 0 X N 213.22 694.28 400.16 694.28 2 L 4 X V 0 X N 213.22 690.88 400.16 690.88 2 L 4 X V 0 X N 213.22 687.48 400.16 687.48 2 L 4 X V 0 X N 213.22 663.68 400.16 663.68 2 L 4 X V 0 X N 213.22 660.28 400.16 660.28 2 L 4 X V 0 X N 213.22 656.88 400.16 656.88 2 L 4 X V 0 X N 213.22 653.48 400.16 653.48 2 L 4 X V 0 X N 314.86 701.01 331.93 718.08 R 4 X V 0 Z 0 X N 349.02 700.95 366.09 718.02 R 4 X V 0 X N 383.02 701.01 400.09 718.08 R 4 X V 0 X N 314.93 667.01 332 684.08 R 4 X V 0 X N 349.09 666.94 366.16 684.01 R 4 X V 0 X N 383.09 667.01 400.16 684.08 R 4 X V 0 X N 314.93 633.01 332 650.08 R 4 X V 0 X N 349.09 632.94 366.16 650.01 R 4 X V 0 X N 383.09 633.01 400.16 650.08 R 4 X V 0 X N 335.33 633.08 335.33 718.08 2 L 4 X V 2 Z 0 X N 338.73 633.08 338.73 718.08 2 L 4 X V 0 X N 342.13 633.08 342.13 718.08 2 L 4 X V 0 X N 345.53 633.08 345.53 718.08 2 L 4 X V 0 X N 369.33 718.08 369.33 633.08 2 L 4 X V 0 X N 372.73 718.08 372.73 633.08 2 L 4 X V 0 X N 376.13 718.08 376.13 633.08 2 L 4 X V 0 X N 379.53 718.08 379.53 633.08 2 L 4 X V 0 X N 301.55 633.08 301.55 718.08 2 L 4 X V 0 X N 304.95 633.08 304.95 718.08 2 L 4 X V 0 X N 308.36 633.08 308.36 718.08 2 L 4 X V 0 X N 311.76 633.08 311.76 718.08 2 L 4 X V 0 X N 406.39 671.88 443.6 682.08 R 7 X V 0 10 Q 0 X (m ro) 410.26 675.42 T (ws) 428.61 675.42 T 279.61 616.51 339.01 626.71 R 7 X V 0 X (2m columns) 284.73 620.04 T 176.67 597.56 456.07 609.37 R 7 X V 0 11 Q 0 X (Fig. 7. An FPGA with an aspect ratio of 2.) 221.5 602.04 T 72 72 540 720 C 0 0 612 792 C 72 72 540 720 C 124.34 72 487.66 300.96 C 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 72 584 370 780 298 196 149.81 91.04 FMBEGINEPSF %%BeginDocument: /jayar/d0/vaughn/thesis/place/trans-vlsi/figs/aspect.eps %!PS-Adobe-2.0 EPSF-1.2 %%BoundingBox: 72 584 370 780 %!PS-Adobe-1.0 %%Creator: gractus.eecg:vaughn (Vaughn Betz,EECG,LP 392,1653,7662197,G,G ) %%Title: stdin (ditroff) %%CreationDate: Mon Sep 16 15:06:41 1996 %%EndComments % Start of psdit.pro -- prolog for ditroff translator % Copyright (c) 1985,1987 Adobe Systems Incorporated. All Rights Reserved. % GOVERNMENT END USERS: See Notice file in TranScript library directory % -- probably /usr/lib/ps/Notice % RCS: $Header: psdit.pro,v 1.2 88/10/29 07:37:27 moraes Exp $ /$DITroff 140 dict def $DITroff begin %% Psfig additions /DocumentInitState [ matrix currentmatrix currentlinewidth currentlinecap currentlinejoin currentdash currentgray currentmiterlimit ] cvx def /startFig { /SavedState save def userdict maxlength dict begin currentpoint transform DocumentInitState setmiterlimit setgray setdash setlinejoin setlinecap setlinewidth setmatrix itransform moveto /ury exch def /urx exch def /lly exch def /llx exch def /y exch 72 mul resolution div def /x exch 72 mul resolution div def currentpoint /cy exch def /cx exch def /sx x urx llx sub div def % scaling for x /sy y ury lly sub div def % scaling for y sx sy scale % scale by (sx,sy) cx sx div llx sub cy sy div ury sub translate /DefFigCTM matrix currentmatrix def /initmatrix { DefFigCTM setmatrix } def /defaultmatrix { DefFigCTM exch copy } def /initgraphics { DocumentInitState setmiterlimit setgray setdash setlinejoin setlinecap setlinewidth setmatrix DefFigCTM setmatrix } def /showpage { initgraphics } def } def % Args are llx lly urx ury (in figure coordinates) /clipFig { currentpoint 6 2 roll newpath 4 copy 4 2 roll moveto 6 -1 roll exch lineto exch lineto exch lineto closepath clip newpath moveto } def % doclip, if called, will always be just after a `startfig' /doclip { llx lly urx ury clipFig } def /endFig { end SavedState restore } def /globalstart { % Push details about the enviornment on the stack. fontnum fontsize fontslant fontheight firstpage mh my resolution slotno currentpoint pagesave restore gsave } def /globalend { grestore moveto /slotno exch def /resolution exch def /my exch def /mh exch def /firstpage exch def /fontheight exch def /fontslant exch def /fontsize exch def /fontnum exch def F /pagesave save def } def %% end Psfig additions /fontnum 1 def /fontsize 10 def /fontheight 10 def /fontslant 0 def /xi {0 72 11 mul translate 72 resolution div dup neg scale 0 0 moveto /fontnum 1 def /fontsize 10 def /fontheight 10 def /fontslant 0 def F /pagesave save def}def /PB{save /psv exch def currentpoint translate resolution 72 div dup neg scale 0 0 moveto}def /PE{psv restore}def /m1 matrix def /m2 matrix def /m3 matrix def /oldmat matrix def /tan{dup sin exch cos div}bind def /point{resolution 72 div mul}bind def /dround {transform round exch round exch itransform}bind def /xT{/devname exch def}def /xr{/mh exch def /my exch def /resolution exch def}def /xp{}def /xs{docsave restore end}def /xt{}def /xf{/fontname exch def /slotno exch def fontnames slotno get fontname eq not {fonts slotno fontname findfont put fontnames slotno fontname put}if}def /xH{/fontheight exch def F}bind def /xS{/fontslant exch def F}bind def /s{/fontsize exch def /fontheight fontsize def F}bind def /f{/fontnum exch def F}bind def /F{fontheight 0 le {/fontheight fontsize def}if fonts fontnum get fontsize point 0 0 fontheight point neg 0 0 m1 astore fontslant 0 ne{1 0 fontslant tan 1 0 0 m2 astore m3 concatmatrix}if makefont setfont .04 fontsize point mul 0 dround pop setlinewidth}bind def /X{exch currentpoint exch pop moveto show}bind def /N{3 1 roll moveto show}bind def /Y{exch currentpoint pop exch moveto show}bind def /S /show load def /ditpush{}def/ditpop{}def /AX{3 -1 roll currentpoint exch pop moveto 0 exch ashow}bind def /AN{4 2 roll moveto 0 exch ashow}bind def /AY{3 -1 roll currentpoint pop exch moveto 0 exch ashow}bind def /AS{0 exch ashow}bind def /MX{currentpoint exch pop moveto}bind def /MY{currentpoint pop exch moveto}bind def /MXY /moveto load def /cb{pop}def % action on unknown char -- nothing for now /n{}def/w{}def /p{pop showpage pagesave restore /pagesave save def}def /abspoint{currentpoint exch pop add exch currentpoint pop add exch}def /dstroke{currentpoint stroke moveto}bind def /Dl{2 copy gsave rlineto stroke grestore rmoveto}bind def /arcellipse{oldmat currentmatrix pop currentpoint translate 1 diamv diamh div scale /rad diamh 2 div def rad 0 rad -180 180 arc oldmat setmatrix}def /Dc{gsave dup /diamv exch def /diamh exch def arcellipse dstroke grestore diamh 0 rmoveto}def /De{gsave /diamv exch def /diamh exch def arcellipse dstroke grestore diamh 0 rmoveto}def /Da{currentpoint /by exch def /bx exch def /fy exch def /fx exch def /cy exch def /cx exch def /rad cx cx mul cy cy mul add sqrt def /ang1 cy neg cx neg atan def /ang2 fy fx atan def cx bx add cy by add 2 copy rad ang1 ang2 arcn stroke exch fx add exch fy add moveto}def /Barray 200 array def % 200 values in a wiggle /D~{mark}def /D~~{counttomark Barray exch 0 exch getinterval astore /Bcontrol exch def pop /Blen Bcontrol length def Blen 4 ge Blen 2 mod 0 eq and {Bcontrol 0 get Bcontrol 1 get abspoint /Ycont exch def /Xcont exch def Bcontrol 0 2 copy get 2 mul put Bcontrol 1 2 copy get 2 mul put Bcontrol Blen 2 sub 2 copy get 2 mul put Bcontrol Blen 1 sub 2 copy get 2 mul put /Ybi /Xbi currentpoint 3 1 roll def def 0 2 Blen 4 sub {/i exch def Bcontrol i get 3 div Bcontrol i 1 add get 3 div Bcontrol i get 3 mul Bcontrol i 2 add get add 6 div Bcontrol i 1 add get 3 mul Bcontrol i 3 add get add 6 div /Xbi Xcont Bcontrol i 2 add get 2 div add def /Ybi Ycont Bcontrol i 3 add get 2 div add def /Xcont Xcont Bcontrol i 2 add get add def /Ycont Ycont Bcontrol i 3 add get add def Xbi currentpoint pop sub Ybi currentpoint exch pop sub rcurveto }for dstroke}if}def end /ditstart{$DITroff begin /nfonts 60 def % NFONTS makedev/ditroff dependent! /fonts[nfonts{0}repeat]def /fontnames[nfonts{()}repeat]def /docsave save def }def % character outcalls /oc {/pswid exch def /cc exch def /name exch def /ditwid pswid fontsize mul resolution mul 72000 div def /ditsiz fontsize resolution mul 72 div def ocprocs name known{ocprocs name get exec}{name cb} ifelse}def /fractm [.65 0 0 .6 0 0] def /fraction {/fden exch def /fnum exch def gsave /cf currentfont def cf fractm makefont setfont 0 .3 dm 2 copy neg rmoveto fnum show rmoveto currentfont cf setfont(\244)show setfont fden show grestore ditwid 0 rmoveto} def /oce {grestore ditwid 0 rmoveto}def /dm {ditsiz mul}def /ocprocs 50 dict def ocprocs begin (14){(1)(4)fraction}def (12){(1)(2)fraction}def (34){(3)(4)fraction}def (13){(1)(3)fraction}def (23){(2)(3)fraction}def (18){(1)(8)fraction}def (38){(3)(8)fraction}def (58){(5)(8)fraction}def (78){(7)(8)fraction}def (sr){gsave .05 dm .16 dm rmoveto(\326)show oce}def (is){gsave 0 .15 dm rmoveto(\362)show oce}def (->){gsave 0 .02 dm rmoveto(\256)show oce}def (<-){gsave 0 .02 dm rmoveto(\254)show oce}def (==){gsave 0 .05 dm rmoveto(\272)show oce}def end % DIThacks fonts for some special chars 50 dict dup begin /FontType 3 def /FontName /DIThacks def /FontMatrix [.001 0.0 0.0 .001 0.0 0.0] def /FontBBox [-220 -280 900 900] def% a lie but ... /Encoding 256 array def 0 1 255{Encoding exch /.notdef put}for Encoding dup 8#040/space put %space dup 8#110/rc put %right ceil dup 8#111/lt put %left top curl dup 8#112/bv put %bold vert dup 8#113/lk put %left mid curl dup 8#114/lb put %left bot curl dup 8#115/rt put %right top curl dup 8#116/rk put %right mid curl dup 8#117/rb put %right bot curl dup 8#120/rf put %right floor dup 8#121/lf put %left floor dup 8#122/lc put %left ceil dup 8#140/sq put %square dup 8#141/bx put %box dup 8#142/ci put %circle dup 8#143/br put %box rule dup 8#144/rn put %root extender dup 8#145/vr put %vertical rule dup 8#146/ob put %outline bullet dup 8#147/bu put %bullet dup 8#150/ru put %rule dup 8#151/ul put %underline pop /DITfd 100 dict def /BuildChar{0 begin /cc exch def /fd exch def /charname fd /Encoding get cc get def /charwid fd /Metrics get charname get def /charproc fd /CharProcs get charname get def charwid 0 fd /FontBBox get aload pop setcachedevice 40 setlinewidth newpath 0 0 moveto gsave charproc grestore end}def /BuildChar load 0 DITfd put %/UniqueID 5 def /CharProcs 50 dict def CharProcs begin /space{}def /.notdef{}def /ru{500 0 rls}def /rn{0 750 moveto 500 0 rls}def /vr{20 800 moveto 0 -770 rls}def /bv{20 800 moveto 0 -1000 rls}def /br{20 770 moveto 0 -1040 rls}def /ul{0 -250 moveto 500 0 rls}def /ob{200 250 rmoveto currentpoint newpath 200 0 360 arc closepath stroke}def /bu{200 250 rmoveto currentpoint newpath 200 0 360 arc closepath fill}def /sq{80 0 rmoveto currentpoint dround newpath moveto 640 0 rlineto 0 640 rlineto -640 0 rlineto closepath stroke}def /bx{80 0 rmoveto currentpoint dround newpath moveto 640 0 rlineto 0 640 rlineto -640 0 rlineto closepath fill}def /ci{355 333 rmoveto currentpoint newpath 333 0 360 arc 50 setlinewidth stroke}def /lt{20 -200 moveto 0 550 rlineto currx 800 2cx s4 add exch s4 a4p stroke}def /lb{20 800 moveto 0 -550 rlineto currx -200 2cx s4 add exch s4 a4p stroke}def /rt{20 -200 moveto 0 550 rlineto currx 800 2cx s4 sub exch s4 a4p stroke}def /rb{20 800 moveto 0 -500 rlineto currx -200 2cx s4 sub exch s4 a4p stroke}def /lk{20 800 moveto 20 300 -280 300 s4 arcto pop pop 1000 sub currentpoint stroke moveto 20 300 4 2 roll s4 a4p 20 -200 lineto stroke}def /rk{20 800 moveto 20 300 320 300 s4 arcto pop pop 1000 sub currentpoint stroke moveto 20 300 4 2 roll s4 a4p 20 -200 lineto stroke}def /lf{20 800 moveto 0 -1000 rlineto s4 0 rls}def /rf{20 800 moveto 0 -1000 rlineto s4 neg 0 rls}def /lc{20 -200 moveto 0 1000 rlineto s4 0 rls}def /rc{20 -200 moveto 0 1000 rlineto s4 neg 0 rls}def end /Metrics 50 dict def Metrics begin /.notdef 0 def /space 500 def /ru 500 def /br 0 def /lt 250 def /lb 250 def /rt 250 def /rb 250 def /lk 250 def /rk 250 def /rc 250 def /lc 250 def /rf 250 def /lf 250 def /bv 250 def /ob 350 def /bu 350 def /ci 750 def /bx 750 def /sq 750 def /rn 500 def /ul 500 def /vr 0 def end DITfd begin /s2 500 def /s4 250 def /s3 333 def /a4p{arcto pop pop pop pop}def /2cx{2 copy exch}def /rls{rlineto stroke}def /currx{currentpoint pop}def /dround{transform round exch round exch itransform} def end end /DIThacks exch definefont pop ditstart (psc)xT 576 1 1 xr 1(Times-Roman)xf 1 f 2(Times-Italic)xf 2 f 3(Times-Bold)xf 3 f 4(Times-BoldItalic)xf 4 f 5(Helvetica)xf 5 f 6(Helvetica-Bold)xf 6 f 7(Courier)xf 7 f 8(Courier-Bold)xf 8 f 9(Symbol)xf 9 f 10(DIThacks)xf 10 f 10 s 1 f xi %%EndProlog %%Page: 1 1 10 s 0 xH 0 xS 1 f 1027 1478 MXY 0 -1382 Dl 1900 0 Dl 0 1382 Dl -1900 0 Dl 975 1659(Horizontal)N 1338(Channel)X 1625(Capacity)X 1930(/)X 1972(Vertical)X 2251(Channel)X 2538(Capacity)X 2843(\()X 2 f 2870(R)X 7 s 2919 1675(h)N 1 f 10 s 2953 1659(\))N 593 659(Average)N 635 755(Track)N 574 851(Segments)N 603 947(per)N 726(Tile)X 1027 1393 MXY 28 0 Dl 927 1409(13)N 1027 1275 MXY 28 0 Dl 927 1291(14)N 1027 1156 MXY 28 0 Dl 927 1172(15)N 1027 1037 MXY 28 0 Dl 927 1053(16)N 1027 919 MXY 28 0 Dl 927 935(17)N 1027 800 MXY 28 0 Dl 927 816(18)N 1027 681 MXY 28 0 Dl 927 697(19)N 1027 563 MXY 28 0 Dl 927 579(20)N 1027 444 MXY 28 0 Dl 927 460(21)N 1027 325 MXY 28 0 Dl 927 341(22)N 1027 207 MXY 28 0 Dl 927 223(23)N 1143 1478 MXY 0 -28 Dl 1123 1566(1)N 1699 1478 MXY 0 -28 Dl 1679 1566(2)N 2255 1478 MXY 0 -28 Dl 2235 1566(3)N 2811 1478 MXY 0 -28 Dl 2791 1566(4)N 5 s 10 f 1136 1357(g)N 10 s 1143 1341 MXY 75 -28 Dl 5 s 1212 1329(g)N 10 s 1219 1313 MXY 109 -9 Dl 5 s 1321 1319(g)N 10 s 1328 1303 MXY 141 -55 Dl 5 s 1462 1263(g)N 10 s 1469 1247 MXY 229 -100 Dl 5 s 1692 1162(g)N 10 s 1699 1146 MXY 351 -331 Dl 5 s 2044 831(g)N 10 s 2051 815 MXY 760 -634 Dl 5 s 2804 196(g)N 1136 1240(g)N 10 s 1143 1224 MXY 24 15 Dl 1195 1258 MXY 24 15 Dl 5 s 1212 1289(g)N 10 s 1219 1273 MXY 28 3 Dl 1300 1284 MXY 28 3 Dl 5 s 1321 1303(g)N 10 s 1328 1287 MXY 27 -9 Dl 1385 1268 MXY 27 -9 Dl 1442 1248 MXY 27 -9 Dl 5 s 1462 1255(g)N 10 s 1469 1239 MXY 28 0 Dl 1537 1240 MXY 28 0 Dl 1604 1242 MXY 28 0 Dl 1670 1243 MXY 28 0 Dl 5 s 1692 1259(g)N 10 s 1699 1243 MXY 23 -16 Dl 1746 1210 MXY 23 -16 Dl 1793 1176 MXY 23 -16 Dl 1840 1143 MXY 23 -16 Dl 1886 1109 MXY 23 -16 Dl 1933 1075 MXY 23 -16 Dl 1980 1041 MXY 23 -16 Dl 2027 1008 MXY 23 -16 Dl 5 s 2044 1007(g)N 10 s 2051 991 MXY 23 -17 Dl 2097 957 MXY 23 -17 Dl 2143 923 MXY 23 -17 Dl 2189 888 MXY 23 -17 Dl 2235 854 MXY 23 -17 Dl 2281 820 MXY 23 -17 Dl 2327 786 MXY 23 -17 Dl 2373 752 MXY 23 -17 Dl 2419 718 MXY 23 -17 Dl 2465 684 MXY 23 -17 Dl 2511 649 MXY 23 -17 Dl 2558 615 MXY 23 -17 Dl 2604 581 MXY 23 -17 Dl 2650 547 MXY 23 -17 Dl 2696 513 MXY 23 -17 Dl 2742 479 MXY 23 -17 Dl 2788 445 MXY 23 -17 Dl 5 s 2804 443(g)N 1136 1064(g)N 7 s 1 f 1135 1050(.)N 1161 1070(.)N 1186 1091(.)N 1211 1111(.)N 5 s 10 f 1212 1125(g)N 7 s 1 f 1211 1111(.)N 1233 1129(.)N 1255 1146(.)N 1277 1163(.)N 1298 1180(.)N 1320 1197(.)N 5 s 10 f 1321 1211(g)N 7 s 1 f 1320 1197(.)N 1344 1211(.)N 1368 1225(.)N 1391 1240(.)N 1415 1254(.)N 1438 1268(.)N 1461 1282(.)N 5 s 10 f 1462 1296(g)N 7 s 1 f 1461 1282(.)N 1490 1272(.)N 1519 1261(.)N 1548 1251(.)N 1577 1240(.)N 1605 1230(.)N 1634 1219(.)N 1662 1209(.)N 1691 1198(.)N 5 s 10 f 1692 1212(g)N 7 s 1 f 1691 1198(.)N 1716 1184(.)N 1741 1171(.)N 1765 1158(.)N 1790 1144(.)N 1815 1131(.)N 1839 1118(.)N 1864 1104(.)N 1889 1091(.)N 1913 1077(.)N 1938 1063(.)N 1963 1050(.)N 1987 1037(.)N 2012 1023(.)N 2037 1010(.)N 2062 996(.)N 5 s 10 f 2063 1010(g)N 7 s 1 f 2062 996(.)N 2086 982(.)N 2111 968(.)N 2135 953(.)N 2160 940(.)N 2185 925(.)N 2210 911(.)N 2234 896(.)N 2259 883(.)N 2284 868(.)N 2309 854(.)N 2333 840(.)N 2358 826(.)N 2382 811(.)N 2407 797(.)N 2432 783(.)N 2457 769(.)N 2482 754(.)N 2506 740(.)N 2531 726(.)N 2556 712(.)N 2581 697(.)N 2605 683(.)N 2630 669(.)N 2654 654(.)N 2679 641(.)N 2704 626(.)N 2729 612(.)N 2753 597(.)N 2778 584(.)N 2803 569(.)N 5 s 10 f 2804 583(g)N 1 p %%Trailer xt xs %%EndDocument FMENDEPSF 0 10 Q 0 X 0 0 0 1 0 0 0 K (Aspect Ratio = 1) 329.16 253.59 T (Aspect Ratio = 3) 366.65 160.51 T (Aspect Ratio = 2) 251.6 219.5 T 376.39 217.46 376.58 219.88 384.83 216.82 376.21 215.04 4 Y 0.5 H 0 Z N 376.39 217.46 376.58 219.88 384.83 216.82 376.21 215.04 4 Y V 321.42 221.65 376.15 217.48 2 L 2 Z N 142.08 72.42 483.03 82.5 R 7 X V 0 11 Q 0 X (Fig. 8. Area-ef) 156.97 75.16 T (\336cienc) 224.2 75.16 T (y of rectangular FPGAs with full-perimeter pins.) 253.36 75.16 T 405.17 204.57 402.79 204.15 403.72 212.9 407.56 204.99 4 Y 0 Z N 405.17 204.57 402.79 204.15 403.72 212.9 407.56 204.99 4 Y V 405.22 204.32 411.42 168.79 2 L 2 Z N 72 72 540 720 C 0 0 612 792 C FMENDPAGE %%EndPage: "12" 12 %%Page: "13" 13 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 10 Q 0 X 0 0 0 1 0 0 0 K (13 of 22) 289.33 36.66 T 0 11 Q -0.13 (requires only 4% more track se) 72 477.2 P -0.13 (gments than a square FPGA. Thus we conclude that, as long as the horizon-) 208.35 477.2 P -0.01 (tal and v) 72 458.2 P -0.01 (ertical channel widths are appropriately balanced, chip aspect ratios, and hence I/O counts, can be) 109.7 458.2 P (increased with little impact on the core area.) 72 439.2 T 0.23 (The v) 90 420.2 P 0.23 (ariation of core routing area with aspect ratio is similar for FPGAs that use the top/bottom logic) 115.31 420.2 P -0.17 (block pin positioning [19]. In this case an FPGA with an aspect ratio of 3 requires only 5% more tracks per) 72 401.2 P 0.58 (tile than a square FPGA. F) 72 382.2 P 0.58 (or FPGAs of this type, ho) 192.04 382.2 P 0.58 (we) 307.7 382.2 P 0.58 (v) 320.25 382.2 P 0.58 (er) 325.58 382.2 P 0.58 (, the increase in the best v) 333.69 382.2 P 0.58 (alue of R) 450.82 382.2 P 0 8.8 Q 0.46 (h) 492.3 379.45 P 0 11 Q 0.58 ( as aspect) 496.7 382.2 P -0.09 (ratio increases is less dramatic. The best square FPGA with top/bottom pins has horizontal channels which) 72 363.2 P 1.4 (are twice as wide as v) 72 344.2 P 1.4 (ertical channels; the thick) 175.05 344.2 P 1.4 (er horizontal channels are better able to cope with the) 291.87 344.2 P (increased pressure for horizontal tracks as aspect ratio increases.) 72 325.2 T 1 14 Q (5) 72 294.2 T (Experimental Results f) 90 294.2 T (or FPGAs W) 226.53 294.2 T (ith Non-Unif) 304.05 294.2 T (orm Routing) 379.53 294.2 T 0 11 Q 0.24 (The second k) 90 272.21 P 0.24 (e) 149.02 272.21 P 0.24 (y issue we e) 153.74 272.21 P 0.24 (xplore concerns the area-ef) 207.75 272.21 P 0.24 (\336cienc) 327.61 272.21 P 0.24 (y obtained when the channels in dif) 356.77 272.21 P 0.24 (ferent) 514.35 272.21 P -0.05 (re) 72 253.21 P -0.05 (gions of an FPGA ha) 80.38 253.21 P -0.05 (v) 172.85 253.21 P -0.05 (e dif) 178.19 253.21 P -0.05 (ferent capacities. W) 197.72 253.21 P -0.05 (e only in) 284.4 253.21 P -0.05 (v) 322.37 253.21 P -0.05 (estig) 327.7 253.21 P -0.05 (ate FPGAs which use the full-perimeter pin) 348.43 253.21 P (positioning, as Section 4 sho) 72 234.21 T (wed that this pin positioning is best.) 197.93 234.21 T 1.22 (W) 90 215.21 P 1.22 (e de\336ne a non-uniform routing architecture to be one in which the number of tracks per channel) 99.5 215.21 P 0.14 (changes from channel to channel across an FPGA. F) 72 196.21 P 0.14 (or e) 303.61 196.21 P 0.14 (xample, Fig. 1\050b\051 illustrates a non-uniform FPGA) 320.39 196.21 P 0.17 (in which the channels near the chip center are wider than those near the periphery) 72 177.21 P 0.17 (. If congested re) 432.88 177.21 P 0.17 (gions of) 504.08 177.21 P 0.19 (a circuit can be localized and placed in the portions of the FPGA with the widest channels, a non-uniform) 72 158.21 P 0.24 (FPGA could ha) 72 139.21 P 0.24 (v) 140.71 139.21 P 0.24 (e better area ef) 146.04 139.21 P 0.24 (\336cienc) 211.53 139.21 P 0.24 (y than a uniform FPGA. W) 240.69 139.21 P 0.24 (e will in) 360.79 139.21 P 0.24 (v) 396.89 139.21 P 0.24 (estig) 402.23 139.21 P 0.24 (ate three types of non-uni-) 422.95 139.21 P -0.09 (form FPGAs in which we v) 72 120.21 P -0.09 (ary the center/edge channel capacity ratio, the capacity of only the center chan-) 192.57 120.21 P (nel, and the I/O channel capacity) 72 101.21 T (, respecti) 216.08 101.21 T (v) 255.51 101.21 T (ely) 260.85 101.21 T (.) 273.58 101.21 T 72 72 540 720 C 84.09 484.54 527.91 720 C 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 72 584 373 780 301 196 153.64 523.45 FMBEGINEPSF %%BeginDocument: /jayar/d0/vaughn/thesis/place/trans-vlsi/figs/best-aspect.eps %!PS-Adobe-2.0 EPSF-1.2 %%BoundingBox: 72 584 373 780 %!PS-Adobe-1.0 %%Creator: gractus.eecg:vaughn (Vaughn Betz,EECG,LP 392,1653,7662197,G,G ) %%Title: stdin (ditroff) %%CreationDate: Mon Sep 16 15:23:50 1996 %%EndComments % Start of psdit.pro -- prolog for ditroff translator % Copyright (c) 1985,1987 Adobe Systems Incorporated. All Rights Reserved. % GOVERNMENT END USERS: See Notice file in TranScript library directory % -- probably /usr/lib/ps/Notice % RCS: $Header: psdit.pro,v 1.2 88/10/29 07:37:27 moraes Exp $ /$DITroff 140 dict def $DITroff begin %% Psfig additions /DocumentInitState [ matrix currentmatrix currentlinewidth currentlinecap currentlinejoin currentdash currentgray currentmiterlimit ] cvx def /startFig { /SavedState save def userdict maxlength dict begin currentpoint transform DocumentInitState setmiterlimit setgray setdash setlinejoin setlinecap setlinewidth setmatrix itransform moveto /ury exch def /urx exch def /lly exch def /llx exch def /y exch 72 mul resolution div def /x exch 72 mul resolution div def currentpoint /cy exch def /cx exch def /sx x urx llx sub div def % scaling for x /sy y ury lly sub div def % scaling for y sx sy scale % scale by (sx,sy) cx sx div llx sub cy sy div ury sub translate /DefFigCTM matrix currentmatrix def /initmatrix { DefFigCTM setmatrix } def /defaultmatrix { DefFigCTM exch copy } def /initgraphics { DocumentInitState setmiterlimit setgray setdash setlinejoin setlinecap setlinewidth setmatrix DefFigCTM setmatrix } def /showpage { initgraphics } def } def % Args are llx lly urx ury (in figure coordinates) /clipFig { currentpoint 6 2 roll newpath 4 copy 4 2 roll moveto 6 -1 roll exch lineto exch lineto exch lineto closepath clip newpath moveto } def % doclip, if called, will always be just after a `startfig' /doclip { llx lly urx ury clipFig } def /endFig { end SavedState restore } def /globalstart { % Push details about the enviornment on the stack. fontnum fontsize fontslant fontheight firstpage mh my resolution slotno currentpoint pagesave restore gsave } def /globalend { grestore moveto /slotno exch def /resolution exch def /my exch def /mh exch def /firstpage exch def /fontheight exch def /fontslant exch def /fontsize exch def /fontnum exch def F /pagesave save def } def %% end Psfig additions /fontnum 1 def /fontsize 10 def /fontheight 10 def /fontslant 0 def /xi {0 72 11 mul translate 72 resolution div dup neg scale 0 0 moveto /fontnum 1 def /fontsize 10 def /fontheight 10 def /fontslant 0 def F /pagesave save def}def /PB{save /psv exch def currentpoint translate resolution 72 div dup neg scale 0 0 moveto}def /PE{psv restore}def /m1 matrix def /m2 matrix def /m3 matrix def /oldmat matrix def /tan{dup sin exch cos div}bind def /point{resolution 72 div mul}bind def /dround {transform round exch round exch itransform}bind def /xT{/devname exch def}def /xr{/mh exch def /my exch def /resolution exch def}def /xp{}def /xs{docsave restore end}def /xt{}def /xf{/fontname exch def /slotno exch def fontnames slotno get fontname eq not {fonts slotno fontname findfont put fontnames slotno fontname put}if}def /xH{/fontheight exch def F}bind def /xS{/fontslant exch def F}bind def /s{/fontsize exch def /fontheight fontsize def F}bind def /f{/fontnum exch def F}bind def /F{fontheight 0 le {/fontheight fontsize def}if fonts fontnum get fontsize point 0 0 fontheight point neg 0 0 m1 astore fontslant 0 ne{1 0 fontslant tan 1 0 0 m2 astore m3 concatmatrix}if makefont setfont .04 fontsize point mul 0 dround pop setlinewidth}bind def /X{exch currentpoint exch pop moveto show}bind def /N{3 1 roll moveto show}bind def /Y{exch currentpoint pop exch moveto show}bind def /S /show load def /ditpush{}def/ditpop{}def /AX{3 -1 roll currentpoint exch pop moveto 0 exch ashow}bind def /AN{4 2 roll moveto 0 exch ashow}bind def /AY{3 -1 roll currentpoint pop exch moveto 0 exch ashow}bind def /AS{0 exch ashow}bind def /MX{currentpoint exch pop moveto}bind def /MY{currentpoint pop exch moveto}bind def /MXY /moveto load def /cb{pop}def % action on unknown char -- nothing for now /n{}def/w{}def /p{pop showpage pagesave restore /pagesave save def}def /abspoint{currentpoint exch pop add exch currentpoint pop add exch}def /dstroke{currentpoint stroke moveto}bind def /Dl{2 copy gsave rlineto stroke grestore rmoveto}bind def /arcellipse{oldmat currentmatrix pop currentpoint translate 1 diamv diamh div scale /rad diamh 2 div def rad 0 rad -180 180 arc oldmat setmatrix}def /Dc{gsave dup /diamv exch def /diamh exch def arcellipse dstroke grestore diamh 0 rmoveto}def /De{gsave /diamv exch def /diamh exch def arcellipse dstroke grestore diamh 0 rmoveto}def /Da{currentpoint /by exch def /bx exch def /fy exch def /fx exch def /cy exch def /cx exch def /rad cx cx mul cy cy mul add sqrt def /ang1 cy neg cx neg atan def /ang2 fy fx atan def cx bx add cy by add 2 copy rad ang1 ang2 arcn stroke exch fx add exch fy add moveto}def /Barray 200 array def % 200 values in a wiggle /D~{mark}def /D~~{counttomark Barray exch 0 exch getinterval astore /Bcontrol exch def pop /Blen Bcontrol length def Blen 4 ge Blen 2 mod 0 eq and {Bcontrol 0 get Bcontrol 1 get abspoint /Ycont exch def /Xcont exch def Bcontrol 0 2 copy get 2 mul put Bcontrol 1 2 copy get 2 mul put Bcontrol Blen 2 sub 2 copy get 2 mul put Bcontrol Blen 1 sub 2 copy get 2 mul put /Ybi /Xbi currentpoint 3 1 roll def def 0 2 Blen 4 sub {/i exch def Bcontrol i get 3 div Bcontrol i 1 add get 3 div Bcontrol i get 3 mul Bcontrol i 2 add get add 6 div Bcontrol i 1 add get 3 mul Bcontrol i 3 add get add 6 div /Xbi Xcont Bcontrol i 2 add get 2 div add def /Ybi Ycont Bcontrol i 3 add get 2 div add def /Xcont Xcont Bcontrol i 2 add get add def /Ycont Ycont Bcontrol i 3 add get add def Xbi currentpoint pop sub Ybi currentpoint exch pop sub rcurveto }for dstroke}if}def end /ditstart{$DITroff begin /nfonts 60 def % NFONTS makedev/ditroff dependent! /fonts[nfonts{0}repeat]def /fontnames[nfonts{()}repeat]def /docsave save def }def % character outcalls /oc {/pswid exch def /cc exch def /name exch def /ditwid pswid fontsize mul resolution mul 72000 div def /ditsiz fontsize resolution mul 72 div def ocprocs name known{ocprocs name get exec}{name cb} ifelse}def /fractm [.65 0 0 .6 0 0] def /fraction {/fden exch def /fnum exch def gsave /cf currentfont def cf fractm makefont setfont 0 .3 dm 2 copy neg rmoveto fnum show rmoveto currentfont cf setfont(\244)show setfont fden show grestore ditwid 0 rmoveto} def /oce {grestore ditwid 0 rmoveto}def /dm {ditsiz mul}def /ocprocs 50 dict def ocprocs begin (14){(1)(4)fraction}def (12){(1)(2)fraction}def (34){(3)(4)fraction}def (13){(1)(3)fraction}def (23){(2)(3)fraction}def (18){(1)(8)fraction}def (38){(3)(8)fraction}def (58){(5)(8)fraction}def (78){(7)(8)fraction}def (sr){gsave .05 dm .16 dm rmoveto(\326)show oce}def (is){gsave 0 .15 dm rmoveto(\362)show oce}def (->){gsave 0 .02 dm rmoveto(\256)show oce}def (<-){gsave 0 .02 dm rmoveto(\254)show oce}def (==){gsave 0 .05 dm rmoveto(\272)show oce}def end % DIThacks fonts for some special chars 50 dict dup begin /FontType 3 def /FontName /DIThacks def /FontMatrix [.001 0.0 0.0 .001 0.0 0.0] def /FontBBox [-220 -280 900 900] def% a lie but ... /Encoding 256 array def 0 1 255{Encoding exch /.notdef put}for Encoding dup 8#040/space put %space dup 8#110/rc put %right ceil dup 8#111/lt put %left top curl dup 8#112/bv put %bold vert dup 8#113/lk put %left mid curl dup 8#114/lb put %left bot curl dup 8#115/rt put %right top curl dup 8#116/rk put %right mid curl dup 8#117/rb put %right bot curl dup 8#120/rf put %right floor dup 8#121/lf put %left floor dup 8#122/lc put %left ceil dup 8#140/sq put %square dup 8#141/bx put %box dup 8#142/ci put %circle dup 8#143/br put %box rule dup 8#144/rn put %root extender dup 8#145/vr put %vertical rule dup 8#146/ob put %outline bullet dup 8#147/bu put %bullet dup 8#150/ru put %rule dup 8#151/ul put %underline pop /DITfd 100 dict def /BuildChar{0 begin /cc exch def /fd exch def /charname fd /Encoding get cc get def /charwid fd /Metrics get charname get def /charproc fd /CharProcs get charname get def charwid 0 fd /FontBBox get aload pop setcachedevice 40 setlinewidth newpath 0 0 moveto gsave charproc grestore end}def /BuildChar load 0 DITfd put %/UniqueID 5 def /CharProcs 50 dict def CharProcs begin /space{}def /.notdef{}def /ru{500 0 rls}def /rn{0 750 moveto 500 0 rls}def /vr{20 800 moveto 0 -770 rls}def /bv{20 800 moveto 0 -1000 rls}def /br{20 770 moveto 0 -1040 rls}def /ul{0 -250 moveto 500 0 rls}def /ob{200 250 rmoveto currentpoint newpath 200 0 360 arc closepath stroke}def /bu{200 250 rmoveto currentpoint newpath 200 0 360 arc closepath fill}def /sq{80 0 rmoveto currentpoint dround newpath moveto 640 0 rlineto 0 640 rlineto -640 0 rlineto closepath stroke}def /bx{80 0 rmoveto currentpoint dround newpath moveto 640 0 rlineto 0 640 rlineto -640 0 rlineto closepath fill}def /ci{355 333 rmoveto currentpoint newpath 333 0 360 arc 50 setlinewidth stroke}def /lt{20 -200 moveto 0 550 rlineto currx 800 2cx s4 add exch s4 a4p stroke}def /lb{20 800 moveto 0 -550 rlineto currx -200 2cx s4 add exch s4 a4p stroke}def /rt{20 -200 moveto 0 550 rlineto currx 800 2cx s4 sub exch s4 a4p stroke}def /rb{20 800 moveto 0 -500 rlineto currx -200 2cx s4 sub exch s4 a4p stroke}def /lk{20 800 moveto 20 300 -280 300 s4 arcto pop pop 1000 sub currentpoint stroke moveto 20 300 4 2 roll s4 a4p 20 -200 lineto stroke}def /rk{20 800 moveto 20 300 320 300 s4 arcto pop pop 1000 sub currentpoint stroke moveto 20 300 4 2 roll s4 a4p 20 -200 lineto stroke}def /lf{20 800 moveto 0 -1000 rlineto s4 0 rls}def /rf{20 800 moveto 0 -1000 rlineto s4 neg 0 rls}def /lc{20 -200 moveto 0 1000 rlineto s4 0 rls}def /rc{20 -200 moveto 0 1000 rlineto s4 neg 0 rls}def end /Metrics 50 dict def Metrics begin /.notdef 0 def /space 500 def /ru 500 def /br 0 def /lt 250 def /lb 250 def /rt 250 def /rb 250 def /lk 250 def /rk 250 def /rc 250 def /lc 250 def /rf 250 def /lf 250 def /bv 250 def /ob 350 def /bu 350 def /ci 750 def /bx 750 def /sq 750 def /rn 500 def /ul 500 def /vr 0 def end DITfd begin /s2 500 def /s4 250 def /s3 333 def /a4p{arcto pop pop pop pop}def /2cx{2 copy exch}def /rls{rlineto stroke}def /currx{currentpoint pop}def /dround{transform round exch round exch itransform} def end end /DIThacks exch definefont pop ditstart (psc)xT 576 1 1 xr 1(Times-Roman)xf 1 f 2(Times-Italic)xf 2 f 3(Times-Bold)xf 3 f 4(Times-BoldItalic)xf 4 f 5(Helvetica)xf 5 f 6(Helvetica-Bold)xf 6 f 7(Courier)xf 7 f 8(Courier-Bold)xf 8 f 9(Symbol)xf 9 f 10(DIThacks)xf 10 f 10 s 1 f xi %%EndProlog %%Page: 1 1 10 s 0 xH 0 xS 1 f 1084 1478 MXY 0 -1382 Dl 1900 0 Dl 2985 MX 0 1382 Dl -1900 0 Dl 1827 1653(Aspect)N 2070(Ratio)X 593 659(Average)N 635 755(Track)N 574 851(Segments)N 603 947(per)N 726(Tile)X 1084 1364 MXY 28 0 Dl 924 1380(13.5)N 1084 1128 MXY 28 0 Dl 984 1144(14)N 1084 891 MXY 28 0 Dl 924 907(14.5)N 1084 654 MXY 28 0 Dl 984 670(15)N 1084 417 MXY 28 0 Dl 924 433(15.5)N 1084 180 MXY 28 0 Dl 984 196(16)N 1201 1478 MXY 0 -28 Dl 1181 1566(1)N 2035 1478 MXY 0 -28 Dl 2015 1566(2)N 2869 1478 MXY 0 -28 Dl 2849 1566(3)N 5 s 10 f 1194 1409(g)N 10 s 1201 1393 MXY 208 -51 Dl 5 s 1403 1357(g)N 10 s 1410 1341 MXY 208 14 Dl 5 s 1611 1371(g)N 10 s 1618 1355 MXY 417 -175 Dl 5 s 2028 1196(g)N 10 s 2035 1180 MXY 833 -28 Dl 5 s 2862 1167(g)N 1194 1409(g)N 10 s 1201 1393 MXY 25 -13 Dl 1247 1369 MXY 25 -13 Dl 1293 1345 MXY 25 -13 Dl 1338 1321 MXY 25 -13 Dl 1384 1298 MXY 25 -13 Dl 5 s 1403 1300(g)N 10 s 1410 1284 MXY 24 -14 Dl 1455 1258 MXY 24 -14 Dl 1501 1232 MXY 24 -14 Dl 1547 1206 MXY 24 -14 Dl 1593 1180 MXY 24 -14 Dl 5 s 1611 1182(g)N 10 s 1618 1166 MXY 24 -14 Dl 1667 1138 MXY 24 -14 Dl 1716 1110 MXY 24 -14 Dl 1765 1082 MXY 24 -14 Dl 1814 1055 MXY 24 -14 Dl 1863 1026 MXY 24 -14 Dl 1912 999 MXY 24 -14 Dl 1961 971 MXY 24 -14 Dl 2010 943 MXY 24 -14 Dl 5 s 2028 945(g)N 10 s 2035 929 MXY 21 -18 Dl 2080 890 MXY 21 -18 Dl 2125 852 MXY 21 -18 Dl 2170 814 MXY 21 -18 Dl 2215 776 MXY 21 -18 Dl 2260 738 MXY 21 -18 Dl 2305 700 MXY 21 -18 Dl 2350 662 MXY 21 -18 Dl 2396 623 MXY 21 -18 Dl 2441 585 MXY 21 -18 Dl 2486 547 MXY 21 -18 Dl 2531 509 MXY 21 -18 Dl 2576 470 MXY 21 -18 Dl 2621 432 MXY 21 -18 Dl 2666 394 MXY 21 -18 Dl 2711 356 MXY 21 -18 Dl 2756 318 MXY 21 -18 Dl 2801 280 MXY 21 -18 Dl 2847 242 MXY 21 -18 Dl 5 s 2862 239(g)N 1 p %%Trailer xt xs %%EndDocument FMENDEPSF 0 10 Q 0 X 0 0 0 1 0 0 0 K (R) 368.24 668.26 T 0 8.8 Q (h) 374.91 665.51 T 0 10 Q ( = 1) 379.31 668.26 T (R) 371.68 591.6 T 0 8.8 Q (h) 378.35 588.85 T 0 10 Q ( = Best V) 382.75 591.6 T (alue) 419.78 591.6 T 145.52 504.33 498.02 516.24 R 7 X V 0 11 Q 0 X (Fig. 9. Area-ef) 156.26 508.9 T (\336cienc) 223.49 508.9 T (y vs. aspect ratio for FPGAs with full-perimeter pins.) 252.65 508.9 T 72 72 540 720 C 0 0 612 792 C FMENDPAGE %%EndPage: "13" 13 %%Page: "14" 14 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 10 Q 0 X 0 0 0 1 0 0 0 K (14 of 22) 289.33 36.66 T 1 12 Q (5.1) 72 712 T (Center/Edge Capacity Ratio) 90 712 T 0 11 Q 0.89 (There is a widespread belief that most congestion occurs in the center of FPGAs, and hence ha) 90 690.67 P 0.89 (ving) 520.44 690.67 P 0.55 (wider channels near the FPGA center and narro) 72 671.67 P 0.55 (wer channels near the edges is e) 284.8 671.67 P 0.55 (xpected to impro) 429.03 671.67 P 0.55 (v) 504.51 671.67 P 0.55 (e area-) 509.84 671.67 P 1.11 (ef) 72 652.67 P 1.11 (\336cienc) 80.27 652.67 P 1.11 (y) 109.43 652.67 P 1.11 (. T) 114.22 652.67 P 1.11 (o k) 126.67 652.67 P 1.11 (eep the layout problem tractable, we restrict ourselv) 141.42 652.67 P 1.11 (es to FPGAs which use channels of) 377.53 652.67 P 0.4 (only tw) 72 633.67 P 0.4 (o dif) 105.59 633.67 P 0.4 (ferent widths. W) 126.18 633.67 P 0.4 (e can describe global routing architectures of this form with tw) 199.72 633.67 P 0.4 (o parameters.) 480.35 633.67 P -0.01 (Let R) 72 614.67 P 0 8.8 Q -0.01 (w) 96.74 611.92 P 0 11 Q -0.01 ( be the ratio of the widths of the channels near the center of the FPGA to the widths of the channels) 103.09 614.67 P -0.15 (near the FPGA edges, i.e. W) 72 595.67 P 0 8.8 Q -0.12 (center) 197.12 592.92 P 0 11 Q -0.15 ( / W) 218.62 595.67 P 0 8.8 Q -0.12 (edge) 236.56 592.92 P 0 11 Q -0.15 (. Let R) 253.17 595.67 P 0 8.8 Q -0.12 (c) 283.13 592.92 P 0 11 Q -0.15 ( be the ratio of the number of channels with width W) 287.03 595.67 P 0 8.8 Q -0.12 (center) 518.5 592.92 P 0 11 Q (to the total number of channels. F) 72 576.67 T (or e) 220.02 576.67 T (xample, the FPGA of Fig. 1\050b\051 has R) 236.65 576.67 T 0 8.8 Q (w) 399.5 573.92 T 0 11 Q ( = 2 and R) 405.86 576.67 T 0 8.8 Q (c) 451.78 573.92 T 0 11 Q ( = 0.5.) 455.69 576.67 T 0.6 (Using the \337o) 90 557.67 P 0.6 (w of Section 2, we ag) 147.76 557.67 P 0.6 (ain implemented 26 benchmark circuits in se) 246.03 557.67 P 0.6 (v) 446.72 557.67 P 0.6 (eral architectures to) 452.05 557.67 P -0.1 (determine their area-ef) 72 538.67 P -0.1 (\336cienc) 171.7 538.67 P -0.1 (y) 200.86 538.67 P -0.1 (. W) 205.65 538.67 P -0.1 (e e) 220.55 538.67 P -0.1 (xamined FPGAs with R) 232.81 538.67 P 0 8.8 Q -0.08 (w) 337.93 535.92 P 0 11 Q -0.1 ( equal to 0.75, 1.18, 1.33, and 2, and with R) 344.29 538.67 P 0 8.8 Q -0.08 (c) 536.09 535.92 P 0 11 Q 0.61 (v) 72 519.67 P 0.61 (alues v) 77.22 519.67 P 0.61 (arying from 0 to 1. The relati) 108.41 519.67 P 0.61 (v) 239.79 519.67 P 0.61 (e density of FPGAs with R) 245.13 519.67 P 0 8.8 Q 0.49 (w) 367.03 516.92 P 0 11 Q 0.61 ( = 1.33 and R) 373.39 519.67 P 0 8.8 Q 0.49 (w) 435.49 516.92 P 0 11 Q 0.61 ( = 2 is summarized in) 441.84 519.67 P 0.12 (Fig. 10, which plots the a) 72 500.67 P 0.12 (v) 183.92 500.67 P 0.12 (erage number of tracks per tile required by the 26 benchmarks in each architec-) 189.26 500.67 P 0.44 (ture. Note that the points at which R) 72 481.67 P 0 8.8 Q 0.36 (c) 234.6 478.92 P 0 11 Q 0.44 ( equals 0 or 1 correspond to a uniform FPGA. The area required by) 238.51 481.67 P 0.5 (each of the se) 72 462.67 P 0.5 (v) 133.39 462.67 P 0.5 (en lar) 138.72 462.67 P 0.5 (gest benchmarks in se) 163.76 462.67 P 0.5 (v) 261.82 462.67 P 0.5 (eral representati) 267.16 462.67 P 0.5 (v) 337.93 462.67 P 0.5 (e architectures is listed in T) 343.27 462.67 P 0.5 (able 3; ag) 466.16 462.67 P 0.5 (ain the) 509.87 462.67 P -0.16 (results for indi) 72 443.67 P -0.16 (vidual circuits generally match the o) 135.57 443.67 P -0.16 (v) 294.99 443.67 P -0.16 (erall a) 300.33 443.67 P -0.16 (v) 327.13 443.67 P -0.16 (erage, although there is some circuit-dependent) 332.46 443.67 P 0.39 (beha) 72 424.67 P 0.39 (viour) 92.55 424.67 P 0.39 (. Note that the number of tracks per tile required for routing indi) 115.16 424.67 P 0.39 (vidual circuits in a nonuniform) 402.17 424.67 P 0.05 (architecture is generally not an inte) 72 405.67 P 0.05 (ger; since some portions of the FPGA ha) 226.97 405.67 P 0.05 (v) 406.46 405.67 P 0.05 (e wider channels than others,) 411.8 405.67 P (the number of tracks per tile is an a) 72 386.67 T (v) 226.97 386.67 T (erage o) 232.3 386.67 T (v) 264.2 386.67 T (er the v) 269.54 386.67 T (arious tiles such an FPGA must contain.) 302.25 386.67 T 1.08 (The results generally sho) 90 367.67 P 1.08 (w that the less uniform the channel widths, the w) 203.26 367.67 P 1.08 (orse the FPGA area-ef) 428.59 367.67 P 1.08 (\336-) 530.22 367.67 P -0.14 (cienc) 72 348.67 P -0.14 (y) 95.04 348.67 P -0.14 (. The w) 99.83 348.67 P -0.14 (orst area-ef) 132.74 348.67 P -0.14 (\336cienc) 182.1 348.67 P -0.14 (y with R) 211.26 348.67 P 0 8.8 Q -0.11 (w) 248.87 345.92 P 0 11 Q -0.14 ( = 2 occurs when R) 255.22 348.67 P 0 8.8 Q -0.11 (c) 339.85 345.92 P 0 11 Q -0.14 ( is 0.5, meaning that half the FPGA channels) 343.75 348.67 P 0.82 (are twice as wide as the other half. In f) 72 329.67 P 0.82 (act, only tw) 249.71 329.67 P 0.82 (o non-uniform FPGAs sho) 302.87 329.67 P 0.82 (w e) 422.08 329.67 P 0.82 (v) 438.21 329.67 P 0.82 (en mar) 443.54 329.67 P 0.82 (ginal area-ef) 474.4 329.67 P 0.82 (\336-) 530.22 329.67 P -0.22 (cienc) 72 310.67 P -0.22 (y impro) 95.04 310.67 P -0.22 (v) 129.18 310.67 P -0.22 (ements o) 134.52 310.67 P -0.22 (v) 173.54 310.67 P -0.22 (er the uniform case and both these FPGAs are v) 178.88 310.67 P -0.22 (ery close to a uniform architecture.) 387.17 310.67 P 72 72 540 720 C 108.86 72 503.14 303.82 C 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 74 584 385 780 311 196 162.14 92.63 FMBEGINEPSF %%BeginDocument: /jayar/d0/vaughn/thesis/place/trans-vlsi/figs/cross.eps %!PS-Adobe-2.0 EPSF-1.2 %%BoundingBox: 74 584 385 780 %!PS-Adobe-1.0 %%Creator: gractus.eecg:vaughn (Vaughn Betz,EECG,LP 392,1653,7662197,G,G ) %%Title: stdin (ditroff) %%CreationDate: Mon Sep 16 15:12:22 1996 %%EndComments % Start of psdit.pro -- prolog for ditroff translator % Copyright (c) 1985,1987 Adobe Systems Incorporated. All Rights Reserved. % GOVERNMENT END USERS: See Notice file in TranScript library directory % -- probably /usr/lib/ps/Notice % RCS: $Header: psdit.pro,v 1.2 88/10/29 07:37:27 moraes Exp $ /$DITroff 140 dict def $DITroff begin %% Psfig additions /DocumentInitState [ matrix currentmatrix currentlinewidth currentlinecap currentlinejoin currentdash currentgray currentmiterlimit ] cvx def /startFig { /SavedState save def userdict maxlength dict begin currentpoint transform DocumentInitState setmiterlimit setgray setdash setlinejoin setlinecap setlinewidth setmatrix itransform moveto /ury exch def /urx exch def /lly exch def /llx exch def /y exch 72 mul resolution div def /x exch 72 mul resolution div def currentpoint /cy exch def /cx exch def /sx x urx llx sub div def % scaling for x /sy y ury lly sub div def % scaling for y sx sy scale % scale by (sx,sy) cx sx div llx sub cy sy div ury sub translate /DefFigCTM matrix currentmatrix def /initmatrix { DefFigCTM setmatrix } def /defaultmatrix { DefFigCTM exch copy } def /initgraphics { DocumentInitState setmiterlimit setgray setdash setlinejoin setlinecap setlinewidth setmatrix DefFigCTM setmatrix } def /showpage { initgraphics } def } def % Args are llx lly urx ury (in figure coordinates) /clipFig { currentpoint 6 2 roll newpath 4 copy 4 2 roll moveto 6 -1 roll exch lineto exch lineto exch lineto closepath clip newpath moveto } def % doclip, if called, will always be just after a `startfig' /doclip { llx lly urx ury clipFig } def /endFig { end SavedState restore } def /globalstart { % Push details about the enviornment on the stack. fontnum fontsize fontslant fontheight firstpage mh my resolution slotno currentpoint pagesave restore gsave } def /globalend { grestore moveto /slotno exch def /resolution exch def /my exch def /mh exch def /firstpage exch def /fontheight exch def /fontslant exch def /fontsize exch def /fontnum exch def F /pagesave save def } def %% end Psfig additions /fontnum 1 def /fontsize 10 def /fontheight 10 def /fontslant 0 def /xi {0 72 11 mul translate 72 resolution div dup neg scale 0 0 moveto /fontnum 1 def /fontsize 10 def /fontheight 10 def /fontslant 0 def F /pagesave save def}def /PB{save /psv exch def currentpoint translate resolution 72 div dup neg scale 0 0 moveto}def /PE{psv restore}def /m1 matrix def /m2 matrix def /m3 matrix def /oldmat matrix def /tan{dup sin exch cos div}bind def /point{resolution 72 div mul}bind def /dround {transform round exch round exch itransform}bind def /xT{/devname exch def}def /xr{/mh exch def /my exch def /resolution exch def}def /xp{}def /xs{docsave restore end}def /xt{}def /xf{/fontname exch def /slotno exch def fontnames slotno get fontname eq not {fonts slotno fontname findfont put fontnames slotno fontname put}if}def /xH{/fontheight exch def F}bind def /xS{/fontslant exch def F}bind def /s{/fontsize exch def /fontheight fontsize def F}bind def /f{/fontnum exch def F}bind def /F{fontheight 0 le {/fontheight fontsize def}if fonts fontnum get fontsize point 0 0 fontheight point neg 0 0 m1 astore fontslant 0 ne{1 0 fontslant tan 1 0 0 m2 astore m3 concatmatrix}if makefont setfont .04 fontsize point mul 0 dround pop setlinewidth}bind def /X{exch currentpoint exch pop moveto show}bind def /N{3 1 roll moveto show}bind def /Y{exch currentpoint pop exch moveto show}bind def /S /show load def /ditpush{}def/ditpop{}def /AX{3 -1 roll currentpoint exch pop moveto 0 exch ashow}bind def /AN{4 2 roll moveto 0 exch ashow}bind def /AY{3 -1 roll currentpoint pop exch moveto 0 exch ashow}bind def /AS{0 exch ashow}bind def /MX{currentpoint exch pop moveto}bind def /MY{currentpoint pop exch moveto}bind def /MXY /moveto load def /cb{pop}def % action on unknown char -- nothing for now /n{}def/w{}def /p{pop showpage pagesave restore /pagesave save def}def /abspoint{currentpoint exch pop add exch currentpoint pop add exch}def /dstroke{currentpoint stroke moveto}bind def /Dl{2 copy gsave rlineto stroke grestore rmoveto}bind def /arcellipse{oldmat currentmatrix pop currentpoint translate 1 diamv diamh div scale /rad diamh 2 div def rad 0 rad -180 180 arc oldmat setmatrix}def /Dc{gsave dup /diamv exch def /diamh exch def arcellipse dstroke grestore diamh 0 rmoveto}def /De{gsave /diamv exch def /diamh exch def arcellipse dstroke grestore diamh 0 rmoveto}def /Da{currentpoint /by exch def /bx exch def /fy exch def /fx exch def /cy exch def /cx exch def /rad cx cx mul cy cy mul add sqrt def /ang1 cy neg cx neg atan def /ang2 fy fx atan def cx bx add cy by add 2 copy rad ang1 ang2 arcn stroke exch fx add exch fy add moveto}def /Barray 200 array def % 200 values in a wiggle /D~{mark}def /D~~{counttomark Barray exch 0 exch getinterval astore /Bcontrol exch def pop /Blen Bcontrol length def Blen 4 ge Blen 2 mod 0 eq and {Bcontrol 0 get Bcontrol 1 get abspoint /Ycont exch def /Xcont exch def Bcontrol 0 2 copy get 2 mul put Bcontrol 1 2 copy get 2 mul put Bcontrol Blen 2 sub 2 copy get 2 mul put Bcontrol Blen 1 sub 2 copy get 2 mul put /Ybi /Xbi currentpoint 3 1 roll def def 0 2 Blen 4 sub {/i exch def Bcontrol i get 3 div Bcontrol i 1 add get 3 div Bcontrol i get 3 mul Bcontrol i 2 add get add 6 div Bcontrol i 1 add get 3 mul Bcontrol i 3 add get add 6 div /Xbi Xcont Bcontrol i 2 add get 2 div add def /Ybi Ycont Bcontrol i 3 add get 2 div add def /Xcont Xcont Bcontrol i 2 add get add def /Ycont Ycont Bcontrol i 3 add get add def Xbi currentpoint pop sub Ybi currentpoint exch pop sub rcurveto }for dstroke}if}def end /ditstart{$DITroff begin /nfonts 60 def % NFONTS makedev/ditroff dependent! /fonts[nfonts{0}repeat]def /fontnames[nfonts{()}repeat]def /docsave save def }def % character outcalls /oc {/pswid exch def /cc exch def /name exch def /ditwid pswid fontsize mul resolution mul 72000 div def /ditsiz fontsize resolution mul 72 div def ocprocs name known{ocprocs name get exec}{name cb} ifelse}def /fractm [.65 0 0 .6 0 0] def /fraction {/fden exch def /fnum exch def gsave /cf currentfont def cf fractm makefont setfont 0 .3 dm 2 copy neg rmoveto fnum show rmoveto currentfont cf setfont(\244)show setfont fden show grestore ditwid 0 rmoveto} def /oce {grestore ditwid 0 rmoveto}def /dm {ditsiz mul}def /ocprocs 50 dict def ocprocs begin (14){(1)(4)fraction}def (12){(1)(2)fraction}def (34){(3)(4)fraction}def (13){(1)(3)fraction}def (23){(2)(3)fraction}def (18){(1)(8)fraction}def (38){(3)(8)fraction}def (58){(5)(8)fraction}def (78){(7)(8)fraction}def (sr){gsave .05 dm .16 dm rmoveto(\326)show oce}def (is){gsave 0 .15 dm rmoveto(\362)show oce}def (->){gsave 0 .02 dm rmoveto(\256)show oce}def (<-){gsave 0 .02 dm rmoveto(\254)show oce}def (==){gsave 0 .05 dm rmoveto(\272)show oce}def end % DIThacks fonts for some special chars 50 dict dup begin /FontType 3 def /FontName /DIThacks def /FontMatrix [.001 0.0 0.0 .001 0.0 0.0] def /FontBBox [-220 -280 900 900] def% a lie but ... /Encoding 256 array def 0 1 255{Encoding exch /.notdef put}for Encoding dup 8#040/space put %space dup 8#110/rc put %right ceil dup 8#111/lt put %left top curl dup 8#112/bv put %bold vert dup 8#113/lk put %left mid curl dup 8#114/lb put %left bot curl dup 8#115/rt put %right top curl dup 8#116/rk put %right mid curl dup 8#117/rb put %right bot curl dup 8#120/rf put %right floor dup 8#121/lf put %left floor dup 8#122/lc put %left ceil dup 8#140/sq put %square dup 8#141/bx put %box dup 8#142/ci put %circle dup 8#143/br put %box rule dup 8#144/rn put %root extender dup 8#145/vr put %vertical rule dup 8#146/ob put %outline bullet dup 8#147/bu put %bullet dup 8#150/ru put %rule dup 8#151/ul put %underline pop /DITfd 100 dict def /BuildChar{0 begin /cc exch def /fd exch def /charname fd /Encoding get cc get def /charwid fd /Metrics get charname get def /charproc fd /CharProcs get charname get def charwid 0 fd /FontBBox get aload pop setcachedevice 40 setlinewidth newpath 0 0 moveto gsave charproc grestore end}def /BuildChar load 0 DITfd put %/UniqueID 5 def /CharProcs 50 dict def CharProcs begin /space{}def /.notdef{}def /ru{500 0 rls}def /rn{0 750 moveto 500 0 rls}def /vr{20 800 moveto 0 -770 rls}def /bv{20 800 moveto 0 -1000 rls}def /br{20 770 moveto 0 -1040 rls}def /ul{0 -250 moveto 500 0 rls}def /ob{200 250 rmoveto currentpoint newpath 200 0 360 arc closepath stroke}def /bu{200 250 rmoveto currentpoint newpath 200 0 360 arc closepath fill}def /sq{80 0 rmoveto currentpoint dround newpath moveto 640 0 rlineto 0 640 rlineto -640 0 rlineto closepath stroke}def /bx{80 0 rmoveto currentpoint dround newpath moveto 640 0 rlineto 0 640 rlineto -640 0 rlineto closepath fill}def /ci{355 333 rmoveto currentpoint newpath 333 0 360 arc 50 setlinewidth stroke}def /lt{20 -200 moveto 0 550 rlineto currx 800 2cx s4 add exch s4 a4p stroke}def /lb{20 800 moveto 0 -550 rlineto currx -200 2cx s4 add exch s4 a4p stroke}def /rt{20 -200 moveto 0 550 rlineto currx 800 2cx s4 sub exch s4 a4p stroke}def /rb{20 800 moveto 0 -500 rlineto currx -200 2cx s4 sub exch s4 a4p stroke}def /lk{20 800 moveto 20 300 -280 300 s4 arcto pop pop 1000 sub currentpoint stroke moveto 20 300 4 2 roll s4 a4p 20 -200 lineto stroke}def /rk{20 800 moveto 20 300 320 300 s4 arcto pop pop 1000 sub currentpoint stroke moveto 20 300 4 2 roll s4 a4p 20 -200 lineto stroke}def /lf{20 800 moveto 0 -1000 rlineto s4 0 rls}def /rf{20 800 moveto 0 -1000 rlineto s4 neg 0 rls}def /lc{20 -200 moveto 0 1000 rlineto s4 0 rls}def /rc{20 -200 moveto 0 1000 rlineto s4 neg 0 rls}def end /Metrics 50 dict def Metrics begin /.notdef 0 def /space 500 def /ru 500 def /br 0 def /lt 250 def /lb 250 def /rt 250 def /rb 250 def /lk 250 def /rk 250 def /rc 250 def /lc 250 def /rf 250 def /lf 250 def /bv 250 def /ob 350 def /bu 350 def /ci 750 def /bx 750 def /sq 750 def /rn 500 def /ul 500 def /vr 0 def end DITfd begin /s2 500 def /s4 250 def /s3 333 def /a4p{arcto pop pop pop pop}def /2cx{2 copy exch}def /rls{rlineto stroke}def /currx{currentpoint pop}def /dround{transform round exch round exch itransform} def end end /DIThacks exch definefont pop ditstart (psc)xT 576 1 1 xr 1(Times-Roman)xf 1 f 2(Times-Italic)xf 2 f 3(Times-Bold)xf 3 f 4(Times-BoldItalic)xf 4 f 5(Helvetica)xf 5 f 6(Helvetica-Bold)xf 6 f 7(Courier)xf 7 f 8(Courier-Bold)xf 8 f 9(Symbol)xf 9 f 10(DIThacks)xf 10 f 10 s 1 f xi %%EndProlog %%Page: 1 1 10 s 0 xH 0 xS 1 f 1084 1478 MXY 0 -1382 Dl 1900 0 Dl 2985 MX 0 1382 Dl -1900 0 Dl 741 1659(Number)N 1024(of)X 1111(Channels)X 1429(with)X 1591(Width)X 2 f 1811(W)X 7 s 1878 1675(center)N 1 f 10 s 2045 1659(/)N 2087(Total)X 2276(Number)X 2559(of)X 2646(Channels)X 2964(\()X 2 f 2991(R)X 7 s 3040 1675(c)N 1 f 10 s 3071 1659(\))N 593 707(Average)N 620 803(Tracks)N 603 899(per)N 726(Tile)X 1084 1343 MXY 28 0 Dl 924 1359(13.4)N 1084 1177 MXY 28 0 Dl 924 1193(13.6)N 1084 1011 MXY 28 0 Dl 924 1027(13.8)N 1084 845 MXY 28 0 Dl 984 861(14)N 1084 679 MXY 28 0 Dl 924 695(14.2)N 1084 513 MXY 28 0 Dl 924 529(14.4)N 1084 347 MXY 28 0 Dl 924 363(14.6)N 1084 180 MXY 28 0 Dl 924 196(14.8)N 1201 1478 MXY 0 -28 Dl 1181 1566(0)N 1535 1478 MXY 0 -28 Dl 1485 1566(0.2)N 1868 1478 MXY 0 -28 Dl 1818 1566(0.4)N 2202 1478 MXY 0 -28 Dl 2152 1566(0.6)N 2535 1478 MXY 0 -28 Dl 2485 1566(0.8)N 2869 1478 MXY 0 -28 Dl 2849 1566(1)N 5 s 10 f 1194 1326(g)N 10 s 1201 1310 MXY 166 -82 Dl 5 s 1361 1243(g)N 10 s 1368 1227 MXY 166 -456 Dl 5 s 1528 786(g)N 10 s 1535 770 MXY 499 -514 Dl 5 s 2028 271(g)N 10 s 2035 255 MXY 417 107 Dl 5 s 2445 379(g)N 10 s 2452 363 MXY 249 298 Dl 5 s 2695 678(g)N 10 s 2702 662 MXY 166 648 Dl 5 s 2862 1326(g)N 1194(g)X 10 s 1201 1310 MXY 25 12 Dl 1248 1333 MXY 25 12 Dl 1295 1357 MXY 25 12 Dl 1342 1380 MXY 25 12 Dl 5 s 1361 1409(g)N 10 s 1368 1393 MXY 10 -26 Dl 1390 1337 MXY 10 -26 Dl 1412 1282 MXY 10 -26 Dl 1435 1227 MXY 10 -26 Dl 1457 1171 MXY 10 -26 Dl 1479 1116 MXY 10 -26 Dl 1502 1060 MXY 10 -26 Dl 1524 1004 MXY 10 -26 Dl 5 s 1528 994(g)N 10 s 1535 978 MXY 27 7 Dl 1593 993 MXY 27 7 Dl 1653 1009 MXY 27 7 Dl 1711 1025 MXY 27 7 Dl 1771 1041 MXY 27 7 Dl 1829 1056 MXY 27 7 Dl 1889 1072 MXY 27 7 Dl 1948 1087 MXY 27 7 Dl 2007 1104 MXY 27 7 Dl 5 s 2028 1126(g)N 10 s 2035 1110 MXY 27 9 Dl 2090 1129 MXY 27 9 Dl 2146 1148 MXY 27 9 Dl 2202 1167 MXY 27 9 Dl 2257 1186 MXY 27 9 Dl 2313 1205 MXY 27 9 Dl 2369 1224 MXY 27 9 Dl 2424 1242 MXY 27 9 Dl 5 s 2445 1268(g)N 10 s 2452 1252 MXY 27 9 Dl 2507 1272 MXY 27 9 Dl 2563 1292 MXY 27 9 Dl 2619 1313 MXY 27 9 Dl 2674 1333 MXY 27 9 Dl 5 s 2695 1359(g)N 10 s 2702 1343 MXY 28 -5 Dl 2771 1329 MXY 28 -5 Dl 2840 1315 MXY 28 -5 Dl 5 s 2862 1326(g)N 1 p %%Trailer xt xs %%EndDocument FMENDEPSF 0 10 Q 0 X 0 0 0 1 0 0 0 K (R) 376.14 263.96 T 0 8 Q (w) 382.81 261.46 T 0 10 Q ( = 2) 388.59 263.96 T (R) 339.65 166.27 T 0 8 Q (w) 346.32 163.77 T 0 10 Q ( = 1.33) 352.1 166.27 T 180.23 73.64 474.99 83.64 R 7 X V 0 11 Q 0 X (Fig. 10. Area-ef) 220.3 76.31 T (\336cienc) 293.03 76.31 T (y vs. routing architecture.) 322.19 76.31 T 72 72 540 720 C 0 0 612 792 C FMENDPAGE %%EndPage: "14" 14 %%Page: "15" 15 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 10 Q 0 X 0 0 0 1 0 0 0 K (15 of 22) 289.33 36.66 T 0 11 Q -0.24 (In one, the 10% of channels nearest the center are 33% wider than the other channels, while in the other the) 72 527.67 P 0.15 (90% of channels closest to the center are 33% wider than the channels nearest the edges. The reduction in) 72 508.67 P -0.2 (tracks per tile o) 72 489.67 P -0.2 (v) 139.36 489.67 P -0.2 (er a uniform FPGA is less than 1% for both of these FPGAs; this mar) 144.69 489.67 P -0.2 (ginal impro) 447.23 489.67 P -0.2 (v) 497.89 489.67 P -0.2 (ement is) 503.23 489.67 P (certainly not enough to justify the e) 72 470.67 T (xtra layout ef) 228.27 470.67 T (fort required in the ph) 286.64 470.67 T (ysical design of such an FPGA.) 383.12 470.67 T 1.86 (These results are signi\336cant because there is a common belief among FPGA architects that there) 90 451.67 P -0.22 (w) 72 432.67 P -0.22 (ould be considerable bene\336t to these kinds of non-uniform architectures. The fundamental reason the) 79.83 432.67 P -0.22 (y do) 520.97 432.67 P 0.09 (not sho) 72 413.67 P 0.09 (w an) 103.9 413.67 P 0.09 (y bene\336t is that there is not much more congestion in the center of an FPGA than there is near) 124.91 413.67 P 0.01 (its edges. In order to determine the \322natural\323 routing demand distrib) 72 394.67 P 0.01 (ution of circuits, we placed and routed) 370.99 394.67 P 0.88 (the 26 benchmark circuits with all congestion a) 72 375.67 P 0.88 (v) 285.97 375.67 P 0.88 (oidance features disabled, so that placement minimized) 291.25 375.67 P 0.15 (wirelength and the router connected each net by the shortest path. Fig. 11 plots the maximum and a) 72 356.67 P 0.15 (v) 510.85 356.67 P 0.15 (erage) 516.18 356.67 P 1.64 (number of tracks required by the horizontal channels as a function of the channel position within the) 72 337.67 P 0.2 (FPGA, a) 72 318.67 P 0.2 (v) 110.48 318.67 P 0.2 (eraged o) 115.82 318.67 P 0.2 (v) 153.41 318.67 P 0.2 (er the 26 benchmark circuits. Demand for routing tracks is relati) 158.75 318.67 P 0.2 (v) 443.05 318.67 P 0.2 (ely constant o) 448.39 318.67 P 0.2 (v) 509.73 318.67 P 0.2 (er the) 515.06 318.67 P 1 F (T) 142.28 712.67 T (able 3:) 148.61 712.67 T 0 F (T) 182.83 712.67 T (racks/tile required for global routing by the lar) 189.16 712.67 T (gest benchmarks.) 393.35 712.67 T (Circuit) 128.44 682.17 T (Uniform) 170.19 688.67 T (\050R) 170.02 675.67 T 0 8.8 Q (w) 181.02 672.92 T 0 11 Q ( = 1\051) 187.38 675.67 T (R) 266.6 692.67 T 0 8.8 Q (w) 273.93 689.92 T 0 11 Q ( = 2) 280.29 692.67 T (R) 398.46 692.67 T 0 8.8 Q (w) 405.8 689.92 T 0 11 Q ( = 1.33) 412.15 692.67 T (R) 216.48 671.67 T 0 8.8 Q (c) 223.81 668.92 T 0 11 Q ( = 0.2) 227.72 671.67 T (R) 260.78 671.67 T 0 8.8 Q (c) 268.11 668.92 T 0 11 Q ( = 0.5) 272.02 671.67 T (R) 305.25 671.67 T 0 8.8 Q (c) 312.58 668.92 T 0 11 Q ( = 0.75) 316.49 671.67 T (R) 355.21 671.67 T 0 8.8 Q (c) 362.55 668.92 T 0 11 Q ( = 0.2) 366.46 671.67 T (R) 399.52 671.67 T 0 8.8 Q (c) 406.85 668.92 T 0 11 Q ( = 0.5) 410.76 671.67 T (R) 443.98 671.67 T 0 8.8 Q (c) 451.32 668.92 T 0 11 Q ( = 0.75) 455.23 671.67 T (alu4) 134.25 652.67 T (16) 183.63 652.67 T (16.0) 225.2 652.67 T (16.6) 269.5 652.67 T (15.6) 316.72 652.67 T (14.7) 363.94 652.67 T (15.9) 408.24 652.67 T (16.8) 455.46 652.67 T (ape) 130.67 635.67 T (x2) 145.77 635.67 T (18) 183.63 635.67 T (19.2) 225.2 635.67 T (23.5) 269.5 635.67 T (18.9) 316.72 635.67 T (16.8) 363.94 635.67 T (17.9) 408.24 635.67 T (18.8) 455.46 635.67 T (ape) 130.67 618.67 T (x4) 145.77 618.67 T (18) 183.63 618.67 T (18.6) 225.2 618.67 T (22.4) 269.5 618.67 T (20.1) 316.72 618.67 T (17.1) 363.94 618.67 T (17.8) 408.24 618.67 T (18.7) 455.46 618.67 T (dif) 130.73 601.67 T (feq) 142.67 601.67 T (12) 183.63 601.67 T (14.4) 225.2 601.67 T (13.6) 269.5 601.67 T (15.6) 316.72 601.67 T (12.8) 363.94 601.67 T (13.8) 408.24 601.67 T (11.4) 455.46 601.67 T (e) 133.11 584.67 T (x5p) 137.83 584.67 T (20) 183.63 584.67 T (20.8) 225.2 584.67 T (19.6) 269.5 584.67 T (20.5) 316.72 584.67 T (21.1) 363.94 584.67 T (20.8) 408.24 584.67 T (20.2) 455.46 584.67 T (mise) 127.92 567.67 T (x3) 148.53 567.67 T (16) 183.63 567.67 T (16.5) 225.2 567.67 T (16.9) 269.5 567.67 T (16.9) 316.72 567.67 T (16.7) 363.94 567.67 T (17.9) 408.24 567.67 T (14.8) 455.46 567.67 T (seq) 136.39 550.67 T (16) 183.63 550.67 T (18.6) 225.2 550.67 T (19.9) 269.5 550.67 T (17.2) 316.72 550.67 T (16.7) 363.94 550.67 T (18.0) 408.24 550.67 T (16.9) 455.46 550.67 T 121.85 704.75 121.85 544.25 2 L V 0.5 H 0 Z N 164.35 704.75 164.35 544.25 2 L V N 166.85 704.75 166.85 544.25 2 L V N 211.43 704.75 211.43 544.25 2 L V N 213.93 704.75 213.93 544.25 2 L V N 256.98 684.25 256.98 543.75 2 L V N 301.28 684.25 301.28 543.75 2 L V N 350.16 704.75 350.16 544.25 2 L V N 352.66 704.75 352.66 544.25 2 L V N 395.71 684.25 395.71 543.75 2 L V N 440.02 684.25 440.02 543.75 2 L V N 490.15 704.75 490.15 544.25 2 L V N 121.6 705 490.4 705 2 L V N 214.18 684 490.4 684 2 L V N 122.1 664.25 489.9 664.25 2 L V N 122.1 661.75 489.9 661.75 2 L V N 121.6 646 490.4 646 2 L V N 121.6 629 490.4 629 2 L V N 121.6 612 490.4 612 2 L V N 121.6 595 490.4 595 2 L V N 121.6 578 490.4 578 2 L V N 121.6 561 490.4 561 2 L V N 121.6 544 490.4 544 2 L V N 72 72 540 720 C 94.57 72 517.43 299.64 C 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 70 586 370 780 300 194 156.34 94.13 FMBEGINEPSF %%BeginDocument: /jayar/d0/vaughn/thesis/place/trans-vlsi/figs/track_demand_overall.eps %!PS-Adobe-2.0 EPSF-1.2 %%BoundingBox: 70 586 370 780 %!PS-Adobe-1.0 %%Creator: gractus.eecg:vaughn (Vaughn Betz,EECG,LP 392,1653,7662197,G,G ) %%Title: stdin (ditroff) %%CreationDate: Mon Sep 16 15:22:32 1996 %%EndComments % Start of psdit.pro -- prolog for ditroff translator % Copyright (c) 1985,1987 Adobe Systems Incorporated. All Rights Reserved. % GOVERNMENT END USERS: See Notice file in TranScript library directory % -- probably /usr/lib/ps/Notice % RCS: $Header: psdit.pro,v 1.2 88/10/29 07:37:27 moraes Exp $ /$DITroff 140 dict def $DITroff begin %% Psfig additions /DocumentInitState [ matrix currentmatrix currentlinewidth currentlinecap currentlinejoin currentdash currentgray currentmiterlimit ] cvx def /startFig { /SavedState save def userdict maxlength dict begin currentpoint transform DocumentInitState setmiterlimit setgray setdash setlinejoin setlinecap setlinewidth setmatrix itransform moveto /ury exch def /urx exch def /lly exch def /llx exch def /y exch 72 mul resolution div def /x exch 72 mul resolution div def currentpoint /cy exch def /cx exch def /sx x urx llx sub div def % scaling for x /sy y ury lly sub div def % scaling for y sx sy scale % scale by (sx,sy) cx sx div llx sub cy sy div ury sub translate /DefFigCTM matrix currentmatrix def /initmatrix { DefFigCTM setmatrix } def /defaultmatrix { DefFigCTM exch copy } def /initgraphics { DocumentInitState setmiterlimit setgray setdash setlinejoin setlinecap setlinewidth setmatrix DefFigCTM setmatrix } def /showpage { initgraphics } def } def % Args are llx lly urx ury (in figure coordinates) /clipFig { currentpoint 6 2 roll newpath 4 copy 4 2 roll moveto 6 -1 roll exch lineto exch lineto exch lineto closepath clip newpath moveto } def % doclip, if called, will always be just after a `startfig' /doclip { llx lly urx ury clipFig } def /endFig { end SavedState restore } def /globalstart { % Push details about the enviornment on the stack. fontnum fontsize fontslant fontheight firstpage mh my resolution slotno currentpoint pagesave restore gsave } def /globalend { grestore moveto /slotno exch def /resolution exch def /my exch def /mh exch def /firstpage exch def /fontheight exch def /fontslant exch def /fontsize exch def /fontnum exch def F /pagesave save def } def %% end Psfig additions /fontnum 1 def /fontsize 10 def /fontheight 10 def /fontslant 0 def /xi {0 72 11 mul translate 72 resolution div dup neg scale 0 0 moveto /fontnum 1 def /fontsize 10 def /fontheight 10 def /fontslant 0 def F /pagesave save def}def /PB{save /psv exch def currentpoint translate resolution 72 div dup neg scale 0 0 moveto}def /PE{psv restore}def /m1 matrix def /m2 matrix def /m3 matrix def /oldmat matrix def /tan{dup sin exch cos div}bind def /point{resolution 72 div mul}bind def /dround {transform round exch round exch itransform}bind def /xT{/devname exch def}def /xr{/mh exch def /my exch def /resolution exch def}def /xp{}def /xs{docsave restore end}def /xt{}def /xf{/fontname exch def /slotno exch def fontnames slotno get fontname eq not {fonts slotno fontname findfont put fontnames slotno fontname put}if}def /xH{/fontheight exch def F}bind def /xS{/fontslant exch def F}bind def /s{/fontsize exch def /fontheight fontsize def F}bind def /f{/fontnum exch def F}bind def /F{fontheight 0 le {/fontheight fontsize def}if fonts fontnum get fontsize point 0 0 fontheight point neg 0 0 m1 astore fontslant 0 ne{1 0 fontslant tan 1 0 0 m2 astore m3 concatmatrix}if makefont setfont .04 fontsize point mul 0 dround pop setlinewidth}bind def /X{exch currentpoint exch pop moveto show}bind def /N{3 1 roll moveto show}bind def /Y{exch currentpoint pop exch moveto show}bind def /S /show load def /ditpush{}def/ditpop{}def /AX{3 -1 roll currentpoint exch pop moveto 0 exch ashow}bind def /AN{4 2 roll moveto 0 exch ashow}bind def /AY{3 -1 roll currentpoint pop exch moveto 0 exch ashow}bind def /AS{0 exch ashow}bind def /MX{currentpoint exch pop moveto}bind def /MY{currentpoint pop exch moveto}bind def /MXY /moveto load def /cb{pop}def % action on unknown char -- nothing for now /n{}def/w{}def /p{pop showpage pagesave restore /pagesave save def}def /abspoint{currentpoint exch pop add exch currentpoint pop add exch}def /dstroke{currentpoint stroke moveto}bind def /Dl{2 copy gsave rlineto stroke grestore rmoveto}bind def /arcellipse{oldmat currentmatrix pop currentpoint translate 1 diamv diamh div scale /rad diamh 2 div def rad 0 rad -180 180 arc oldmat setmatrix}def /Dc{gsave dup /diamv exch def /diamh exch def arcellipse dstroke grestore diamh 0 rmoveto}def /De{gsave /diamv exch def /diamh exch def arcellipse dstroke grestore diamh 0 rmoveto}def /Da{currentpoint /by exch def /bx exch def /fy exch def /fx exch def /cy exch def /cx exch def /rad cx cx mul cy cy mul add sqrt def /ang1 cy neg cx neg atan def /ang2 fy fx atan def cx bx add cy by add 2 copy rad ang1 ang2 arcn stroke exch fx add exch fy add moveto}def /Barray 200 array def % 200 values in a wiggle /D~{mark}def /D~~{counttomark Barray exch 0 exch getinterval astore /Bcontrol exch def pop /Blen Bcontrol length def Blen 4 ge Blen 2 mod 0 eq and {Bcontrol 0 get Bcontrol 1 get abspoint /Ycont exch def /Xcont exch def Bcontrol 0 2 copy get 2 mul put Bcontrol 1 2 copy get 2 mul put Bcontrol Blen 2 sub 2 copy get 2 mul put Bcontrol Blen 1 sub 2 copy get 2 mul put /Ybi /Xbi currentpoint 3 1 roll def def 0 2 Blen 4 sub {/i exch def Bcontrol i get 3 div Bcontrol i 1 add get 3 div Bcontrol i get 3 mul Bcontrol i 2 add get add 6 div Bcontrol i 1 add get 3 mul Bcontrol i 3 add get add 6 div /Xbi Xcont Bcontrol i 2 add get 2 div add def /Ybi Ycont Bcontrol i 3 add get 2 div add def /Xcont Xcont Bcontrol i 2 add get add def /Ycont Ycont Bcontrol i 3 add get add def Xbi currentpoint pop sub Ybi currentpoint exch pop sub rcurveto }for dstroke}if}def end /ditstart{$DITroff begin /nfonts 60 def % NFONTS makedev/ditroff dependent! /fonts[nfonts{0}repeat]def /fontnames[nfonts{()}repeat]def /docsave save def }def % character outcalls /oc {/pswid exch def /cc exch def /name exch def /ditwid pswid fontsize mul resolution mul 72000 div def /ditsiz fontsize resolution mul 72 div def ocprocs name known{ocprocs name get exec}{name cb} ifelse}def /fractm [.65 0 0 .6 0 0] def /fraction {/fden exch def /fnum exch def gsave /cf currentfont def cf fractm makefont setfont 0 .3 dm 2 copy neg rmoveto fnum show rmoveto currentfont cf setfont(\244)show setfont fden show grestore ditwid 0 rmoveto} def /oce {grestore ditwid 0 rmoveto}def /dm {ditsiz mul}def /ocprocs 50 dict def ocprocs begin (14){(1)(4)fraction}def (12){(1)(2)fraction}def (34){(3)(4)fraction}def (13){(1)(3)fraction}def (23){(2)(3)fraction}def (18){(1)(8)fraction}def (38){(3)(8)fraction}def (58){(5)(8)fraction}def (78){(7)(8)fraction}def (sr){gsave .05 dm .16 dm rmoveto(\326)show oce}def (is){gsave 0 .15 dm rmoveto(\362)show oce}def (->){gsave 0 .02 dm rmoveto(\256)show oce}def (<-){gsave 0 .02 dm rmoveto(\254)show oce}def (==){gsave 0 .05 dm rmoveto(\272)show oce}def end % DIThacks fonts for some special chars 50 dict dup begin /FontType 3 def /FontName /DIThacks def /FontMatrix [.001 0.0 0.0 .001 0.0 0.0] def /FontBBox [-220 -280 900 900] def% a lie but ... /Encoding 256 array def 0 1 255{Encoding exch /.notdef put}for Encoding dup 8#040/space put %space dup 8#110/rc put %right ceil dup 8#111/lt put %left top curl dup 8#112/bv put %bold vert dup 8#113/lk put %left mid curl dup 8#114/lb put %left bot curl dup 8#115/rt put %right top curl dup 8#116/rk put %right mid curl dup 8#117/rb put %right bot curl dup 8#120/rf put %right floor dup 8#121/lf put %left floor dup 8#122/lc put %left ceil dup 8#140/sq put %square dup 8#141/bx put %box dup 8#142/ci put %circle dup 8#143/br put %box rule dup 8#144/rn put %root extender dup 8#145/vr put %vertical rule dup 8#146/ob put %outline bullet dup 8#147/bu put %bullet dup 8#150/ru put %rule dup 8#151/ul put %underline pop /DITfd 100 dict def /BuildChar{0 begin /cc exch def /fd exch def /charname fd /Encoding get cc get def /charwid fd /Metrics get charname get def /charproc fd /CharProcs get charname get def charwid 0 fd /FontBBox get aload pop setcachedevice 40 setlinewidth newpath 0 0 moveto gsave charproc grestore end}def /BuildChar load 0 DITfd put %/UniqueID 5 def /CharProcs 50 dict def CharProcs begin /space{}def /.notdef{}def /ru{500 0 rls}def /rn{0 750 moveto 500 0 rls}def /vr{20 800 moveto 0 -770 rls}def /bv{20 800 moveto 0 -1000 rls}def /br{20 770 moveto 0 -1040 rls}def /ul{0 -250 moveto 500 0 rls}def /ob{200 250 rmoveto currentpoint newpath 200 0 360 arc closepath stroke}def /bu{200 250 rmoveto currentpoint newpath 200 0 360 arc closepath fill}def /sq{80 0 rmoveto currentpoint dround newpath moveto 640 0 rlineto 0 640 rlineto -640 0 rlineto closepath stroke}def /bx{80 0 rmoveto currentpoint dround newpath moveto 640 0 rlineto 0 640 rlineto -640 0 rlineto closepath fill}def /ci{355 333 rmoveto currentpoint newpath 333 0 360 arc 50 setlinewidth stroke}def /lt{20 -200 moveto 0 550 rlineto currx 800 2cx s4 add exch s4 a4p stroke}def /lb{20 800 moveto 0 -550 rlineto currx -200 2cx s4 add exch s4 a4p stroke}def /rt{20 -200 moveto 0 550 rlineto currx 800 2cx s4 sub exch s4 a4p stroke}def /rb{20 800 moveto 0 -500 rlineto currx -200 2cx s4 sub exch s4 a4p stroke}def /lk{20 800 moveto 20 300 -280 300 s4 arcto pop pop 1000 sub currentpoint stroke moveto 20 300 4 2 roll s4 a4p 20 -200 lineto stroke}def /rk{20 800 moveto 20 300 320 300 s4 arcto pop pop 1000 sub currentpoint stroke moveto 20 300 4 2 roll s4 a4p 20 -200 lineto stroke}def /lf{20 800 moveto 0 -1000 rlineto s4 0 rls}def /rf{20 800 moveto 0 -1000 rlineto s4 neg 0 rls}def /lc{20 -200 moveto 0 1000 rlineto s4 0 rls}def /rc{20 -200 moveto 0 1000 rlineto s4 neg 0 rls}def end /Metrics 50 dict def Metrics begin /.notdef 0 def /space 500 def /ru 500 def /br 0 def /lt 250 def /lb 250 def /rt 250 def /rb 250 def /lk 250 def /rk 250 def /rc 250 def /lc 250 def /rf 250 def /lf 250 def /bv 250 def /ob 350 def /bu 350 def /ci 750 def /bx 750 def /sq 750 def /rn 500 def /ul 500 def /vr 0 def end DITfd begin /s2 500 def /s4 250 def /s3 333 def /a4p{arcto pop pop pop pop}def /2cx{2 copy exch}def /rls{rlineto stroke}def /currx{currentpoint pop}def /dround{transform round exch round exch itransform} def end end /DIThacks exch definefont pop ditstart (psc)xT 576 1 1 xr 1(Times-Roman)xf 1 f 2(Times-Italic)xf 2 f 3(Times-Bold)xf 3 f 4(Times-BoldItalic)xf 4 f 5(Helvetica)xf 5 f 6(Helvetica-Bold)xf 6 f 7(Courier)xf 7 f 8(Courier-Bold)xf 8 f 9(Symbol)xf 9 f 10(DIThacks)xf 10 f 10 s 1 f xi %%EndProlog %%Page: 1 1 10 s 0 xH 0 xS 1 f 1036 1478 MXY 0 -1382 Dl 1900 0 Dl 2937 MX 0 1382 Dl -1900 0 Dl 1489 1659(Channel)N 1776(Position)X 2057(within)X 2281(FPGA)X 639 515(Tracks)N 666 611(Used)N 697 707(per)N 615 803(Channel)N 695 899(\(26)N 563 995(Benchmark)N 598 1091(Average\))N 1036 1393 MXY 28 0 Dl 976 1409(0)N 1036 1260 MXY 28 0 Dl 976 1276(1)N 1036 1127 MXY 28 0 Dl 976 1143(2)N 1036 993 MXY 28 0 Dl 976 1009(3)N 1036 860 MXY 28 0 Dl 976 876(4)N 1036 727 MXY 28 0 Dl 976 743(5)N 1036 594 MXY 28 0 Dl 976 610(6)N 1036 461 MXY 28 0 Dl 976 477(7)N 1036 328 MXY 28 0 Dl 976 344(8)N 1036 194 MXY 28 0 Dl 976 210(9)N 1153 1478 MXY 0 -28 Dl 941 1566(Bottom)N 1200(Edge)X 1987 1478 MXY 0 -28 Dl 1880 1566(Center)N 2820 1478 MXY 0 -28 Dl 2663 1566(Top)N 2812(Edge)X 5 s 10 f 1188 576(g)N 1188 962(g)N 10 s 1195 560 MXY 11 -26 Dl 1219 506 MXY 11 -26 Dl 1243 452 MXY 11 -26 Dl 1267 398 MXY 11 -26 Dl 1195 946 MXY 83 -151 Dl 5 s 1271 388(g)N 1271 810(g)N 10 s 1278 372 MXY 28 -1 Dl 1333 369 MXY 28 -1 Dl 1278 794 MXY 83 -20 Dl 5 s 1354 384(g)N 1354 790(g)N 10 s 1361 368 MXY 23 -17 Dl 1422 321 MXY 23 -17 Dl 1361 774 MXY 83 -35 Dl 5 s 1438 319(g)N 1438 755(g)N 10 s 1445 303 MXY 28 6 Dl 1500 317 MXY 28 6 Dl 1445 739 MXY 83 -1 Dl 5 s 1521 340(g)N 1521 754(g)N 10 s 1528 324 MXY 28 -2 Dl 1583 318 MXY 28 -2 Dl 1528 738 MXY 83 -19 Dl 5 s 1605 332(g)N 1605 735(g)N 10 s 1612 316 MXY 25 13 Dl 1670 348 MXY 25 13 Dl 1612 719 MXY 83 25 Dl 5 s 1688 378(g)N 1688 761(g)N 10 s 1695 362 MXY 22 -17 Dl 1756 313 MXY 22 -17 Dl 1695 745 MXY 83 -20 Dl 5 s 1771 311(g)N 1771 740(g)N 10 s 1778 295 MXY 24 15 Dl 1838 332 MXY 24 15 Dl 1778 724 MXY 83 -19 Dl 5 s 1855 364(g)N 1855 721(g)N 10 s 1862 348 MXY 12 -25 Dl 1885 301 MXY 12 -25 Dl 1909 253 MXY 12 -25 Dl 1932 206 MXY 12 -25 Dl 1862 705 MXY 83 -36 Dl 5 s 1938 196(g)N 1938 685(g)N 10 s 1945 180 MXY 28 2 Dl 2000 185 MXY 28 2 Dl 1945 669 MXY 83 -3 Dl 5 s 2021 204(g)N 2021 682(g)N 10 s 2028 188 MXY 15 24 Dl 2062 239 MXY 15 24 Dl 2096 290 MXY 15 24 Dl 2028 666 MXY 83 39 Dl 5 s 2105 330(g)N 2105 721(g)N 10 s 2112 314 MXY 20 -19 Dl 2174 256 MXY 20 -19 Dl 2112 705 MXY 83 -28 Dl 5 s 2188 252(g)N 2188 693(g)N 10 s 2195 236 MXY 16 23 Dl 2229 282 MXY 16 23 Dl 2261 329 MXY 16 23 Dl 2195 677 MXY 83 70 Dl 5 s 2272 368(g)N 2272 764(g)N 10 s 2279 352 MXY 27 -9 Dl 2335 332 MXY 27 -9 Dl 2279 748 MXY 83 -25 Dl 5 s 2355 339(g)N 2355 739(g)N 10 s 2362 323 MXY 28 -6 Dl 2417 310 MXY 28 -6 Dl 2362 723 MXY 83 -2 Dl 5 s 2438 320(g)N 2438 736(g)N 10 s 2445 304 MXY 25 12 Dl 2502 331 MXY 25 12 Dl 2445 720 MXY 83 33 Dl 5 s 2522 359(g)N 2522 769(g)N 10 s 2529 343 MXY 28 2 Dl 2583 348 MXY 28 2 Dl 2529 753 MXY 83 4 Dl 5 s 2605 368(g)N 2605 773(g)N 10 s 2612 352 MXY 28 2 Dl 2666 357 MXY 28 2 Dl 2612 757 MXY 83 31 Dl 5 s 2688 376(g)N 2688 805(g)N 10 s 2695 360 MXY 8 27 Dl 2714 419 MXY 8 27 Dl 2733 479 MXY 8 27 Dl 2752 538 MXY 8 27 Dl 2770 598 MXY 8 27 Dl 2695 789 MXY 83 212 Dl 5 s 2772 642(g)N 2772 1017(g)N 1 p %%Trailer xt xs %%EndDocument FMENDEPSF 100.9 72.03 514.83 84.07 R 7 X 0 0 0 1 0 0 0 K V 0 11 Q 0 X (Fig. 11. A) 113.76 76.74 T (v) 160.32 76.74 T (erage o) 165.65 76.74 T (v) 197.55 76.74 T (er benchmarks of track demand vs. position for horizontal channels.) 202.89 76.74 T 0 10 Q (Maximum Along Channel Length) 257.46 279.75 T (A) 264.81 219.57 T (v) 271.29 219.57 T (erage Along Channel Length) 276.14 219.57 T 72 72 540 720 C 0 0 612 792 C FMENDPAGE %%EndPage: "15" 15 %%Page: "16" 16 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 10 Q 0 X 0 0 0 1 0 0 0 K (16 of 22) 289.33 36.66 T 0 11 Q 0.34 (middle 90% of the FPGA, and there is only a moderate decrease as one gets v) 72 460.67 P 0.34 (ery close to the chip edges.) 419.14 460.67 P -0.25 (Fig. 12 plots the a) 72 441.67 P -0.25 (v) 149.91 441.67 P -0.25 (erage and maximum tracks required by each horizontal channel v) 155.25 441.67 P -0.25 (ersus the channel posi-) 440.25 441.67 P 0.68 (tion for three representati) 72 422.67 P 0.68 (v) 185.26 422.67 P 0.68 (e benchmark circuits. There is some high-frequenc) 190.59 422.67 P 0.68 (y v) 417.8 422.67 P 0.68 (ariation from channel to) 431.96 422.67 P 0.32 (channel, since the router is, in this case, not making an) 72 403.67 P 0.32 (y ef) 315.47 403.67 P 0.32 (fort to route nets around congestion. Ne) 332.31 403.67 P 0.32 (v) 509.01 403.67 P 0.32 (erthe-) 514.35 403.67 P (less, it is clear that these circuits closely mirror the beha) 72 384.67 T (vior of the o) 318.32 384.67 T (v) 372.23 384.67 T (erall a) 377.57 384.67 T (v) 404.53 384.67 T (erages of Fig. 11.) 409.86 384.67 T 0.25 (An additional reason for the poor area-ef) 90 365.67 P 0.25 (\336cienc) 270.83 365.67 P 0.25 (y of FPGAs with e) 299.99 365.67 P 0.25 (xtra routing near their center is that) 383.32 365.67 P 1.21 (typical circuits contain numerous local congestion \322hotspots\323 \050small re) 72 346.67 P 1.21 (gions where all the channels are) 393.13 346.67 P 0.21 (full\051 and some of these hotspots occur quite close to the FPGA edge. Consequently) 72 327.67 P 0.21 (, in order for an FPGA) 439.38 327.67 P 0.15 (with thick) 72 308.67 P 0.15 (er channels near its center to use fe) 116.35 308.67 P 0.15 (wer routing resources, the placement softw) 271.35 308.67 P 0.15 (are must mo) 461.37 308.67 P 0.15 (v) 515.88 308.67 P 0.15 (e all) 521.22 308.67 P -0.1 (of these hotspots into the FPGA center) 72 289.67 P -0.1 (. As discussed in Section 3.1, we spent considerable time in) 241.3 289.67 P -0.1 (v) 502.33 289.67 P -0.1 (estig) 507.67 289.67 P -0.1 (at-) 528.39 289.67 P 1.6 (ing placement cost functions that modelled congestion well. The more adv) 72 270.67 P 1.6 (anced, and computationally) 415.52 270.67 P 0.79 (e) 72 251.67 P 0.79 (xpensi) 76.72 251.67 P 0.79 (v) 105.17 251.67 P 0.79 (e, cost functions, ho) 110.5 251.67 P 0.79 (we) 200.9 251.67 P 0.79 (v) 213.45 251.67 P 0.79 (er) 218.78 251.67 P 0.79 (, impro) 226.89 251.67 P 0.79 (v) 259.3 251.67 P 0.79 (ed the performance of the uniform FPGA more than the) 264.63 251.67 P 0.79 (y did) 516.9 251.67 P 0.69 (the non-uniform FPGA. W) 72 232.67 P 0.69 (e belie) 191.74 232.67 P 0.69 (v) 221.18 232.67 P 0.69 (e it is therefore more ef) 226.52 232.67 P 0.69 (fecti) 332.64 232.67 P 0.69 (v) 351.91 232.67 P 0.69 (e for CAD tools to attempt to spread out) 357.25 232.67 P (congestion as much as possible, rather than to try to localize it to a designated portion of a chip.) 72 213.67 T 0.14 (Man) 90 194.67 P 0.14 (y engineers are surprised that ha) 110 194.67 P 0.14 (ving wider channels near the center of an FPGA doesn\325) 252.54 194.67 P 0.14 (t impro) 497.71 194.67 P 0.14 (v) 529.78 194.67 P 0.14 (e) 535.12 194.67 P -0.17 (area-ef) 72 175.67 P -0.17 (\336cienc) 102.25 175.67 P -0.17 (y) 131.41 175.67 P -0.17 (. Since standard cell and sea-of-g) 136.2 175.67 P -0.17 (ates Mask-Programmed Gate Array \050MPGA\051 designs often) 281.33 175.67 P -0.24 (ha) 72 156.67 P -0.24 (v) 82.16 156.67 P -0.24 (e some channels wider than others, the) 87.5 156.67 P -0.24 (y e) 256.07 156.67 P -0.24 (xpect that FPGA-based designs w) 268.8 156.67 P -0.24 (ould also bene\336t from a mix) 416.83 156.67 P 1.08 (of wide and narro) 72 137.67 P 1.08 (w channels. There is a k) 152.87 137.67 P 1.08 (e) 264.48 137.67 P 1.08 (y dif) 269.19 137.67 P 1.08 (ference between FPGAs and standard cells or MPGAs,) 290.47 137.67 P 0.74 (ho) 72 118.67 P 0.74 (we) 82.72 118.67 P 0.74 (v) 95.28 118.67 P 0.74 (er -- in FPGAs the width of the v) 100.61 118.67 P 0.74 (arious channels is determined by the FPGA architecture, not the) 251.68 118.67 P 0.66 (circuit being implemented. If one b) 72 99.67 P 0.66 (uilds an FPGA with some channels wider than others,) 230.28 99.67 P 2 F 0.66 (all) 475.75 99.67 P 0 F 0.66 ( circuits are) 487.37 99.67 P -0.02 (forced to route most of their connections through the prede\336ned wide channels, whether it is ef) 72 80.67 P -0.02 (\336cient for a) 489.33 80.67 P 72 72 540 720 C 72 468 540 720 C 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 72 571 299 768 227 197 72.32 520.5 FMBEGINEPSF %%BeginDocument: /jayar/d0/vaughn/thesis/place/trans-vlsi/figs/av_track_demand.eps %!PS-Adobe-2.0 EPSF-1.2 %%BoundingBox: 72 571 299 768 %!PS-Adobe-1.0 %%Creator: gractus.eecg:vaughn (Vaughn Betz,EECG,LP 392,1653,7662197,G,G ) %%Title: stdin (ditroff) %%CreationDate: Mon Sep 16 15:21:22 1996 %%EndComments % Start of psdit.pro -- prolog for ditroff translator % Copyright (c) 1985,1987 Adobe Systems Incorporated. All Rights Reserved. % GOVERNMENT END USERS: See Notice file in TranScript library directory % -- probably /usr/lib/ps/Notice % RCS: $Header: psdit.pro,v 1.2 88/10/29 07:37:27 moraes Exp $ /$DITroff 140 dict def $DITroff begin %% Psfig additions /DocumentInitState [ matrix currentmatrix currentlinewidth currentlinecap currentlinejoin currentdash currentgray currentmiterlimit ] cvx def /startFig { /SavedState save def userdict maxlength dict begin currentpoint transform DocumentInitState setmiterlimit setgray setdash setlinejoin setlinecap setlinewidth setmatrix itransform moveto /ury exch def /urx exch def /lly exch def /llx exch def /y exch 72 mul resolution div def /x exch 72 mul resolution div def currentpoint /cy exch def /cx exch def /sx x urx llx sub div def % scaling for x /sy y ury lly sub div def % scaling for y sx sy scale % scale by (sx,sy) cx sx div llx sub cy sy div ury sub translate /DefFigCTM matrix currentmatrix def /initmatrix { DefFigCTM setmatrix } def /defaultmatrix { DefFigCTM exch copy } def /initgraphics { DocumentInitState setmiterlimit setgray setdash setlinejoin setlinecap setlinewidth setmatrix DefFigCTM setmatrix } def /showpage { initgraphics } def } def % Args are llx lly urx ury (in figure coordinates) /clipFig { currentpoint 6 2 roll newpath 4 copy 4 2 roll moveto 6 -1 roll exch lineto exch lineto exch lineto closepath clip newpath moveto } def % doclip, if called, will always be just after a `startfig' /doclip { llx lly urx ury clipFig } def /endFig { end SavedState restore } def /globalstart { % Push details about the enviornment on the stack. fontnum fontsize fontslant fontheight firstpage mh my resolution slotno currentpoint pagesave restore gsave } def /globalend { grestore moveto /slotno exch def /resolution exch def /my exch def /mh exch def /firstpage exch def /fontheight exch def /fontslant exch def /fontsize exch def /fontnum exch def F /pagesave save def } def %% end Psfig additions /fontnum 1 def /fontsize 10 def /fontheight 10 def /fontslant 0 def /xi {0 72 11 mul translate 72 resolution div dup neg scale 0 0 moveto /fontnum 1 def /fontsize 10 def /fontheight 10 def /fontslant 0 def F /pagesave save def}def /PB{save /psv exch def currentpoint translate resolution 72 div dup neg scale 0 0 moveto}def /PE{psv restore}def /m1 matrix def /m2 matrix def /m3 matrix def /oldmat matrix def /tan{dup sin exch cos div}bind def /point{resolution 72 div mul}bind def /dround {transform round exch round exch itransform}bind def /xT{/devname exch def}def /xr{/mh exch def /my exch def /resolution exch def}def /xp{}def /xs{docsave restore end}def /xt{}def /xf{/fontname exch def /slotno exch def fontnames slotno get fontname eq not {fonts slotno fontname findfont put fontnames slotno fontname put}if}def /xH{/fontheight exch def F}bind def /xS{/fontslant exch def F}bind def /s{/fontsize exch def /fontheight fontsize def F}bind def /f{/fontnum exch def F}bind def /F{fontheight 0 le {/fontheight fontsize def}if fonts fontnum get fontsize point 0 0 fontheight point neg 0 0 m1 astore fontslant 0 ne{1 0 fontslant tan 1 0 0 m2 astore m3 concatmatrix}if makefont setfont .04 fontsize point mul 0 dround pop setlinewidth}bind def /X{exch currentpoint exch pop moveto show}bind def /N{3 1 roll moveto show}bind def /Y{exch currentpoint pop exch moveto show}bind def /S /show load def /ditpush{}def/ditpop{}def /AX{3 -1 roll currentpoint exch pop moveto 0 exch ashow}bind def /AN{4 2 roll moveto 0 exch ashow}bind def /AY{3 -1 roll currentpoint pop exch moveto 0 exch ashow}bind def /AS{0 exch ashow}bind def /MX{currentpoint exch pop moveto}bind def /MY{currentpoint pop exch moveto}bind def /MXY /moveto load def /cb{pop}def % action on unknown char -- nothing for now /n{}def/w{}def /p{pop showpage pagesave restore /pagesave save def}def /abspoint{currentpoint exch pop add exch currentpoint pop add exch}def /dstroke{currentpoint stroke moveto}bind def /Dl{2 copy gsave rlineto stroke grestore rmoveto}bind def /arcellipse{oldmat currentmatrix pop currentpoint translate 1 diamv diamh div scale /rad diamh 2 div def rad 0 rad -180 180 arc oldmat setmatrix}def /Dc{gsave dup /diamv exch def /diamh exch def arcellipse dstroke grestore diamh 0 rmoveto}def /De{gsave /diamv exch def /diamh exch def arcellipse dstroke grestore diamh 0 rmoveto}def /Da{currentpoint /by exch def /bx exch def /fy exch def /fx exch def /cy exch def /cx exch def /rad cx cx mul cy cy mul add sqrt def /ang1 cy neg cx neg atan def /ang2 fy fx atan def cx bx add cy by add 2 copy rad ang1 ang2 arcn stroke exch fx add exch fy add moveto}def /Barray 200 array def % 200 values in a wiggle /D~{mark}def /D~~{counttomark Barray exch 0 exch getinterval astore /Bcontrol exch def pop /Blen Bcontrol length def Blen 4 ge Blen 2 mod 0 eq and {Bcontrol 0 get Bcontrol 1 get abspoint /Ycont exch def /Xcont exch def Bcontrol 0 2 copy get 2 mul put Bcontrol 1 2 copy get 2 mul put Bcontrol Blen 2 sub 2 copy get 2 mul put Bcontrol Blen 1 sub 2 copy get 2 mul put /Ybi /Xbi currentpoint 3 1 roll def def 0 2 Blen 4 sub {/i exch def Bcontrol i get 3 div Bcontrol i 1 add get 3 div Bcontrol i get 3 mul Bcontrol i 2 add get add 6 div Bcontrol i 1 add get 3 mul Bcontrol i 3 add get add 6 div /Xbi Xcont Bcontrol i 2 add get 2 div add def /Ybi Ycont Bcontrol i 3 add get 2 div add def /Xcont Xcont Bcontrol i 2 add get add def /Ycont Ycont Bcontrol i 3 add get add def Xbi currentpoint pop sub Ybi currentpoint exch pop sub rcurveto }for dstroke}if}def end /ditstart{$DITroff begin /nfonts 60 def % NFONTS makedev/ditroff dependent! /fonts[nfonts{0}repeat]def /fontnames[nfonts{()}repeat]def /docsave save def }def % character outcalls /oc {/pswid exch def /cc exch def /name exch def /ditwid pswid fontsize mul resolution mul 72000 div def /ditsiz fontsize resolution mul 72 div def ocprocs name known{ocprocs name get exec}{name cb} ifelse}def /fractm [.65 0 0 .6 0 0] def /fraction {/fden exch def /fnum exch def gsave /cf currentfont def cf fractm makefont setfont 0 .3 dm 2 copy neg rmoveto fnum show rmoveto currentfont cf setfont(\244)show setfont fden show grestore ditwid 0 rmoveto} def /oce {grestore ditwid 0 rmoveto}def /dm {ditsiz mul}def /ocprocs 50 dict def ocprocs begin (14){(1)(4)fraction}def (12){(1)(2)fraction}def (34){(3)(4)fraction}def (13){(1)(3)fraction}def (23){(2)(3)fraction}def (18){(1)(8)fraction}def (38){(3)(8)fraction}def (58){(5)(8)fraction}def (78){(7)(8)fraction}def (sr){gsave .05 dm .16 dm rmoveto(\326)show oce}def (is){gsave 0 .15 dm rmoveto(\362)show oce}def (->){gsave 0 .02 dm rmoveto(\256)show oce}def (<-){gsave 0 .02 dm rmoveto(\254)show oce}def (==){gsave 0 .05 dm rmoveto(\272)show oce}def end % DIThacks fonts for some special chars 50 dict dup begin /FontType 3 def /FontName /DIThacks def /FontMatrix [.001 0.0 0.0 .001 0.0 0.0] def /FontBBox [-220 -280 900 900] def% a lie but ... /Encoding 256 array def 0 1 255{Encoding exch /.notdef put}for Encoding dup 8#040/space put %space dup 8#110/rc put %right ceil dup 8#111/lt put %left top curl dup 8#112/bv put %bold vert dup 8#113/lk put %left mid curl dup 8#114/lb put %left bot curl dup 8#115/rt put %right top curl dup 8#116/rk put %right mid curl dup 8#117/rb put %right bot curl dup 8#120/rf put %right floor dup 8#121/lf put %left floor dup 8#122/lc put %left ceil dup 8#140/sq put %square dup 8#141/bx put %box dup 8#142/ci put %circle dup 8#143/br put %box rule dup 8#144/rn put %root extender dup 8#145/vr put %vertical rule dup 8#146/ob put %outline bullet dup 8#147/bu put %bullet dup 8#150/ru put %rule dup 8#151/ul put %underline pop /DITfd 100 dict def /BuildChar{0 begin /cc exch def /fd exch def /charname fd /Encoding get cc get def /charwid fd /Metrics get charname get def /charproc fd /CharProcs get charname get def charwid 0 fd /FontBBox get aload pop setcachedevice 40 setlinewidth newpath 0 0 moveto gsave charproc grestore end}def /BuildChar load 0 DITfd put %/UniqueID 5 def /CharProcs 50 dict def CharProcs begin /space{}def /.notdef{}def /ru{500 0 rls}def /rn{0 750 moveto 500 0 rls}def /vr{20 800 moveto 0 -770 rls}def /bv{20 800 moveto 0 -1000 rls}def /br{20 770 moveto 0 -1040 rls}def /ul{0 -250 moveto 500 0 rls}def /ob{200 250 rmoveto currentpoint newpath 200 0 360 arc closepath stroke}def /bu{200 250 rmoveto currentpoint newpath 200 0 360 arc closepath fill}def /sq{80 0 rmoveto currentpoint dround newpath moveto 640 0 rlineto 0 640 rlineto -640 0 rlineto closepath stroke}def /bx{80 0 rmoveto currentpoint dround newpath moveto 640 0 rlineto 0 640 rlineto -640 0 rlineto closepath fill}def /ci{355 333 rmoveto currentpoint newpath 333 0 360 arc 50 setlinewidth stroke}def /lt{20 -200 moveto 0 550 rlineto currx 800 2cx s4 add exch s4 a4p stroke}def /lb{20 800 moveto 0 -550 rlineto currx -200 2cx s4 add exch s4 a4p stroke}def /rt{20 -200 moveto 0 550 rlineto currx 800 2cx s4 sub exch s4 a4p stroke}def /rb{20 800 moveto 0 -500 rlineto currx -200 2cx s4 sub exch s4 a4p stroke}def /lk{20 800 moveto 20 300 -280 300 s4 arcto pop pop 1000 sub currentpoint stroke moveto 20 300 4 2 roll s4 a4p 20 -200 lineto stroke}def /rk{20 800 moveto 20 300 320 300 s4 arcto pop pop 1000 sub currentpoint stroke moveto 20 300 4 2 roll s4 a4p 20 -200 lineto stroke}def /lf{20 800 moveto 0 -1000 rlineto s4 0 rls}def /rf{20 800 moveto 0 -1000 rlineto s4 neg 0 rls}def /lc{20 -200 moveto 0 1000 rlineto s4 0 rls}def /rc{20 -200 moveto 0 1000 rlineto s4 neg 0 rls}def end /Metrics 50 dict def Metrics begin /.notdef 0 def /space 500 def /ru 500 def /br 0 def /lt 250 def /lb 250 def /rt 250 def /rb 250 def /lk 250 def /rk 250 def /rc 250 def /lc 250 def /rf 250 def /lf 250 def /bv 250 def /ob 350 def /bu 350 def /ci 750 def /bx 750 def /sq 750 def /rn 500 def /ul 500 def /vr 0 def end DITfd begin /s2 500 def /s4 250 def /s3 333 def /a4p{arcto pop pop pop pop}def /2cx{2 copy exch}def /rls{rlineto stroke}def /currx{currentpoint pop}def /dround{transform round exch round exch itransform} def end end /DIThacks exch definefont pop ditstart (psc)xT 576 1 1 xr 1(Times-Roman)xf 1 f 2(Times-Italic)xf 2 f 3(Times-Bold)xf 3 f 4(Times-BoldItalic)xf 4 f 5(Helvetica)xf 5 f 6(Helvetica-Bold)xf 6 f 7(Courier)xf 7 f 8(Courier-Bold)xf 8 f 9(Symbol)xf 9 f 10(DIThacks)xf 10 f 10 s 1 f xi %%EndProlog %%Page: 1 1 10 s 0 xH 0 xS 1 f 960 1574 MXY 0 -1382 Dl 1382 0 Dl 0 1382 Dl -1382 0 Dl 1153 1772(Channel)N 1440(Position)X 1721(within)X 1945(FPGA)X 574 659(Average)N 601 755(Tracks)N 628 851(Used)N 610 947(Along)N 577 1043(Channel)N 597 1139(Length)N 960 1489 MXY 28 0 Dl 900 1505(0)N 960 1319 MXY 28 0 Dl 900 1335(1)N 960 1150 MXY 28 0 Dl 900 1166(2)N 960 980 MXY 28 0 Dl 900 996(3)N 960 811 MXY 28 0 Dl 900 827(4)N 960 641 MXY 28 0 Dl 900 657(5)N 960 471 MXY 28 0 Dl 900 487(6)N 960 302 MXY 28 0 Dl 900 318(7)N 1044 1574 MXY 0 -28 Dl 832 1662(Bottom)N 1091(Edge)X 1651 1574 MXY 0 -28 Dl 1544 1662(Center)N 2257 1574 MXY 0 -28 Dl 2100 1662(Top)N 2249(Edge)X 5 s 10 f 1037 1188(g)N 10 s 1044 1172 MXY 52 -184 Dl 5 s 1090 1004(g)N 10 s 1097 988 MXY 52 -81 Dl 5 s 1143 922(g)N 10 s 1150 906 MXY 52 81 Dl 5 s 1196 1004(g)N 10 s 1203 988 MXY 52 -44 Dl 5 s 1248 959(g)N 10 s 1255 943 MXY 52 66 Dl 5 s 1301 1026(g)N 10 s 1308 1010 MXY 52 -58 Dl 5 s 1354 967(g)N 10 s 1361 951 MXY 52 -21 Dl 5 s 1407 945(g)N 10 s 1414 929 MXY 52 21 Dl 5 s 1459 967(g)N 10 s 1466 951 MXY 52 -7 Dl 5 s 1512 959(g)N 10 s 1519 943 MXY 52 -7 Dl 5 s 1564 952(g)N 10 s 1571 936 MXY 52 44 Dl 5 s 1617 996(g)N 10 s 1624 980 MXY 52 -73 Dl 5 s 1670 922(g)N 10 s 1677 906 MXY 52 44 Dl 5 s 1723 967(g)N 10 s 1730 951 MXY 52 -7 Dl 5 s 1776 959(g)N 10 s 1783 943 MXY 52 44 Dl 5 s 1828 1004(g)N 10 s 1835 988 MXY 52 14 Dl 5 s 1881 1019(g)N 10 s 1888 1003 MXY 52 -73 Dl 5 s 1934 945(g)N 10 s 1941 929 MXY 52 -7 Dl 5 s 1987 937(g)N 10 s 1994 921 MXY 52 21 Dl 5 s 2039 959(g)N 10 s 2046 943 MXY 52 -81 Dl 5 s 2092 878(g)N 10 s 2099 862 MXY 52 29 Dl 5 s 2144 908(g)N 10 s 2151 892 MXY 52 103 Dl 5 s 2197 1011(g)N 10 s 2204 995 MXY 52 236 Dl 5 s 2250 1247(g)N 7 s 1034 1267(f)N 1 f 1036 1253(.)N 1039 1224(.)N 1042 1195(.)N 1044 1166(.)N 1047 1136(.)N 1049 1107(.)N 1051 1078(.)N 1054 1048(.)N 1057 1019(.)N 1059 990(.)N 1062 960(.)N 1064 931(.)N 1067 901(.)N 10 f 1065 915(f)N 1 f 1067 901(.)N 1072 871(.)N 1077 841(.)N 1082 810(.)N 1087 780(.)N 1092 750(.)N 1097 719(.)N 10 f 1095 733(f)N 1 f 1097 719(.)N 1112 741(.)N 1127 762(.)N 10 f 1125 776(f)N 1 f 1127 762(.)N 1137 732(.)N 1148 702(.)N 1158 673(.)N 10 f 1156 687(f)N 1 f 1158 673(.)N 1188 677(.)N 10 f 1186 691(f)N 1 f 1188 677(.)N 1192 650(.)N 1196 623(.)N 1201 595(.)N 1205 568(.)N 1210 541(.)N 1214 513(.)N 1218 486(.)N 10 f 1216 500(f)N 1 f 1218 486(.)N 1222 515(.)N 1226 543(.)N 1230 572(.)N 1233 601(.)N 1237 629(.)N 1241 658(.)N 1245 687(.)N 1248 715(.)N 10 f 1246 729(f)N 1 f 1248 715(.)N 1255 689(.)N 1261 664(.)N 1267 639(.)N 1273 613(.)N 1279 588(.)N 10 f 1277 602(f)N 1 f 1279 588(.)N 1294 556(.)N 1309 524(.)N 10 f 1307 538(f)N 1 f 1309 524(.)N 1319 547(.)N 1330 570(.)N 1339 592(.)N 10 f 1337 606(f)N 1 f 1339 592(.)N 1355 564(.)N 1370 537(.)N 10 f 1368 551(f)N 1 f 1370 537(.)N 1375 566(.)N 1380 595(.)N 1385 624(.)N 1390 653(.)N 1395 682(.)N 1400 711(.)N 10 f 1398 725(f)N 1 f 1400 711(.)N 1408 683(.)N 1415 654(.)N 1423 625(.)N 1430 596(.)N 10 f 1428 610(f)N 1 f 1430 596(.)N 1441 568(.)N 1451 540(.)N 1461 511(.)N 10 f 1459 525(f)N 1 f 1461 511(.)N 1467 541(.)N 1473 571(.)N 1479 601(.)N 1485 630(.)N 1491 660(.)N 10 f 1489 674(f)N 1 f 1491 660(.)N 1496 631(.)N 1501 602(.)N 1506 573(.)N 1512 544(.)N 1516 515(.)N 1521 486(.)N 10 f 1519 500(f)N 1 f 1521 486(.)N 1532 517(.)N 1542 548(.)N 1552 579(.)N 10 f 1550 593(f)N 1 f 1552 579(.)N 1559 552(.)N 1567 524(.)N 1574 496(.)N 1582 469(.)N 10 f 1580 483(f)N 1 f 1582 469(.)N 1586 442(.)N 1590 415(.)N 1595 388(.)N 1599 360(.)N 1604 333(.)N 1608 306(.)N 1612 278(.)N 10 f 1610 292(f)N 1 f 1612 278(.)N 1615 306(.)N 1619 335(.)N 1622 362(.)N 1624 390(.)N 1627 418(.)N 1631 446(.)N 1634 474(.)N 1637 502(.)N 1639 530(.)N 1643 558(.)N 10 f 1641 572(f)N 1 f 1643 558(.)N 1653 536(.)N 1663 513(.)N 1673 490(.)N 10 f 1671 504(f)N 1 f 1673 490(.)N 1688 511(.)N 1703 533(.)N 10 f 1701 547(f)N 1 f 1703 533(.)N 1709 505(.)N 1713 477(.)N 1718 450(.)N 1724 423(.)N 1729 395(.)N 1734 367(.)N 10 f 1732 381(f)N 1 f 1734 367(.)N 1744 392(.)N 1754 415(.)N 1764 439(.)N 10 f 1762 453(f)N 1 f 1764 439(.)N 1770 468(.)N 1776 495(.)N 1782 524(.)N 1788 551(.)N 1794 579(.)N 10 f 1792 593(f)N 1 f 1794 579(.)N 1800 552(.)N 1804 526(.)N 1809 499(.)N 1815 472(.)N 1820 445(.)N 1824 418(.)N 10 f 1822 432(f)N 1 f 1824 418(.)N 1828 448(.)N 1831 477(.)N 1834 507(.)N 1837 537(.)N 1840 567(.)N 1843 596(.)N 1846 626(.)N 1849 656(.)N 1852 685(.)N 1855 715(.)N 10 f 1853 729(f)N 1 f 1855 715(.)N 1885 711(.)N 10 f 1883 725(f)N 1 f 1885 711(.)N 1889 684(.)N 1894 658(.)N 1898 631(.)N 1903 604(.)N 1907 578(.)N 1911 551(.)N 1915 524(.)N 10 f 1913 538(f)N 1 f 1915 524(.)N 1922 551(.)N 1927 579(.)N 1934 606(.)N 1940 633(.)N 1946 660(.)N 10 f 1944 674(f)N 1 f 1946 660(.)N 1951 632(.)N 1956 605(.)N 1961 577(.)N 1966 549(.)N 1971 522(.)N 1976 495(.)N 10 f 1974 509(f)N 1 f 1976 495(.)N 1984 525(.)N 1991 556(.)N 1999 587(.)N 2006 617(.)N 10 f 2004 631(f)N 1 f 2006 617(.)N 2010 588(.)N 2014 558(.)N 2018 529(.)N 2022 499(.)N 2025 469(.)N 2029 439(.)N 2033 410(.)N 2037 380(.)N 10 f 2035 394(f)N 1 f 2037 380(.)N 2042 411(.)N 2047 441(.)N 2052 471(.)N 2057 502(.)N 2062 532(.)N 2067 563(.)N 10 f 2065 577(f)N 1 f 2067 563(.)N 2077 540(.)N 2088 517(.)N 2097 495(.)N 10 f 2095 509(f)N 1 f 2097 495(.)N 2104 522(.)N 2109 549(.)N 2116 576(.)N 2122 603(.)N 2128 630(.)N 10 f 2126 644(f)N 1 f 2128 630(.)N 2158 617(.)N 10 f 2156 631(f)N 1 f 2158 617(.)N 2168 646(.)N 2178 674(.)N 2188 702(.)N 10 f 2186 716(f)N 1 f 2188 702(.)N 2191 731(.)N 2195 759(.)N 2198 787(.)N 2200 816(.)N 2203 844(.)N 2207 873(.)N 2210 901(.)N 2213 930(.)N 2215 958(.)N 2219 987(.)N 10 f 2217 1001(f)N 1 f 2219 987(.)N 2221 1016(.)N 2224 1046(.)N 2227 1075(.)N 2230 1105(.)N 2233 1135(.)N 2235 1165(.)N 2238 1194(.)N 2241 1224(.)N 2244 1253(.)N 2247 1283(.)N 2249 1313(.)N 10 f 2247 1327(f)N 9 f 1029 1039(+)N 10 s 1044 1023 MXY 25 13 Dl 1080 1042 MXY 25 13 Dl 7 s 1090 1073(+)N 10 s 1105 1057 MXY 20 -20 Dl 1145 1017 MXY 20 -20 Dl 7 s 1151 1013(+)N 10 s 1166 997 MXY 20 -20 Dl 1206 958 MXY 20 -20 Dl 7 s 1211 954(+)N 10 s 1226 938 MXY 25 -13 Dl 1262 918 MXY 25 -13 Dl 7 s 1272 920(+)N 10 s 1287 904 MXY 13 -25 Dl 1310 857 MXY 13 -25 Dl 1335 811 MXY 13 -25 Dl 7 s 1332 801(+)N 10 s 1347 785 MXY 12 25 Dl 1372 836 MXY 12 25 Dl 1396 886 MXY 12 25 Dl 7 s 1393 929(+)N 10 s 1408 913 MXY 7 -27 Dl 1422 862 MXY 7 -27 Dl 1435 812 MXY 7 -27 Dl 1448 762 MXY 7 -27 Dl 1461 711 MXY 7 -27 Dl 7 s 1454 699(+)N 10 s 1469 683 MXY 9 27 Dl 1486 731 MXY 9 27 Dl 1503 778 MXY 9 27 Dl 1520 826 MXY 9 27 Dl 7 s 1514 869(+)N 10 s 1529 853 MXY 9 -27 Dl 1547 806 MXY 9 -27 Dl 1563 758 MXY 9 -27 Dl 1581 710 MXY 9 -27 Dl 7 s 1575 699(+)N 10 s 1590 683 MXY 28 -4 Dl 1622 MX 28 -4 Dl 7 s 1636 691(+)N 10 s 1651 675 MXY 11 26 Dl 1675 729 MXY 11 26 Dl 1700 784 MXY 11 26 Dl 7 s 1696 827(+)N 10 s 1711 811 MXY 8 -27 Dl 1729 752 MXY 8 -27 Dl 1747 693 MXY 8 -27 Dl 1764 634 MXY 8 -27 Dl 7 s 1757 623(+)N 10 s 1772 607 MXY 6 27 Dl 1785 659 MXY 6 27 Dl 1799 712 MXY 6 27 Dl 1812 764 MXY 6 27 Dl 1825 816 MXY 6 27 Dl 7 s 1817 861(+)N 10 s 1832 845 MXY 15 -24 Dl 1877 776 MXY 15 -24 Dl 7 s 1878 767(+)N 10 s 1893 751 MXY 17 22 Dl 1936 805 MXY 17 22 Dl 7 s 1939 843(+)N 10 s 1954 827 MXY 20 -20 Dl 1994 788 MXY 20 -20 Dl 7 s 1999 784(+)N 10 s 2014 768 MXY 23 16 Dl 2052 794 MXY 23 16 Dl 7 s 2060 827(+)N 10 s 2075 811 MXY 16 23 Dl 2119 872 MXY 16 23 Dl 7 s 2121 911(+)N 10 s 2136 895 MXY 26 -10 Dl 2170 881 MXY 26 -10 Dl 7 s 2181 886(+)N 10 s 2196 870 MXY 7 27 Dl 2210 920 MXY 7 27 Dl 2223 970 MXY 7 27 Dl 2236 1021 MXY 7 27 Dl 2249 1071 MXY 7 27 Dl 7 s 2242 1115(+)N 1 p %%Trailer xt xs %%EndDocument FMENDEPSF 0 68 571 299 768 231 197 305.99 520.5 FMBEGINEPSF %%BeginDocument: /jayar/d0/vaughn/thesis/place/trans-vlsi/figs/max_track_demand.eps %!PS-Adobe-2.0 EPSF-1.2 %%BoundingBox: 68 571 299 768 %!PS-Adobe-1.0 %%Creator: gractus.eecg:vaughn (Vaughn Betz,EECG,LP 392,1653,7662197,G,G ) %%Title: stdin (ditroff) %%CreationDate: Mon Sep 16 15:20:55 1996 %%EndComments % Start of psdit.pro -- prolog for ditroff translator % Copyright (c) 1985,1987 Adobe Systems Incorporated. All Rights Reserved. % GOVERNMENT END USERS: See Notice file in TranScript library directory % -- probably /usr/lib/ps/Notice % RCS: $Header: psdit.pro,v 1.2 88/10/29 07:37:27 moraes Exp $ /$DITroff 140 dict def $DITroff begin %% Psfig additions /DocumentInitState [ matrix currentmatrix currentlinewidth currentlinecap currentlinejoin currentdash currentgray currentmiterlimit ] cvx def /startFig { /SavedState save def userdict maxlength dict begin currentpoint transform DocumentInitState setmiterlimit setgray setdash setlinejoin setlinecap setlinewidth setmatrix itransform moveto /ury exch def /urx exch def /lly exch def /llx exch def /y exch 72 mul resolution div def /x exch 72 mul resolution div def currentpoint /cy exch def /cx exch def /sx x urx llx sub div def % scaling for x /sy y ury lly sub div def % scaling for y sx sy scale % scale by (sx,sy) cx sx div llx sub cy sy div ury sub translate /DefFigCTM matrix currentmatrix def /initmatrix { DefFigCTM setmatrix } def /defaultmatrix { DefFigCTM exch copy } def /initgraphics { DocumentInitState setmiterlimit setgray setdash setlinejoin setlinecap setlinewidth setmatrix DefFigCTM setmatrix } def /showpage { initgraphics } def } def % Args are llx lly urx ury (in figure coordinates) /clipFig { currentpoint 6 2 roll newpath 4 copy 4 2 roll moveto 6 -1 roll exch lineto exch lineto exch lineto closepath clip newpath moveto } def % doclip, if called, will always be just after a `startfig' /doclip { llx lly urx ury clipFig } def /endFig { end SavedState restore } def /globalstart { % Push details about the enviornment on the stack. fontnum fontsize fontslant fontheight firstpage mh my resolution slotno currentpoint pagesave restore gsave } def /globalend { grestore moveto /slotno exch def /resolution exch def /my exch def /mh exch def /firstpage exch def /fontheight exch def /fontslant exch def /fontsize exch def /fontnum exch def F /pagesave save def } def %% end Psfig additions /fontnum 1 def /fontsize 10 def /fontheight 10 def /fontslant 0 def /xi {0 72 11 mul translate 72 resolution div dup neg scale 0 0 moveto /fontnum 1 def /fontsize 10 def /fontheight 10 def /fontslant 0 def F /pagesave save def}def /PB{save /psv exch def currentpoint translate resolution 72 div dup neg scale 0 0 moveto}def /PE{psv restore}def /m1 matrix def /m2 matrix def /m3 matrix def /oldmat matrix def /tan{dup sin exch cos div}bind def /point{resolution 72 div mul}bind def /dround {transform round exch round exch itransform}bind def /xT{/devname exch def}def /xr{/mh exch def /my exch def /resolution exch def}def /xp{}def /xs{docsave restore end}def /xt{}def /xf{/fontname exch def /slotno exch def fontnames slotno get fontname eq not {fonts slotno fontname findfont put fontnames slotno fontname put}if}def /xH{/fontheight exch def F}bind def /xS{/fontslant exch def F}bind def /s{/fontsize exch def /fontheight fontsize def F}bind def /f{/fontnum exch def F}bind def /F{fontheight 0 le {/fontheight fontsize def}if fonts fontnum get fontsize point 0 0 fontheight point neg 0 0 m1 astore fontslant 0 ne{1 0 fontslant tan 1 0 0 m2 astore m3 concatmatrix}if makefont setfont .04 fontsize point mul 0 dround pop setlinewidth}bind def /X{exch currentpoint exch pop moveto show}bind def /N{3 1 roll moveto show}bind def /Y{exch currentpoint pop exch moveto show}bind def /S /show load def /ditpush{}def/ditpop{}def /AX{3 -1 roll currentpoint exch pop moveto 0 exch ashow}bind def /AN{4 2 roll moveto 0 exch ashow}bind def /AY{3 -1 roll currentpoint pop exch moveto 0 exch ashow}bind def /AS{0 exch ashow}bind def /MX{currentpoint exch pop moveto}bind def /MY{currentpoint pop exch moveto}bind def /MXY /moveto load def /cb{pop}def % action on unknown char -- nothing for now /n{}def/w{}def /p{pop showpage pagesave restore /pagesave save def}def /abspoint{currentpoint exch pop add exch currentpoint pop add exch}def /dstroke{currentpoint stroke moveto}bind def /Dl{2 copy gsave rlineto stroke grestore rmoveto}bind def /arcellipse{oldmat currentmatrix pop currentpoint translate 1 diamv diamh div scale /rad diamh 2 div def rad 0 rad -180 180 arc oldmat setmatrix}def /Dc{gsave dup /diamv exch def /diamh exch def arcellipse dstroke grestore diamh 0 rmoveto}def /De{gsave /diamv exch def /diamh exch def arcellipse dstroke grestore diamh 0 rmoveto}def /Da{currentpoint /by exch def /bx exch def /fy exch def /fx exch def /cy exch def /cx exch def /rad cx cx mul cy cy mul add sqrt def /ang1 cy neg cx neg atan def /ang2 fy fx atan def cx bx add cy by add 2 copy rad ang1 ang2 arcn stroke exch fx add exch fy add moveto}def /Barray 200 array def % 200 values in a wiggle /D~{mark}def /D~~{counttomark Barray exch 0 exch getinterval astore /Bcontrol exch def pop /Blen Bcontrol length def Blen 4 ge Blen 2 mod 0 eq and {Bcontrol 0 get Bcontrol 1 get abspoint /Ycont exch def /Xcont exch def Bcontrol 0 2 copy get 2 mul put Bcontrol 1 2 copy get 2 mul put Bcontrol Blen 2 sub 2 copy get 2 mul put Bcontrol Blen 1 sub 2 copy get 2 mul put /Ybi /Xbi currentpoint 3 1 roll def def 0 2 Blen 4 sub {/i exch def Bcontrol i get 3 div Bcontrol i 1 add get 3 div Bcontrol i get 3 mul Bcontrol i 2 add get add 6 div Bcontrol i 1 add get 3 mul Bcontrol i 3 add get add 6 div /Xbi Xcont Bcontrol i 2 add get 2 div add def /Ybi Ycont Bcontrol i 3 add get 2 div add def /Xcont Xcont Bcontrol i 2 add get add def /Ycont Ycont Bcontrol i 3 add get add def Xbi currentpoint pop sub Ybi currentpoint exch pop sub rcurveto }for dstroke}if}def end /ditstart{$DITroff begin /nfonts 60 def % NFONTS makedev/ditroff dependent! /fonts[nfonts{0}repeat]def /fontnames[nfonts{()}repeat]def /docsave save def }def % character outcalls /oc {/pswid exch def /cc exch def /name exch def /ditwid pswid fontsize mul resolution mul 72000 div def /ditsiz fontsize resolution mul 72 div def ocprocs name known{ocprocs name get exec}{name cb} ifelse}def /fractm [.65 0 0 .6 0 0] def /fraction {/fden exch def /fnum exch def gsave /cf currentfont def cf fractm makefont setfont 0 .3 dm 2 copy neg rmoveto fnum show rmoveto currentfont cf setfont(\244)show setfont fden show grestore ditwid 0 rmoveto} def /oce {grestore ditwid 0 rmoveto}def /dm {ditsiz mul}def /ocprocs 50 dict def ocprocs begin (14){(1)(4)fraction}def (12){(1)(2)fraction}def (34){(3)(4)fraction}def (13){(1)(3)fraction}def (23){(2)(3)fraction}def (18){(1)(8)fraction}def (38){(3)(8)fraction}def (58){(5)(8)fraction}def (78){(7)(8)fraction}def (sr){gsave .05 dm .16 dm rmoveto(\326)show oce}def (is){gsave 0 .15 dm rmoveto(\362)show oce}def (->){gsave 0 .02 dm rmoveto(\256)show oce}def (<-){gsave 0 .02 dm rmoveto(\254)show oce}def (==){gsave 0 .05 dm rmoveto(\272)show oce}def end % DIThacks fonts for some special chars 50 dict dup begin /FontType 3 def /FontName /DIThacks def /FontMatrix [.001 0.0 0.0 .001 0.0 0.0] def /FontBBox [-220 -280 900 900] def% a lie but ... /Encoding 256 array def 0 1 255{Encoding exch /.notdef put}for Encoding dup 8#040/space put %space dup 8#110/rc put %right ceil dup 8#111/lt put %left top curl dup 8#112/bv put %bold vert dup 8#113/lk put %left mid curl dup 8#114/lb put %left bot curl dup 8#115/rt put %right top curl dup 8#116/rk put %right mid curl dup 8#117/rb put %right bot curl dup 8#120/rf put %right floor dup 8#121/lf put %left floor dup 8#122/lc put %left ceil dup 8#140/sq put %square dup 8#141/bx put %box dup 8#142/ci put %circle dup 8#143/br put %box rule dup 8#144/rn put %root extender dup 8#145/vr put %vertical rule dup 8#146/ob put %outline bullet dup 8#147/bu put %bullet dup 8#150/ru put %rule dup 8#151/ul put %underline pop /DITfd 100 dict def /BuildChar{0 begin /cc exch def /fd exch def /charname fd /Encoding get cc get def /charwid fd /Metrics get charname get def /charproc fd /CharProcs get charname get def charwid 0 fd /FontBBox get aload pop setcachedevice 40 setlinewidth newpath 0 0 moveto gsave charproc grestore end}def /BuildChar load 0 DITfd put %/UniqueID 5 def /CharProcs 50 dict def CharProcs begin /space{}def /.notdef{}def /ru{500 0 rls}def /rn{0 750 moveto 500 0 rls}def /vr{20 800 moveto 0 -770 rls}def /bv{20 800 moveto 0 -1000 rls}def /br{20 770 moveto 0 -1040 rls}def /ul{0 -250 moveto 500 0 rls}def /ob{200 250 rmoveto currentpoint newpath 200 0 360 arc closepath stroke}def /bu{200 250 rmoveto currentpoint newpath 200 0 360 arc closepath fill}def /sq{80 0 rmoveto currentpoint dround newpath moveto 640 0 rlineto 0 640 rlineto -640 0 rlineto closepath stroke}def /bx{80 0 rmoveto currentpoint dround newpath moveto 640 0 rlineto 0 640 rlineto -640 0 rlineto closepath fill}def /ci{355 333 rmoveto currentpoint newpath 333 0 360 arc 50 setlinewidth stroke}def /lt{20 -200 moveto 0 550 rlineto currx 800 2cx s4 add exch s4 a4p stroke}def /lb{20 800 moveto 0 -550 rlineto currx -200 2cx s4 add exch s4 a4p stroke}def /rt{20 -200 moveto 0 550 rlineto currx 800 2cx s4 sub exch s4 a4p stroke}def /rb{20 800 moveto 0 -500 rlineto currx -200 2cx s4 sub exch s4 a4p stroke}def /lk{20 800 moveto 20 300 -280 300 s4 arcto pop pop 1000 sub currentpoint stroke moveto 20 300 4 2 roll s4 a4p 20 -200 lineto stroke}def /rk{20 800 moveto 20 300 320 300 s4 arcto pop pop 1000 sub currentpoint stroke moveto 20 300 4 2 roll s4 a4p 20 -200 lineto stroke}def /lf{20 800 moveto 0 -1000 rlineto s4 0 rls}def /rf{20 800 moveto 0 -1000 rlineto s4 neg 0 rls}def /lc{20 -200 moveto 0 1000 rlineto s4 0 rls}def /rc{20 -200 moveto 0 1000 rlineto s4 neg 0 rls}def end /Metrics 50 dict def Metrics begin /.notdef 0 def /space 500 def /ru 500 def /br 0 def /lt 250 def /lb 250 def /rt 250 def /rb 250 def /lk 250 def /rk 250 def /rc 250 def /lc 250 def /rf 250 def /lf 250 def /bv 250 def /ob 350 def /bu 350 def /ci 750 def /bx 750 def /sq 750 def /rn 500 def /ul 500 def /vr 0 def end DITfd begin /s2 500 def /s4 250 def /s3 333 def /a4p{arcto pop pop pop pop}def /2cx{2 copy exch}def /rls{rlineto stroke}def /currx{currentpoint pop}def /dround{transform round exch round exch itransform} def end end /DIThacks exch definefont pop ditstart (psc)xT 576 1 1 xr 1(Times-Roman)xf 1 f 2(Times-Italic)xf 2 f 3(Times-Bold)xf 3 f 4(Times-BoldItalic)xf 4 f 5(Helvetica)xf 5 f 6(Helvetica-Bold)xf 6 f 7(Courier)xf 7 f 8(Courier-Bold)xf 8 f 9(Symbol)xf 9 f 10(DIThacks)xf 10 f 10 s 1 f xi %%EndProlog %%Page: 1 1 10 s 0 xH 0 xS 1 f 960 1574 MXY 0 -1382 Dl 1382 0 Dl 0 1382 Dl -1382 0 Dl 1153 1772(Channel)N 1440(Position)X 1721(within)X 1945(FPGA)X 544 659(Maximum)N 601 755(Tracks)N 628 851(Used)N 610 947(Along)N 577 1043(Channel)N 597 1139(Length)N 960 1489 MXY 28 0 Dl 900 1505(0)N 960 1287 MXY 28 0 Dl 900 1303(2)N 960 1085 MXY 28 0 Dl 900 1101(4)N 960 883 MXY 28 0 Dl 900 899(6)N 960 681 MXY 28 0 Dl 900 697(8)N 960 478 MXY 28 0 Dl 860 494(10)N 960 276 MXY 28 0 Dl 860 292(12)N 1044 1574 MXY 0 -28 Dl 832 1662(Bottom)N 1091(Edge)X 1651 1574 MXY 0 -28 Dl 1544 1662(Center)N 2257 1574 MXY 0 -28 Dl 2100 1662(Top)N 2249(Edge)X 5 s 10 f 1037 1202(g)N 10 s 1044 1186 MXY 52 -202 Dl 5 s 1090 1000(g)N 10 s 1097 984 MXY 52 -100 Dl 5 s 1143 899(g)N 10 s 1150 883 MXY 52 202 Dl 5 s 1196 1101(g)N 10 s 1203 1085 MXY 52 -100 Dl 5 s 1248 1000(g)N 10 s 1255 984 MXY 52 100 Dl 5 s 1301 1101(g)N 10 s 1308 1085 MXY 52 -202 Dl 5 s 1354 899(g)N 10 s 1361 883 MXY 52 100 Dl 5 s 1407 1000(g)N 10 s 1414 984 MXY 52 100 Dl 5 s 1459 1101(g)N 10 s 1466 1085 MXY 52 0 Dl 5 s 1512 1101(g)N 10 s 1519 1085 MXY 52 -100 Dl 5 s 1564 1000(g)N 10 s 1571 984 MXY 52 0 Dl 5 s 1617 1000(g)N 10 s 1624 984 MXY 52 -100 Dl 5 s 1670 899(g)N 10 s 1677 883 MXY 52 100 Dl 5 s 1723 1000(g)N 10 s 1730 984 MXY 52 -100 Dl 5 s 1776 899(g)N 10 s 1783 883 MXY 52 100 Dl 5 s 1828 1000(g)N 10 s 1835 984 MXY 52 0 Dl 5 s 1881 1000(g)N 10 s 1888 984 MXY 52 0 Dl 5 s 1934 1000(g)N 10 s 1941 984 MXY 52 0 Dl 5 s 1987 1000(g)N 10 s 1994 984 MXY 52 -100 Dl 5 s 2039 899(g)N 10 s 2046 883 MXY 52 100 Dl 5 s 2092 1000(g)N 10 s 2099 984 MXY 52 0 Dl 5 s 2144 1000(g)N 10 s 2151 984 MXY 52 0 Dl 5 s 2197 1000(g)N 10 s 2204 984 MXY 52 100 Dl 5 s 2250 1101(g)N 7 s 1034 1000(f)N 1 f 1036 986(.)N 1041 957(.)N 1045 928(.)N 1050 899(.)N 1054 870(.)N 1058 842(.)N 1062 813(.)N 1067 784(.)N 10 f 1065 798(f)N 1 f 1067 784(.)N 1074 759(.)N 1082 733(.)N 1089 708(.)N 1097 683(.)N 10 f 1095 697(f)N 1 f 1097 683(.)N 1104 657(.)N 1112 632(.)N 1120 607(.)N 1127 582(.)N 10 f 1125 596(f)N 1 f 1127 582(.)N 1158(.)X 10 f 1156 596(f)N 1 f 1158 582(.)N 1165 607(.)N 1173 632(.)N 1180 657(.)N 1188 683(.)N 10 f 1186 697(f)N 1 f 1188 683(.)N 1218(.)X 10 f 1216 697(f)N 1 f 1218 683(.)N 1226 708(.)N 1233 733(.)N 1241 759(.)N 1248 784(.)N 10 f 1246 798(f)N 1 f 1248 784(.)N 1253 755(.)N 1257 726(.)N 1262 697(.)N 1266 668(.)N 1270 639(.)N 1275 611(.)N 1279 582(.)N 10 f 1277 596(f)N 1 f 1279 582(.)N 1309(.)X 10 f 1307 596(f)N 1 f 1309 582(.)N 1317 607(.)N 1324 632(.)N 1332 657(.)N 1339 683(.)N 10 f 1337 697(f)N 1 f 1339 683(.)N 1344 654(.)N 1348 625(.)N 1353 596(.)N 1357 567(.)N 1361 538(.)N 1365 509(.)N 1370 480(.)N 10 f 1368 494(f)N 1 f 1370 480(.)N 1374 509(.)N 1379 538(.)N 1383 567(.)N 1387 596(.)N 1392 625(.)N 1396 654(.)N 1400 683(.)N 10 f 1398 697(f)N 1 f 1400 683(.)N 1408 657(.)N 1415 632(.)N 1423 607(.)N 1430 582(.)N 10 f 1428 596(f)N 1 f 1430 582(.)N 1438 607(.)N 1446 632(.)N 1453 657(.)N 1461 683(.)N 10 f 1459 697(f)N 1 f 1461 683(.)N 1468 657(.)N 1476 632(.)N 1483 607(.)N 1491 582(.)N 10 f 1489 596(f)N 1 f 1491 582(.)N 1521(.)X 10 f 1519 596(f)N 1 f 1521 582(.)N 1529 556(.)N 1536 531(.)N 1544 506(.)N 1552 480(.)N 10 f 1550 494(f)N 1 f 1552 480(.)N 1559 455(.)N 1567 430(.)N 1574 405(.)N 1582 380(.)N 10 f 1580 394(f)N 1 f 1582 380(.)N 1612(.)X 10 f 1610 394(f)N 1 f 1612 380(.)N 1615 407(.)N 1618 434(.)N 1620 462(.)N 1623 490(.)N 1626 517(.)N 1629 545(.)N 1632 573(.)N 1634 600(.)N 1637 627(.)N 1640 655(.)N 1643 683(.)N 10 f 1641 697(f)N 1 f 1643 683(.)N 1645 655(.)N 1648 627(.)N 1651 600(.)N 1654 573(.)N 1657 545(.)N 1659 517(.)N 1662 490(.)N 1665 462(.)N 1668 434(.)N 1671 407(.)N 1673 380(.)N 10 f 1671 394(f)N 1 f 1673 380(.)N 1680 405(.)N 1688 430(.)N 1696 455(.)N 1703 480(.)N 10 f 1701 494(f)N 1 f 1703 480(.)N 1707 452(.)N 1712 423(.)N 1716 394(.)N 1721 365(.)N 1725 336(.)N 1729 307(.)N 1734 278(.)N 10 f 1732 292(f)N 1 f 1734 278(.)N 1736 306(.)N 1739 333(.)N 1742 361(.)N 1745 389(.)N 1747 416(.)N 1750 443(.)N 1753 471(.)N 1756 499(.)N 1759 526(.)N 1761 554(.)N 1764 582(.)N 10 f 1762 596(f)N 1 f 1764 582(.)N 1771 607(.)N 1779 632(.)N 1787 657(.)N 1794 683(.)N 10 f 1792 697(f)N 1 f 1794 683(.)N 1797 655(.)N 1800 627(.)N 1802 600(.)N 1805 573(.)N 1808 545(.)N 1811 517(.)N 1813 490(.)N 1816 462(.)N 1819 434(.)N 1822 407(.)N 1824 380(.)N 10 f 1822 394(f)N 1 f 1824 380(.)N 1827 407(.)N 1830 434(.)N 1833 462(.)N 1836 490(.)N 1838 517(.)N 1841 545(.)N 1844 573(.)N 1847 600(.)N 1850 627(.)N 1852 655(.)N 1855 683(.)N 10 f 1853 697(f)N 1 f 1855 683(.)N 1885(.)X 10 f 1883 697(f)N 1 f 1885 683(.)N 1893 657(.)N 1900 632(.)N 1908 607(.)N 1915 582(.)N 10 f 1913 596(f)N 1 f 1915 582(.)N 1920 611(.)N 1924 639(.)N 1929 668(.)N 1933 697(.)N 1937 726(.)N 1941 755(.)N 1946 784(.)N 10 f 1944 798(f)N 1 f 1946 784(.)N 1950 755(.)N 1955 726(.)N 1959 697(.)N 1963 668(.)N 1968 639(.)N 1972 611(.)N 1976 582(.)N 10 f 1974 596(f)N 1 f 1976 582(.)N 1984 607(.)N 1991 632(.)N 1999 657(.)N 2006 683(.)N 10 f 2004 697(f)N 1 f 2006 683(.)N 2011 654(.)N 2015 625(.)N 2020 596(.)N 2024 567(.)N 2028 538(.)N 2032 509(.)N 2037 480(.)N 10 f 2035 494(f)N 1 f 2037 480(.)N 2067(.)X 10 f 2065 494(f)N 1 f 2067 480(.)N 2097(.)X 10 f 2095 494(f)N 1 f 2097 480(.)N 2128(.)X 10 f 2126 494(f)N 1 f 2128 480(.)N 2135 506(.)N 2143 531(.)N 2150 556(.)N 2158 582(.)N 10 f 2156 596(f)N 1 f 2158 582(.)N 2162 611(.)N 2166 639(.)N 2171 668(.)N 2175 697(.)N 2180 726(.)N 2184 755(.)N 2188 784(.)N 10 f 2186 798(f)N 1 f 2188 784(.)N 2219(.)X 10 f 2217 798(f)N 1 f 2219 784(.)N 2221 813(.)N 2223 842(.)N 2225 870(.)N 2228 899(.)N 2229 928(.)N 2232 957(.)N 2234 986(.)N 2236 1015(.)N 2238 1044(.)N 2240 1072(.)N 2243 1101(.)N 2245 1130(.)N 2247 1159(.)N 2249 1188(.)N 10 f 2247 1202(f)N 9 f 1029 1000(+)N 10 s 1044 984 MXY 14 24 Dl 1067 1022 MXY 14 24 Dl 1090 1060 MXY 14 24 Dl 7 s 1090 1101(+)N 10 s 1105 1085 MXY 8 -27 Dl 1123 1027 MXY 8 -27 Dl 1140 969 MXY 8 -27 Dl 1157 910 MXY 8 -27 Dl 7 s 1151 899(+)N 10 s 1166 883 MXY 14 -24 Dl 1188 845 MXY 14 -24 Dl 1211 806 MXY 14 -24 Dl 7 s 1211 798(+)N 10 s 1226 782 MXY 14 24 Dl 1249 820 MXY 14 24 Dl 1272 858 MXY 14 24 Dl 7 s 1272 899(+)N 10 s 1287 883 MXY 28 0 Dl 1319 MX 28 0 Dl 7 s 1332 899(+)N 10 s 1347 883 MXY 14 24 Dl 1370 921 MXY 14 24 Dl 1393 959 MXY 14 24 Dl 7 s 1393 1000(+)N 10 s 1408 984 MXY 5 -28 Dl 1419 929 MXY 5 -28 Dl 1430 874 MXY 5 -28 Dl 1441 819 MXY 5 -28 Dl 1452 764 MXY 5 -28 Dl 1463 709 MXY 5 -28 Dl 7 s 1454 697(+)N 10 s 1469 681 MXY 5 28 Dl 1480 736 MXY 5 28 Dl 1491 791 MXY 5 28 Dl 1502 845 MXY 5 28 Dl 1513 901 MXY 5 28 Dl 1524 955 MXY 5 28 Dl 7 s 1514 1000(+)N 10 s 1529 984 MXY 8 -27 Dl 1547 925 MXY 8 -27 Dl 1564 867 MXY 8 -27 Dl 1582 809 MXY 8 -27 Dl 7 s 1575 798(+)N 10 s 1590 782 MXY 14 24 Dl 1613 820 MXY 14 24 Dl 1636 858 MXY 14 24 Dl 7 s 1636 899(+)N 10 s 1651 883 MXY 28 0 Dl 1683 MX 28 0 Dl 7 s 1696 899(+)N 10 s 1711 883 MXY 14 -24 Dl 1734 845 MXY 14 -24 Dl 1757 806 MXY 14 -24 Dl 7 s 1757 798(+)N 10 s 1772 782 MXY 14 24 Dl 1795 820 MXY 14 24 Dl 1818 858 MXY 14 24 Dl 7 s 1817 899(+)N 10 s 1832 883 MXY 8 -27 Dl 1850 825 MXY 8 -27 Dl 1867 766 MXY 8 -27 Dl 1885 708 MXY 8 -27 Dl 7 s 1878 697(+)N 10 s 1893 681 MXY 8 27 Dl 1911 739 MXY 8 27 Dl 1928 797 MXY 8 27 Dl 1946 855 MXY 8 27 Dl 7 s 1939 899(+)N 10 s 1954 883 MXY 28 0 Dl 1986 MX 28 0 Dl 7 s 1999 899(+)N 10 s 2014 883 MXY 14 -24 Dl 2037 845 MXY 14 -24 Dl 2060 806 MXY 14 -24 Dl 7 s 2060 798(+)N 10 s 2075 782 MXY 8 27 Dl 2093 840 MXY 8 27 Dl 2110 898 MXY 8 27 Dl 2127 956 MXY 8 27 Dl 7 s 2121 1000(+)N 10 s 2136 984 MXY 14 -24 Dl 2159 945 MXY 14 -24 Dl 2181 907 MXY 14 -24 Dl 7 s 2181 899(+)N 10 s 2196 883 MXY 14 24 Dl 2219 921 MXY 14 24 Dl 2242 959 MXY 14 24 Dl 7 s 2242 1000(+)N 1 p %%Trailer xt xs %%EndDocument FMENDEPSF 192.32 500.83 213.99 515 R 7 X 0 0 0 1 0 0 0 K V 0 10 Q 0 X (\050a\051) 197.61 508.33 T 433.66 500.33 455.32 514.5 R 7 X V 0 X (\050b\051) 438.66 507.83 T 72.32 488 538.16 499.67 R 7 X V 0 11 Q 0 X (Fig. 12. \050a\051 A) 103.64 492.33 T (v) 165.15 492.33 T (erage and \050b\051 maximum track demand vs. channel position for three circuits.) 170.49 492.33 T 0 10 Q (C6388) 220.66 607.5 T (sbc) 196.66 641.66 T (alu4) 180.65 697.5 T (alu4) 430.16 698.66 T (sbc) 425.49 647.5 T (C6388) 460.99 608.88 T 72 72 540 720 C 0 0 612 792 C FMENDPAGE %%EndPage: "16" 16 %%Page: "17" 17 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 10 Q 0 X 0 0 0 1 0 0 0 K (17 of 22) 289.33 36.66 T 0 11 Q 1.13 (particular circuit to do so or not. In a standard cell or sea-of-g) 72 540.48 P 1.13 (ates MPGA design, on the other hand, a) 356.44 540.48 P (channel is made e) 72 521.48 T (xtra wide or e) 150.34 521.48 T (xtra narro) 210.96 521.48 T (w only if the circuit being implemented naturally demands it.) 253.75 521.48 T 1 12 Q (5.2) 72 491.82 T (Single Center Channel) 90 491.82 T 0 11 Q 0.3 (In an ef) 90 470.48 P 0.3 (fort to impro) 123.92 470.48 P 0.3 (v) 180.58 470.48 P 0.3 (e routability) 185.92 470.48 P 0.3 (, Lucent T) 238.97 470.48 P 0.3 (echnologies, has introduced an FPGA in which the center) 284.32 470.48 P 0.12 (channel in each direction is e) 72 451.48 P 0.12 (xtra-wide [6]. W) 200.44 451.48 P 0.12 (e de\336ne R) 273.42 451.48 P 0 8.8 Q 0.1 (m) 318.27 448.73 P 0 11 Q 0.12 ( to be the ratio of the width of these center chan-) 325.12 451.48 P (nels to the width of the other channels. Fig. 13 depicts an FPGA with this e) 72 432.48 T (xtra routing in its center) 402.74 432.48 T (.) 507.84 432.48 T 0.37 (The solid and dashed lines in Fig. 14 sho) 90 413.48 P 0.37 (w ho) 272.63 413.48 P 0.37 (w area-ef) 294.42 413.48 P 0.37 (\336cienc) 335.73 413.48 P 0.37 (y v) 364.89 413.48 P 0.37 (aries with R) 378.73 413.48 P 0 8.8 Q 0.29 (m) 432.63 410.73 P 0 11 Q 0.37 ( for this type of FPGA) 439.47 413.48 P 0.05 (when a linear congestion cost function and when a bounding box cost function are used during placement,) 72 394.48 P -0.04 (respecti) 72 375.48 P -0.04 (v) 105.93 375.48 P -0.04 (ely. The data sho) 111.27 375.48 P -0.04 (w that the most area-ef) 186.02 375.48 P -0.04 (\336cient FPGA is one without an e) 286.38 375.48 P -0.04 (xtra wide channels in the) 430.19 375.48 P 0.35 (middle -- i.e. R) 72 356.48 P 0 8.8 Q 0.28 (m) 139.97 353.73 P 0 11 Q 0.35 ( = 1. There is a sharp dip in the number of tracks/tile required at R) 146.81 356.48 P 0 8.8 Q 0.28 (m) 443.63 353.73 P 0 11 Q 0.35 ( = 2 when the linear) 450.47 356.48 P -0.21 (congestion cost function is used, indicating an FPGA with area-ef) 72 337.48 P -0.21 (\336cienc) 359.5 337.48 P -0.21 (y almost as good as one with R) 388.66 337.48 P 0 8.8 Q -0.17 (m) 524.41 334.73 P 0 11 Q -0.21 ( =) 531.25 337.48 P -0.26 (1. This dip occurs at the \336rst point at which the linear congestion cost function considers the cost of routing) 72 318.48 P 72 72 540 720 C 133.74 547.82 478.26 720 C 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 223.82 703.75 238.04 717.97 R 4 X 0 0 0 1 0 0 0 K V 0.5 H 0 Z 0 X N 245.91 703.75 260.13 717.97 R 4 X V 0 X N 268 703.75 282.22 717.97 R 4 X V 0 X N 241.52 717.97 241.52 585.9 2 L 2 Z N 263.62 717.97 263.62 585.9 2 L N 223.82 681.25 238.04 695.47 R 4 X V 0 Z 0 X N 245.91 681.25 260.13 695.47 R 4 X V 0 X N 268 681.25 282.22 695.47 R 4 X V 0 X N 223.82 658.75 238.04 672.97 R 4 X V 0 X N 245.91 658.75 260.13 672.97 R 4 X V 0 X N 268 658.75 282.22 672.97 R 4 X V 0 X N 223.82 630.85 238.04 645.08 R 4 X V 0 X N 245.91 630.85 260.13 645.08 R 4 X V 0 X N 268 630.85 282.22 645.08 R 4 X V 0 X N 223.82 608.35 238.04 622.58 R 4 X V 0 X N 245.91 608.35 260.13 622.58 R 4 X V 0 X N 268 608.35 282.22 622.58 R 4 X V 0 X N 223.82 585.85 238.04 600.08 R 4 X V 0 X N 245.91 585.85 260.13 600.08 R 4 X V 0 X N 268 585.85 282.22 600.08 R 4 X V 0 X N 296.27 703.75 310.49 717.97 R 4 X V 0 X N 318.36 703.75 332.58 717.97 R 4 X V 0 X N 340.45 703.75 354.67 717.97 R 4 X V 0 X N 296.27 681.25 310.49 695.47 R 4 X V 0 X N 318.36 681.25 332.58 695.47 R 4 X V 0 X N 340.45 681.25 354.67 695.47 R 4 X V 0 X N 296.27 658.75 310.49 672.97 R 4 X V 0 X N 318.36 658.75 332.58 672.97 R 4 X V 0 X N 340.45 658.75 354.67 672.97 R 4 X V 0 X N 296.27 630.85 310.49 645.08 R 4 X V 0 X N 318.36 630.85 332.58 645.08 R 4 X V 0 X N 340.45 630.85 354.67 645.08 R 4 X V 0 X N 296.27 608.35 310.49 622.58 R 4 X V 0 X N 318.36 608.35 332.58 622.58 R 4 X V 0 X N 340.45 608.35 354.67 622.58 R 4 X V 0 X N 296.27 585.85 310.49 600.08 R 4 X V 0 X N 318.36 585.85 332.58 600.08 R 4 X V 0 X N 340.45 585.85 354.67 600.08 R 4 X V 0 X N 314.42 717.97 314.42 585.9 2 L 2 Z N 336.51 717.97 336.51 585.9 2 L N 224.08 699.75 355.02 699.75 2 L N 224.08 676.8 354.57 676.8 2 L N 224.08 626.85 355.02 626.85 2 L N 224.08 603.9 354.57 603.9 2 L N 224.08 652.05 355.02 652.05 2 L 5 H 0 Z N 289.22 717.97 289.22 585.9 2 L N 366.34 655.67 367.53 652.95 356.83 651.51 365.14 658.4 4 Y 0.5 H N 366.34 655.67 367.53 652.95 356.83 651.51 365.14 658.4 4 Y V 366.57 655.77 402.27 671.4 2 L N 0 10 Q (W) 405.42 669.02 T 0 8.8 Q (center) 414.86 666.27 T 0 10 Q (W) 388.32 695.12 T 0 8.8 Q (edge) 397.06 692.37 T 367.34 682.94 369.07 680.52 358.91 676.88 365.6 685.35 4 Y N 367.34 682.94 369.07 680.52 358.91 676.88 365.6 685.35 4 Y V 367.54 683.08 386.97 697.05 2 L N 170.82 561.67 434.16 573.33 R 7 X V 0 11 Q 0 X (Fig. 13. An FPGA with an e) 183.43 566 T (xtra-wide center channel.) 310.07 566 T 72 72 540 720 C 0 0 612 792 C 72 72 540 720 C 108.86 72 503.14 303.28 C 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 72 584 376 780 304 196 152.83 92.39 FMBEGINEPSF %%BeginDocument: /jayar/d0/vaughn/thesis/place/trans-vlsi/figs/delta.eps %!PS-Adobe-2.0 EPSF-1.2 %%BoundingBox: 72 584 376 780 %!PS-Adobe-1.0 %%Creator: gractus.eecg:vaughn (Vaughn Betz,EECG,LP 392,1653,7662197,G,G ) %%Title: stdin (ditroff) %%CreationDate: Mon Sep 16 15:59:15 1996 %%EndComments % Start of psdit.pro -- prolog for ditroff translator % Copyright (c) 1985,1987 Adobe Systems Incorporated. All Rights Reserved. % GOVERNMENT END USERS: See Notice file in TranScript library directory % -- probably /usr/lib/ps/Notice % RCS: $Header: psdit.pro,v 1.2 88/10/29 07:37:27 moraes Exp $ /$DITroff 140 dict def $DITroff begin %% Psfig additions /DocumentInitState [ matrix currentmatrix currentlinewidth currentlinecap currentlinejoin currentdash currentgray currentmiterlimit ] cvx def /startFig { /SavedState save def userdict maxlength dict begin currentpoint transform DocumentInitState setmiterlimit setgray setdash setlinejoin setlinecap setlinewidth setmatrix itransform moveto /ury exch def /urx exch def /lly exch def /llx exch def /y exch 72 mul resolution div def /x exch 72 mul resolution div def currentpoint /cy exch def /cx exch def /sx x urx llx sub div def % scaling for x /sy y ury lly sub div def % scaling for y sx sy scale % scale by (sx,sy) cx sx div llx sub cy sy div ury sub translate /DefFigCTM matrix currentmatrix def /initmatrix { DefFigCTM setmatrix } def /defaultmatrix { DefFigCTM exch copy } def /initgraphics { DocumentInitState setmiterlimit setgray setdash setlinejoin setlinecap setlinewidth setmatrix DefFigCTM setmatrix } def /showpage { initgraphics } def } def % Args are llx lly urx ury (in figure coordinates) /clipFig { currentpoint 6 2 roll newpath 4 copy 4 2 roll moveto 6 -1 roll exch lineto exch lineto exch lineto closepath clip newpath moveto } def % doclip, if called, will always be just after a `startfig' /doclip { llx lly urx ury clipFig } def /endFig { end SavedState restore } def /globalstart { % Push details about the enviornment on the stack. fontnum fontsize fontslant fontheight firstpage mh my resolution slotno currentpoint pagesave restore gsave } def /globalend { grestore moveto /slotno exch def /resolution exch def /my exch def /mh exch def /firstpage exch def /fontheight exch def /fontslant exch def /fontsize exch def /fontnum exch def F /pagesave save def } def %% end Psfig additions /fontnum 1 def /fontsize 10 def /fontheight 10 def /fontslant 0 def /xi {0 72 11 mul translate 72 resolution div dup neg scale 0 0 moveto /fontnum 1 def /fontsize 10 def /fontheight 10 def /fontslant 0 def F /pagesave save def}def /PB{save /psv exch def currentpoint translate resolution 72 div dup neg scale 0 0 moveto}def /PE{psv restore}def /m1 matrix def /m2 matrix def /m3 matrix def /oldmat matrix def /tan{dup sin exch cos div}bind def /point{resolution 72 div mul}bind def /dround {transform round exch round exch itransform}bind def /xT{/devname exch def}def /xr{/mh exch def /my exch def /resolution exch def}def /xp{}def /xs{docsave restore end}def /xt{}def /xf{/fontname exch def /slotno exch def fontnames slotno get fontname eq not {fonts slotno fontname findfont put fontnames slotno fontname put}if}def /xH{/fontheight exch def F}bind def /xS{/fontslant exch def F}bind def /s{/fontsize exch def /fontheight fontsize def F}bind def /f{/fontnum exch def F}bind def /F{fontheight 0 le {/fontheight fontsize def}if fonts fontnum get fontsize point 0 0 fontheight point neg 0 0 m1 astore fontslant 0 ne{1 0 fontslant tan 1 0 0 m2 astore m3 concatmatrix}if makefont setfont .04 fontsize point mul 0 dround pop setlinewidth}bind def /X{exch currentpoint exch pop moveto show}bind def /N{3 1 roll moveto show}bind def /Y{exch currentpoint pop exch moveto show}bind def /S /show load def /ditpush{}def/ditpop{}def /AX{3 -1 roll currentpoint exch pop moveto 0 exch ashow}bind def /AN{4 2 roll moveto 0 exch ashow}bind def /AY{3 -1 roll currentpoint pop exch moveto 0 exch ashow}bind def /AS{0 exch ashow}bind def /MX{currentpoint exch pop moveto}bind def /MY{currentpoint pop exch moveto}bind def /MXY /moveto load def /cb{pop}def % action on unknown char -- nothing for now /n{}def/w{}def /p{pop showpage pagesave restore /pagesave save def}def /abspoint{currentpoint exch pop add exch currentpoint pop add exch}def /dstroke{currentpoint stroke moveto}bind def /Dl{2 copy gsave rlineto stroke grestore rmoveto}bind def /arcellipse{oldmat currentmatrix pop currentpoint translate 1 diamv diamh div scale /rad diamh 2 div def rad 0 rad -180 180 arc oldmat setmatrix}def /Dc{gsave dup /diamv exch def /diamh exch def arcellipse dstroke grestore diamh 0 rmoveto}def /De{gsave /diamv exch def /diamh exch def arcellipse dstroke grestore diamh 0 rmoveto}def /Da{currentpoint /by exch def /bx exch def /fy exch def /fx exch def /cy exch def /cx exch def /rad cx cx mul cy cy mul add sqrt def /ang1 cy neg cx neg atan def /ang2 fy fx atan def cx bx add cy by add 2 copy rad ang1 ang2 arcn stroke exch fx add exch fy add moveto}def /Barray 200 array def % 200 values in a wiggle /D~{mark}def /D~~{counttomark Barray exch 0 exch getinterval astore /Bcontrol exch def pop /Blen Bcontrol length def Blen 4 ge Blen 2 mod 0 eq and {Bcontrol 0 get Bcontrol 1 get abspoint /Ycont exch def /Xcont exch def Bcontrol 0 2 copy get 2 mul put Bcontrol 1 2 copy get 2 mul put Bcontrol Blen 2 sub 2 copy get 2 mul put Bcontrol Blen 1 sub 2 copy get 2 mul put /Ybi /Xbi currentpoint 3 1 roll def def 0 2 Blen 4 sub {/i exch def Bcontrol i get 3 div Bcontrol i 1 add get 3 div Bcontrol i get 3 mul Bcontrol i 2 add get add 6 div Bcontrol i 1 add get 3 mul Bcontrol i 3 add get add 6 div /Xbi Xcont Bcontrol i 2 add get 2 div add def /Ybi Ycont Bcontrol i 3 add get 2 div add def /Xcont Xcont Bcontrol i 2 add get add def /Ycont Ycont Bcontrol i 3 add get add def Xbi currentpoint pop sub Ybi currentpoint exch pop sub rcurveto }for dstroke}if}def end /ditstart{$DITroff begin /nfonts 60 def % NFONTS makedev/ditroff dependent! /fonts[nfonts{0}repeat]def /fontnames[nfonts{()}repeat]def /docsave save def }def % character outcalls /oc {/pswid exch def /cc exch def /name exch def /ditwid pswid fontsize mul resolution mul 72000 div def /ditsiz fontsize resolution mul 72 div def ocprocs name known{ocprocs name get exec}{name cb} ifelse}def /fractm [.65 0 0 .6 0 0] def /fraction {/fden exch def /fnum exch def gsave /cf currentfont def cf fractm makefont setfont 0 .3 dm 2 copy neg rmoveto fnum show rmoveto currentfont cf setfont(\244)show setfont fden show grestore ditwid 0 rmoveto} def /oce {grestore ditwid 0 rmoveto}def /dm {ditsiz mul}def /ocprocs 50 dict def ocprocs begin (14){(1)(4)fraction}def (12){(1)(2)fraction}def (34){(3)(4)fraction}def (13){(1)(3)fraction}def (23){(2)(3)fraction}def (18){(1)(8)fraction}def (38){(3)(8)fraction}def (58){(5)(8)fraction}def (78){(7)(8)fraction}def (sr){gsave .05 dm .16 dm rmoveto(\326)show oce}def (is){gsave 0 .15 dm rmoveto(\362)show oce}def (->){gsave 0 .02 dm rmoveto(\256)show oce}def (<-){gsave 0 .02 dm rmoveto(\254)show oce}def (==){gsave 0 .05 dm rmoveto(\272)show oce}def end % DIThacks fonts for some special chars 50 dict dup begin /FontType 3 def /FontName /DIThacks def /FontMatrix [.001 0.0 0.0 .001 0.0 0.0] def /FontBBox [-220 -280 900 900] def% a lie but ... /Encoding 256 array def 0 1 255{Encoding exch /.notdef put}for Encoding dup 8#040/space put %space dup 8#110/rc put %right ceil dup 8#111/lt put %left top curl dup 8#112/bv put %bold vert dup 8#113/lk put %left mid curl dup 8#114/lb put %left bot curl dup 8#115/rt put %right top curl dup 8#116/rk put %right mid curl dup 8#117/rb put %right bot curl dup 8#120/rf put %right floor dup 8#121/lf put %left floor dup 8#122/lc put %left ceil dup 8#140/sq put %square dup 8#141/bx put %box dup 8#142/ci put %circle dup 8#143/br put %box rule dup 8#144/rn put %root extender dup 8#145/vr put %vertical rule dup 8#146/ob put %outline bullet dup 8#147/bu put %bullet dup 8#150/ru put %rule dup 8#151/ul put %underline pop /DITfd 100 dict def /BuildChar{0 begin /cc exch def /fd exch def /charname fd /Encoding get cc get def /charwid fd /Metrics get charname get def /charproc fd /CharProcs get charname get def charwid 0 fd /FontBBox get aload pop setcachedevice 40 setlinewidth newpath 0 0 moveto gsave charproc grestore end}def /BuildChar load 0 DITfd put %/UniqueID 5 def /CharProcs 50 dict def CharProcs begin /space{}def /.notdef{}def /ru{500 0 rls}def /rn{0 750 moveto 500 0 rls}def /vr{20 800 moveto 0 -770 rls}def /bv{20 800 moveto 0 -1000 rls}def /br{20 770 moveto 0 -1040 rls}def /ul{0 -250 moveto 500 0 rls}def /ob{200 250 rmoveto currentpoint newpath 200 0 360 arc closepath stroke}def /bu{200 250 rmoveto currentpoint newpath 200 0 360 arc closepath fill}def /sq{80 0 rmoveto currentpoint dround newpath moveto 640 0 rlineto 0 640 rlineto -640 0 rlineto closepath stroke}def /bx{80 0 rmoveto currentpoint dround newpath moveto 640 0 rlineto 0 640 rlineto -640 0 rlineto closepath fill}def /ci{355 333 rmoveto currentpoint newpath 333 0 360 arc 50 setlinewidth stroke}def /lt{20 -200 moveto 0 550 rlineto currx 800 2cx s4 add exch s4 a4p stroke}def /lb{20 800 moveto 0 -550 rlineto currx -200 2cx s4 add exch s4 a4p stroke}def /rt{20 -200 moveto 0 550 rlineto currx 800 2cx s4 sub exch s4 a4p stroke}def /rb{20 800 moveto 0 -500 rlineto currx -200 2cx s4 sub exch s4 a4p stroke}def /lk{20 800 moveto 20 300 -280 300 s4 arcto pop pop 1000 sub currentpoint stroke moveto 20 300 4 2 roll s4 a4p 20 -200 lineto stroke}def /rk{20 800 moveto 20 300 320 300 s4 arcto pop pop 1000 sub currentpoint stroke moveto 20 300 4 2 roll s4 a4p 20 -200 lineto stroke}def /lf{20 800 moveto 0 -1000 rlineto s4 0 rls}def /rf{20 800 moveto 0 -1000 rlineto s4 neg 0 rls}def /lc{20 -200 moveto 0 1000 rlineto s4 0 rls}def /rc{20 -200 moveto 0 1000 rlineto s4 neg 0 rls}def end /Metrics 50 dict def Metrics begin /.notdef 0 def /space 500 def /ru 500 def /br 0 def /lt 250 def /lb 250 def /rt 250 def /rb 250 def /lk 250 def /rk 250 def /rc 250 def /lc 250 def /rf 250 def /lf 250 def /bv 250 def /ob 350 def /bu 350 def /ci 750 def /bx 750 def /sq 750 def /rn 500 def /ul 500 def /vr 0 def end DITfd begin /s2 500 def /s4 250 def /s3 333 def /a4p{arcto pop pop pop pop}def /2cx{2 copy exch}def /rls{rlineto stroke}def /currx{currentpoint pop}def /dround{transform round exch round exch itransform} def end end /DIThacks exch definefont pop ditstart (psc)xT 576 1 1 xr 1(Times-Roman)xf 1 f 2(Times-Italic)xf 2 f 3(Times-Bold)xf 3 f 4(Times-BoldItalic)xf 4 f 5(Helvetica)xf 5 f 6(Helvetica-Bold)xf 6 f 7(Courier)xf 7 f 8(Courier-Bold)xf 8 f 9(Symbol)xf 9 f 10(DIThacks)xf 10 f 10 s 1 f xi %%EndProlog %%Page: 1 1 10 s 0 xH 0 xS 1 f 1113 1478 MXY 0 -1382 Dl 1900 0 Dl 3014 MX 0 1382 Dl -1900 0 Dl 1183 1659(Center)N 1417(Channel)X 1704(Width)X 1924(/)X 1966(Width)X 2186(of)X 2273(Other)X 2476(Channels)X 2794(\()X 2 f 2821(R)X 7 s 2870 1675(m)N 1 f 10 s 2916 1659(\))N 593 659(Average)N 635 755(Track)N 574 851(Segments)N 603 947(per)N 726(Tile)X 1113 1393 MXY 28 0 Dl 953 1409(13.4)N 1113 1247 MXY 28 0 Dl 953 1263(13.6)N 1113 1101 MXY 28 0 Dl 953 1117(13.8)N 1113 955 MXY 28 0 Dl 1013 971(14)N 1113 809 MXY 28 0 Dl 953 825(14.2)N 1113 662 MXY 28 0 Dl 953 678(14.4)N 1113 517 MXY 28 0 Dl 953 533(14.6)N 1113 370 MXY 28 0 Dl 953 386(14.8)N 1113 224 MXY 28 0 Dl 1013 240(15)N 1230 1478 MXY 0 -28 Dl 1210 1566(1)N 1507 1478 MXY 0 -28 Dl 1457 1566(1.5)N 1786 1478 MXY 0 -28 Dl 1766 1566(2)N 2063 1478 MXY 0 -28 Dl 2013 1566(2.5)N 2342 1478 MXY 0 -28 Dl 2322 1566(3)N 2619 1478 MXY 0 -28 Dl 2569 1566(3.5)N 2897 1478 MXY 0 -28 Dl 2877 1566(4)N 5 s 10 f 1223 1380(g)N 10 s 1230 1364 MXY 94 -124 Dl 5 s 1317 1255(g)N 10 s 1324 1239 MXY 88 43 Dl 5 s 1406 1299(g)N 10 s 1413 1283 MXY 94 -196 Dl 5 s 1500 1102(g)N 10 s 1507 1086 MXY 94 -218 Dl 5 s 1595 883(g)N 10 s 1602 867 MXY 88 -73 Dl 5 s 1684 810(g)N 10 s 1691 794 MXY 94 540 Dl 5 s 1779 1350(g)N 10 s 1786 1334 MXY 183 -321 Dl 5 s 1962 1029(g)N 10 s 1969 1013 MXY 183 -241 Dl 5 s 2146 788(g)N 10 s 2153 772 MXY 188 -7 Dl 5 s 2335 781(g)N 10 s 2342 765 MXY 555 -584 Dl 5 s 2890 196(g)N 1223 1380(g)N 10 s 1230 1364 MXY 8 -27 Dl 1247 1308 MXY 8 -27 Dl 1264 1252 MXY 8 -27 Dl 1282 1196 MXY 8 -27 Dl 1298 1140 MXY 8 -27 Dl 1316 1084 MXY 8 -27 Dl 5 s 1317 1073(g)N 10 s 1324 1057 MXY 16 -23 Dl 1361 1007 MXY 16 -23 Dl 1396 956 MXY 16 -23 Dl 5 s 1406 949(g)N 10 s 1413 933 MXY 20 20 Dl 1450 970 MXY 20 20 Dl 1487 1007 MXY 20 20 Dl 5 s 1500 1044(g)N 10 s 1507 1028 MXY 14 -24 Dl 1535 983 MXY 14 -24 Dl 1561 937 MXY 14 -24 Dl 1588 892 MXY 14 -24 Dl 5 s 1595 883(g)N 10 s 1602 867 MXY 22 -18 Dl 1669 812 MXY 22 -18 Dl 5 s 1684 810(g)N 10 s 1691 794 MXY 28 -2 Dl 1757 789 MXY 28 -2 Dl 5 s 1779 803(g)N 10 s 1786 787 MXY 28 -2 Dl 1837 783 MXY 28 -2 Dl 1889 779 MXY 28 -2 Dl 1940 775 MXY 28 -2 Dl 5 s 1962 788(g)N 10 s 1969 772 MXY 17 -22 Dl 2003 729 MXY 17 -22 Dl 2037 685 MXY 17 -22 Dl 2072 641 MXY 17 -22 Dl 2106 597 MXY 17 -22 Dl 2140 553 MXY 17 -22 Dl 5 s 2151 547(g)N 10 s 2158 531 MXY 24 14 Dl 2211 563 MXY 24 14 Dl 2264 594 MXY 24 14 Dl 2317 626 MXY 24 14 Dl 5 s 2335 656(g)N 10 s 2342 640 MXY 23 -16 Dl 2390 606 MXY 23 -16 Dl 2438 572 MXY 23 -16 Dl 2487 537 MXY 23 -16 Dl 2535 503 MXY 23 -16 Dl 2583 469 MXY 23 -16 Dl 2632 435 MXY 23 -16 Dl 2680 400 MXY 23 -16 Dl 2729 366 MXY 23 -16 Dl 2777 332 MXY 23 -16 Dl 2825 297 MXY 23 -16 Dl 2874 263 MXY 23 -16 Dl 5 s 2890 262(g)N 1 p %%Trailer xt xs %%EndDocument FMENDEPSF 166 72.12 470.17 84.62 R 7 X 0 0 0 1 0 0 0 K V 0 11 Q 0 X (Fig. 14. Ef) 197.1 77.28 T (fecti) 246.63 77.28 T (v) 265.91 77.28 T (eness of an e) 271.24 77.28 T (xtra-wide center channel.) 327.58 77.28 T 0 10 Q (bounding box) 318.2 238.45 T (linear congestion) 338.7 179.12 T 72 72 540 720 C 0 0 612 792 C FMENDPAGE %%EndPage: "17" 17 %%Page: "18" 18 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 10 Q 0 X 0 0 0 1 0 0 0 K (18 of 22) 289.33 36.66 T 0 11 Q 0.66 (through narro) 72 712.67 P 0.66 (w channels to connect tw) 132.57 712.67 P 0.66 (o adjacent blocks to ha) 246.32 712.67 P 0.66 (v) 349.57 712.67 P 0.66 (e the same cost as connecting tw) 354.9 712.67 P 0.66 (o blocks) 502.36 712.67 P 1.27 (separated by one interv) 72 693.67 P 1.27 (ening block through the e) 177.98 693.67 P 1.27 (xtra wide channel. Consequently) 295.32 693.67 P 1.27 (, the placer is able to) 442.61 693.67 P 1.06 (mak) 72 674.67 P 1.06 (e better use of the e) 90.83 674.67 P 1.06 (xtra-wide channel at this point. The bounding box cost function leads to w) 181.81 674.67 P 1.06 (orse) 521.67 674.67 P 0.45 (area-ef) 72 655.67 P 0.45 (\336cienc) 102.25 655.67 P 0.45 (y than the linear congestion cost function and the dip in required area near R) 131.41 655.67 P 0 8.8 Q 0.36 (m) 474.41 652.92 P 0 11 Q 0.45 ( = 2 does not) 481.26 655.67 P 0.9 (occur) 72 636.67 P 0.9 (. As with the non-uniform FPGAs of Fig. 10 then, the best results are obtained by spreading e) 95.83 636.67 P 0.9 (xtra) 522.9 636.67 P (routing resources o) 72 617.67 T (v) 156.15 617.67 T (er the entire FPGA rather than by adding them to only one re) 161.49 617.67 T (gion.) 429.55 617.67 T 1.01 (Aside from trying to create a more area-ef) 90 598.67 P 1.01 (\336cient FPGA, there is an alternate reason for making the) 282.21 598.67 P 0.13 (center channel of an FPGA wider) 72 579.67 P 0.13 (. FPGA manuf) 219.58 579.67 P 0.13 (acturers tend to create se) 284.2 579.67 P 0.13 (v) 393.18 579.67 P 0.13 (eral FPGAs with the same basic) 398.51 579.67 P 1.78 (architecture b) 72 560.67 P 1.78 (ut with dif) 133.73 560.67 P 1.78 (ferent numbers of logic blocks in order to appeal to customers with dif) 182.85 560.67 P 1.78 (ferent) 514.35 560.67 P 0.12 (capacity needs. As the number of logic blocks in a circuit increases, the demand for routing also increases) 72 541.67 P 0.51 ([20], so at some point the channels should be widened. Ho) 72 522.67 P 0.51 (we) 334.05 522.67 P 0.51 (v) 346.61 522.67 P 0.51 (er) 351.94 522.67 P 0.51 (, widening the channels for FPGAs with) 360.05 522.67 P 1.8 (more logic blocks requires redoing the layout of the basic tile, which in) 72 503.67 P 1.8 (v) 406.97 503.67 P 1.8 (olv) 412.25 503.67 P 1.8 (es considerable time and) 426.14 503.67 P 0.07 (e) 72 484.67 P 0.07 (xpense. Since the center of an FPGA typically contains the programming logic, this area already requires) 76.72 484.67 P (its o) 72 465.67 T (wn custom layout, so e) 90.37 465.67 T (xtra routing tracks can be added to it with relati) 191.34 465.67 T (v) 399.72 465.67 T (ely little ef) 405.06 465.67 T (fort.) 452.45 465.67 T 0.07 (W) 90 446.67 P 0.07 (e found, ho) 99.5 446.67 P 0.07 (we) 149.17 446.67 P 0.07 (v) 161.72 446.67 P 0.07 (er) 167.05 446.67 P 0.07 (, that in most cases adding tracks to the center channel did not result in an) 175.16 446.67 P 0.07 (y signi\336-) 500.51 446.67 P 0.55 (cant reduction in routing pressure on the other channels. The only e) 72 427.67 P 0.55 (xceptions were FPGAs with R) 374.88 427.67 P 0 8.8 Q 0.44 (m) 510.92 424.92 P 0 11 Q 0.55 ( near) 517.77 427.67 P -0.18 (tw) 72 408.67 P -0.18 (o. When circuits were mapped into such FPGAs by a placer using the linear congestion cost function the) 82.89 408.67 P -0.04 (routing pressure on the other channels w) 72 389.67 P -0.04 (as reduced. It is relati) 250.04 389.67 P -0.04 (v) 343.99 389.67 P -0.04 (ely dif) 349.33 389.67 P -0.04 (\336cult to impro) 377.42 389.67 P -0.04 (v) 440.12 389.67 P -0.04 (e the routability of an) 445.46 389.67 P 0.52 (FPGA simply by adding tracks to the center channel because the placement tool must no) 72 370.67 P 0.52 (w mo) 468.82 370.67 P 0.52 (v) 493.92 370.67 P 0.52 (e all por-) 499.25 370.67 P 0.89 (tions of the circuit that require more routing than the \322normal\323 channels can pro) 72 351.67 P 0.89 (vide close to the center) 435.02 351.67 P (channel so that the) 72 332.67 T (y can mak) 154.02 332.67 T (e use of the e) 199.12 332.67 T (xtra routing a) 256.99 332.67 T (v) 316.04 332.67 T (ailable there.) 321.26 332.67 T 1 12 Q (5.3) 72 303 T (I/O Channel) 90 303 T 0 11 Q 0.51 (Another major FPGA v) 90 281.67 P 0.51 (endor has added routing resources to the \322I/O-channel\323 that runs between the) 194.96 281.67 P 1.52 (I/O pads and the logic blocks, at least in part to ensure that \336x) 72 262.67 P 1.52 (ed I/O pad placement does not impact) 364.09 262.67 P 0.11 (routability and speed [8]. W) 72 243.67 P 0.11 (e de\336ne R) 195.29 243.67 P 0 8.8 Q 0.09 (IO) 240.12 240.92 P 0 11 Q 0.11 ( to be the ratio of the width of this outermost channel to the width) 249.4 243.67 P -0.25 (of the other channels. F) 72 224.67 P -0.25 (or e) 174.41 224.67 P -0.25 (xample, Fig. 15 depicts an FPGA with R) 190.8 224.67 P 0 8.8 Q -0.2 (IO) 368.44 221.92 P 0 11 Q -0.25 (equal to 0.5. In these e) 379.72 224.67 P -0.25 (xperiments all) 477.61 224.67 P 0.38 (the channels running between logic blocks ha) 72 205.67 P 0.38 (v) 274.45 205.67 P 0.38 (e the same width, W) 279.79 205.67 P 0 8.8 Q 0.3 (Logic) 371.42 202.92 P 0 11 Q 0.38 (, so R) 391.95 205.67 P 0 8.8 Q 0.3 (IO) 418.08 202.92 P 0 11 Q 0.38 ( completely describes the) 427.36 205.67 P (global routing architecture.) 72 186.67 T 0.69 (Fig. 16 is a plot of the a) 90 167.67 P 0.69 (v) 199.08 167.67 P 0.69 (erage track se) 204.41 167.67 P 0.69 (gments per tile required for the 26 benchmark circuits v) 266.08 167.67 P 0.69 (ersus) 517.4 167.67 P 0.97 (R) 72 148.67 P 0 8.8 Q 0.77 (io) 79.34 145.92 P 0 11 Q 0.97 (. The solid line in Fig. 16 sho) 86.18 148.67 P 0.97 (ws the trend when the I/O locations are chosen by the placement tool,) 221.95 148.67 P 0.46 (while the dashed line is found when the I/O pads are \322\336x) 72 129.67 P 0.46 (ed\323 in a random location, to model the ef) 327.14 129.67 P 0.46 (fect of) 511.13 129.67 P (poor \050from the FPGA) 72 110.67 T (\325) 165.8 110.67 T (s point of vie) 168.85 110.67 T (w\051 pin constraints.) 226.33 110.67 T 0.38 (There are se) 90 91.67 P 0.38 (v) 144.24 91.67 P 0.38 (eral features of interest in Fig. 16. First notice that \336xing the I/O locations increases the) 149.58 91.67 P FMENDPAGE %%EndPage: "18" 18 %%Page: "19" 19 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 10 Q 0 X 0 0 0 1 0 0 0 K (19 of 22) 289.33 36.66 T 0 11 Q -0.03 (number of routing tracks required by 12% on a) 72 538.33 P -0.03 (v) 278.07 538.33 P -0.03 (erage. Architects must tak) 283.41 538.33 P -0.03 (e this into account when design-) 398.07 538.33 P -0.11 (ing FPGAs. Secondly) 72 519.33 P -0.11 (, the curv) 166.7 519.33 P -0.11 (e where the I/O locations are chosen by the placement tool has its minimum) 207.55 519.33 P -0.1 (v) 72 500.33 P -0.1 (alue when R) 77.22 500.33 P 0 8.8 Q -0.08 (IO) 132.01 497.58 P 0 11 Q -0.1 ( = 1, ag) 141.29 500.33 P -0.1 (ain sho) 174.01 500.33 P -0.1 (wing that it is best to spread routing resources e) 205.1 500.33 P -0.1 (v) 413.78 500.33 P -0.1 (enly across the chip. Fixing) 419.12 500.33 P 0.08 (the I/O pins shifts the minimum in the tracks per tile curv) 72 481.33 P 0.08 (e slightly so that it no) 325.39 481.33 P 0.08 (w occurs when R) 420.55 481.33 P 0 8.8 Q 0.06 (IO) 496.85 478.58 P 0 11 Q 0.08 ( = 1.25.) 506.14 481.33 P 1.54 (While \336xing the I/O pins leads to a signi\336cant increase in the number of routing tracks required, this) 72 462.33 P -0.03 (increase is, for the most part, spread o) 72 443.33 P -0.03 (v) 238.71 443.33 P -0.03 (er the FPGA and not con\336ned to the channels connecting to the I/O) 244.04 443.33 P 1.82 (pads. Consequently) 72 424.33 P 1.82 (, one should not mak) 159.26 424.33 P 1.82 (e v) 258.39 424.33 P 1.82 (ery wide channels adjoining the pads in order to impro) 273.17 424.33 P 1.82 (v) 529.78 424.33 P 1.82 (e) 535.12 424.33 P (routability with pin constraints, although a small increase in the I/O channel capacity is a net bene\336t.) 72 405.33 T 0.35 (In interpreting the best v) 90 386.33 P 0.35 (alues of R) 199.27 386.33 P 0 8.8 Q 0.28 (IO) 244.58 383.58 P 0 11 Q 0.35 ( we found, one should remember that in the FPGAs we consider) 253.86 386.33 P -0.03 (the number of pins connecting to an I/O channel is roughly the same as the number of pins connecting to a) 72 367.33 P 1.38 (logic channel. In architectures with dif) 72 348.33 P 1.38 (ferent ratios of I/O pad to 4-LUT area, the best R) 248.5 348.33 P 0 8.8 Q 1.11 (IO) 478.33 345.58 P 0 11 Q 1.38 (v) 490.92 348.33 P 1.38 (alues will) 496.14 348.33 P -0.18 (change as the ratio of the number of pins bordering a logic channel to the number bordering an I/O channel) 72 329.33 P (changes.) 72 310.33 T 72 72 540 720 C 0 0 0 1 0 0 0 K 102.92 545.67 509.08 720 C 0 0 0 1 0 0 0 K 245.08 674.82 263.47 693.21 R 4 X 0 0 0 1 0 0 0 K V 0.5 H 0 Z 0 X N 281.88 674.74 300.27 693.14 R 4 X V 0 X N 318.52 674.82 336.91 693.21 R 4 X V 0 X N 245.15 638.18 263.55 656.58 R 4 X V 0 X N 281.95 638.11 300.35 656.5 R 4 X V 0 X N 318.59 638.18 336.98 656.58 R 4 X V 0 X N 245.15 601.55 263.55 619.94 R 4 X V 0 X N 281.95 601.47 300.35 619.86 R 4 X V 0 X N 318.59 601.55 336.98 619.94 R 4 X V 0 X N 267.14 592.65 267.14 702.19 2 L 4 X V 2 Z 0 X N 270.8 592.65 270.8 702.19 2 L 4 X V 0 X N 274.46 592.65 274.46 702.19 2 L 4 X V 0 X N 278.13 592.65 278.13 702.19 2 L 4 X V 0 X N 303.77 702.19 303.77 592.65 2 L 4 X V 0 X N 307.43 702.19 307.43 592.65 2 L 4 X V 0 X N 311.1 702.19 311.1 592.65 2 L 4 X V 0 X N 314.76 702.19 314.76 592.65 2 L 4 X V 0 X N 235.12 671.23 346.27 671.23 2 L 4 X V 0 X N 235.12 667.57 346.27 667.57 2 L 4 X V 0 X N 235.12 663.9 346.27 663.9 2 L 4 X V 0 X N 235.12 660.24 346.27 660.24 2 L 4 X V 0 X N 235.12 634.59 346.27 634.59 2 L 4 X V 0 X N 235.12 630.93 346.27 630.93 2 L 4 X V 0 X N 235.12 627.27 346.27 627.27 2 L 4 X V 0 X N 235.12 623.6 346.27 623.6 2 L 4 X V 0 X N 222.87 684.21 232.37 693.71 R 5 X V 0 X N 222.87 667.42 232.37 676.92 R 5 X V 0 X N 222.87 650.63 232.37 660.13 R 5 X V 0 X N 222.87 633.84 232.37 643.34 R 5 X V 0 X N 222.87 617.05 232.37 626.55 R 5 X V 0 X N 222.87 600.26 232.37 609.76 R 5 X V 0 X N 240.82 692.65 240.82 601.84 2 L N 237.12 692.65 237.12 601.84 2 L N 349.58 684.21 359.08 693.71 R 5 X V 0 X N 349.58 667.42 359.08 676.92 R 5 X V 0 X N 349.58 650.63 359.08 660.13 R 5 X V 0 X N 349.58 633.84 359.08 643.34 R 5 X V 0 X N 349.58 617.05 359.08 626.55 R 5 X V 0 X N 349.58 600.26 359.08 609.76 R 5 X V 0 X N 341.13 692.65 341.13 601.84 2 L N 344.83 692.65 344.83 601.84 2 L N 244.78 579.4 254.28 588.91 R 5 X V 0 X N 261.57 579.4 271.07 588.91 R 5 X V 0 X N 278.36 579.4 287.86 588.91 R 5 X V 0 X N 295.15 579.4 304.65 588.91 R 5 X V 0 X N 311.94 579.4 321.44 588.91 R 5 X V 0 X N 328.73 579.4 338.23 588.91 R 5 X V 0 X N 245.84 597.36 336.65 597.36 2 L N 245.84 593.66 336.65 593.66 2 L N 243.2 705.59 252.7 715.09 R 5 X V 0 X N 259.99 705.59 269.49 715.09 R 5 X V 0 X N 276.77 705.59 286.28 715.09 R 5 X V 0 X N 293.56 705.59 303.07 715.09 R 5 X V 0 X N 310.35 705.59 319.86 715.09 R 5 X V 0 X N 327.14 705.59 336.65 715.09 R 5 X V 0 X N 244.25 697.14 335.06 697.14 2 L N 244.25 700.84 335.06 700.84 2 L N 376.73 697.41 397.85 707.96 R 7 X V 0 10 Q 0 X (W) 377.93 701.3 T 0 8.8 Q (IO) 387.37 698.55 T 339.82 699.96 340.2 697.57 331.47 698.61 339.43 702.36 4 Y 0 Z N 339.82 699.96 340.2 697.57 331.47 698.61 339.43 702.36 4 Y V 340.06 700.01 375.98 705.85 2 L N 350.43 693.29 351.28 691.02 342.51 690.33 349.59 695.56 4 Y N 350.43 693.29 351.28 691.02 342.51 690.33 349.59 695.56 4 Y V 350.67 693.37 377.04 703.21 2 L N 384.13 600.22 421.61 610.78 R 7 X V 0 10 Q 0 X (W) 387.89 604.12 T 0 8.8 Q (Logic) 397.33 601.37 T 337.22 625.67 336.44 623.37 329.21 628.38 338 627.96 4 Y N 337.22 625.67 336.44 623.37 329.21 628.38 338 627.96 4 Y V 387.52 608.67 337.46 625.59 2 L N 389.68 656.65 408.07 675.04 R 4 X V 0 X N 393.87 635.24 403.37 644.74 R 5 X V 2 Z 0 X N 413.9 660.71 465.41 670.24 R 7 X V 0 10 Q 0 X (Logic Block) 414.79 663.57 T 410.67 636.07 447.34 644.14 R 7 X V 0 X (I/O P) 413.67 637.47 T (ad) 434.91 637.47 T 149.18 554.5 470.02 567.83 R 7 X V 0 11 Q 0 X (Fig. 15. An FPGA with R) 232.79 560.5 T 0 8.8 Q (IO) 348.92 557.75 T 0 11 Q ( = 0.5.) 358.2 560.5 T 0 0 0 1 0 0 0 K 72 72 540 720 C 0 0 612 792 C 72 72 540 720 C 108.86 72 503.14 293.63 C 0 0 0 1 0 0 0 K 0 72 584 373 780 301 196 152.4 95.44 FMBEGINEPSF %%BeginDocument: /jayar/d0/vaughn/thesis/place/trans-vlsi/figs/io.eps %!PS-Adobe-2.0 EPSF-1.2 %%BoundingBox: 72 584 373 780 %!PS-Adobe-1.0 %%Creator: gractus.eecg:vaughn (Vaughn Betz,EECG,LP 392,1653,7662197,G,G ) %%Title: stdin (ditroff) %%CreationDate: Mon Sep 16 17:31:01 1996 %%EndComments % Start of psdit.pro -- prolog for ditroff translator % Copyright (c) 1985,1987 Adobe Systems Incorporated. All Rights Reserved. % GOVERNMENT END USERS: See Notice file in TranScript library directory % -- probably /usr/lib/ps/Notice % RCS: $Header: psdit.pro,v 1.2 88/10/29 07:37:27 moraes Exp $ /$DITroff 140 dict def $DITroff begin %% Psfig additions /DocumentInitState [ matrix currentmatrix currentlinewidth currentlinecap currentlinejoin currentdash currentgray currentmiterlimit ] cvx def /startFig { /SavedState save def userdict maxlength dict begin currentpoint transform DocumentInitState setmiterlimit setgray setdash setlinejoin setlinecap setlinewidth setmatrix itransform moveto /ury exch def /urx exch def /lly exch def /llx exch def /y exch 72 mul resolution div def /x exch 72 mul resolution div def currentpoint /cy exch def /cx exch def /sx x urx llx sub div def % scaling for x /sy y ury lly sub div def % scaling for y sx sy scale % scale by (sx,sy) cx sx div llx sub cy sy div ury sub translate /DefFigCTM matrix currentmatrix def /initmatrix { DefFigCTM setmatrix } def /defaultmatrix { DefFigCTM exch copy } def /initgraphics { DocumentInitState setmiterlimit setgray setdash setlinejoin setlinecap setlinewidth setmatrix DefFigCTM setmatrix } def /showpage { initgraphics } def } def % Args are llx lly urx ury (in figure coordinates) /clipFig { currentpoint 6 2 roll newpath 4 copy 4 2 roll moveto 6 -1 roll exch lineto exch lineto exch lineto closepath clip newpath moveto } def % doclip, if called, will always be just after a `startfig' /doclip { llx lly urx ury clipFig } def /endFig { end SavedState restore } def /globalstart { % Push details about the enviornment on the stack. fontnum fontsize fontslant fontheight firstpage mh my resolution slotno currentpoint pagesave restore gsave } def /globalend { grestore moveto /slotno exch def /resolution exch def /my exch def /mh exch def /firstpage exch def /fontheight exch def /fontslant exch def /fontsize exch def /fontnum exch def F /pagesave save def } def %% end Psfig additions /fontnum 1 def /fontsize 10 def /fontheight 10 def /fontslant 0 def /xi {0 72 11 mul translate 72 resolution div dup neg scale 0 0 moveto /fontnum 1 def /fontsize 10 def /fontheight 10 def /fontslant 0 def F /pagesave save def}def /PB{save /psv exch def currentpoint translate resolution 72 div dup neg scale 0 0 moveto}def /PE{psv restore}def /m1 matrix def /m2 matrix def /m3 matrix def /oldmat matrix def /tan{dup sin exch cos div}bind def /point{resolution 72 div mul}bind def /dround {transform round exch round exch itransform}bind def /xT{/devname exch def}def /xr{/mh exch def /my exch def /resolution exch def}def /xp{}def /xs{docsave restore end}def /xt{}def /xf{/fontname exch def /slotno exch def fontnames slotno get fontname eq not {fonts slotno fontname findfont put fontnames slotno fontname put}if}def /xH{/fontheight exch def F}bind def /xS{/fontslant exch def F}bind def /s{/fontsize exch def /fontheight fontsize def F}bind def /f{/fontnum exch def F}bind def /F{fontheight 0 le {/fontheight fontsize def}if fonts fontnum get fontsize point 0 0 fontheight point neg 0 0 m1 astore fontslant 0 ne{1 0 fontslant tan 1 0 0 m2 astore m3 concatmatrix}if makefont setfont .04 fontsize point mul 0 dround pop setlinewidth}bind def /X{exch currentpoint exch pop moveto show}bind def /N{3 1 roll moveto show}bind def /Y{exch currentpoint pop exch moveto show}bind def /S /show load def /ditpush{}def/ditpop{}def /AX{3 -1 roll currentpoint exch pop moveto 0 exch ashow}bind def /AN{4 2 roll moveto 0 exch ashow}bind def /AY{3 -1 roll currentpoint pop exch moveto 0 exch ashow}bind def /AS{0 exch ashow}bind def /MX{currentpoint exch pop moveto}bind def /MY{currentpoint pop exch moveto}bind def /MXY /moveto load def /cb{pop}def % action on unknown char -- nothing for now /n{}def/w{}def /p{pop showpage pagesave restore /pagesave save def}def /abspoint{currentpoint exch pop add exch currentpoint pop add exch}def /dstroke{currentpoint stroke moveto}bind def /Dl{2 copy gsave rlineto stroke grestore rmoveto}bind def /arcellipse{oldmat currentmatrix pop currentpoint translate 1 diamv diamh div scale /rad diamh 2 div def rad 0 rad -180 180 arc oldmat setmatrix}def /Dc{gsave dup /diamv exch def /diamh exch def arcellipse dstroke grestore diamh 0 rmoveto}def /De{gsave /diamv exch def /diamh exch def arcellipse dstroke grestore diamh 0 rmoveto}def /Da{currentpoint /by exch def /bx exch def /fy exch def /fx exch def /cy exch def /cx exch def /rad cx cx mul cy cy mul add sqrt def /ang1 cy neg cx neg atan def /ang2 fy fx atan def cx bx add cy by add 2 copy rad ang1 ang2 arcn stroke exch fx add exch fy add moveto}def /Barray 200 array def % 200 values in a wiggle /D~{mark}def /D~~{counttomark Barray exch 0 exch getinterval astore /Bcontrol exch def pop /Blen Bcontrol length def Blen 4 ge Blen 2 mod 0 eq and {Bcontrol 0 get Bcontrol 1 get abspoint /Ycont exch def /Xcont exch def Bcontrol 0 2 copy get 2 mul put Bcontrol 1 2 copy get 2 mul put Bcontrol Blen 2 sub 2 copy get 2 mul put Bcontrol Blen 1 sub 2 copy get 2 mul put /Ybi /Xbi currentpoint 3 1 roll def def 0 2 Blen 4 sub {/i exch def Bcontrol i get 3 div Bcontrol i 1 add get 3 div Bcontrol i get 3 mul Bcontrol i 2 add get add 6 div Bcontrol i 1 add get 3 mul Bcontrol i 3 add get add 6 div /Xbi Xcont Bcontrol i 2 add get 2 div add def /Ybi Ycont Bcontrol i 3 add get 2 div add def /Xcont Xcont Bcontrol i 2 add get add def /Ycont Ycont Bcontrol i 3 add get add def Xbi currentpoint pop sub Ybi currentpoint exch pop sub rcurveto }for dstroke}if}def end /ditstart{$DITroff begin /nfonts 60 def % NFONTS makedev/ditroff dependent! /fonts[nfonts{0}repeat]def /fontnames[nfonts{()}repeat]def /docsave save def }def % character outcalls /oc {/pswid exch def /cc exch def /name exch def /ditwid pswid fontsize mul resolution mul 72000 div def /ditsiz fontsize resolution mul 72 div def ocprocs name known{ocprocs name get exec}{name cb} ifelse}def /fractm [.65 0 0 .6 0 0] def /fraction {/fden exch def /fnum exch def gsave /cf currentfont def cf fractm makefont setfont 0 .3 dm 2 copy neg rmoveto fnum show rmoveto currentfont cf setfont(\244)show setfont fden show grestore ditwid 0 rmoveto} def /oce {grestore ditwid 0 rmoveto}def /dm {ditsiz mul}def /ocprocs 50 dict def ocprocs begin (14){(1)(4)fraction}def (12){(1)(2)fraction}def (34){(3)(4)fraction}def (13){(1)(3)fraction}def (23){(2)(3)fraction}def (18){(1)(8)fraction}def (38){(3)(8)fraction}def (58){(5)(8)fraction}def (78){(7)(8)fraction}def (sr){gsave .05 dm .16 dm rmoveto(\326)show oce}def (is){gsave 0 .15 dm rmoveto(\362)show oce}def (->){gsave 0 .02 dm rmoveto(\256)show oce}def (<-){gsave 0 .02 dm rmoveto(\254)show oce}def (==){gsave 0 .05 dm rmoveto(\272)show oce}def end % DIThacks fonts for some special chars 50 dict dup begin /FontType 3 def /FontName /DIThacks def /FontMatrix [.001 0.0 0.0 .001 0.0 0.0] def /FontBBox [-220 -280 900 900] def% a lie but ... /Encoding 256 array def 0 1 255{Encoding exch /.notdef put}for Encoding dup 8#040/space put %space dup 8#110/rc put %right ceil dup 8#111/lt put %left top curl dup 8#112/bv put %bold vert dup 8#113/lk put %left mid curl dup 8#114/lb put %left bot curl dup 8#115/rt put %right top curl dup 8#116/rk put %right mid curl dup 8#117/rb put %right bot curl dup 8#120/rf put %right floor dup 8#121/lf put %left floor dup 8#122/lc put %left ceil dup 8#140/sq put %square dup 8#141/bx put %box dup 8#142/ci put %circle dup 8#143/br put %box rule dup 8#144/rn put %root extender dup 8#145/vr put %vertical rule dup 8#146/ob put %outline bullet dup 8#147/bu put %bullet dup 8#150/ru put %rule dup 8#151/ul put %underline pop /DITfd 100 dict def /BuildChar{0 begin /cc exch def /fd exch def /charname fd /Encoding get cc get def /charwid fd /Metrics get charname get def /charproc fd /CharProcs get charname get def charwid 0 fd /FontBBox get aload pop setcachedevice 40 setlinewidth newpath 0 0 moveto gsave charproc grestore end}def /BuildChar load 0 DITfd put %/UniqueID 5 def /CharProcs 50 dict def CharProcs begin /space{}def /.notdef{}def /ru{500 0 rls}def /rn{0 750 moveto 500 0 rls}def /vr{20 800 moveto 0 -770 rls}def /bv{20 800 moveto 0 -1000 rls}def /br{20 770 moveto 0 -1040 rls}def /ul{0 -250 moveto 500 0 rls}def /ob{200 250 rmoveto currentpoint newpath 200 0 360 arc closepath stroke}def /bu{200 250 rmoveto currentpoint newpath 200 0 360 arc closepath fill}def /sq{80 0 rmoveto currentpoint dround newpath moveto 640 0 rlineto 0 640 rlineto -640 0 rlineto closepath stroke}def /bx{80 0 rmoveto currentpoint dround newpath moveto 640 0 rlineto 0 640 rlineto -640 0 rlineto closepath fill}def /ci{355 333 rmoveto currentpoint newpath 333 0 360 arc 50 setlinewidth stroke}def /lt{20 -200 moveto 0 550 rlineto currx 800 2cx s4 add exch s4 a4p stroke}def /lb{20 800 moveto 0 -550 rlineto currx -200 2cx s4 add exch s4 a4p stroke}def /rt{20 -200 moveto 0 550 rlineto currx 800 2cx s4 sub exch s4 a4p stroke}def /rb{20 800 moveto 0 -500 rlineto currx -200 2cx s4 sub exch s4 a4p stroke}def /lk{20 800 moveto 20 300 -280 300 s4 arcto pop pop 1000 sub currentpoint stroke moveto 20 300 4 2 roll s4 a4p 20 -200 lineto stroke}def /rk{20 800 moveto 20 300 320 300 s4 arcto pop pop 1000 sub currentpoint stroke moveto 20 300 4 2 roll s4 a4p 20 -200 lineto stroke}def /lf{20 800 moveto 0 -1000 rlineto s4 0 rls}def /rf{20 800 moveto 0 -1000 rlineto s4 neg 0 rls}def /lc{20 -200 moveto 0 1000 rlineto s4 0 rls}def /rc{20 -200 moveto 0 1000 rlineto s4 neg 0 rls}def end /Metrics 50 dict def Metrics begin /.notdef 0 def /space 500 def /ru 500 def /br 0 def /lt 250 def /lb 250 def /rt 250 def /rb 250 def /lk 250 def /rk 250 def /rc 250 def /lc 250 def /rf 250 def /lf 250 def /bv 250 def /ob 350 def /bu 350 def /ci 750 def /bx 750 def /sq 750 def /rn 500 def /ul 500 def /vr 0 def end DITfd begin /s2 500 def /s4 250 def /s3 333 def /a4p{arcto pop pop pop pop}def /2cx{2 copy exch}def /rls{rlineto stroke}def /currx{currentpoint pop}def /dround{transform round exch round exch itransform} def end end /DIThacks exch definefont pop ditstart (psc)xT 576 1 1 xr 1(Times-Roman)xf 1 f 2(Times-Italic)xf 2 f 3(Times-Bold)xf 3 f 4(Times-BoldItalic)xf 4 f 5(Helvetica)xf 5 f 6(Helvetica-Bold)xf 6 f 7(Courier)xf 7 f 8(Courier-Bold)xf 8 f 9(Symbol)xf 9 f 10(DIThacks)xf 10 f 10 s 1 f xi %%EndProlog %%Page: 1 1 10 s 0 xH 0 xS 1 f 1084 1478 MXY 0 -1382 Dl 1900 0 Dl 2985 MX 0 1382 Dl -1900 0 Dl 1210 1659(IO)N 1315(Channel)X 1602(Width)X 1822(/)X 1864(Width)X 2084(of)X 2171(Other)X 2374(Channels)X 2692(\()X 2 f 2719(R)X 7 s 2768 1675(IO)N 1 f 10 s 2833 1659(\))N 593 659(Average)N 635 755(Track)N 574 851(Segments)N 603 947(per)N 726(Tile)X 1084 1358 MXY 28 0 Dl 924 1374(13.5)N 1084 1063 MXY 28 0 Dl 984 1079(14)N 1084 769 MXY 28 0 Dl 924 785(14.5)N 1084 475 MXY 28 0 Dl 984 491(15)N 1084 180 MXY 28 0 Dl 924 196(15.5)N 1201 1478 MXY 0 -28 Dl 1151 1566(0.5)N 1757 1478 MXY 0 -28 Dl 1737 1566(1)N 2313 1478 MXY 0 -28 Dl 2263 1566(1.5)N 2869 1478 MXY 0 -28 Dl 2849 1566(2)N 5 s 10 f 1194 1091(g)N 10 s 1201 1075 MXY 277 217 Dl 5 s 1472 1309(g)N 10 s 1479 1293 MXY 277 100 Dl 5 s 1750 1409(g)N 10 s 1757 1393 MXY 277 -88 Dl 5 s 2028 1321(g)N 10 s 2035 1305 MXY 277 -188 Dl 5 s 2306 1132(g)N 10 s 2313 1116 MXY 555 -276 Dl 5 s 2862 856(g)N 1194 226(g)N 10 s 1201 210 MXY 23 17 Dl 1244 241 MXY 23 17 Dl 1286 273 MXY 23 17 Dl 1328 304 MXY 23 17 Dl 1371 336 MXY 23 17 Dl 1414 367 MXY 23 17 Dl 1456 398 MXY 23 17 Dl 5 s 1472 432(g)N 10 s 1479 416 MXY 28 -1 Dl 1541 413 MXY 28 -1 Dl 1604 411 MXY 28 -1 Dl 1666 408 MXY 28 -1 Dl 1728 405 MXY 28 -1 Dl 5 s 1750 420(g)N 10 s 1757 404 MXY 27 9 Dl 1807 421 MXY 27 9 Dl 1857 438 MXY 27 9 Dl 1907 455 MXY 27 9 Dl 1957 472 MXY 27 9 Dl 2007 489 MXY 27 9 Dl 5 s 2028 514(g)N 10 s 2035 498 MXY 27 -6 Dl 2097 483 MXY 27 -6 Dl 2160 466 MXY 27 -6 Dl 2222 450 MXY 27 -6 Dl 2284 435 MXY 27 -6 Dl 5 s 2306 444(g)N 10 s 2313 428 MXY 26 -11 Dl 2366 404 MXY 26 -11 Dl 2419 381 MXY 26 -11 Dl 2472 357 MXY 26 -11 Dl 2524 333 MXY 26 -11 Dl 2577 310 MXY 26 -11 Dl 2630 286 MXY 26 -11 Dl 2683 263 MXY 26 -11 Dl 2736 239 MXY 26 -11 Dl 2789 216 MXY 26 -11 Dl 2842 192 MXY 26 -11 Dl 5 s 2862 196(g)N 1 p %%Trailer xt xs %%EndDocument FMENDEPSF 208.68 74.09 437.14 84.09 R 7 X 0 0 0 1 0 0 0 K V 0 11 Q 0 X (Fig. 16. Routability vs. I/O channel width.) 228.34 76.75 T 0 10 Q (Fix) 284.7 256.44 T (ed I/Os) 297.89 256.44 T (Placer Chooses I/O Locations) 244.04 163.8 T 0 0 0 1 0 0 0 K 72 72 540 720 C 0 0 612 792 C 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "19" 19 %%Page: "20" 20 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 10 Q 0 X 0 0 0 1 0 0 0 K (20 of 22) 289.33 36.66 T 0 11 Q -0.1 (In order to determine ho) 90 479.7 P -0.1 (w the \322natural\323 demand for tracks is altered when the I/O locations of a circuit) 196.24 479.7 P -0 (are \336x) 72 460.7 P -0 (ed in a poor con\336guration, we repeated the congestion-obli) 99.63 460.7 P -0 (vious placement and routing e) 358.7 460.7 P -0 (xperiments) 491.12 460.7 P -0.1 (described in Section 5.1 with the I/O locations \336x) 72 441.7 P -0.1 (ed in a random con\336guration. Fig. 17 plots the maximum) 289.46 441.7 P 1.13 (and a) 72 422.7 P 1.13 (v) 96.43 422.7 P 1.13 (erage number of tracks required by the horizontal channels as a function of the channel position) 101.76 422.7 P 1.78 (within the FPGA, a) 72 403.7 P 1.78 (v) 162.68 403.7 P 1.78 (eraged o) 168.01 403.7 P 1.78 (v) 207.2 403.7 P 1.78 (er the 26 benchmark circuits. Comparing with the corresponding curv) 212.53 403.7 P 1.78 (e) 535.12 403.7 P 1.08 (obtained with mo) 72 384.7 P 1.08 (v) 150.99 384.7 P 1.08 (able I/Os \050Fig. 11\051, one sees that the curv) 156.22 384.7 P 1.08 (es ha) 346.16 384.7 P 1.08 (v) 369.32 384.7 P 1.08 (e shifted up by approximately half a) 374.66 384.7 P 0.09 (track, and that the drop of) 72 365.7 P 0.09 (f in track demand near the chip edges is less pronounced. Fig. 18 sho) 185.79 365.7 P 0.09 (ws ho) 490 365.7 P 0.09 (w the) 515.78 365.7 P -0.27 (\322natural\323 track demand of three typical circuits v) 72 346.7 P -0.27 (ary with channel position. By comparing with Fig. 12, one) 285.18 346.7 P 0.97 (sees that the curv) 72 327.7 P 0.97 (e for alu4 has changed little, while the sbc and C6388 curv) 150.81 327.7 P 0.97 (es ha) 419.76 327.7 P 0.97 (v) 442.81 327.7 P 0.97 (e each shifted up by) 448.14 327.7 P 72 72 540 720 C 0 0 0 1 0 0 0 K 81.25 487.04 530.75 720 C 0 0 0 1 0 0 0 K 0 73 574 394 768 321 194 129.68 523.16 FMBEGINEPSF %%BeginDocument: /jayar/d0/vaughn/thesis/place/trans-vlsi/figs/track_demand_overall_fixed.eps %!PS-Adobe-2.0 EPSF-1.2 %%BoundingBox: 73 574 394 768 %!PS-Adobe-1.0 %%Creator: gractus.eecg:vaughn (Vaughn Betz,EECG,LP 392,1653,7662197,G,G ) %%Title: stdin (ditroff) %%CreationDate: Mon Sep 16 16:03:11 1996 %%EndComments % Start of psdit.pro -- prolog for ditroff translator % Copyright (c) 1985,1987 Adobe Systems Incorporated. All Rights Reserved. % GOVERNMENT END USERS: See Notice file in TranScript library directory % -- probably /usr/lib/ps/Notice % RCS: $Header: psdit.pro,v 1.2 88/10/29 07:37:27 moraes Exp $ /$DITroff 140 dict def $DITroff begin %% Psfig additions /DocumentInitState [ matrix currentmatrix currentlinewidth currentlinecap currentlinejoin currentdash currentgray currentmiterlimit ] cvx def /startFig { /SavedState save def userdict maxlength dict begin currentpoint transform DocumentInitState setmiterlimit setgray setdash setlinejoin setlinecap setlinewidth setmatrix itransform moveto /ury exch def /urx exch def /lly exch def /llx exch def /y exch 72 mul resolution div def /x exch 72 mul resolution div def currentpoint /cy exch def /cx exch def /sx x urx llx sub div def % scaling for x /sy y ury lly sub div def % scaling for y sx sy scale % scale by (sx,sy) cx sx div llx sub cy sy div ury sub translate /DefFigCTM matrix currentmatrix def /initmatrix { DefFigCTM setmatrix } def /defaultmatrix { DefFigCTM exch copy } def /initgraphics { DocumentInitState setmiterlimit setgray setdash setlinejoin setlinecap setlinewidth setmatrix DefFigCTM setmatrix } def /showpage { initgraphics } def } def % Args are llx lly urx ury (in figure coordinates) /clipFig { currentpoint 6 2 roll newpath 4 copy 4 2 roll moveto 6 -1 roll exch lineto exch lineto exch lineto closepath clip newpath moveto } def % doclip, if called, will always be just after a `startfig' /doclip { llx lly urx ury clipFig } def /endFig { end SavedState restore } def /globalstart { % Push details about the enviornment on the stack. fontnum fontsize fontslant fontheight firstpage mh my resolution slotno currentpoint pagesave restore gsave } def /globalend { grestore moveto /slotno exch def /resolution exch def /my exch def /mh exch def /firstpage exch def /fontheight exch def /fontslant exch def /fontsize exch def /fontnum exch def F /pagesave save def } def %% end Psfig additions /fontnum 1 def /fontsize 10 def /fontheight 10 def /fontslant 0 def /xi {0 72 11 mul translate 72 resolution div dup neg scale 0 0 moveto /fontnum 1 def /fontsize 10 def /fontheight 10 def /fontslant 0 def F /pagesave save def}def /PB{save /psv exch def currentpoint translate resolution 72 div dup neg scale 0 0 moveto}def /PE{psv restore}def /m1 matrix def /m2 matrix def /m3 matrix def /oldmat matrix def /tan{dup sin exch cos div}bind def /point{resolution 72 div mul}bind def /dround {transform round exch round exch itransform}bind def /xT{/devname exch def}def /xr{/mh exch def /my exch def /resolution exch def}def /xp{}def /xs{docsave restore end}def /xt{}def /xf{/fontname exch def /slotno exch def fontnames slotno get fontname eq not {fonts slotno fontname findfont put fontnames slotno fontname put}if}def /xH{/fontheight exch def F}bind def /xS{/fontslant exch def F}bind def /s{/fontsize exch def /fontheight fontsize def F}bind def /f{/fontnum exch def F}bind def /F{fontheight 0 le {/fontheight fontsize def}if fonts fontnum get fontsize point 0 0 fontheight point neg 0 0 m1 astore fontslant 0 ne{1 0 fontslant tan 1 0 0 m2 astore m3 concatmatrix}if makefont setfont .04 fontsize point mul 0 dround pop setlinewidth}bind def /X{exch currentpoint exch pop moveto show}bind def /N{3 1 roll moveto show}bind def /Y{exch currentpoint pop exch moveto show}bind def /S /show load def /ditpush{}def/ditpop{}def /AX{3 -1 roll currentpoint exch pop moveto 0 exch ashow}bind def /AN{4 2 roll moveto 0 exch ashow}bind def /AY{3 -1 roll currentpoint pop exch moveto 0 exch ashow}bind def /AS{0 exch ashow}bind def /MX{currentpoint exch pop moveto}bind def /MY{currentpoint pop exch moveto}bind def /MXY /moveto load def /cb{pop}def % action on unknown char -- nothing for now /n{}def/w{}def /p{pop showpage pagesave restore /pagesave save def}def /abspoint{currentpoint exch pop add exch currentpoint pop add exch}def /dstroke{currentpoint stroke moveto}bind def /Dl{2 copy gsave rlineto stroke grestore rmoveto}bind def /arcellipse{oldmat currentmatrix pop currentpoint translate 1 diamv diamh div scale /rad diamh 2 div def rad 0 rad -180 180 arc oldmat setmatrix}def /Dc{gsave dup /diamv exch def /diamh exch def arcellipse dstroke grestore diamh 0 rmoveto}def /De{gsave /diamv exch def /diamh exch def arcellipse dstroke grestore diamh 0 rmoveto}def /Da{currentpoint /by exch def /bx exch def /fy exch def /fx exch def /cy exch def /cx exch def /rad cx cx mul cy cy mul add sqrt def /ang1 cy neg cx neg atan def /ang2 fy fx atan def cx bx add cy by add 2 copy rad ang1 ang2 arcn stroke exch fx add exch fy add moveto}def /Barray 200 array def % 200 values in a wiggle /D~{mark}def /D~~{counttomark Barray exch 0 exch getinterval astore /Bcontrol exch def pop /Blen Bcontrol length def Blen 4 ge Blen 2 mod 0 eq and {Bcontrol 0 get Bcontrol 1 get abspoint /Ycont exch def /Xcont exch def Bcontrol 0 2 copy get 2 mul put Bcontrol 1 2 copy get 2 mul put Bcontrol Blen 2 sub 2 copy get 2 mul put Bcontrol Blen 1 sub 2 copy get 2 mul put /Ybi /Xbi currentpoint 3 1 roll def def 0 2 Blen 4 sub {/i exch def Bcontrol i get 3 div Bcontrol i 1 add get 3 div Bcontrol i get 3 mul Bcontrol i 2 add get add 6 div Bcontrol i 1 add get 3 mul Bcontrol i 3 add get add 6 div /Xbi Xcont Bcontrol i 2 add get 2 div add def /Ybi Ycont Bcontrol i 3 add get 2 div add def /Xcont Xcont Bcontrol i 2 add get add def /Ycont Ycont Bcontrol i 3 add get add def Xbi currentpoint pop sub Ybi currentpoint exch pop sub rcurveto }for dstroke}if}def end /ditstart{$DITroff begin /nfonts 60 def % NFONTS makedev/ditroff dependent! /fonts[nfonts{0}repeat]def /fontnames[nfonts{()}repeat]def /docsave save def }def % character outcalls /oc {/pswid exch def /cc exch def /name exch def /ditwid pswid fontsize mul resolution mul 72000 div def /ditsiz fontsize resolution mul 72 div def ocprocs name known{ocprocs name get exec}{name cb} ifelse}def /fractm [.65 0 0 .6 0 0] def /fraction {/fden exch def /fnum exch def gsave /cf currentfont def cf fractm makefont setfont 0 .3 dm 2 copy neg rmoveto fnum show rmoveto currentfont cf setfont(\244)show setfont fden show grestore ditwid 0 rmoveto} def /oce {grestore ditwid 0 rmoveto}def /dm {ditsiz mul}def /ocprocs 50 dict def ocprocs begin (14){(1)(4)fraction}def (12){(1)(2)fraction}def (34){(3)(4)fraction}def (13){(1)(3)fraction}def (23){(2)(3)fraction}def (18){(1)(8)fraction}def (38){(3)(8)fraction}def (58){(5)(8)fraction}def (78){(7)(8)fraction}def (sr){gsave .05 dm .16 dm rmoveto(\326)show oce}def (is){gsave 0 .15 dm rmoveto(\362)show oce}def (->){gsave 0 .02 dm rmoveto(\256)show oce}def (<-){gsave 0 .02 dm rmoveto(\254)show oce}def (==){gsave 0 .05 dm rmoveto(\272)show oce}def end % DIThacks fonts for some special chars 50 dict dup begin /FontType 3 def /FontName /DIThacks def /FontMatrix [.001 0.0 0.0 .001 0.0 0.0] def /FontBBox [-220 -280 900 900] def% a lie but ... /Encoding 256 array def 0 1 255{Encoding exch /.notdef put}for Encoding dup 8#040/space put %space dup 8#110/rc put %right ceil dup 8#111/lt put %left top curl dup 8#112/bv put %bold vert dup 8#113/lk put %left mid curl dup 8#114/lb put %left bot curl dup 8#115/rt put %right top curl dup 8#116/rk put %right mid curl dup 8#117/rb put %right bot curl dup 8#120/rf put %right floor dup 8#121/lf put %left floor dup 8#122/lc put %left ceil dup 8#140/sq put %square dup 8#141/bx put %box dup 8#142/ci put %circle dup 8#143/br put %box rule dup 8#144/rn put %root extender dup 8#145/vr put %vertical rule dup 8#146/ob put %outline bullet dup 8#147/bu put %bullet dup 8#150/ru put %rule dup 8#151/ul put %underline pop /DITfd 100 dict def /BuildChar{0 begin /cc exch def /fd exch def /charname fd /Encoding get cc get def /charwid fd /Metrics get charname get def /charproc fd /CharProcs get charname get def charwid 0 fd /FontBBox get aload pop setcachedevice 40 setlinewidth newpath 0 0 moveto gsave charproc grestore end}def /BuildChar load 0 DITfd put %/UniqueID 5 def /CharProcs 50 dict def CharProcs begin /space{}def /.notdef{}def /ru{500 0 rls}def /rn{0 750 moveto 500 0 rls}def /vr{20 800 moveto 0 -770 rls}def /bv{20 800 moveto 0 -1000 rls}def /br{20 770 moveto 0 -1040 rls}def /ul{0 -250 moveto 500 0 rls}def /ob{200 250 rmoveto currentpoint newpath 200 0 360 arc closepath stroke}def /bu{200 250 rmoveto currentpoint newpath 200 0 360 arc closepath fill}def /sq{80 0 rmoveto currentpoint dround newpath moveto 640 0 rlineto 0 640 rlineto -640 0 rlineto closepath stroke}def /bx{80 0 rmoveto currentpoint dround newpath moveto 640 0 rlineto 0 640 rlineto -640 0 rlineto closepath fill}def /ci{355 333 rmoveto currentpoint newpath 333 0 360 arc 50 setlinewidth stroke}def /lt{20 -200 moveto 0 550 rlineto currx 800 2cx s4 add exch s4 a4p stroke}def /lb{20 800 moveto 0 -550 rlineto currx -200 2cx s4 add exch s4 a4p stroke}def /rt{20 -200 moveto 0 550 rlineto currx 800 2cx s4 sub exch s4 a4p stroke}def /rb{20 800 moveto 0 -500 rlineto currx -200 2cx s4 sub exch s4 a4p stroke}def /lk{20 800 moveto 20 300 -280 300 s4 arcto pop pop 1000 sub currentpoint stroke moveto 20 300 4 2 roll s4 a4p 20 -200 lineto stroke}def /rk{20 800 moveto 20 300 320 300 s4 arcto pop pop 1000 sub currentpoint stroke moveto 20 300 4 2 roll s4 a4p 20 -200 lineto stroke}def /lf{20 800 moveto 0 -1000 rlineto s4 0 rls}def /rf{20 800 moveto 0 -1000 rlineto s4 neg 0 rls}def /lc{20 -200 moveto 0 1000 rlineto s4 0 rls}def /rc{20 -200 moveto 0 1000 rlineto s4 neg 0 rls}def end /Metrics 50 dict def Metrics begin /.notdef 0 def /space 500 def /ru 500 def /br 0 def /lt 250 def /lb 250 def /rt 250 def /rb 250 def /lk 250 def /rk 250 def /rc 250 def /lc 250 def /rf 250 def /lf 250 def /bv 250 def /ob 350 def /bu 350 def /ci 750 def /bx 750 def /sq 750 def /rn 500 def /ul 500 def /vr 0 def end DITfd begin /s2 500 def /s4 250 def /s3 333 def /a4p{arcto pop pop pop pop}def /2cx{2 copy exch}def /rls{rlineto stroke}def /currx{currentpoint pop}def /dround{transform round exch round exch itransform} def end end /DIThacks exch definefont pop ditstart (psc)xT 576 1 1 xr 1(Times-Roman)xf 1 f 2(Times-Italic)xf 2 f 3(Times-Bold)xf 3 f 4(Times-BoldItalic)xf 4 f 5(Helvetica)xf 5 f 6(Helvetica-Bold)xf 6 f 7(Courier)xf 7 f 8(Courier-Bold)xf 8 f 9(Symbol)xf 9 f 10(DIThacks)xf 10 f 10 s 1 f xi %%EndProlog %%Page: 1 1 10 s 0 xH 0 xS 1 f 1228 1574 MXY 0 -1382 Dl 1900 0 Dl 3129 MX 0 1382 Dl -1900 0 Dl 1681 1755(Channel)N 1968(Position)X 2249(within)X 2473(FPGA)X 642 755(Tracks)N 881(Used)X 649 851(per)N 772(Channel)X 593 947(\(Averaged)N 953(over)X 580 1043(26)N 680(Benchmarks\))X 1228 1489 MXY 28 0 Dl 1168 1505(0)N 1228 1368 MXY 28 0 Dl 1168 1384(1)N 1228 1247 MXY 28 0 Dl 1168 1263(2)N 1228 1125 MXY 28 0 Dl 1168 1141(3)N 1228 1004 MXY 28 0 Dl 1168 1020(4)N 1228 883 MXY 28 0 Dl 1168 899(5)N 1228 761 MXY 28 0 Dl 1168 777(6)N 1228 640 MXY 28 0 Dl 1168 656(7)N 1228 519 MXY 28 0 Dl 1168 535(8)N 1228 398 MXY 28 0 Dl 1168 414(9)N 1228 276 MXY 28 0 Dl 1128 292(10)N 1345 1574 MXY 0 -28 Dl 1133 1662(Bottom)N 1392(Edge)X 2179 1574 MXY 0 -28 Dl 2072 1662(Center)N 3013 1574 MXY 0 -28 Dl 2856 1662(Top)N 3005(Edge)X 5 s 10 f 1380 553(g)N 1380 950(g)N 10 s 1387 537 MXY 23 -16 Dl 1446 495 MXY 23 -16 Dl 1387 934 MXY 83 -62 Dl 5 s 1463 494(g)N 1463 887(g)N 10 s 1470 478 MXY 25 -13 Dl 1528 448 MXY 25 -13 Dl 1470 871 MXY 83 -33 Dl 5 s 1547 451(g)N 1547 854(g)N 10 s 1554 435 MXY 23 -16 Dl 1613 392 MXY 23 -16 Dl 1554 838 MXY 83 -39 Dl 5 s 1630 392(g)N 1630 815(g)N 10 s 1637 376 MXY 26 11 Dl 1694 401 MXY 26 11 Dl 1637 799 MXY 83 23 Dl 5 s 1713 428(g)N 1713 838(g)N 10 s 1720 412 MXY 27 9 Dl 1776 431 MXY 27 9 Dl 1720 822 MXY 83 6 Dl 5 s 1797 456(g)N 1797 845(g)N 10 s 1804 440 MXY 27 9 Dl 1859 459 MXY 27 9 Dl 1804 829 MXY 83 -1 Dl 5 s 1880 484(g)N 1880 843(g)N 10 s 1887 468 MXY 16 -24 Dl 1920 417 MXY 16 -24 Dl 1954 367 MXY 16 -24 Dl 1887 827 MXY 83 -51 Dl 5 s 1963 358(g)N 1963 792(g)N 10 s 1970 342 MXY 23 17 Dl 2030 388 MXY 23 17 Dl 1970 776 MXY 83 32 Dl 5 s 2047 421(g)N 2047 824(g)N 10 s 2054 405 MXY 28 3 Dl 2108 411 MXY 28 3 Dl 2054 808 MXY 83 6 Dl 5 s 2130 430(g)N 2130 831(g)N 10 s 2137 414 MXY 28 -6 Dl 2192 401 MXY 28 -6 Dl 2137 815 MXY 83 -9 Dl 5 s 2214 411(g)N 2214 821(g)N 10 s 2221 395 MXY 28 -4 Dl 2275 386 MXY 28 -4 Dl 2221 805 MXY 83 -12 Dl 5 s 2297 398(g)N 2297 809(g)N 10 s 2304 382 MXY 26 10 Dl 2361 405 MXY 26 10 Dl 2304 793 MXY 83 13 Dl 5 s 2380 431(g)N 2380 822(g)N 10 s 2387 415 MXY 24 14 Dl 2446 450 MXY 24 14 Dl 2387 806 MXY 83 28 Dl 5 s 2464 481(g)N 2464 851(g)N 10 s 2471 465 MXY 27 8 Dl 2526 483 MXY 27 8 Dl 2471 835 MXY 83 0 Dl 5 s 2547 508(g)N 2547 851(g)N 10 s 2554 492 MXY 27 -8 Dl 2610 474 MXY 27 -8 Dl 2554 835 MXY 83 6 Dl 5 s 2630 482(g)N 2630 858(g)N 10 s 2637 466 MXY 19 -20 Dl 2669 432 MXY 19 -20 Dl 2701 398 MXY 19 -20 Dl 2637 842 MXY 83 -36 Dl 5 s 2714 393(g)N 2714 822(g)N 10 s 2721 377 MXY 16 23 Dl 2754 425 MXY 16 23 Dl 2787 473 MXY 16 23 Dl 2721 806 MXY 83 52 Dl 5 s 2797 513(g)N 2797 874(g)N 10 s 2804 497 MXY 26 10 Dl 2860 519 MXY 26 10 Dl 2804 858 MXY 83 33 Dl 5 s 2881 546(g)N 2881 908(g)N 10 s 2888 530 MXY 15 24 Dl 2921 581 MXY 15 24 Dl 2955 633 MXY 15 24 Dl 2888 892 MXY 83 156 Dl 5 s 2964 673(g)N 2964 1065(g)N 1 p %%Trailer xt xs %%EndDocument FMENDEPSF 89.68 499.65 523.51 511.65 R 7 X 0 0 0 1 0 0 0 K V 0 11 Q 0 X (Fig. 17. A) 104.03 504.31 T (v) 150.58 504.31 T (erage o) 155.92 504.31 T (v) 187.82 504.31 T (er benchmarks of horizontal track demand when I/O locations are \336x) 193.15 504.31 T (ed.) 496.03 504.31 T 0 10 Q (Maximum Along Channel Length) 251.51 701.98 T (A) 255.18 647.98 T (v) 261.66 647.98 T (erage Along Channel Length) 266.51 647.98 T 0 0 0 1 0 0 0 K 72 72 540 720 C 0 0 612 792 C 72 72 540 720 C 72 72 540 315.86 C 0 0 0 1 0 0 0 K 0 72 574 299 768 227 194 72.09 118.19 FMBEGINEPSF %%BeginDocument: /jayar/d0/vaughn/thesis/place/trans-vlsi/figs/av_track_demand_fixed.eps %!PS-Adobe-2.0 EPSF-1.2 %%BoundingBox: 72 574 299 768 %!PS-Adobe-1.0 %%Creator: gractus.eecg:vaughn (Vaughn Betz,EECG,LP 392,1653,7662197,G,G ) %%Title: stdin (ditroff) %%CreationDate: Mon Sep 16 16:06:20 1996 %%EndComments % Start of psdit.pro -- prolog for ditroff translator % Copyright (c) 1985,1987 Adobe Systems Incorporated. All Rights Reserved. % GOVERNMENT END USERS: See Notice file in TranScript library directory % -- probably /usr/lib/ps/Notice % RCS: $Header: psdit.pro,v 1.2 88/10/29 07:37:27 moraes Exp $ /$DITroff 140 dict def $DITroff begin %% Psfig additions /DocumentInitState [ matrix currentmatrix currentlinewidth currentlinecap currentlinejoin currentdash currentgray currentmiterlimit ] cvx def /startFig { /SavedState save def userdict maxlength dict begin currentpoint transform DocumentInitState setmiterlimit setgray setdash setlinejoin setlinecap setlinewidth setmatrix itransform moveto /ury exch def /urx exch def /lly exch def /llx exch def /y exch 72 mul resolution div def /x exch 72 mul resolution div def currentpoint /cy exch def /cx exch def /sx x urx llx sub div def % scaling for x /sy y ury lly sub div def % scaling for y sx sy scale % scale by (sx,sy) cx sx div llx sub cy sy div ury sub translate /DefFigCTM matrix currentmatrix def /initmatrix { DefFigCTM setmatrix } def /defaultmatrix { DefFigCTM exch copy } def /initgraphics { DocumentInitState setmiterlimit setgray setdash setlinejoin setlinecap setlinewidth setmatrix DefFigCTM setmatrix } def /showpage { initgraphics } def } def % Args are llx lly urx ury (in figure coordinates) /clipFig { currentpoint 6 2 roll newpath 4 copy 4 2 roll moveto 6 -1 roll exch lineto exch lineto exch lineto closepath clip newpath moveto } def % doclip, if called, will always be just after a `startfig' /doclip { llx lly urx ury clipFig } def /endFig { end SavedState restore } def /globalstart { % Push details about the enviornment on the stack. fontnum fontsize fontslant fontheight firstpage mh my resolution slotno currentpoint pagesave restore gsave } def /globalend { grestore moveto /slotno exch def /resolution exch def /my exch def /mh exch def /firstpage exch def /fontheight exch def /fontslant exch def /fontsize exch def /fontnum exch def F /pagesave save def } def %% end Psfig additions /fontnum 1 def /fontsize 10 def /fontheight 10 def /fontslant 0 def /xi {0 72 11 mul translate 72 resolution div dup neg scale 0 0 moveto /fontnum 1 def /fontsize 10 def /fontheight 10 def /fontslant 0 def F /pagesave save def}def /PB{save /psv exch def currentpoint translate resolution 72 div dup neg scale 0 0 moveto}def /PE{psv restore}def /m1 matrix def /m2 matrix def /m3 matrix def /oldmat matrix def /tan{dup sin exch cos div}bind def /point{resolution 72 div mul}bind def /dround {transform round exch round exch itransform}bind def /xT{/devname exch def}def /xr{/mh exch def /my exch def /resolution exch def}def /xp{}def /xs{docsave restore end}def /xt{}def /xf{/fontname exch def /slotno exch def fontnames slotno get fontname eq not {fonts slotno fontname findfont put fontnames slotno fontname put}if}def /xH{/fontheight exch def F}bind def /xS{/fontslant exch def F}bind def /s{/fontsize exch def /fontheight fontsize def F}bind def /f{/fontnum exch def F}bind def /F{fontheight 0 le {/fontheight fontsize def}if fonts fontnum get fontsize point 0 0 fontheight point neg 0 0 m1 astore fontslant 0 ne{1 0 fontslant tan 1 0 0 m2 astore m3 concatmatrix}if makefont setfont .04 fontsize point mul 0 dround pop setlinewidth}bind def /X{exch currentpoint exch pop moveto show}bind def /N{3 1 roll moveto show}bind def /Y{exch currentpoint pop exch moveto show}bind def /S /show load def /ditpush{}def/ditpop{}def /AX{3 -1 roll currentpoint exch pop moveto 0 exch ashow}bind def /AN{4 2 roll moveto 0 exch ashow}bind def /AY{3 -1 roll currentpoint pop exch moveto 0 exch ashow}bind def /AS{0 exch ashow}bind def /MX{currentpoint exch pop moveto}bind def /MY{currentpoint pop exch moveto}bind def /MXY /moveto load def /cb{pop}def % action on unknown char -- nothing for now /n{}def/w{}def /p{pop showpage pagesave restore /pagesave save def}def /abspoint{currentpoint exch pop add exch currentpoint pop add exch}def /dstroke{currentpoint stroke moveto}bind def /Dl{2 copy gsave rlineto stroke grestore rmoveto}bind def /arcellipse{oldmat currentmatrix pop currentpoint translate 1 diamv diamh div scale /rad diamh 2 div def rad 0 rad -180 180 arc oldmat setmatrix}def /Dc{gsave dup /diamv exch def /diamh exch def arcellipse dstroke grestore diamh 0 rmoveto}def /De{gsave /diamv exch def /diamh exch def arcellipse dstroke grestore diamh 0 rmoveto}def /Da{currentpoint /by exch def /bx exch def /fy exch def /fx exch def /cy exch def /cx exch def /rad cx cx mul cy cy mul add sqrt def /ang1 cy neg cx neg atan def /ang2 fy fx atan def cx bx add cy by add 2 copy rad ang1 ang2 arcn stroke exch fx add exch fy add moveto}def /Barray 200 array def % 200 values in a wiggle /D~{mark}def /D~~{counttomark Barray exch 0 exch getinterval astore /Bcontrol exch def pop /Blen Bcontrol length def Blen 4 ge Blen 2 mod 0 eq and {Bcontrol 0 get Bcontrol 1 get abspoint /Ycont exch def /Xcont exch def Bcontrol 0 2 copy get 2 mul put Bcontrol 1 2 copy get 2 mul put Bcontrol Blen 2 sub 2 copy get 2 mul put Bcontrol Blen 1 sub 2 copy get 2 mul put /Ybi /Xbi currentpoint 3 1 roll def def 0 2 Blen 4 sub {/i exch def Bcontrol i get 3 div Bcontrol i 1 add get 3 div Bcontrol i get 3 mul Bcontrol i 2 add get add 6 div Bcontrol i 1 add get 3 mul Bcontrol i 3 add get add 6 div /Xbi Xcont Bcontrol i 2 add get 2 div add def /Ybi Ycont Bcontrol i 3 add get 2 div add def /Xcont Xcont Bcontrol i 2 add get add def /Ycont Ycont Bcontrol i 3 add get add def Xbi currentpoint pop sub Ybi currentpoint exch pop sub rcurveto }for dstroke}if}def end /ditstart{$DITroff begin /nfonts 60 def % NFONTS makedev/ditroff dependent! /fonts[nfonts{0}repeat]def /fontnames[nfonts{()}repeat]def /docsave save def }def % character outcalls /oc {/pswid exch def /cc exch def /name exch def /ditwid pswid fontsize mul resolution mul 72000 div def /ditsiz fontsize resolution mul 72 div def ocprocs name known{ocprocs name get exec}{name cb} ifelse}def /fractm [.65 0 0 .6 0 0] def /fraction {/fden exch def /fnum exch def gsave /cf currentfont def cf fractm makefont setfont 0 .3 dm 2 copy neg rmoveto fnum show rmoveto currentfont cf setfont(\244)show setfont fden show grestore ditwid 0 rmoveto} def /oce {grestore ditwid 0 rmoveto}def /dm {ditsiz mul}def /ocprocs 50 dict def ocprocs begin (14){(1)(4)fraction}def (12){(1)(2)fraction}def (34){(3)(4)fraction}def (13){(1)(3)fraction}def (23){(2)(3)fraction}def (18){(1)(8)fraction}def (38){(3)(8)fraction}def (58){(5)(8)fraction}def (78){(7)(8)fraction}def (sr){gsave .05 dm .16 dm rmoveto(\326)show oce}def (is){gsave 0 .15 dm rmoveto(\362)show oce}def (->){gsave 0 .02 dm rmoveto(\256)show oce}def (<-){gsave 0 .02 dm rmoveto(\254)show oce}def (==){gsave 0 .05 dm rmoveto(\272)show oce}def end % DIThacks fonts for some special chars 50 dict dup begin /FontType 3 def /FontName /DIThacks def /FontMatrix [.001 0.0 0.0 .001 0.0 0.0] def /FontBBox [-220 -280 900 900] def% a lie but ... /Encoding 256 array def 0 1 255{Encoding exch /.notdef put}for Encoding dup 8#040/space put %space dup 8#110/rc put %right ceil dup 8#111/lt put %left top curl dup 8#112/bv put %bold vert dup 8#113/lk put %left mid curl dup 8#114/lb put %left bot curl dup 8#115/rt put %right top curl dup 8#116/rk put %right mid curl dup 8#117/rb put %right bot curl dup 8#120/rf put %right floor dup 8#121/lf put %left floor dup 8#122/lc put %left ceil dup 8#140/sq put %square dup 8#141/bx put %box dup 8#142/ci put %circle dup 8#143/br put %box rule dup 8#144/rn put %root extender dup 8#145/vr put %vertical rule dup 8#146/ob put %outline bullet dup 8#147/bu put %bullet dup 8#150/ru put %rule dup 8#151/ul put %underline pop /DITfd 100 dict def /BuildChar{0 begin /cc exch def /fd exch def /charname fd /Encoding get cc get def /charwid fd /Metrics get charname get def /charproc fd /CharProcs get charname get def charwid 0 fd /FontBBox get aload pop setcachedevice 40 setlinewidth newpath 0 0 moveto gsave charproc grestore end}def /BuildChar load 0 DITfd put %/UniqueID 5 def /CharProcs 50 dict def CharProcs begin /space{}def /.notdef{}def /ru{500 0 rls}def /rn{0 750 moveto 500 0 rls}def /vr{20 800 moveto 0 -770 rls}def /bv{20 800 moveto 0 -1000 rls}def /br{20 770 moveto 0 -1040 rls}def /ul{0 -250 moveto 500 0 rls}def /ob{200 250 rmoveto currentpoint newpath 200 0 360 arc closepath stroke}def /bu{200 250 rmoveto currentpoint newpath 200 0 360 arc closepath fill}def /sq{80 0 rmoveto currentpoint dround newpath moveto 640 0 rlineto 0 640 rlineto -640 0 rlineto closepath stroke}def /bx{80 0 rmoveto currentpoint dround newpath moveto 640 0 rlineto 0 640 rlineto -640 0 rlineto closepath fill}def /ci{355 333 rmoveto currentpoint newpath 333 0 360 arc 50 setlinewidth stroke}def /lt{20 -200 moveto 0 550 rlineto currx 800 2cx s4 add exch s4 a4p stroke}def /lb{20 800 moveto 0 -550 rlineto currx -200 2cx s4 add exch s4 a4p stroke}def /rt{20 -200 moveto 0 550 rlineto currx 800 2cx s4 sub exch s4 a4p stroke}def /rb{20 800 moveto 0 -500 rlineto currx -200 2cx s4 sub exch s4 a4p stroke}def /lk{20 800 moveto 20 300 -280 300 s4 arcto pop pop 1000 sub currentpoint stroke moveto 20 300 4 2 roll s4 a4p 20 -200 lineto stroke}def /rk{20 800 moveto 20 300 320 300 s4 arcto pop pop 1000 sub currentpoint stroke moveto 20 300 4 2 roll s4 a4p 20 -200 lineto stroke}def /lf{20 800 moveto 0 -1000 rlineto s4 0 rls}def /rf{20 800 moveto 0 -1000 rlineto s4 neg 0 rls}def /lc{20 -200 moveto 0 1000 rlineto s4 0 rls}def /rc{20 -200 moveto 0 1000 rlineto s4 neg 0 rls}def end /Metrics 50 dict def Metrics begin /.notdef 0 def /space 500 def /ru 500 def /br 0 def /lt 250 def /lb 250 def /rt 250 def /rb 250 def /lk 250 def /rk 250 def /rc 250 def /lc 250 def /rf 250 def /lf 250 def /bv 250 def /ob 350 def /bu 350 def /ci 750 def /bx 750 def /sq 750 def /rn 500 def /ul 500 def /vr 0 def end DITfd begin /s2 500 def /s4 250 def /s3 333 def /a4p{arcto pop pop pop pop}def /2cx{2 copy exch}def /rls{rlineto stroke}def /currx{currentpoint pop}def /dround{transform round exch round exch itransform} def end end /DIThacks exch definefont pop ditstart (psc)xT 576 1 1 xr 1(Times-Roman)xf 1 f 2(Times-Italic)xf 2 f 3(Times-Bold)xf 3 f 4(Times-BoldItalic)xf 4 f 5(Helvetica)xf 5 f 6(Helvetica-Bold)xf 6 f 7(Courier)xf 7 f 8(Courier-Bold)xf 8 f 9(Symbol)xf 9 f 10(DIThacks)xf 10 f 10 s 1 f xi %%EndProlog %%Page: 1 1 10 s 0 xH 0 xS 1 f 960 1574 MXY 0 -1382 Dl 1382 0 Dl 0 1382 Dl -1382 0 Dl 1153 1755(Channel)N 1440(Position)X 1721(within)X 1945(FPGA)X 574 659(Average)N 601 755(Tracks)N 628 851(Used)N 610 947(Along)N 577 1043(Channel)N 597 1139(Length)N 960 1489 MXY 28 0 Dl 900 1505(0)N 960 1326 MXY 28 0 Dl 900 1342(1)N 960 1163 MXY 28 0 Dl 900 1179(2)N 960 999 MXY 28 0 Dl 900 1015(3)N 960 835 MXY 28 0 Dl 900 851(4)N 960 672 MXY 28 0 Dl 900 688(5)N 960 509 MXY 28 0 Dl 900 525(6)N 960 346 MXY 28 0 Dl 900 362(7)N 1044 1574 MXY 0 -28 Dl 832 1662(Bottom)N 1091(Edge)X 1651 1574 MXY 0 -28 Dl 1544 1662(Center)N 2257 1574 MXY 0 -28 Dl 2100 1662(Top)N 2249(Edge)X 5 s 10 f 1037 625(g)N 10 s 1044 609 MXY 52 134 Dl 5 s 1090 759(g)N 10 s 1097 743 MXY 52 213 Dl 5 s 1143 972(g)N 10 s 1150 956 MXY 52 -63 Dl 5 s 1196 908(g)N 10 s 1203 892 MXY 52 57 Dl 5 s 1248 966(g)N 10 s 1255 950 MXY 52 -149 Dl 5 s 1301 816(g)N 10 s 1308 800 MXY 52 156 Dl 5 s 1354 972(g)N 10 s 1361 956 MXY 52 -156 Dl 5 s 1407 816(g)N 10 s 1414 800 MXY 52 14 Dl 5 s 1459 831(g)N 10 s 1466 815 MXY 52 21 Dl 5 s 1512 851(g)N 10 s 1519 835 MXY 52 -49 Dl 5 s 1564 802(g)N 10 s 1571 786 MXY 52 70 Dl 5 s 1617 873(g)N 10 s 1624 857 MXY 52 -142 Dl 5 s 1670 731(g)N 10 s 1677 715 MXY 52 -127 Dl 5 s 1723 603(g)N 10 s 1730 587 MXY 52 262 Dl 5 s 1776 866(g)N 10 s 1783 850 MXY 52 -269 Dl 5 s 1828 596(g)N 10 s 1835 580 MXY 52 170 Dl 5 s 1881 767(g)N 10 s 1888 751 MXY 52 70 Dl 5 s 1934 838(g)N 10 s 1941 822 MXY 52 42 Dl 5 s 1987 880(g)N 10 s 1994 864 MXY 52 14 Dl 5 s 2039 894(g)N 10 s 2046 878 MXY 52 -63 Dl 5 s 2092 831(g)N 10 s 2099 815 MXY 52 42 Dl 5 s 2144 873(g)N 10 s 2151 857 MXY 52 127 Dl 5 s 2197 1001(g)N 10 s 2204 985 MXY 52 -113 Dl 5 s 2250 887(g)N 7 s 1034 1248(f)N 1 f 1036 1234(.)N 1039 1205(.)N 1043 1176(.)N 1046 1147(.)N 1048 1118(.)N 1051 1089(.)N 1055 1060(.)N 1058 1031(.)N 1061 1002(.)N 1063 973(.)N 1067 944(.)N 10 f 1065 958(f)N 1 f 1067 944(.)N 1073 915(.)N 1079 885(.)N 1085 856(.)N 1091 827(.)N 1097 797(.)N 10 f 1095 811(f)N 1 f 1097 797(.)N 1101 767(.)N 1104 738(.)N 1108 708(.)N 1112 678(.)N 1116 649(.)N 1120 619(.)N 1123 590(.)N 1127 560(.)N 10 f 1125 574(f)N 1 f 1127 560(.)N 1135 590(.)N 1142 619(.)N 1150 649(.)N 1158 678(.)N 10 f 1156 692(f)N 1 f 1158 678(.)N 1164 653(.)N 1170 628(.)N 1176 602(.)N 1182 577(.)N 1188 552(.)N 10 f 1186 566(f)N 1 f 1188 552(.)N 1218 560(.)N 10 f 1216 574(f)N 1 f 1218 560(.)N 1233 578(.)N 1248 597(.)N 10 f 1246 611(f)N 1 f 1248 597(.)N 1256 627(.)N 1264 656(.)N 1271 685(.)N 1279 715(.)N 10 f 1277 729(f)N 1 f 1279 715(.)N 1284 685(.)N 1289 655(.)N 1294 626(.)N 1299 596(.)N 1304 566(.)N 1309 536(.)N 10 f 1307 550(f)N 1 f 1309 536(.)N 1339 560(.)N 10 f 1337 574(f)N 1 f 1339 560(.)N 1350 590(.)N 1360 620(.)N 1370 650(.)N 10 f 1368 664(f)N 1 f 1370 650(.)N 1375 622(.)N 1380 594(.)N 1385 566(.)N 1390 539(.)N 1395 510(.)N 1400 483(.)N 10 f 1398 497(f)N 1 f 1400 483(.)N 1410 509(.)N 1421 534(.)N 1430 560(.)N 10 f 1428 574(f)N 1 f 1430 560(.)N 1461 552(.)N 10 f 1459 566(f)N 1 f 1461 552(.)N 1491 573(.)N 10 f 1489 587(f)N 1 f 1491 573(.)N 1506 593(.)N 1521 613(.)N 10 f 1519 627(f)N 1 f 1521 613(.)N 1552 597(.)N 10 f 1550 611(f)N 1 f 1552 597(.)N 1582 617(.)N 10 f 1580 631(f)N 1 f 1582 617(.)N 1588 590(.)N 1594 563(.)N 1600 536(.)N 1607 510(.)N 1612 483(.)N 10 f 1610 497(f)N 1 f 1612 483(.)N 1643 499(.)N 10 f 1641 513(f)N 1 f 1643 499(.)N 1646 471(.)N 1650 443(.)N 1654 416(.)N 1658 389(.)N 1662 361(.)N 1665 333(.)N 1669 306(.)N 1673 278(.)N 10 f 1671 292(f)N 1 f 1673 278(.)N 1683 308(.)N 1693 338(.)N 1703 368(.)N 10 f 1701 382(f)N 1 f 1703 368(.)N 1713 396(.)N 1724 423(.)N 1734 450(.)N 10 f 1732 464(f)N 1 f 1734 450(.)N 1744 476(.)N 1754 502(.)N 1764 528(.)N 10 f 1762 542(f)N 1 f 1764 528(.)N 1771 558(.)N 1779 589(.)N 1787 619(.)N 1794 650(.)N 10 f 1792 664(f)N 1 f 1794 650(.)N 1804 621(.)N 1815 593(.)N 1824 564(.)N 10 f 1822 578(f)N 1 f 1824 564(.)N 1855 540(.)N 10 f 1853 554(f)N 1 f 1855 540(.)N 1885 544(.)N 10 f 1883 558(f)N 1 f 1885 544(.)N 1889 571(.)N 1893 598(.)N 1896 625(.)N 1900 652(.)N 1904 679(.)N 1908 706(.)N 1912 733(.)N 1915 760(.)N 10 f 1913 774(f)N 1 f 1915 760(.)N 1946 764(.)N 10 f 1944 778(f)N 1 f 1946 764(.)N 1950 737(.)N 1953 710(.)N 1957 683(.)N 1961 656(.)N 1965 629(.)N 1968 602(.)N 1972 575(.)N 1976 548(.)N 10 f 1974 562(f)N 1 f 1976 548(.)N 2006 577(.)N 10 f 2004 591(f)N 1 f 2006 577(.)N 2010 604(.)N 2014 631(.)N 2018 658(.)N 2022 685(.)N 2025 712(.)N 2029 739(.)N 2033 766(.)N 2037 793(.)N 10 f 2035 807(f)N 1 f 2037 793(.)N 2040 763(.)N 2044 733(.)N 2048 703(.)N 2052 672(.)N 2056 642(.)N 2059 612(.)N 2063 582(.)N 2067 552(.)N 10 f 2065 566(f)N 1 f 2067 552(.)N 2075 579(.)N 2082 607(.)N 2090 635(.)N 2097 662(.)N 10 f 2095 676(f)N 1 f 2097 662(.)N 2102 692(.)N 2106 722(.)N 2111 752(.)N 2115 781(.)N 2119 811(.)N 2123 841(.)N 2128 870(.)N 10 f 2126 884(f)N 1 f 2128 870(.)N 2143 852(.)N 2158 833(.)N 10 f 2156 847(f)N 1 f 2158 833(.)N 2188 846(.)N 10 f 2186 860(f)N 1 f 2188 846(.)N 2199 877(.)N 2209 908(.)N 2219 940(.)N 10 f 2217 954(f)N 1 f 2219 940(.)N 2221 969(.)N 2224 999(.)N 2227 1028(.)N 2230 1057(.)N 2233 1086(.)N 2235 1116(.)N 2238 1145(.)N 2241 1174(.)N 2244 1204(.)N 2247 1233(.)N 2249 1263(.)N 10 f 2247 1277(f)N 9 f 1029 697(+)N 10 s 1044 681 MXY 13 25 Dl 1068 725 MXY 13 25 Dl 1092 769 MXY 13 25 Dl 7 s 1090 811(+)N 10 s 1105 795 MXY 6 -28 Dl 1119 732 MXY 6 -28 Dl 1132 670 MXY 6 -28 Dl 1146 608 MXY 6 -28 Dl 1160 545 MXY 6 -28 Dl 7 s 1151 534(+)N 10 s 1166 518 MXY 4 28 Dl 1175 572 MXY 4 28 Dl 1184 628 MXY 4 28 Dl 1194 683 MXY 4 28 Dl 1203 738 MXY 4 28 Dl 1212 793 MXY 4 28 Dl 1222 848 MXY 4 28 Dl 7 s 1211 892(+)N 10 s 1226 876 MXY 5 -28 Dl 1237 822 MXY 5 -28 Dl 1248 767 MXY 5 -28 Dl 1259 712 MXY 5 -28 Dl 1270 657 MXY 5 -28 Dl 1281 603 MXY 5 -28 Dl 7 s 1272 591(+)N 10 s 1287 575 MXY 10 27 Dl 1312 638 MXY 10 27 Dl 1337 703 MXY 10 27 Dl 7 s 1332 745(+)N 10 s 1347 729 MXY 26 -10 Dl 1381 716 MXY 26 -10 Dl 7 s 1393 721(+)N 10 s 1408 705 MXY 14 -24 Dl 1431 668 MXY 14 -24 Dl 1454 632 MXY 14 -24 Dl 7 s 1454 623(+)N 10 s 1469 607 MXY 19 -21 Dl 1510 563 MXY 19 -21 Dl 7 s 1514 558(+)N 10 s 1529 542 MXY 6 28 Dl 1543 596 MXY 6 28 Dl 1556 651 MXY 6 28 Dl 1570 705 MXY 6 28 Dl 1583 759 MXY 6 28 Dl 7 s 1575 803(+)N 10 s 1590 787 MXY 4 -28 Dl 1600 730 MXY 4 -28 Dl 1609 674 MXY 4 -28 Dl 1618 617 MXY 4 -28 Dl 1627 561 MXY 4 -28 Dl 1636 504 MXY 4 -28 Dl 1646 448 MXY 4 -28 Dl 7 s 1636 435(+)N 10 s 1651 419 MXY 14 24 Dl 1673 456 MXY 14 24 Dl 1696 493 MXY 14 24 Dl 7 s 1696 534(+)N 10 s 1711 518 MXY 6 28 Dl 1725 576 MXY 6 28 Dl 1738 634 MXY 6 28 Dl 1752 692 MXY 6 28 Dl 1766 751 MXY 6 28 Dl 7 s 1757 794(+)N 10 s 1772 778 MXY 23 -16 Dl 1809 754 MXY 23 -16 Dl 7 s 1817 754(+)N 10 s 1832 738 MXY 6 28 Dl 1846 792 MXY 6 28 Dl 1859 846 MXY 6 28 Dl 1873 901 MXY 6 28 Dl 1886 955 MXY 6 28 Dl 7 s 1878 999(+)N 10 s 1893 983 MXY 8 -27 Dl 1911 921 MXY 8 -27 Dl 1929 860 MXY 8 -27 Dl 1946 798 MXY 8 -27 Dl 7 s 1939 786(+)N 10 s 1954 770 MXY 18 -22 Dl 1996 719 MXY 18 -22 Dl 7 s 1999 713(+)N 10 s 2014 697 MXY 27 -7 Dl 2047 688 MXY 27 -7 Dl 7 s 2060 697(+)N 10 s 2075 681 MXY 23 -16 Dl 2112 656 MXY 23 -16 Dl 7 s 2121 656(+)N 10 s 2136 640 MXY 4 28 Dl 2145 695 MXY 4 28 Dl 2154 750 MXY 4 28 Dl 2164 805 MXY 4 28 Dl 2173 860 MXY 4 28 Dl 2183 916 MXY 4 28 Dl 2192 971 MXY 4 28 Dl 7 s 2181 1015(+)N 10 s 2196 999 MXY 3 -28 Dl 2203 943 MXY 3 -28 Dl 2211 886 MXY 3 -28 Dl 2218 829 MXY 3 -28 Dl 2225 773 MXY 3 -28 Dl 2232 716 MXY 3 -28 Dl 2239 659 MXY 3 -28 Dl 2246 603 MXY 3 -28 Dl 2253 546 MXY 3 -28 Dl 7 s 2242 534(+)N 1 p %%Trailer xt xs %%EndDocument FMENDEPSF 0 68 574 299 768 231 194 308.43 118.18 FMBEGINEPSF %%BeginDocument: /jayar/d0/vaughn/thesis/place/trans-vlsi/figs/max_track_demand_fixed.eps %!PS-Adobe-2.0 EPSF-1.2 %%BoundingBox: 68 574 299 768 %!PS-Adobe-1.0 %%Creator: gractus.eecg:vaughn (Vaughn Betz,EECG,LP 392,1653,7662197,G,G ) %%Title: stdin (ditroff) %%CreationDate: Mon Sep 16 16:07:10 1996 %%EndComments % Start of psdit.pro -- prolog for ditroff translator % Copyright (c) 1985,1987 Adobe Systems Incorporated. All Rights Reserved. % GOVERNMENT END USERS: See Notice file in TranScript library directory % -- probably /usr/lib/ps/Notice % RCS: $Header: psdit.pro,v 1.2 88/10/29 07:37:27 moraes Exp $ /$DITroff 140 dict def $DITroff begin %% Psfig additions /DocumentInitState [ matrix currentmatrix currentlinewidth currentlinecap currentlinejoin currentdash currentgray currentmiterlimit ] cvx def /startFig { /SavedState save def userdict maxlength dict begin currentpoint transform DocumentInitState setmiterlimit setgray setdash setlinejoin setlinecap setlinewidth setmatrix itransform moveto /ury exch def /urx exch def /lly exch def /llx exch def /y exch 72 mul resolution div def /x exch 72 mul resolution div def currentpoint /cy exch def /cx exch def /sx x urx llx sub div def % scaling for x /sy y ury lly sub div def % scaling for y sx sy scale % scale by (sx,sy) cx sx div llx sub cy sy div ury sub translate /DefFigCTM matrix currentmatrix def /initmatrix { DefFigCTM setmatrix } def /defaultmatrix { DefFigCTM exch copy } def /initgraphics { DocumentInitState setmiterlimit setgray setdash setlinejoin setlinecap setlinewidth setmatrix DefFigCTM setmatrix } def /showpage { initgraphics } def } def % Args are llx lly urx ury (in figure coordinates) /clipFig { currentpoint 6 2 roll newpath 4 copy 4 2 roll moveto 6 -1 roll exch lineto exch lineto exch lineto closepath clip newpath moveto } def % doclip, if called, will always be just after a `startfig' /doclip { llx lly urx ury clipFig } def /endFig { end SavedState restore } def /globalstart { % Push details about the enviornment on the stack. fontnum fontsize fontslant fontheight firstpage mh my resolution slotno currentpoint pagesave restore gsave } def /globalend { grestore moveto /slotno exch def /resolution exch def /my exch def /mh exch def /firstpage exch def /fontheight exch def /fontslant exch def /fontsize exch def /fontnum exch def F /pagesave save def } def %% end Psfig additions /fontnum 1 def /fontsize 10 def /fontheight 10 def /fontslant 0 def /xi {0 72 11 mul translate 72 resolution div dup neg scale 0 0 moveto /fontnum 1 def /fontsize 10 def /fontheight 10 def /fontslant 0 def F /pagesave save def}def /PB{save /psv exch def currentpoint translate resolution 72 div dup neg scale 0 0 moveto}def /PE{psv restore}def /m1 matrix def /m2 matrix def /m3 matrix def /oldmat matrix def /tan{dup sin exch cos div}bind def /point{resolution 72 div mul}bind def /dround {transform round exch round exch itransform}bind def /xT{/devname exch def}def /xr{/mh exch def /my exch def /resolution exch def}def /xp{}def /xs{docsave restore end}def /xt{}def /xf{/fontname exch def /slotno exch def fontnames slotno get fontname eq not {fonts slotno fontname findfont put fontnames slotno fontname put}if}def /xH{/fontheight exch def F}bind def /xS{/fontslant exch def F}bind def /s{/fontsize exch def /fontheight fontsize def F}bind def /f{/fontnum exch def F}bind def /F{fontheight 0 le {/fontheight fontsize def}if fonts fontnum get fontsize point 0 0 fontheight point neg 0 0 m1 astore fontslant 0 ne{1 0 fontslant tan 1 0 0 m2 astore m3 concatmatrix}if makefont setfont .04 fontsize point mul 0 dround pop setlinewidth}bind def /X{exch currentpoint exch pop moveto show}bind def /N{3 1 roll moveto show}bind def /Y{exch currentpoint pop exch moveto show}bind def /S /show load def /ditpush{}def/ditpop{}def /AX{3 -1 roll currentpoint exch pop moveto 0 exch ashow}bind def /AN{4 2 roll moveto 0 exch ashow}bind def /AY{3 -1 roll currentpoint pop exch moveto 0 exch ashow}bind def /AS{0 exch ashow}bind def /MX{currentpoint exch pop moveto}bind def /MY{currentpoint pop exch moveto}bind def /MXY /moveto load def /cb{pop}def % action on unknown char -- nothing for now /n{}def/w{}def /p{pop showpage pagesave restore /pagesave save def}def /abspoint{currentpoint exch pop add exch currentpoint pop add exch}def /dstroke{currentpoint stroke moveto}bind def /Dl{2 copy gsave rlineto stroke grestore rmoveto}bind def /arcellipse{oldmat currentmatrix pop currentpoint translate 1 diamv diamh div scale /rad diamh 2 div def rad 0 rad -180 180 arc oldmat setmatrix}def /Dc{gsave dup /diamv exch def /diamh exch def arcellipse dstroke grestore diamh 0 rmoveto}def /De{gsave /diamv exch def /diamh exch def arcellipse dstroke grestore diamh 0 rmoveto}def /Da{currentpoint /by exch def /bx exch def /fy exch def /fx exch def /cy exch def /cx exch def /rad cx cx mul cy cy mul add sqrt def /ang1 cy neg cx neg atan def /ang2 fy fx atan def cx bx add cy by add 2 copy rad ang1 ang2 arcn stroke exch fx add exch fy add moveto}def /Barray 200 array def % 200 values in a wiggle /D~{mark}def /D~~{counttomark Barray exch 0 exch getinterval astore /Bcontrol exch def pop /Blen Bcontrol length def Blen 4 ge Blen 2 mod 0 eq and {Bcontrol 0 get Bcontrol 1 get abspoint /Ycont exch def /Xcont exch def Bcontrol 0 2 copy get 2 mul put Bcontrol 1 2 copy get 2 mul put Bcontrol Blen 2 sub 2 copy get 2 mul put Bcontrol Blen 1 sub 2 copy get 2 mul put /Ybi /Xbi currentpoint 3 1 roll def def 0 2 Blen 4 sub {/i exch def Bcontrol i get 3 div Bcontrol i 1 add get 3 div Bcontrol i get 3 mul Bcontrol i 2 add get add 6 div Bcontrol i 1 add get 3 mul Bcontrol i 3 add get add 6 div /Xbi Xcont Bcontrol i 2 add get 2 div add def /Ybi Ycont Bcontrol i 3 add get 2 div add def /Xcont Xcont Bcontrol i 2 add get add def /Ycont Ycont Bcontrol i 3 add get add def Xbi currentpoint pop sub Ybi currentpoint exch pop sub rcurveto }for dstroke}if}def end /ditstart{$DITroff begin /nfonts 60 def % NFONTS makedev/ditroff dependent! /fonts[nfonts{0}repeat]def /fontnames[nfonts{()}repeat]def /docsave save def }def % character outcalls /oc {/pswid exch def /cc exch def /name exch def /ditwid pswid fontsize mul resolution mul 72000 div def /ditsiz fontsize resolution mul 72 div def ocprocs name known{ocprocs name get exec}{name cb} ifelse}def /fractm [.65 0 0 .6 0 0] def /fraction {/fden exch def /fnum exch def gsave /cf currentfont def cf fractm makefont setfont 0 .3 dm 2 copy neg rmoveto fnum show rmoveto currentfont cf setfont(\244)show setfont fden show grestore ditwid 0 rmoveto} def /oce {grestore ditwid 0 rmoveto}def /dm {ditsiz mul}def /ocprocs 50 dict def ocprocs begin (14){(1)(4)fraction}def (12){(1)(2)fraction}def (34){(3)(4)fraction}def (13){(1)(3)fraction}def (23){(2)(3)fraction}def (18){(1)(8)fraction}def (38){(3)(8)fraction}def (58){(5)(8)fraction}def (78){(7)(8)fraction}def (sr){gsave .05 dm .16 dm rmoveto(\326)show oce}def (is){gsave 0 .15 dm rmoveto(\362)show oce}def (->){gsave 0 .02 dm rmoveto(\256)show oce}def (<-){gsave 0 .02 dm rmoveto(\254)show oce}def (==){gsave 0 .05 dm rmoveto(\272)show oce}def end % DIThacks fonts for some special chars 50 dict dup begin /FontType 3 def /FontName /DIThacks def /FontMatrix [.001 0.0 0.0 .001 0.0 0.0] def /FontBBox [-220 -280 900 900] def% a lie but ... /Encoding 256 array def 0 1 255{Encoding exch /.notdef put}for Encoding dup 8#040/space put %space dup 8#110/rc put %right ceil dup 8#111/lt put %left top curl dup 8#112/bv put %bold vert dup 8#113/lk put %left mid curl dup 8#114/lb put %left bot curl dup 8#115/rt put %right top curl dup 8#116/rk put %right mid curl dup 8#117/rb put %right bot curl dup 8#120/rf put %right floor dup 8#121/lf put %left floor dup 8#122/lc put %left ceil dup 8#140/sq put %square dup 8#141/bx put %box dup 8#142/ci put %circle dup 8#143/br put %box rule dup 8#144/rn put %root extender dup 8#145/vr put %vertical rule dup 8#146/ob put %outline bullet dup 8#147/bu put %bullet dup 8#150/ru put %rule dup 8#151/ul put %underline pop /DITfd 100 dict def /BuildChar{0 begin /cc exch def /fd exch def /charname fd /Encoding get cc get def /charwid fd /Metrics get charname get def /charproc fd /CharProcs get charname get def charwid 0 fd /FontBBox get aload pop setcachedevice 40 setlinewidth newpath 0 0 moveto gsave charproc grestore end}def /BuildChar load 0 DITfd put %/UniqueID 5 def /CharProcs 50 dict def CharProcs begin /space{}def /.notdef{}def /ru{500 0 rls}def /rn{0 750 moveto 500 0 rls}def /vr{20 800 moveto 0 -770 rls}def /bv{20 800 moveto 0 -1000 rls}def /br{20 770 moveto 0 -1040 rls}def /ul{0 -250 moveto 500 0 rls}def /ob{200 250 rmoveto currentpoint newpath 200 0 360 arc closepath stroke}def /bu{200 250 rmoveto currentpoint newpath 200 0 360 arc closepath fill}def /sq{80 0 rmoveto currentpoint dround newpath moveto 640 0 rlineto 0 640 rlineto -640 0 rlineto closepath stroke}def /bx{80 0 rmoveto currentpoint dround newpath moveto 640 0 rlineto 0 640 rlineto -640 0 rlineto closepath fill}def /ci{355 333 rmoveto currentpoint newpath 333 0 360 arc 50 setlinewidth stroke}def /lt{20 -200 moveto 0 550 rlineto currx 800 2cx s4 add exch s4 a4p stroke}def /lb{20 800 moveto 0 -550 rlineto currx -200 2cx s4 add exch s4 a4p stroke}def /rt{20 -200 moveto 0 550 rlineto currx 800 2cx s4 sub exch s4 a4p stroke}def /rb{20 800 moveto 0 -500 rlineto currx -200 2cx s4 sub exch s4 a4p stroke}def /lk{20 800 moveto 20 300 -280 300 s4 arcto pop pop 1000 sub currentpoint stroke moveto 20 300 4 2 roll s4 a4p 20 -200 lineto stroke}def /rk{20 800 moveto 20 300 320 300 s4 arcto pop pop 1000 sub currentpoint stroke moveto 20 300 4 2 roll s4 a4p 20 -200 lineto stroke}def /lf{20 800 moveto 0 -1000 rlineto s4 0 rls}def /rf{20 800 moveto 0 -1000 rlineto s4 neg 0 rls}def /lc{20 -200 moveto 0 1000 rlineto s4 0 rls}def /rc{20 -200 moveto 0 1000 rlineto s4 neg 0 rls}def end /Metrics 50 dict def Metrics begin /.notdef 0 def /space 500 def /ru 500 def /br 0 def /lt 250 def /lb 250 def /rt 250 def /rb 250 def /lk 250 def /rk 250 def /rc 250 def /lc 250 def /rf 250 def /lf 250 def /bv 250 def /ob 350 def /bu 350 def /ci 750 def /bx 750 def /sq 750 def /rn 500 def /ul 500 def /vr 0 def end DITfd begin /s2 500 def /s4 250 def /s3 333 def /a4p{arcto pop pop pop pop}def /2cx{2 copy exch}def /rls{rlineto stroke}def /currx{currentpoint pop}def /dround{transform round exch round exch itransform} def end end /DIThacks exch definefont pop ditstart (psc)xT 576 1 1 xr 1(Times-Roman)xf 1 f 2(Times-Italic)xf 2 f 3(Times-Bold)xf 3 f 4(Times-BoldItalic)xf 4 f 5(Helvetica)xf 5 f 6(Helvetica-Bold)xf 6 f 7(Courier)xf 7 f 8(Courier-Bold)xf 8 f 9(Symbol)xf 9 f 10(DIThacks)xf 10 f 10 s 1 f xi %%EndProlog %%Page: 1 1 10 s 0 xH 0 xS 1 f 960 1574 MXY 0 -1382 Dl 1382 0 Dl 0 1382 Dl -1382 0 Dl 1153 1755(Channel)N 1440(Position)X 1721(within)X 1945(FPGA)X 544 659(Maximum)N 601 755(Tracks)N 628 851(Used)N 610 947(Along)N 577 1043(Channel)N 597 1139(Length)N 960 1489 MXY 28 0 Dl 900 1505(0)N 960 1303 MXY 28 0 Dl 900 1319(2)N 960 1116 MXY 28 0 Dl 900 1132(4)N 960 929 MXY 28 0 Dl 900 945(6)N 960 743 MXY 28 0 Dl 900 759(8)N 960 556 MXY 28 0 Dl 860 572(10)N 960 369 MXY 28 0 Dl 860 385(12)N 1044 1574 MXY 0 -28 Dl 832 1662(Bottom)N 1091(Edge)X 1651 1574 MXY 0 -28 Dl 1544 1662(Center)N 2257 1574 MXY 0 -28 Dl 2100 1662(Top)N 2249(Edge)X 5 s 10 f 1037 759(g)N 10 s 1044 743 MXY 52 93 Dl 5 s 1090 852(g)N 10 s 1097 836 MXY 52 186 Dl 5 s 1143 1039(g)N 10 s 1150 1023 MXY 52 0 Dl 5 s 1196 1039(g)N 10 s 1203 1023 MXY 52 0 Dl 5 s 1248 1039(g)N 10 s 1255 1023 MXY 52 -186 Dl 5 s 1301 852(g)N 10 s 1308 836 MXY 52 93 Dl 5 s 1354 945(g)N 10 s 1361 929 MXY 52 0 Dl 5 s 1407 945(g)N 10 s 1414 929 MXY 52 93 Dl 5 s 1459 1039(g)N 10 s 1466 1023 MXY 52 -93 Dl 5 s 1512 945(g)N 10 s 1519 929 MXY 52 -186 Dl 5 s 1564 759(g)N 10 s 1571 743 MXY 52 186 Dl 5 s 1617 945(g)N 10 s 1624 929 MXY 52 -186 Dl 5 s 1670 759(g)N 10 s 1677 743 MXY 52 93 Dl 5 s 1723 852(g)N 10 s 1730 836 MXY 52 93 Dl 5 s 1776 945(g)N 10 s 1783 929 MXY 52 -373 Dl 5 s 1828 572(g)N 10 s 1835 556 MXY 52 186 Dl 5 s 1881 759(g)N 10 s 1888 743 MXY 52 186 Dl 5 s 1934 945(g)N 10 s 1941 929 MXY 52 0 Dl 5 s 1987 945(g)N 10 s 1994 929 MXY 52 0 Dl 5 s 2039 945(g)N 10 s 2046 929 MXY 52 -186 Dl 5 s 2092 759(g)N 10 s 2099 743 MXY 52 186 Dl 5 s 2144 945(g)N 10 s 2151 929 MXY 52 93 Dl 5 s 2197 1039(g)N 10 s 2204 1023 MXY 52 -373 Dl 5 s 2250 665(g)N 7 s 1034 1132(f)N 1 f 1036 1118(.)N 1039 1090(.)N 1043 1062(.)N 1046 1034(.)N 1048 1006(.)N 1051 978(.)N 1055 950(.)N 1058 922(.)N 1061 894(.)N 1063 866(.)N 1067 838(.)N 10 f 1065 852(f)N 1 f 1067 838(.)N 1097(.)X 10 f 1095 852(f)N 1 f 1097 838(.)N 1107 807(.)N 1117 776(.)N 1127 745(.)N 10 f 1125 759(f)N 1 f 1127 745(.)N 1158(.)X 10 f 1156 759(f)N 1 f 1158 745(.)N 1162 718(.)N 1167 692(.)N 1171 665(.)N 1175 638(.)N 1179 612(.)N 1184 585(.)N 1188 558(.)N 10 f 1186 572(f)N 1 f 1188 558(.)N 1198 589(.)N 1208 620(.)N 1218 651(.)N 10 f 1216 665(f)N 1 f 1218 651(.)N 1228 620(.)N 1239 589(.)N 1248 558(.)N 10 f 1246 572(f)N 1 f 1248 558(.)N 1252 586(.)N 1255 614(.)N 1258 642(.)N 1261 670(.)N 1264 698(.)N 1267 726(.)N 1270 754(.)N 1273 782(.)N 1276 810(.)N 1279 838(.)N 10 f 1277 852(f)N 1 f 1279 838(.)N 1282 810(.)N 1285 782(.)N 1288 754(.)N 1291 726(.)N 1294 698(.)N 1297 670(.)N 1300 642(.)N 1303 614(.)N 1306 586(.)N 1309 558(.)N 10 f 1307 572(f)N 1 f 1309 558(.)N 1319 589(.)N 1330 620(.)N 1339 651(.)N 10 f 1337 665(f)N 1 f 1339 651(.)N 1370(.)X 10 f 1368 665(f)N 1 f 1370 651(.)N 1400(.)X 10 f 1398 665(f)N 1 f 1400 651(.)N 1410 620(.)N 1421 589(.)N 1430 558(.)N 10 f 1428 572(f)N 1 f 1430 558(.)N 1441 589(.)N 1451 620(.)N 1461 651(.)N 10 f 1459 665(f)N 1 f 1461 651(.)N 1491(.)X 10 f 1489 665(f)N 1 f 1491 651(.)N 1501 620(.)N 1512 589(.)N 1521 558(.)N 10 f 1519 572(f)N 1 f 1521 558(.)N 1532 589(.)N 1542 620(.)N 1552 651(.)N 10 f 1550 665(f)N 1 f 1552 651(.)N 1582(.)X 10 f 1580 665(f)N 1 f 1582 651(.)N 1612(.)X 10 f 1610 665(f)N 1 f 1612 651(.)N 1643(.)X 10 f 1641 665(f)N 1 f 1643 651(.)N 1645 623(.)N 1648 594(.)N 1650 566(.)N 1652 537(.)N 1654 508(.)N 1657 479(.)N 1659 450(.)N 1661 422(.)N 1664 393(.)N 1666 365(.)N 1668 336(.)N 1671 307(.)N 1673 278(.)N 10 f 1671 292(f)N 1 f 1673 278(.)N 1676 306(.)N 1679 335(.)N 1682 362(.)N 1685 390(.)N 1688 418(.)N 1691 446(.)N 1694 474(.)N 1697 502(.)N 1700 530(.)N 1703 558(.)N 10 f 1701 572(f)N 1 f 1703 558(.)N 1713 527(.)N 1724 496(.)N 1734 465(.)N 10 f 1732 479(f)N 1 f 1734 465(.)N 1764(.)X 10 f 1762 479(f)N 1 f 1764 465(.)N 1767 493(.)N 1770 521(.)N 1773 549(.)N 1776 577(.)N 1779 605(.)N 1782 633(.)N 1785 661(.)N 1788 689(.)N 1792 717(.)N 1794 745(.)N 10 f 1792 759(f)N 1 f 1794 745(.)N 1804 714(.)N 1815 683(.)N 1824 651(.)N 10 f 1822 665(f)N 1 f 1824 651(.)N 1828 624(.)N 1831 596(.)N 1834 567(.)N 1837 540(.)N 1840 511(.)N 1843 484(.)N 1846 456(.)N 1849 427(.)N 1852 400(.)N 1855 371(.)N 10 f 1853 385(f)N 1 f 1855 371(.)N 1858 400(.)N 1861 427(.)N 1864 456(.)N 1867 484(.)N 1870 511(.)N 1873 540(.)N 1876 567(.)N 1879 596(.)N 1882 624(.)N 1885 651(.)N 10 f 1883 665(f)N 1 f 1885 651(.)N 1889 678(.)N 1894 705(.)N 1898 731(.)N 1903 758(.)N 1907 784(.)N 1911 812(.)N 1915 838(.)N 10 f 1913 852(f)N 1 f 1915 838(.)N 1926 807(.)N 1936 776(.)N 1946 745(.)N 10 f 1944 759(f)N 1 f 1946 745(.)N 1956 714(.)N 1966 683(.)N 1976 651(.)N 10 f 1974 665(f)N 1 f 1976 651(.)N 1986 620(.)N 1997 589(.)N 2006 558(.)N 10 f 2004 572(f)N 1 f 2006 558(.)N 2010 586(.)N 2013 614(.)N 2016 642(.)N 2018 670(.)N 2022 698(.)N 2025 726(.)N 2028 754(.)N 2031 782(.)N 2034 810(.)N 2037 838(.)N 10 f 2035 852(f)N 1 f 2037 838(.)N 2041 812(.)N 2046 784(.)N 2050 758(.)N 2054 731(.)N 2058 705(.)N 2063 678(.)N 2067 651(.)N 10 f 2065 665(f)N 1 f 2067 651(.)N 2077 683(.)N 2088 714(.)N 2097 745(.)N 10 f 2095 759(f)N 1 f 2097 745(.)N 2102 771(.)N 2106 798(.)N 2111 825(.)N 2115 851(.)N 2119 878(.)N 2123 905(.)N 2128 931(.)N 10 f 2126 945(f)N 1 f 2128 931(.)N 2132 905(.)N 2137 878(.)N 2141 851(.)N 2145 825(.)N 2149 798(.)N 2154 771(.)N 2158 745(.)N 10 f 2156 759(f)N 1 f 2158 745(.)N 2188(.)X 10 f 2186 759(f)N 1 f 2188 745(.)N 2199 776(.)N 2209 807(.)N 2219 838(.)N 10 f 2217 852(f)N 1 f 2219 838(.)N 2222 866(.)N 2225 894(.)N 2228 922(.)N 2231 950(.)N 2234 978(.)N 2237 1006(.)N 2240 1034(.)N 2243 1062(.)N 2246 1090(.)N 2249 1118(.)N 10 f 2247 1132(f)N 9 f 1029 852(+)N 10 s 1044 836 MXY 28 0 Dl 1076 MX 28 0 Dl 7 s 1090 852(+)N 10 s 1105 836 MXY 8 -27 Dl 1122 783 MXY 8 -27 Dl 1139 730 MXY 8 -27 Dl 1157 677 MXY 8 -27 Dl 7 s 1151 665(+)N 10 s 1166 649 MXY 4 28 Dl 1175 707 MXY 4 28 Dl 1184 765 MXY 4 28 Dl 1194 822 MXY 4 28 Dl 1203 879 MXY 4 28 Dl 1213 937 MXY 4 28 Dl 1222 994 MXY 4 28 Dl 7 s 1211 1039(+)N 10 s 1226 1023 MXY 4 -28 Dl 1236 965 MXY 4 -28 Dl 1245 907 MXY 4 -28 Dl 1254 850 MXY 4 -28 Dl 1264 793 MXY 4 -28 Dl 1273 735 MXY 4 -28 Dl 1282 678 MXY 4 -28 Dl 7 s 1272 665(+)N 10 s 1287 649 MXY 6 28 Dl 1301 712 MXY 6 28 Dl 1314 776 MXY 6 28 Dl 1328 838 MXY 6 28 Dl 1342 901 MXY 6 28 Dl 7 s 1332 945(+)N 10 s 1347 929 MXY 15 -24 Dl 1392 860 MXY 15 -24 Dl 7 s 1393 852(+)N 10 s 1408 836 MXY 15 -24 Dl 1453 767 MXY 15 -24 Dl 7 s 1454 759(+)N 10 s 1469 743 MXY 15 -24 Dl 1514 674 MXY 15 -24 Dl 7 s 1514 665(+)N 10 s 1529 649 MXY 6 28 Dl 1543 712 MXY 6 28 Dl 1556 776 MXY 6 28 Dl 1570 838 MXY 6 28 Dl 1584 901 MXY 6 28 Dl 7 s 1575 945(+)N 10 s 1590 929 MXY 6 -28 Dl 1604 867 MXY 6 -28 Dl 1617 803 MXY 6 -28 Dl 1631 740 MXY 6 -28 Dl 1645 678 MXY 6 -28 Dl 7 s 1636 665(+)N 10 s 1651 649 MXY 15 24 Dl 1696 719 MXY 15 24 Dl 7 s 1696 759(+)N 10 s 1711 743 MXY 15 24 Dl 1756 812 MXY 15 24 Dl 7 s 1757 852(+)N 10 s 1772 836 MXY 28 0 Dl 1804 MX 28 0 Dl 7 s 1817 852(+)N 10 s 1832 836 MXY 8 27 Dl 1850 889 MXY 8 27 Dl 1867 942 MXY 8 27 Dl 1884 995 MXY 8 27 Dl 7 s 1878 1039(+)N 10 s 1893 1023 MXY 15 -24 Dl 1938 954 MXY 15 -24 Dl 7 s 1939 945(+)N 10 s 1954 929 MXY 6 -28 Dl 1968 867 MXY 6 -28 Dl 1981 803 MXY 6 -28 Dl 1995 740 MXY 6 -28 Dl 2009 678 MXY 6 -28 Dl 7 s 1999 665(+)N 10 s 2014 649 MXY 8 27 Dl 2032 702 MXY 8 27 Dl 2049 755 MXY 8 27 Dl 2066 808 MXY 8 27 Dl 7 s 2060 852(+)N 10 s 2075 836 MXY 15 -24 Dl 2120 767 MXY 15 -24 Dl 7 s 2121 759(+)N 10 s 2136 743 MXY 6 28 Dl 2149 806 MXY 6 28 Dl 2163 869 MXY 6 28 Dl 2177 932 MXY 6 28 Dl 2190 994 MXY 6 28 Dl 7 s 2181 1039(+)N 10 s 2196 1023 MXY 3 -28 Dl 2203 968 MXY 3 -28 Dl 2211 913 MXY 3 -28 Dl 2218 859 MXY 3 -28 Dl 2225 804 MXY 3 -28 Dl 2232 749 MXY 3 -28 Dl 2239 694 MXY 3 -28 Dl 2246 640 MXY 3 -28 Dl 2253 585 MXY 3 -28 Dl 7 s 2242 572(+)N 1 p %%Trailer xt xs %%EndDocument FMENDEPSF 196.68 100.51 214.18 113.01 R 7 X 0 0 0 1 0 0 0 K V 0 10 Q 0 X (\050a\051) 199.88 106.34 T 434.68 100.18 452.18 112.68 R 7 X V 0 X (\050b\051) 437.6 106.01 T 75.01 70.51 535.01 95.51 R 7 X V 0 11 Q 0 X (Fig. 18. \050a\051 A) 82.8 88.18 T (v) 144.31 88.18 T (erage and \050b\051 maximum track demand vs. channel position for three circuits when I/O) 149.64 88.18 T (locations are \336x) 263.39 76.18 T (ed.) 333.5 76.18 T 0 10 Q (alu4) 188.35 293.84 T (C6388) 160.01 206.18 T (sbc) 179.01 246.18 T (alu4) 428.85 291.68 T (C6388) 409.68 199.01 T (sbc) 406.01 240.01 T 0 0 0 1 0 0 0 K 72 72 540 720 C 0 0 612 792 C 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "20" 20 %%Page: "21" 21 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 10 Q 0 X 0 0 0 1 0 0 0 K (21 of 22) 289.33 36.66 T 0 11 Q -0.13 (approximately a track and sho) 72 712.67 P -0.13 (w signi\336cantly more demand for routing tracks near the chip edges than the) 203.8 712.67 P -0.13 (y) 534.5 712.67 P -0.09 (did when the I/Os were mo) 72 693.67 P -0.09 (v) 190.84 693.67 P -0.09 (able. This is due to the dif) 196.07 693.67 P -0.09 (ferent I/O to logic ratios of these three circuits. Alu4) 309.84 693.67 P -0.11 (has v) 72 674.67 P -0.11 (ery fe) 94.64 674.67 P -0.11 (w I/Os; it uses only 7% of the I/O pads a) 119.59 674.67 P -0.11 (v) 297.27 674.67 P -0.11 (ailable in the FPGA to which it is mapped. C6388 and) 302.5 674.67 P -0.05 (sbc, on the other hand, ha) 72 655.67 P -0.05 (v) 184.25 655.67 P -0.05 (e considerably more I/O, and use 35% and 61% of the I/O locations a) 189.59 655.67 P -0.05 (v) 494.19 655.67 P -0.05 (ailable to) 499.42 655.67 P 1.08 (them, respecti) 72 636.67 P 1.08 (v) 134.51 636.67 P 1.08 (ely) 139.85 636.67 P 1.08 (. As one w) 152.57 636.67 P 1.08 (ould e) 202.74 636.67 P 1.08 (xpect, then, \336xing I/O locations has little ef) 230.84 636.67 P 1.08 (fect on circuits with fe) 429.05 636.67 P 1.08 (w) 532.06 636.67 P 0.79 (I/Os. On the other hand, circuits with lar) 72 617.67 P 0.79 (ger I/O requirements sho) 255.46 617.67 P 0.79 (w an increase in routing track demand) 367.23 617.67 P (across the entire FPGA, with the greatest increase near the chip edges.) 72 598.67 T 1 14 Q (6) 72 567.67 T (Conclusions) 90 567.67 T 0 11 Q 1.02 (The most interesting \050and une) 90 545.67 P 1.02 (xpected\051 conclusion of this w) 225.29 545.67 P 1.02 (ork is that the most area-ef) 358.79 545.67 P 1.02 (\336cient global) 481.23 545.67 P -0.08 (routing structure is one with completely uniform channel capacities across the entire chip and in both hori-) 72 526.67 P 2.03 (zontal and v) 72 507.67 P 2.03 (ertical directions. The basic reason is that most circuits \322naturally\323 tend to ha) 129.66 507.67 P 2.03 (v) 493.22 507.67 P 2.03 (e routing) 498.56 507.67 P 0.25 (demands which are e) 72 488.67 P 0.25 (v) 165.02 488.67 P 0.25 (enly spread across an FPGA. The only \050slight\051 e) 170.35 488.67 P 0.25 (xception we found to this \322uniform) 383.87 488.67 P -0.18 (is better\323 rule occurred when the I/O locations of circuits were \336x) 72 469.67 P -0.18 (ed by board-le) 359.14 469.67 P -0.18 (v) 422.04 469.67 P -0.18 (el constraints. In this case) 427.38 469.67 P (making the I/O channel 25% wider than the other channels w) 72 450.67 T (as a net bene\336t.) 341.33 450.67 T 0.12 (Of almost equal note, the area-ef) 90 431.67 P 0.12 (\336cienc) 234.49 431.67 P 0.12 (y is decreased only slightly by some non-uniform or direction-) 263.66 431.67 P 0.86 (ally-biased architectures, pro) 72 412.67 P 0.86 (vided the pin placement on the logic blocks is well-matched to the channel) 200.94 412.67 P 0.83 (capacity distrib) 72 393.67 P 0.83 (ution. Hence if such architectures are desirable for other reasons the impact on core area) 140.13 393.67 P (doesn\325) 72 374.67 T (t preclude their use.) 101.13 374.67 T 1.74 (More speci\336cally) 90 355.67 P 1.74 (, of the FPGA architectures studied, a full-perimeter pin position FPGA with no) 167.71 355.67 P 0.66 (directional routing bias and uniform channel widths is most area-ef) 72 336.67 P 0.66 (\336cient. Emplo) 373.05 336.67 P 0.66 (ying a logic block with) 435.93 336.67 P -0.08 (the top/bottom pin position requires approximately 8% more routing resources than full-perimeter FPGAs,) 72 317.67 P 0.16 (and the most area-ef) 72 298.67 P 0.16 (\336cient top/bottom FPGA has twice as man) 161.7 298.67 P 0.16 (y horizontal routing tracks as v) 349.49 298.67 P 0.16 (ertical ones.) 486.69 298.67 P 0.89 (W) 72 279.67 P 0.89 (e also found that one can construct rectangular FPGAs which are only slightly less dense than square) 81.5 279.67 P 0.36 (FPGAs pro) 72 260.67 P 0.36 (vided one adjusts the de) 122 260.67 P 0.36 (gree of directional bias in the routing resources to best match the chip) 228.98 260.67 P (aspect ratio.) 72 241.67 T 1.03 (Our e) 90 222.67 P 1.03 (xperimental results in this paper were g) 115.61 222.67 P 1.03 (athered with the linear congestion cost function in the) 295.27 222.67 P 0.06 (placement tool because we felt the non-linear cost function w) 72 203.67 P 0.06 (as too slo) 342.78 203.67 P 0.06 (w to be commercially viable. Ho) 384.18 203.67 P 0.06 (w-) 528.4 203.67 P 0.61 (e) 72 184.67 P 0.61 (v) 76.61 184.67 P 0.61 (er) 81.94 184.67 P 0.61 (, it is interesting to note that while the non-linear function impro) 90.05 184.67 P 0.61 (v) 379.49 184.67 P 0.61 (ed the routability of circuits for all) 384.82 184.67 P 1.12 (FPGA architectures, it impro) 72 165.67 P 1.12 (v) 202.92 165.67 P 1.12 (ed routability the most for uniform routing architectures. Apparently it is) 208.26 165.67 P -0.25 (easier for adv) 72 146.67 P -0.25 (anced CAD tools to spread out congested re) 131.09 146.67 P -0.25 (gions than it is to localize them to designated por-) 322.56 146.67 P 1.02 (tions of a chip that ha) 72 127.67 P 1.02 (v) 171.91 127.67 P 1.02 (e e) 177.24 127.67 P 1.02 (xtra routing resources. Consequently) 190.62 127.67 P 1.02 (, we e) 354.89 127.67 P 1.02 (xpect that future adv) 382.73 127.67 P 1.02 (ances in CAD) 476.25 127.67 P 0.34 (tools will tend to slightly increase the adv) 72 108.67 P 0.34 (antages of uniform routing architectures o) 257.78 108.67 P 0.34 (v) 444.16 108.67 P 0.34 (er their non-uniform) 449.49 108.67 P (counterparts.) 72 89.67 T FMENDPAGE %%EndPage: "21" 21 %%Page: "22" 22 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 10 Q 0 X 0 0 0 1 0 0 0 K (22 of 22) 289.33 36.66 T 1 14 Q (Refer) 72 710.67 T (ences) 105.17 710.67 T 0 10 Q ([1]) 72 689.33 T 0.63 (S. D. Bro) 92.16 689.33 P 0.63 (wn, R. J. Francis, J. Rose, and Z. G. Vranesic,) 130.94 689.33 P 2 F 0.63 (F) 324.12 689.33 P 0.63 (ield-Pr) 329.78 689.33 P 0.63 (o) 357.66 689.33 P 0.63 (gr) 362.56 689.33 P 0.63 (ammable Gate Arr) 371.3 689.33 P 0.63 (ays) 447.39 689.33 P 0 F 0.63 (, Kluwer Academic) 460.72 689.33 P (Publishers, 1992.) 92.16 672.33 T ([2]) 72 655.33 T (Xilinx Inc.,) 92.16 655.33 T 2 F (The Pr) 140.49 655.33 T (o) 167.54 655.33 T (gr) 172.44 655.33 T (ammable Lo) 181.18 655.33 T (gic Data Book) 230.8 655.33 T 0 F (, 1994.) 288.57 655.33 T ([3]) 72 638.33 T (Lucent T) 92.16 638.33 T (echnologies,) 127.84 638.33 T 2 F (FPGA Data Book) 180.61 638.33 T 0 F (, 1998.) 251.71 638.33 T ([4]) 72 621.33 T (Actel Inc.,) 92.16 621.33 T 2 F (FPGA Data Book and Design Guide) 136.59 621.33 T 0 F (, 1994.) 282.96 621.33 T ([5]) 72 604.33 T (Altera Inc.,) 92.16 604.33 T 2 F (Data Book) 139.92 604.33 T 0 F (, 1998) 182.97 604.33 T (.) 207.97 604.33 T ([6]) 72 587.33 T 0.06 (B. K. Britton, et al., \322Second Generation ORCA Architecture Utilizing 0.5) 92.16 587.33 P 3 F 0.06 ( m) 391.1 587.33 P 0 F 0.06 (m Process Enhances the Speed and) 399.43 587.33 P (Usable Gate Capacity of FPGAs,) 92.16 570.33 T (\323) 223.94 570.33 T 2 F (IEEE Int. ASIC Conf) 230.88 570.33 T 0 F (., Sept. 1994, pp. 474-478.) 314.21 570.33 T ([7]) 72 553.33 T 0.85 (M. Khalid and J. Rose, \322The Ef) 92.16 553.33 P 0.85 (fect of Fix) 223.36 553.33 P 0.85 (ed I/O Positioning on the Routability and Speed of FPGAs,) 266.57 553.33 P 0.85 (\323) 510.72 553.33 P 2 F 0.85 ( Pr) 515.16 553.33 P 0.85 (oc.) 528.06 553.33 P (Canadian W) 92.16 536.33 T (orkshop on F) 141.52 536.33 T (ield-Pr) 194.4 536.33 T (o) 222.28 536.33 T (gr) 227.18 536.33 T (ammable De) 235.92 536.33 T (vices) 286.59 536.33 T 0 F (, 1995, pp. 94 - 102.) 306.58 536.33 T ([8]) 72 519.33 T 1.03 (D. T) 92.16 519.33 P 1.03 (a) 110.72 519.33 P 1.03 (v) 114.96 519.33 P 1.03 (ana, W) 119.71 519.33 P 1.03 (. Y) 148.13 519.33 P 1.03 (ee, S. Y) 160.38 519.33 P 1.03 (oung, and B. F) 192.99 519.33 P 1.03 (a) 255.09 519.33 P 1.03 (wcett, \322Logic Block and Routing Considerations for a Ne) 259.38 519.33 P 1.03 (w SRAM-) 497.58 519.33 P (Based FPGA Architecture,) 92.16 502.33 T (\323) 198.94 502.33 T 2 F (CICC) 205.88 502.33 T 0 F (, 1995, pp. 24.6.1 - 24.6.4.) 229.22 502.33 T ([9]) 72 485.33 T 0.73 (V) 92.16 485.33 P 0.73 (. Betz and J. Rose, \322Directional Bias and Non-Uniformity in FPGA Global Routing Architectures,) 98.09 485.33 P 0.73 (\323) 499.83 485.33 P 2 F 0.73 (ICCAD) 507.5 485.33 P 0 F 0.73 (,) 537.5 485.33 P (1996, pp. 652 - 659.) 92.16 468.33 T ([10]) 72 451.33 T -0.05 (S. Y) 92.16 451.33 P -0.05 (ang, \322Logic Synthesis and Optimization Benchmarks, V) 108.89 451.33 P -0.05 (ersion 3.0,) 332.49 451.33 P 2 F -0.05 (T) 376.84 451.33 P -0.05 (ec) 381.48 451.33 P -0.05 (h. Report) 390.21 451.33 P 0 F -0.05 (, Microelectronics Centre of) 427.39 451.33 P (North Carolina, 1991.) 92.16 434.33 T ([11]) 72 417.33 T 0.84 (E. M. Sento) 92.16 417.33 P 0.84 (vich et al, \322SIS: A System for Sequential Circuit Analysis,) 141.46 417.33 P 0.84 (\323) 382.45 417.33 P 2 F 0.84 (T) 390.23 417.33 P 0.84 (ec) 394.86 417.33 P 0.84 (h. Report No. UCB/ERL M92/41) 403.6 417.33 P 0 F 0.84 (,) 537.5 417.33 P (Uni) 92.16 400.33 T (v) 106.91 400.33 T (ersity of California, Berk) 111.76 400.33 T (ele) 212.2 400.33 T (y) 223.71 400.33 T (, 1992.) 228.06 400.33 T ([12]) 72 383.33 T 1.97 (J. Cong and Y) 92.16 383.33 P 1.97 (. Ding, \322Flo) 154 383.33 P 1.97 (wMap: An Optimal T) 205.48 383.33 P 1.97 (echnology Mapping Algorithm for Delay Optimization in) 297.63 383.33 P (Lookup-T) 92.16 366.33 T (able Based FPGA Designs,) 131.91 366.33 T (\323) 240.09 366.33 T 2 F (IEEE T) 247.03 366.33 T (r) 276.2 366.33 T (ans. Computer) 279.94 366.33 T (-Aided Design) 338.63 366.33 T 0 F (, Jan. 1994, pp. 1-12.) 396.12 366.33 T ([13]) 72 349.33 T 0.73 (S. Kirkpatrick, C. D. Gelatt, Jr) 92.16 349.33 P 0.73 (., and M. P) 217.46 349.33 P 0.73 (. V) 262.42 349.33 P 0.73 (ecchi, \322Optimization by Simulated Annealing,) 274.26 349.33 P 0.73 (\323) 462.01 349.33 P 2 F 0.73 (Science) 469.67 349.33 P 0 F 0.73 (, May 13,) 500.21 349.33 P (1983, pp. 671 - 680.) 92.16 332.33 T ([14]) 72 315.33 T 0.86 (J. Lam and J. Delosme, \322Performance of a New Annealing Schedule,\323) 92.16 315.33 P 2 F 0.86 (ACM Design Automation Conference) 385.2 315.33 P 0 F 0.86 (,) 537.5 315.33 P (1988, pp. 306 - 311) 92.16 298.33 T (.) 170.49 298.33 T ([15]) 72 281.33 T -0.11 (W) 92.16 281.33 P -0.11 (. Sw) 100.68 281.33 P -0.11 (artz and C. Sechen, \322Ne) 118.25 281.33 P -0.11 (w Algorithms for the Placement and Routing of Macros Cells,) 213.66 281.33 P -0.11 (\323) 460.88 281.33 P 2 F -0.11 (ICCAD) 467.71 281.33 P 0 F -0.11 (, 1990, pp.) 497.71 281.33 P (336 - 339.) 92.16 264.33 T ([16]) 72 247.33 T 0.18 (C. E. Cheng, \322RISA: Accurate and Ef) 92.16 247.33 P 0.18 (\336cient Placement Routability Modeling,) 244.36 247.33 P 0.18 (\323) 404.77 247.33 P 2 F 0.18 (A) 411.89 247.33 P 0.18 (CM Design A) 417.7 247.33 P 0.18 (utomation Conf) 472.31 247.33 P 0 F 0.18 (.,) 535 247.33 P (1994, pp. 690 - 695.) 92.16 230.33 T ([17]) 72 213.33 T 0.41 (C. Ebeling, L. McMurchie, S. A. Hauck and S. Burns, \322Placement and Routing T) 92.16 213.33 P 0.41 (ools for the T) 421.92 213.33 P 0.41 (riptych FPGA,) 476.96 213.33 P 0.41 (\323) 535.56 213.33 P 2 F (IEEE T) 92.16 196.33 T (r) 121.33 196.33 T (ans. on VLSI) 125.07 196.33 T 0 F (, Dec. 1995, pp. 473 - 482.) 176.46 196.33 T ([18]) 72 179.33 T -0.25 (C. Y) 92.16 179.33 P -0.25 (. Lee, \322) 109.51 179.33 P -0.25 (An Algorithm for P) 137.64 179.33 P -0.25 (ath Connections and its Applications,) 215.36 179.33 P -0.25 (\323) 363.38 179.33 P 2 F -0.25 (IRE T) 370.07 179.33 P -0.25 (r) 392.89 179.33 P -0.25 (ans. Electr) 396.62 179.33 P -0.25 (on. Comput.) 439.26 179.33 P 0 F -0.25 (, V) 488.18 179.33 P -0.25 (ol. EC-10,) 498.86 179.33 P (1961, pp. 346 - 365.) 92.16 162.33 T ([19]) 72 145.33 T 0.53 (V) 92.16 145.33 P 0.53 (. Betz and J. Rose, \322On Biased and Non-uniform Global Routing Architectures and CAD T) 98.09 145.33 P 0.53 (ools for FPGAs,) 469.92 145.33 P 0.53 (\323) 535.56 145.33 P (CSRI T) 92.16 128.33 T (echnical Report #358, Uni) 122.3 128.33 T (v) 227.59 128.33 T (ersity of T) 232.44 128.33 T (oronto, 1996.) 273.3 128.33 T ([20]) 72 111.33 T (M. Feuer) 92.16 111.33 T (, \322Connecti) 128.42 111.33 T (vity of Random Logic,) 173.72 111.33 T (\323) 264.13 111.33 T 2 F (IEEE T) 271.07 111.33 T (r) 300.24 111.33 T (ans. on Computer) 303.98 111.33 T (s) 375.27 111.33 T 0 F (, Jan. 1982, pp. 29 - 33.) 379.16 111.33 T FMENDPAGE %%EndPage: "22" 22 %%Trailer %%BoundingBox: 0 0 612 792 %%PageOrder: Ascend %%Pages: 22 %%DocumentFonts: Times-Roman %%+ Times-Bold %%+ Times-Italic %%+ Symbol %%EOF