1 <?xml version="1.0" standalone="no"?>
3 <xsl:stylesheet version="1.0"
4 xmlns:svg="http://www.w3.org/2000/svg"
5 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
6 xmlns:exsl="http://exslt.org/common"
7 xmlns:xlink="http://www.w3.org/1999/xlink">
9 <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"
10 doctype-public="-//W3C//DTD SVG 1.0//EN"
11 doctype-system="http://www.w3.org/TR/SVG/DTD/svg10.dtd"/>
15 ===========================================================
16 Handle Bucket connections to the shared busses.
17 ===========================================================
20 <xsl:template name="BCLaneSpace_BucketToSharedBus">
22 <xsl:param name="iBusStd" select="'NONE'"/>
23 <xsl:param name="iBusName" select="'NONE'"/>
24 <xsl:param name="iBifRank" select="'NONE'"/>
25 <xsl:param name="iStackToEast" select="'NONE'"/>
26 <xsl:param name="iStackToWest" select="'NONE'"/>
27 <xsl:param name="iStackToEast_W" select="0"/>
28 <xsl:param name="iStackToWest_W" select="0"/>
29 <xsl:param name="iLaneInSpace_X" select="0"/>
30 <xsl:param name="iSpaceSharedBus_Y" select="0"/>
33 <xsl:message>Stack To East <xsl:value-of select="$iStackToEast"/></xsl:message>
34 <xsl:message>Stack to West <xsl:value-of select="$iStackToWest"/></xsl:message>
35 <xsl:message>Stack to East Width <xsl:value-of select="$iStackToEast_W"/></xsl:message>
36 <xsl:message>Stack to West Width <xsl:value-of select="$iStackToWest_W"/></xsl:message>
37 <xsl:message>Shared Bus Y <xsl:value-of select="$iSpaceSharedBus_Y"/></xsl:message>
38 <xsl:message>Lane in space X <xsl:value-of select="$iLaneInSpace_X"/></xsl:message>
41 <xsl:variable name="busColor_">
42 <xsl:call-template name="BusType2Color">
43 <xsl:with-param name="iBusType" select="$iBusStd"/>
47 <xsl:variable name="sbs_idx_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE= $iBusName)]/@BUSINDEX"/>
48 <xsl:variable name="sbs_name_" select="/EDKSYSTEM/BLKDSHAPES/SBSBUCKETS/SBSBUCKET[(@BUSINDEX = $sbs_idx_)]/@BUSNAME"/>
50 <xsl:variable name="sbs_bc_y_" select="($iSpaceSharedBus_Y + ($sbs_idx_ * $BLKD_SBS_LANE_H))"/>
52 <xsl:variable name="bktshp_hori_idx_" select="/EDKSYSTEM/BLKDSHAPES/SBSBUCKETS/SBSBUCKET[(@BUSINDEX = $sbs_idx_)]/@STACK_HORIZ_INDEX"/>
53 <xsl:variable name="bktshp_vert_idx_" select="/EDKSYSTEM/BLKDSHAPES/SBSBUCKETS/SBSBUCKET[(@BUSINDEX = $sbs_idx_)]/@SHAPE_VERTI_INDEX"/>
55 <xsl:variable name="space_W_">
56 <xsl:call-template name="_calc_Space_Width">
57 <xsl:with-param name="iStackToEast" select="$iStackToEast"/>
58 <xsl:with-param name="iStackToWest" select="$iStackToWest"/>
62 <xsl:variable name ="extSpaceWest_W_" select="ceiling($iStackToWest_W div 2)"/>
63 <xsl:variable name ="extSpaceEast_W_" select="ceiling($iStackToEast_W div 2)"/>
66 <xsl:message>Ext Shape to West <xsl:value-of select="$extSpaceWest_W_"/></xsl:message>
67 <xsl:message>Ext Shape to East <xsl:value-of select="$extSpaceEast_W_"/></xsl:message>
69 <xsl:variable name="bktshp_Y_">
70 <xsl:call-template name="_calc_Stack_Shape_Y">
71 <xsl:with-param name="iHorizIdx" select="$bktshp_hori_idx_"/>
72 <xsl:with-param name="iVertiIdx" select="$bktshp_vert_idx_"/>
76 <xsl:variable name="sbsStack_H_diff_">
78 <xsl:when test=" (($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">0</xsl:when>
79 <xsl:when test="not(($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">
81 <xsl:variable name="stackToWest_AbvSbs_H_">
82 <xsl:call-template name="_calc_Stack_AbvSbs_Height">
83 <xsl:with-param name="iStackIdx" select="$iStackToWest"/>
87 <xsl:variable name="stackToEast_AbvSbs_H_">
88 <xsl:call-template name="_calc_Stack_AbvSbs_Height">
89 <xsl:with-param name="iStackIdx" select="$iStackToEast"/>
94 <xsl:message>stack to west H <xsl:value-of select="$stackToWest_AbvSbs_H_"/></xsl:message>
95 <xsl:message>stack to east H <xsl:value-of select="$stackToEast_AbvSbs_H_"/></xsl:message>
97 <xsl:if test="($stackToWest_AbvSbs_H_ > $stackToEast_AbvSbs_H_)">
98 <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
101 <xsl:if test="not($stackToWest_AbvSbs_H_ > $stackToEast_AbvSbs_H_)">0</xsl:if>
106 <xsl:variable name="vert_line_x_" select="($iLaneInSpace_X + ceiling($BLKD_BIFC_W div 2))"/>
107 <xsl:variable name="vert_line_y1_" select="($iSpaceSharedBus_Y + ($sbs_idx_ * $BLKD_SBS_LANE_H) + ceiling($BLKD_BIFC_W div 2))"/>
108 <xsl:variable name="vert_line_y2_" select="($bktshp_Y_ + ceiling($BLKD_MOD_W div 2) + $sbsStack_H_diff_)"/>
109 <xsl:variable name="bcInSpace_X_" select="($iLaneInSpace_X + ceiling($BLKD_BIFC_W div 2) - ceiling($BLKD_BUS_ARROW_W div 2))"/>
113 <xsl:message>Shared Bus Y <xsl:value-of select="$G_SharedBus_Y"/></xsl:message>
114 <xsl:message>Vert Bus Y <xsl:value-of select="$vert_line_y1_"/></xsl:message>
115 <xsl:message>vert y1 <xsl:value-of select="$vert_line_y1_"/></xsl:message>
116 <xsl:message>vert y2 <xsl:value-of select="$vert_line_y2_"/></xsl:message>
119 <xsl:variable name="horz_line_y_" select="$vert_line_y2_"/>
120 <xsl:variable name="horz_line_x1_" select="$vert_line_x_"/>
121 <xsl:variable name="horz_line_x2_" select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_)"/>
123 <xsl:variable name="v_bus_ul_x_" select="$vert_line_x_"/>
124 <xsl:variable name="v_bus_ul_y_" select="$vert_line_y1_"/>
125 <xsl:variable name="v_bus_width_" select="$BLKD_P2P_BUS_W"/>
127 <xsl:variable name="v_bus_height_" select="(($vert_line_y2_ - $vert_line_y1_) - ceiling($BLKD_BIFC_H div 2))"/>
129 <xsl:variable name="h_bus_ul_x_" select="$v_bus_ul_x_"/>
130 <xsl:variable name="h_bus_ul_y_" select="$vert_line_y2_ - $BLKD_BIFC_H + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_P2P_BUS_W div 2)"/>
131 <xsl:variable name="h_bus_width_" select="ceiling($space_W_ div 2) + $extSpaceEast_W_"/>
132 <xsl:variable name="h_bus_height_" select="$BLKD_P2P_BUS_W"/>
135 <xsl:variable name="h_bus_width_" select="($space_W_ + ceiling(($extSpaceWest_W_ + $extSpaceEast_W_) div 2) - $BLKD_BIFC_W)"/>
136 <xsl:message>v bus x <xsl:value-of select="$v_bus_ul_x_"/></xsl:message>
137 <xsl:message>v bus y <xsl:value-of select="$v_bus_ul_y_"/></xsl:message>
138 <xsl:message>v bus w <xsl:value-of select="$v_bus_width_"/></xsl:message>
139 <xsl:message>v bus y1 <xsl:value-of select="$vert_line_y1_"/></xsl:message>
140 <xsl:message>v bus y2 <xsl:value-of select="$vert_line_y2_"/></xsl:message>
141 <xsl:message>v bus h <xsl:value-of select="$v_bus_height_"/></xsl:message>
142 <xsl:message>h bus w <xsl:value-of select="$h_bus_width_"/></xsl:message>
146 <!-- Draw rectangular parts of the bus -->
147 <rect x="{$v_bus_ul_x_}"
148 y="{$v_bus_ul_y_ - 2}"
149 width= "{$v_bus_width_}"
150 height="{$v_bus_height_}"
151 style="stroke:none; fill:{$busColor_}"/>
153 <rect x="{$h_bus_ul_x_}"
154 y="{$h_bus_ul_y_ - 5}"
155 width= "{$h_bus_width_}"
156 height="{$h_bus_height_}"
157 style="stroke:none; fill:{$busColor_}"/>
164 ===========================================================
165 Handle Processor's Shared bus connections.
166 ===========================================================
169 <xsl:template name="BCLaneSpace_ProcBifToSharedBus">
171 <xsl:param name="iBusStd" select="'NONE'"/>
172 <xsl:param name="iBusName" select="'NONE'"/>
173 <xsl:param name="iBifRank" select="'NONE'"/>
174 <xsl:param name="iStackToEast" select="'NONE'"/>
175 <xsl:param name="iStackToWest" select="'NONE'"/>
176 <xsl:param name="iStackToEast_W" select="0"/>
177 <xsl:param name="iStackToWest_W" select="0"/>
178 <xsl:param name="iLaneInSpace_X" select="0"/>
179 <xsl:param name="iSpaceSharedBus_Y" select="0"/>
182 <xsl:message>Proc diff <xsl:value-of select="$procStack_H_diff_"/></xsl:message>
183 <xsl:message>Proc inst <xsl:value-of select="$procInst_"/></xsl:message>
184 <xsl:message>Proc Bif Name <xsl:value-of select="$procBifName_"/></xsl:message>
185 <xsl:message>Proc Bif Rank <xsl:value-of select="$procBifRank_"/></xsl:message>
188 <xsl:variable name="busColor_">
189 <xsl:call-template name="BusType2Color">
190 <xsl:with-param name="iBusType" select="$iBusStd"/>
194 <xsl:variable name="sbs_idx_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE= $iBusName)]/@BUSINDEX"/>
195 <xsl:variable name="sbs_bc_y_" select="($iSpaceSharedBus_Y + ($sbs_idx_ * $BLKD_SBS_LANE_H))"/>
196 <xsl:variable name="procInst_" select="BUSCONN/@INSTANCE"/>
200 <xsl:message>Shared Bus Idx <xsl:value-of select="$sbs_idx_"/></xsl:message>
201 <xsl:message>Proc inst <xsl:value-of select="$procInst_"/></xsl:message>
204 <xsl:variable name="procBif_Y_" select="((($BLKD_BIF_H + $BLKD_MOD_BIF_GAP_V) * BUSCONN/@BIF_Y) + ($BLKD_MOD_LANE_H + $BLKD_MOD_LABEL_H + $BLKD_MOD_BIF_GAP_V))"/>
205 <xsl:variable name="procBifName_" select="BUSCONN/@BUSINTERFACE"/>
206 <xsl:variable name="procBifSide_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $procInst_)]/BUSINTERFACE[(@NAME = $procBifName_)]/@BIF_X"/>
207 <xsl:variable name="procBifRank_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $procInst_)]/BUSINTERFACE[(@NAME = $procBifName_)]/@BIFRANK"/>
209 <xsl:variable name="procshp_hori_idx_" select="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $procInst_)]/@STACK_HORIZ_INDEX"/>
210 <xsl:variable name="procshp_vert_idx_" select="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $procInst_)]/@SHAPE_VERTI_INDEX"/>
212 <xsl:variable name="space_W_">
213 <xsl:call-template name="_calc_Space_Width">
214 <xsl:with-param name="iStackToEast" select="$iStackToEast"/>
215 <xsl:with-param name="iStackToWest" select="$iStackToWest"/>
219 <xsl:variable name ="extSpaceWest_W_" select="ceiling($iStackToWest_W div 2)"/>
220 <xsl:variable name ="extSpaceEast_W_" select="ceiling($iStackToEast_W div 2)"/>
224 <xsl:message>Stack horiz <xsl:value-of select="$procshp_hori_idx_"/></xsl:message>
225 <xsl:message>Stack verti <xsl:value-of select="$procshp_vert_idx_"/></xsl:message>
226 <xsl:message>Proc Bif Y <xsl:value-of select="$procBif_Y_"/></xsl:message>
229 <xsl:variable name="procshp_Y_">
230 <xsl:call-template name="_calc_Stack_Shape_Y">
231 <xsl:with-param name="iHorizIdx" select="$procshp_hori_idx_"/>
232 <xsl:with-param name="iVertiIdx" select="$procshp_vert_idx_"/>
237 <xsl:variable name="procStack_H_diff_">
239 <xsl:when test=" (($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">0</xsl:when>
240 <xsl:when test="not(($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">
242 <xsl:variable name="stackToWest_AbvSbs_H_">
243 <xsl:call-template name="_calc_Stack_AbvSbs_Height">
244 <xsl:with-param name="iStackIdx" select="$iStackToWest"/>
248 <xsl:variable name="stackToEast_AbvSbs_H_">
249 <xsl:call-template name="_calc_Stack_AbvSbs_Height">
250 <xsl:with-param name="iStackIdx" select="$iStackToEast"/>
255 <xsl:message>stack to west H <xsl:value-of select="$stackToWest_AbvSbs_H_"/></xsl:message>
256 <xsl:message>stack to east H <xsl:value-of select="$stackToEast_AbvSbs_H_"/></xsl:message>
259 <xsl:when test="(($procshp_hori_idx_ = $iStackToEast) and ($stackToWest_AbvSbs_H_ > $stackToEast_AbvSbs_H_))">
260 <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
262 <xsl:when test="(($procshp_hori_idx_ = $iStackToWest) and ($stackToEast_AbvSbs_H_ > $stackToWest_AbvSbs_H_))">
263 <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
265 <xsl:otherwise>0</xsl:otherwise>
271 <xsl:variable name="bc_Y_" select="($procshp_Y_ + $procBif_Y_ + ceiling($BIF_H div 2) + $procStack_H_diff_) - ceiling($BLKD_BIFC_H div 2)"/>
273 <xsl:variable name="bc_x_" select="($laneInSpace_X + ceiling($BLKD_BIFC_W div 2))"/>
274 <xsl:variable name="bc_x_" select="0"/>
276 <xsl:variable name="bc_X_">
278 <xsl:when test="$procBifSide_ = '0'">
279 <xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_ - (ceiling($BLKD_MOD_W div 2) + $BLKD_BIFC_W))"/>
281 <xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_ - ceiling($BLKD_MOD_W div 2))"/>
282 <xsl:value-of select="($space_W_ - ceiling($BLKD_MOD_W div 2))"/>
285 <xsl:when test="$procBifSide_ = '1'">
286 <xsl:value-of select="ceiling($BLKD_MOD_W div 2)"/>
288 <xsl:otherwise>0</xsl:otherwise>
292 <!-- Place the bus connection -->
293 <use x="{$bc_X_}" y="{$bc_Y_}" xlink:href="#{$iBusStd}_busconn_{$procBifRank_}"/>
296 <xsl:variable name="vert_line_x_" select="($iLaneInSpace_X + ceiling($BLKD_BIFC_W div 2))"/>
297 <xsl:variable name="vert_line_y1_" select="($procshp_Y_ + $procBif_Y_ + ceiling($BLKD_BIF_H div 2) + $procStack_H_diff_)"/>
298 <xsl:variable name="vert_line_y2_" select="($iSpaceSharedBus_Y + ($sbs_idx_ * $BLKD_SBS_LANE_H) + ceiling($BLKD_BIFC_W div 2))"/>
301 <xsl:message>Vert line Y1 <xsl:value-of select="$vert_line_y1_"/></xsl:message>
302 <xsl:message>Vert line Y2 <xsl:value-of select="$vert_line_y2_"/></xsl:message>
305 <xsl:variable name="v_bus_ul_y_">
307 <xsl:when test="$vert_line_y1_ > $vert_line_y2_">
308 <xsl:value-of select="$vert_line_y2_"/>
310 <xsl:when test="$vert_line_y2_ > $vert_line_y1_">
311 <xsl:value-of select="$vert_line_y1_"/>
316 <xsl:variable name="v_bus_ul_x_">
318 <xsl:when test="@ORIENTED='WEST'">
319 <xsl:value-of select="($vert_line_x_ + $BLKD_MOD_BIF_GAP_H)"/>
321 <xsl:when test="@ORIENTED='EAST'">
322 <xsl:value-of select="($vert_line_x_ - $BLKD_MOD_BIF_GAP_H)"/>
328 <xsl:variable name="v_bus_width_" select="$BLKD_P2P_BUS_W"/>
329 <xsl:variable name="v_bus_height_">
331 <xsl:when test="$vert_line_y1_ > $vert_line_y2_">
332 <xsl:value-of select="($vert_line_y1_ - $vert_line_y2_) - $BLKD_P2P_BUS_W"/>
334 <xsl:when test="$vert_line_y2_ > $vert_line_y1_">
335 <xsl:value-of select="($vert_line_y2_ - $vert_line_y1_) - $BLKD_P2P_BUS_W"/>
340 <xsl:variable name="h_bus_ul_x_">
342 <xsl:when test="@ORIENTED='WEST'">
343 <xsl:value-of select="($bc_X_ + $BLKD_BIFC_W - ceiling(($BLKD_BIFC_W - $BLKD_BIFC_Wi) div 2))"/>
345 <xsl:value-of select="$v_bus_ul_x_"/>
348 <xsl:when test="@ORIENTED='EAST'">
349 <xsl:value-of select="$v_bus_ul_x_"/>
354 <xsl:variable name="h_bus_ul_y_">
356 <xsl:when test="$vert_line_y1_ > $vert_line_y2_">
357 <xsl:value-of select="$vert_line_y2_ - ceiling($BLKD_P2P_BUS_W div 2)"/>
359 <xsl:when test="$vert_line_y2_ > $vert_line_y1_">
360 <xsl:value-of select="$vert_line_y1_ - ceiling($BLKD_P2P_BUS_W div 2)"/>
366 <xsl:variable name="h_bus_height_" select="$BLKD_P2P_BUS_W"/>
367 <xsl:variable name="h_bus_width_">
369 <xsl:when test="@ORIENTED='WEST'">
370 <xsl:value-of select="$v_bus_ul_x_ - $h_bus_ul_x_ + $BLKD_P2P_BUS_W"/>
372 <xsl:when test="@ORIENTED='EAST'">
373 <xsl:value-of select="($bc_X_ - $v_bus_ul_x_) + ceiling(($BLKD_BIFC_W - $BLKD_BIFC_Wi) div 2) + 1"/>
379 <xsl:if test="(@ORIENTED = 'WEST')">
382 <xsl:message>bc_X_ <xsl:value-of select="$bc_X_"/></xsl:message>
383 <xsl:message>v_bus_ul_x <xsl:value-of select="$v_bus_ul_x_"/></xsl:message>
384 <xsl:message>h_bus_width <xsl:value-of select="$h_bus_width_"/></xsl:message>
385 <xsl:message>h_bus_ul_y <xsl:value-of select="$h_bus_ul_y_"/></xsl:message>
388 <rect x="{$v_bus_ul_x_}"
389 y="{$v_bus_ul_y_ + 2}"
390 width= "{$v_bus_width_}"
391 height="{$v_bus_height_}"
392 style="stroke:none; fill:{$busColor_}"/>
394 <rect x="{$h_bus_ul_x_}"
396 width= "{$h_bus_width_}"
397 height="{$h_bus_height_}"
398 style="stroke:none; fill:{$busColor_}"/>
401 <xsl:message>Proc diff <xsl:value-of select="$procStack_H_diff_"/></xsl:message>
402 <xsl:message>Proc inst <xsl:value-of select="$procInst_"/></xsl:message>
403 <xsl:message>Proc Bif Name <xsl:value-of select="$procBifName_"/></xsl:message>
404 <xsl:message>Proc Bif Rank <xsl:value-of select="$procBifRank_"/></xsl:message>
411 ===========================================================
412 Handle non Processor Sharedebus connections.
413 ===========================================================
416 <xsl:template name="BCLaneSpace_NonProcBifToSharedBus">
418 <xsl:param name="iBusStd" select="'NONE'"/>
419 <xsl:param name="iBusName" select="'NONE'"/>
420 <xsl:param name="iBifRank" select="'NONE'"/>
421 <xsl:param name="iStackToEast" select="'NONE'"/>
422 <xsl:param name="iStackToWest" select="'NONE'"/>
423 <xsl:param name="iStackToEast_W" select="0"/>
424 <xsl:param name="iStackToWest_W" select="0"/>
425 <xsl:param name="iLaneInSpace_X" select="0"/>
426 <xsl:param name="iSpaceSharedBus_Y" select="0"/>
429 <xsl:variable name="sbs_idx_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE= $iBusName)]/@BUSINDEX"/>
430 <xsl:variable name="sbs_bc_y_" select="($iSpaceSharedBus_Y + ($sbs_idx_ * $BLKD_SBS_LANE_H))"/>
432 <xsl:variable name="sbs_bc_y_" select="($G_SharedBus_Y + ($sbs_idx_ * $BLKD_SBS_LANE_H))"/>
435 <xsl:variable name="cmplxInst_" select="BUSCONN/@INSTANCE"/>
437 <xsl:variable name="cmplxBif_Y_" select="((($BLKD_BIF_H + $BLKD_MOD_BIF_GAP_V) * BUSCONN/@BIF_Y) + ($BLKD_MOD_LANE_H + $BLKD_MOD_LABEL_H + $BLKD_MOD_BIF_GAP_V))"/>
438 <xsl:variable name="cmplxBifName_" select="BUSCONN/@BUSINTERFACE"/>
439 <xsl:variable name="cmplxBifSide_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $cmplxInst_)]/BUSINTERFACE[(@NAME = $cmplxBifName_)]/@BIF_X"/>
440 <xsl:variable name="cmplxBifRank_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $cmplxInst_)]/BUSINTERFACE[(@NAME = $cmplxBifName_)]/@BIFRANK"/>
442 <xsl:variable name="cmplxshp_hori_idx_" select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $cmplxInst_)])]/@STACK_HORIZ_INDEX"/>
443 <xsl:variable name="cmplxshp_vert_idx_" select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $cmplxInst_)])]/@SHAPE_VERTI_INDEX"/>
445 <xsl:variable name="is_abvSbs_" select="(/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[MODULE[(@INSTANCE = $cmplxInst_)]]/@IS_ABVSBS)"/>
446 <xsl:variable name="is_blwSbs_" select="(/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[MODULE[(@INSTANCE = $cmplxInst_)]]/@IS_BLWSBS)"/>
450 <xsl:message>iStackToEast <xsl:value-of select="$iStackToEast"/></xsl:message>
451 <xsl:message>iStackToWest <xsl:value-of select="$iStackToWest"/></xsl:message>
452 <xsl:message><xsl:value-of select="$cmplxInst_"/> : <xsl:value-of select="$is_blwSbs_"/></xsl:message>
453 <xsl:message><xsl:value-of select="$cmplxInst_"/> : <xsl:value-of select="$is_abvSbs_"/></xsl:message>
454 <xsl:message><xsl:value-of select="$cmplxInst_"/> : <xsl:value-of select="$is_blwSbs_"/></xsl:message>
455 <xsl:message><xsl:value-of select="$cmplxInst_"/> : <xsl:value-of select="$is_abvSbs_"/></xsl:message>
456 <xsl:message>Stack horiz <xsl:value-of select="$cmplxshp_hori_idx_"/></xsl:message>
457 <xsl:message>Stack verti <xsl:value-of select="$cmplxshp_vert_idx_"/></xsl:message>
458 <xsl:message>Proc Bif Y <xsl:value-of select="$procBif_Y_"/></xsl:message>
462 <xsl:variable name="busColor_">
463 <xsl:call-template name="BusType2Color">
464 <xsl:with-param name="iBusType" select="$iBusStd"/>
468 <xsl:variable name="space_W_">
469 <xsl:call-template name="_calc_Space_Width">
470 <xsl:with-param name="iStackToEast" select="$iStackToEast"/>
471 <xsl:with-param name="iStackToWest" select="$iStackToWest"/>
475 <xsl:variable name ="extSpaceWest_W_" select="ceiling($iStackToWest_W div 2)"/>
476 <xsl:variable name ="extSpaceEast_W_" select="ceiling($iStackToEast_W div 2)"/>
478 <xsl:variable name="cmplxshp_Y_">
479 <xsl:call-template name="_calc_Stack_Shape_Y">
480 <xsl:with-param name="iHorizIdx" select="$cmplxshp_hori_idx_"/>
481 <xsl:with-param name="iVertiIdx" select="$cmplxshp_vert_idx_"/>
486 <xsl:message>Complex shape Y <xsl:value-of select="$cmplxshp_Y_"/></xsl:message>
489 <xsl:variable name="stackToEast_">
491 <xsl:when test="not($iStackToEast = 'NONE')"><xsl:value-of select="$iStackToEast"/></xsl:when>
492 <xsl:otherwise>NONE</xsl:otherwise>
496 <xsl:variable name="stackToWest_">
498 <xsl:when test=" not($iStackToWest = 'NONE')"><xsl:value-of select="$iStackToWest"/></xsl:when>
499 <xsl:when test="(not($iStackToEast = 'NONE') and not($iStackToEast = '0'))"><xsl:value-of select="($iStackToEast - 1)"/></xsl:when>
500 <xsl:otherwise>NONE</xsl:otherwise>
505 <xsl:variable name="cmplxStack_H_diff_">
507 <xsl:when test=" (($stackToEast_ = 'NONE') or ($stackToWest_ = 'NONE'))">0</xsl:when>
508 <xsl:when test="not(($stackToEast_ = 'NONE') or ($stackToWest_ = 'NONE'))">
510 <xsl:variable name="stackToWest_AbvSbs_H_">
511 <xsl:call-template name="_calc_Stack_AbvSbs_Height">
512 <xsl:with-param name="iStackIdx" select="$stackToWest_"/>
516 <xsl:variable name="stackToEast_AbvSbs_H_">
517 <xsl:call-template name="_calc_Stack_AbvSbs_Height">
518 <xsl:with-param name="iStackIdx" select="$stackToEast_"/>
523 <xsl:message>stack to west H <xsl:value-of select="$stackToWest_AbvSbs_H_"/></xsl:message>
524 <xsl:message>stack to east H <xsl:value-of select="$stackToEast_AbvSbs_H_"/></xsl:message>
527 <xsl:when test="(($cmplxshp_hori_idx_ = $stackToEast_) and ($stackToWest_AbvSbs_H_ > $stackToEast_AbvSbs_H_))">
528 <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
530 <xsl:when test="(($cmplxshp_hori_idx_ = $stackToWest_) and ($stackToEast_AbvSbs_H_ > $stackToWest_AbvSbs_H_))">
531 <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
533 <xsl:otherwise>0</xsl:otherwise>
541 <xsl:variable name="bc_Y_" select="($cmplxshp_Y_ + $cmplxBif_Y_ + ceiling($BIF_H div 2) + $cmplxStack_H_diff_) - ceiling($BLKD_BIFC_H div 2)"/>
545 <xsl:message>Sstack H Diff <xsl:value-of select="$cmplxStack_H_diff_"/></xsl:message>
546 <xsl:message>BC Y <xsl:value-of select="$bc_Y_"/></xsl:message>
547 <xsl:variable name="bc_x_" select="($laneInSpace_X + ceiling($BLKD_BIFC_W div 2))"/>
548 <xsl:variable name="bc_x_" select="0"/>
550 <xsl:variable name="bc_X_">
552 <xsl:when test="$cmplxBifSide_ = '0'">
553 <xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_ - (ceiling($BLKD_MOD_W div 2) + $BLKD_BIFC_W))"/>
555 <xsl:when test="$cmplxBifSide_ = '1'">
556 <xsl:value-of select="ceiling($BLKD_MOD_W div 2)"/>
558 <xsl:otherwise>0</xsl:otherwise>
562 <use x="{$bc_X_}" y="{$bc_Y_}" xlink:href="#{$iBusStd}_busconn_{$cmplxBifRank_}"/>
565 <xsl:message>Bif Rank <xsl:value-of select="$cmplxBifRank_"/></xsl:message>
567 <xsl:variable name="vert_line_x_" select="($iLaneInSpace_X + ceiling($BLKD_BIFC_W div 2))"/>
568 <xsl:variable name="vert_line_y1_" select="($cmplxshp_Y_ + $cmplxBif_Y_ + ceiling($BLKD_BIF_H div 2) + $cmplxStack_H_diff_)"/>
569 <xsl:variable name="vert_line_y2_" select="($iSpaceSharedBus_Y + ($sbs_idx_ * $BLKD_SBS_LANE_H) + ceiling($BLKD_BIFC_W div 2))"/>
571 <xsl:variable name="vert_line_y2_" select="($G_SharedBus_Y + ($sbs_idx_ * $BLKD_SBS_LANE_H) + ceiling($BLKD_BIFC_W div 2))"/>
574 <xsl:variable name="v_bus_ul_y_">
576 <xsl:when test="$vert_line_y1_ > $vert_line_y2_">
577 <xsl:value-of select="$vert_line_y2_"/>
579 <xsl:when test="$vert_line_y2_ > $vert_line_y1_">
580 <xsl:value-of select="$vert_line_y1_"/>
585 <xsl:variable name="v_bus_ul_x_">
587 <xsl:when test="@ORIENTED='WEST'">
588 <xsl:value-of select="($vert_line_x_ + $BLKD_MOD_BIF_GAP_H)"/>
590 <xsl:when test="@ORIENTED='EAST'">
591 <xsl:value-of select="($vert_line_x_ - $BLKD_MOD_BIF_GAP_H)"/>
596 <xsl:variable name="v_bus_width_" select="$BLKD_P2P_BUS_W"/>
597 <xsl:variable name="v_bus_height_">
599 <xsl:when test="$vert_line_y1_ > $vert_line_y2_">
600 <xsl:value-of select="($vert_line_y1_ - $vert_line_y2_) - $BLKD_P2P_BUS_W + 8"/>
602 <xsl:when test="$vert_line_y2_ > $vert_line_y1_">
603 <xsl:value-of select="($vert_line_y2_ - $vert_line_y1_) - $BLKD_P2P_BUS_W + 8"/>
608 <xsl:variable name="h_bus_ul_x_">
610 <xsl:when test="@ORIENTED='WEST'">
611 <xsl:value-of select="($bc_X_ + $BLKD_BIFC_W - ceiling(($BLKD_BIFC_W - $BLKD_BIFC_Wi) div 2))"/>
613 <xsl:when test="@ORIENTED='EAST'">
614 <xsl:value-of select="$v_bus_ul_x_"/>
619 <xsl:variable name="h_bus_ul_y_">
622 <xsl:when test="($is_blwSbs_ = 'TRUE') and ($vert_line_y1_ > $vert_line_y2_)">
623 <xsl:value-of select="$vert_line_y1_ - ceiling($BLKD_P2P_BUS_W div 2)"/>
625 <xsl:when test="($is_blwSbs_ = 'TRUE') and ($vert_line_y2_ > $vert_line_y1_)">
626 <xsl:value-of select="$vert_line_y2_ - ceiling($BLKD_P2P_BUS_W div 2)"/>
629 <xsl:when test="($is_abvSbs_ = 'TRUE') and ($vert_line_y1_ > $vert_line_y2_)">
630 <xsl:value-of select="$vert_line_y2_ - ceiling($BLKD_P2P_BUS_W div 2)"/>
632 <xsl:when test="($is_abvSbs_ = 'TRUE') and ($vert_line_y2_ > $vert_line_y1_)">
633 <xsl:value-of select="$vert_line_y1_ - ceiling($BLKD_P2P_BUS_W div 2)"/>
640 <xsl:variable name="h_bus_height_" select="$BLKD_P2P_BUS_W"/>
641 <xsl:variable name="h_bus_width_">
643 <xsl:when test="@ORIENTED='WEST'">
644 <xsl:value-of select="$v_bus_ul_x_ - $h_bus_ul_x_ + $BLKD_P2P_BUS_W"/>
646 <xsl:when test="@ORIENTED='EAST'">
647 <xsl:value-of select="($bc_X_ - $v_bus_ul_x_) + ceiling(($BLKD_BIFC_W - $BLKD_BIFC_Wi) div 2) + 1"/>
653 <rect x="{$v_bus_ul_x_}"
654 y="{$v_bus_ul_y_ - 2}"
655 width= "{$v_bus_width_}"
656 height="{$v_bus_height_}"
657 style="stroke:none; fill:{$busColor_}"/>
659 <rect x="{$h_bus_ul_x_}"
661 width= "{$h_bus_width_}"
662 height="{$h_bus_height_}"
663 style="stroke:none; fill:{$busColor_}"/>
668 ===========================================================
669 Handle connections from processors to Memory UNITs
670 ===========================================================
673 <xsl:template name="BCLaneSpace_ProcBifToMemoryUnit">
675 <xsl:param name="iBusStd" select="'NONE'"/>
676 <xsl:param name="iBusName" select="'NONE'"/>
677 <xsl:param name="iBifRank" select="'NONE'"/>
678 <xsl:param name="iStackToEast" select="'NONE'"/>
679 <xsl:param name="iStackToWest" select="'NONE'"/>
680 <xsl:param name="iStackToEast_W" select="0"/>
681 <xsl:param name="iStackToWest_W" select="0"/>
682 <xsl:param name="iLaneInSpace_X" select="0"/>
686 <xsl:message>Stack To East <xsl:value-of select="$iStackToEast"/></xsl:message>
687 <xsl:message>Stack to West <xsl:value-of select="$iStackToWest"/></xsl:message>
688 <xsl:message>Stack to East Width <xsl:value-of select="$iStackToEast_W"/></xsl:message>
689 <xsl:message>Stack to West Width <xsl:value-of select="$iStackToWest_W"/></xsl:message>
690 <xsl:message>Shared Bus Y <xsl:value-of select="$iSpaceSharedBus_Y"/></xsl:message>
691 <xsl:message>Lane in space X <xsl:value-of select="$iLaneInSpace_X"/></xsl:message>
692 <xsl:variable name="bcInSpace_X_" select="($laneInSpace_X + ceiling($BLKD_BIFC_W div 2) - ceiling($BLKD_BUS_ARROW_W div 2))"/>
697 <xsl:variable name="bcInSpace_X_" select="$iLaneInSpace_X"/>
698 <xsl:variable name="procInstance_" select="BUSCONN[@IS_PROCCONN]/@INSTANCE"/>
699 <xsl:variable name="mem_procshp_hori_idx_" select="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $procInstance_)]/@STACK_HORIZ_INDEX"/>
700 <xsl:variable name="mem_procshp_vert_idx_" select="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $procInstance_)]/@SHAPE_VERTI_INDEX"/>
702 <xsl:variable name="mem_procshp_Y_">
703 <xsl:call-template name="_calc_Stack_Shape_Y">
704 <xsl:with-param name="iHorizIdx" select="$mem_procshp_hori_idx_"/>
705 <xsl:with-param name="iVertiIdx" select="$mem_procshp_vert_idx_"/>
709 <xsl:variable name="busColor_">
710 <xsl:call-template name="BusType2Color">
711 <xsl:with-param name="iBusType" select="$iBusStd"/>
715 <xsl:variable name="space_W_">
716 <xsl:call-template name="_calc_Space_Width">
717 <xsl:with-param name="iStackToEast" select="$iStackToEast"/>
718 <xsl:with-param name="iStackToWest" select="$iStackToWest"/>
722 <xsl:variable name ="extSpaceWest_W_" select="ceiling($iStackToWest_W div 2)"/>
723 <xsl:variable name ="extSpaceEast_W_" select="ceiling($iStackToEast_W div 2)"/>
725 <xsl:variable name="cmplxStack_H_diff_">
727 <xsl:when test=" (($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">0</xsl:when>
728 <xsl:when test="not(($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">
730 <xsl:variable name="stackToWest_AbvSbs_H_">
731 <xsl:call-template name="_calc_Stack_AbvSbs_Height">
732 <xsl:with-param name="iStackIdx" select="$iStackToWest"/>
736 <xsl:variable name="stackToEast_AbvSbs_H_">
737 <xsl:call-template name="_calc_Stack_AbvSbs_Height">
738 <xsl:with-param name="iStackIdx" select="$iStackToEast"/>
743 <xsl:message>stack to west H <xsl:value-of select="$stackToWest_AbvSbs_H_"/></xsl:message>
744 <xsl:message>stack to east H <xsl:value-of select="$stackToEast_AbvSbs_H_"/></xsl:message>
747 <xsl:when test="(($mem_procshp_hori_idx_ = $iStackToEast) and ($stackToWest_AbvSbs_H_ > $stackToEast_AbvSbs_H_))">
748 <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
750 <xsl:when test="(($mem_procshp_hori_idx_ = $iStackToWest) and ($stackToEast_AbvSbs_H_ > $stackToWest_AbvSbs_H_))">
751 <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
753 <xsl:otherwise>0</xsl:otherwise>
760 <xsl:variable name="mem_procStack_H_diff_">
762 <xsl:when test=" (($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">0</xsl:when>
763 <xsl:when test="not(($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">
765 <xsl:variable name="stackToWest_AbvSbs_H_">
766 <xsl:call-template name="_calc_Stack_AbvSbs_Height">
767 <xsl:with-param name="iStackIdx" select="$iStackToWest"/>
771 <xsl:variable name="stackToEast_AbvSbs_H_">
772 <xsl:call-template name="_calc_Stack_AbvSbs_Height">
773 <xsl:with-param name="iStackIdx" select="$iStackToEast"/>
778 <xsl:message>stack to west H <xsl:value-of select="$stackToWest_AbvSbs_H_"/></xsl:message>
779 <xsl:message>stack to east H <xsl:value-of select="$stackToEast_AbvSbs_H_"/></xsl:message>
782 <xsl:when test="(($mem_procshp_hori_idx_ = $iStackToEast) and ($stackToWest_AbvSbs_H_ > $stackToEast_AbvSbs_H_))">
783 <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
785 <xsl:when test="(($mem_procshp_hori_idx_ = $iStackToWest) and ($stackToEast_AbvSbs_H_ > $stackToWest_AbvSbs_H_))">
786 <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
788 <xsl:otherwise>0</xsl:otherwise>
795 <!-- Store the conns in a variable -->
796 <xsl:variable name="memConn_heights_">
798 <xsl:for-each select="BUSCONN">
800 <xsl:variable name="bifName_" select="@BUSINTERFACE"/>
804 <xsl:when test="@IS_PROCCONN and @BIF_Y">
806 <xsl:variable name="procBif_Y_" select="((($BLKD_BIF_H + $BLKD_MOD_BIF_GAP_V) * @BIF_Y) + ($BLKD_MOD_LANE_H + $BLKD_MOD_LABEL_H + $BLKD_MOD_BIF_GAP_V))"/>
807 <xsl:variable name="procBifRank_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $procInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIFRANK"/>
808 <xsl:variable name="procBusName_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $procInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BUSNAME"/>
809 <xsl:variable name="procBifSide_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $procInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_X"/>
810 <xsl:variable name="bcProc_Y_" select="($mem_procshp_Y_ + $procBif_Y_ + ceiling($BLKD_BIF_H div 2) - ceiling($BLKD_BIFC_H div 2) + $mem_procStack_H_diff_)"/>
811 <xsl:variable name="bcProc_X_">
813 <xsl:when test="$procBifSide_ = '0'">
814 <xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_ - (ceiling($BLKD_MOD_W div 2) + $BLKD_BIFC_W))"/>
816 <xsl:when test="$procBifSide_ = '1'">
817 <xsl:value-of select="ceiling($BLKD_MOD_W div 2)"/>
819 <xsl:otherwise>0</xsl:otherwise>
823 <MEMCONN X="{$bcProc_X_}" Y="{$bcProc_Y_}" BUSNAME="{$procBusName_}" BUSSTD="{$iBusStd}" BIFRANK="{$procBifRank_}" BIFSIDE="{$procBifSide_}"/>
829 <xsl:variable name="memcInstance_" select="@INSTANCE"/>
830 <xsl:variable name="memcshp_vert_idx_" select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[MODULE[(@INSTANCE = $memcInstance_)]]/@SHAPE_VERTI_INDEX"/>
831 <xsl:variable name="memcBifSide_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $memcInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_X"/>
832 <xsl:variable name="memcBif_Y_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $memcInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_Y"/>
834 <xsl:variable name="memshp_Y_">
835 <xsl:call-template name="_calc_Stack_Shape_Y">
836 <xsl:with-param name="iHorizIdx" select="$mem_procshp_hori_idx_"/>
837 <xsl:with-param name="iVertiIdx" select="$memcshp_vert_idx_"/>
841 <xsl:variable name="memcMOD_W_" select="((/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[MODULE[(@INSTANCE = $memcInstance_)]]/@MODS_W) * $BLKD_MOD_W)"/>
843 <xsl:variable name="procBif_Y_" select="((($BLKD_BIF_H + $BLKD_MOD_BIF_GAP_V) * @BIF_Y) + ($BLKD_MOD_LANE_H + $BLKD_MOD_LABEL_H + $BLKD_MOD_BIF_GAP_V))"/>
845 <xsl:variable name="memcConn_Y_">
847 <xsl:when test="(/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[MODULE[(@INSTANCE = $memcInstance_)]]/@MODS_H = 1)">
848 <xsl:value-of select="($memshp_Y_ + ($BLKD_MOD_LANE_H + $BLKD_MOD_LABEL_H + $BLKD_MOD_BIF_GAP_V) + ($memcBif_Y_ * ($BLKD_BIF_H + $BLKD_MOD_BIF_GAP_V)) + ceiling($BIF_H div 2) - ceiling($BLKD_BIFC_H div 2) + $cmplxStack_H_diff_)"/>
851 <xsl:value-of select="($memshp_Y_ + $BLKD_MOD_H + $BLKD_MOD_LANE_H + ($memcBif_Y_ * ($BLKD_BIF_H + $BLKD_MOD_BIF_GAP_V)) + ceiling($BLKD_BIF_H div 2) - ceiling($BLKD_BIFC_H div 2) + $cmplxStack_H_diff_)"/>
856 <xsl:variable name="memcConn_X_">
858 <xsl:when test="$memcBifSide_ = '0'">
859 <xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_ - (ceiling($memcMOD_W_ div 2) + $BLKD_BIFC_W))"/>
861 <xsl:when test="$memcBifSide_ = '1'">
862 <xsl:value-of select="ceiling($memcMOD_W_ div 2)"/>
867 <xsl:variable name="memcBifRank_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $memcInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIFRANK"/>
868 <xsl:variable name="memcBusName_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $memcInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BUSNAME"/>
870 <MEMCONN X="{$memcConn_X_}" Y="{$memcConn_Y_}" BUSNAME="{$memcBusName_}" BUSSTD="{$iBusStd}" BIFRANK="{$memcBifRank_}" BIFSIDE="{$memcBifSide_}"/>
880 <!-- Draw the busconnection and horizontal lines.-->
881 <xsl:for-each select="exsl:node-set($memConn_heights_)/MEMCONN">
883 <xsl:variable name="bus_x_" select="($bcInSpace_X_ + ceiling($BLKD_BIFC_W div 2))"/>
884 <xsl:variable name="bus_y_" select="@Y + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_P2P_BUS_W div 2)"/>
886 <xsl:variable name="h_bus_ul_x_">
888 <xsl:when test="@BIFSIDE='0'">
889 <xsl:value-of select="$bus_x_"/>
891 <xsl:when test="@BIFSIDE='1'">
892 <xsl:value-of select="(@X + $BLKD_BIFC_W + $BLKD_BUS_ARROW_W)"/>
897 <xsl:variable name="h_bus_ul_y_" select="$bus_y_"/>
899 <xsl:variable name="h_bus_height_" select="$BLKD_P2P_BUS_W"/>
900 <xsl:variable name="h_bus_width_">
902 <xsl:when test="@BIFSIDE='0'">
903 <xsl:value-of select="(@X - $bus_x_ - $BLKD_BUS_ARROW_W)"/>
905 <xsl:when test="@BIFSIDE='1'">
906 <xsl:value-of select="$bus_x_ - $h_bus_ul_x_"/>
912 <xsl:message>bc_X_ <xsl:value-of select="@X"/></xsl:message>
913 <xsl:message>h_bus_ul_x <xsl:value-of select="$h_bus_ul_x_"/></xsl:message>
914 <xsl:message>h_bus_ul_y <xsl:value-of select="$h_bus_ul_y_"/></xsl:message>
915 <xsl:message>h_bus_width <xsl:value-of select="$h_bus_width_"/></xsl:message>
918 <!-- Place the bus connection -->
919 <use x="{@X}" y="{@Y}" xlink:href="#{@BUSSTD}_busconn_{@BIFRANK}"/>
921 <!-- Draw the arrow -->
923 <xsl:when test="@BIFSIDE='0'">
924 <use x="{@X - $BLKD_BUS_ARROW_W}" y="{@Y + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_BUS_ARROW_H div 2)}" xlink:href="#{@BUSSTD}_BusArrowEast"/>
926 <xsl:when test="@BIFSIDE='1'">
927 <use x="{(@X + $BLKD_BIFC_W)}" y="{@Y + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_BUS_ARROW_H div 2)}" xlink:href="#{@BUSSTD}_BusArrowWest"/>
932 <!-- Draw the horizontal part of the bus -->
933 <rect x="{$h_bus_ul_x_}"
935 width= "{$h_bus_width_}"
936 height="{$h_bus_height_}"
937 style="stroke:none; fill:{$busColor_}"/>
943 <xsl:variable name="busTop_" select="math:min(exsl:node-set($memConn_heights_)/MEMCONN/@Y)"/>
944 <xsl:variable name="busBot_" select="math:max(exsl:node-set($memConn_heights_)/MEMCONN/@Y)"/>
945 <xsl:variable name="busName_" select="exsl:node-set($memConn_heights_)/MEMCONN/@BUSNAME"/>
947 <xsl:variable name="v_bus_y_" select="$busTop_ + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_P2P_BUS_W div 2)"/>
950 <!-- Draw the vertical part of the bus -->
951 <rect x="{$bcInSpace_X_ + $BLKD_P2P_BUS_W}"
953 width= "{$BLKD_P2P_BUS_W}"
954 height="{($busBot_ - $busTop_) + $BLKD_P2P_BUS_W}"
955 style="stroke:none; fill:{$busColor_}"/>
958 <!-- Place the bus label.-->
959 <text class="p2pbuslabel"
960 x="{$bcInSpace_X_ + $BLKD_BUS_ARROW_W + ceiling($BLKD_BUS_ARROW_W div 2) + ceiling($BLKD_BUS_ARROW_W div 4) + 6}"
961 y="{$busTop_ + ($BLKD_BUS_ARROW_H * 3)}">
962 <xsl:value-of select="$busName_"/>
970 ===========================================================
971 Handle generic Point to Point connections
972 ===========================================================
975 <xsl:template name="BCLaneSpace_PointToPoint">
977 <xsl:param name="iBusStd" select="'NONE'"/>
978 <xsl:param name="iBusName" select="'NONE'"/>
979 <xsl:param name="iBifRank" select="'NONE'"/>
980 <xsl:param name="iStackToEast" select="'NONE'"/>
981 <xsl:param name="iStackToWest" select="'NONE'"/>
982 <xsl:param name="iStackToEast_W" select="0"/>
983 <xsl:param name="iStackToWest_W" select="0"/>
984 <xsl:param name="iLaneInSpace_X" select="0"/>
986 <xsl:variable name="busColor_">
987 <xsl:call-template name="BusType2Color">
988 <xsl:with-param name="iBusType" select="$iBusStd"/>
992 <xsl:variable name="busColor_lt_">
993 <xsl:call-template name="BusType2LightColor">
994 <xsl:with-param name="iBusType" select="$iBusStd"/>
999 <xsl:variable name="space_W_">
1000 <xsl:call-template name="_calc_Space_Width">
1001 <xsl:with-param name="iStackToEast" select="$iStackToEast"/>
1002 <xsl:with-param name="iStackToWest" select="$iStackToWest"/>
1003 </xsl:call-template>
1006 <xsl:variable name ="extSpaceWest_W_" select="ceiling($iStackToWest_W div 2)"/>
1007 <xsl:variable name ="extSpaceEast_W_" select="ceiling($iStackToEast_W div 2)"/>
1009 <xsl:variable name="bcInSpace_X_" select="($iLaneInSpace_X + ceiling($BLKD_BIFC_W div 2) - ceiling($BLKD_BUS_ARROW_W div 2))"/>
1010 <xsl:variable name="p2pInstance_" select="BUSCONN[(@BIF_Y)]/@INSTANCE"/>
1012 <xsl:variable name="p2pshp_hori_idx_">
1014 <xsl:when test="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $p2pInstance_)]">
1015 <xsl:value-of select="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $p2pInstance_)]/@STACK_HORIZ_INDEX"/>
1018 <xsl:value-of select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $p2pInstance_)])]/@STACK_HORIZ_INDEX"/>
1023 <xsl:variable name="p2pshp_vert_idx_">
1025 <xsl:when test="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $p2pInstance_)]">
1026 <xsl:value-of select="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $p2pInstance_)]/@SHAPE_VERTI_INDEX"/>
1029 <xsl:value-of select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $p2pInstance_)])]/@SHAPE_VERTI_INDEX"/>
1035 <xsl:variable name="p2pshp_hori_idx_" select="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $procInstance_)]/@STACK_HORIZ_INDEX"/>
1036 <xsl:variable name="p2pshp_vert_idx_" select="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $procInstance_)]/@SHAPE_VERTI_INDEX"/>
1039 <xsl:variable name="p2pshp_Y_">
1040 <xsl:call-template name="_calc_Stack_Shape_Y">
1041 <xsl:with-param name="iHorizIdx" select="$p2pshp_hori_idx_"/>
1042 <xsl:with-param name="iVertiIdx" select="$p2pshp_vert_idx_"/>
1043 </xsl:call-template>
1046 <xsl:variable name="cmplxStack_H_diff_">
1048 <xsl:when test=" (($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">0</xsl:when>
1049 <xsl:when test="not(($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">
1051 <xsl:variable name="stackToWest_AbvSbs_H_">
1052 <xsl:call-template name="_calc_Stack_AbvSbs_Height">
1053 <xsl:with-param name="iStackIdx" select="$iStackToWest"/>
1054 </xsl:call-template>
1057 <xsl:variable name="stackToEast_AbvSbs_H_">
1058 <xsl:call-template name="_calc_Stack_AbvSbs_Height">
1059 <xsl:with-param name="iStackIdx" select="$iStackToEast"/>
1060 </xsl:call-template>
1064 <xsl:message>stack to west H <xsl:value-of select="$stackToWest_AbvSbs_H_"/></xsl:message>
1065 <xsl:message>stack to east H <xsl:value-of select="$stackToEast_AbvSbs_H_"/></xsl:message>
1068 <xsl:when test="(($p2pshp_hori_idx_ = $iStackToEast) and ($stackToWest_AbvSbs_H_ > $stackToEast_AbvSbs_H_))">
1069 <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
1071 <xsl:when test="(($p2pshp_hori_idx_ = $iStackToWest) and ($stackToEast_AbvSbs_H_ > $stackToWest_AbvSbs_H_))">
1072 <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
1074 <xsl:otherwise>0</xsl:otherwise>
1082 <xsl:variable name="procStack_H_diff_">
1084 <xsl:when test=" (($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">0</xsl:when>
1085 <xsl:when test="not(($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">
1087 <xsl:variable name="stackToWest_AbvSbs_H_">
1088 <xsl:call-template name="_calc_Stack_AbvSbs_Height">
1089 <xsl:with-param name="iStackIdx" select="$iStackToWest"/>
1090 </xsl:call-template>
1093 <xsl:variable name="stackToEast_AbvSbs_H_">
1094 <xsl:call-template name="_calc_Stack_AbvSbs_Height">
1095 <xsl:with-param name="iStackIdx" select="$iStackToEast"/>
1096 </xsl:call-template>
1100 <xsl:message>stack to west H <xsl:value-of select="$stackToWest_AbvSbs_H_"/></xsl:message>
1101 <xsl:message>stack to east H <xsl:value-of select="$stackToEast_AbvSbs_H_"/></xsl:message>
1104 <xsl:when test="(($p2pshp_hori_idx_ = $iStackToEast) and ($stackToWest_AbvSbs_H_ > $stackToEast_AbvSbs_H_))">
1105 <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
1107 <xsl:when test="(($p2pshp_hori_idx_ = $iStackToWest) and ($stackToEast_AbvSbs_H_ > $stackToWest_AbvSbs_H_))">
1108 <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
1110 <xsl:otherwise>0</xsl:otherwise>
1119 <!-- Store the conns in a variable -->
1120 <xsl:variable name="p2pConn_heights_">
1122 <xsl:for-each select="BUSCONN">
1124 <xsl:variable name="bifName_" select="@BUSINTERFACE"/>
1127 <xsl:when test="@IS_PROCCONN and @BIF_Y">
1130 <xsl:message>Proc <xsl:value-of select="$procInstance_"/></xsl:message>
1132 <xsl:variable name="procBif_Y_" select="((($BLKD_BIF_H + $BLKD_MOD_BIF_GAP_V) * @BIF_Y) + ($BLKD_MOD_LANE_H + $BLKD_MOD_LABEL_H + $BLKD_MOD_BIF_GAP_V))"/>
1133 <xsl:variable name="procBifRank_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $p2pInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIFRANK"/>
1134 <xsl:variable name="procBusName_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $p2pInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BUSNAME"/>
1135 <xsl:variable name="procBifSide_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $p2pInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_X"/>
1137 <xsl:variable name="bcProc_Y_" select="($p2pshp_Y_ + $procBif_Y_ + ceiling($BIF_H div 2) - ceiling($BLKD_BIFC_H div 2) + $procStack_H_diff_)"/>
1138 <xsl:variable name="bcProc_X_">
1140 <xsl:when test="$procBifSide_ = '0'">
1141 <xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_ - (ceiling($BLKD_MOD_W div 2) + $BLKD_BIFC_W))"/>
1143 <xsl:when test="$procBifSide_ = '1'">
1144 <xsl:value-of select="ceiling($BLKD_MOD_W div 2)"/>
1146 <xsl:otherwise>0</xsl:otherwise>
1150 <P2PCONN X="{$bcProc_X_}" Y="{$bcProc_Y_}" BUSNAME= "{$procBusName_}" BUSSTD="{$iBusStd}" BIFRANK="{$procBifRank_}" BIFSIDE="{$procBifSide_}"/>
1153 <xsl:message>bcProc_X_ <xsl:value-of select="$bcProc_X_"/></xsl:message>
1154 <xsl:message>bcProc_Y_ <xsl:value-of select="$bcProc_Y_"/></xsl:message>
1155 <P2PCONN X="{$bcInSpace_X_}" Y="{$bcProc_Y_}" BUSSTD="{$busStd}" BIFRANK="{$procBifRank_}" BIFSIDE="{$procBifSide_}" STACK_ID=""/>
1161 <xsl:variable name="modInstance_" select="@INSTANCE"/>
1162 <xsl:variable name="modshp_vert_idx_" select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[MODULE[(@INSTANCE = $modInstance_)]]/@SHAPE_VERTI_INDEX"/>
1163 <xsl:variable name="modBifSide_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $modInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_X"/>
1164 <xsl:variable name="modBif_Y_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $modInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_Y"/>
1165 <xsl:variable name="modBc_Y_" select="((($BLKD_BIF_H + $BLKD_MOD_BIF_GAP_V) * $modBif_Y_) + ($BLKD_MOD_LANE_H + $BLKD_MOD_LABEL_H + $BLKD_MOD_BIF_GAP_V))"/>
1168 <xsl:message>Memory Instance <xsl:value-of select="$procInstance_"/></xsl:message>
1171 <xsl:variable name="modshp_Y_">
1172 <xsl:call-template name="_calc_Stack_Shape_Y">
1173 <xsl:with-param name="iHorizIdx" select="$p2pshp_hori_idx_"/>
1174 <xsl:with-param name="iVertiIdx" select="$modshp_vert_idx_"/>
1175 </xsl:call-template>
1178 <xsl:variable name="modBifRank_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $modInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIFRANK"/>
1179 <xsl:variable name="modBusName_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $modInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BUSNAME"/>
1180 <xsl:variable name="bcMod_Y_" select="($modshp_Y_ + $modBc_Y_ + ceiling($BLKD_BIF_H div 2) - ceiling($BLKD_BIFC_H div 2) + $cmplxStack_H_diff_)"/>
1181 <xsl:variable name="bcMod_X_">
1183 <xsl:when test="$modBifSide_ = '0'">
1184 <xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_ - (ceiling($BLKD_MOD_W div 2) + $BLKD_BIFC_W))"/>
1186 <xsl:when test="$modBifSide_ = '1'">
1187 <xsl:value-of select="ceiling($BLKD_MOD_W div 2)"/>
1189 <xsl:otherwise>0</xsl:otherwise>
1194 <xsl:message>Bc Bif Y <xsl:value-of select="$modBif_Y_"/></xsl:message>
1195 <xsl:message>Bc Mod Y <xsl:value-of select="$modBc_Y_"/></xsl:message>
1196 <xsl:message>Bc Mod X <xsl:value-of select="$bcMod_X_"/></xsl:message>
1197 <P2PCONN X="{$bcInSpace_X_}" Y="{$bcMod_Y_}" BUSSTD="{$busStd}" BIFRANK="{$modBifRank_}" BIFSIDE="{$modBifSide_}"/>
1199 <P2PCONN X="{$bcMod_X_}" Y="{$bcMod_Y_}" BUSNAME="{$modBusName_}" BUSSTD="{$iBusStd}" BIFRANK="{$modBifRank_}" BIFSIDE="{$modBifSide_}"/>
1208 <xsl:variable name="busTop_" select="math:min(exsl:node-set($p2pConn_heights_)/P2PCONN/@Y)"/>
1209 <xsl:variable name="busBot_" select="math:max(exsl:node-set($p2pConn_heights_)/P2PCONN/@Y)"/>
1210 <xsl:variable name="v_bus_y_" select="$busTop_ + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_P2P_BUS_W div 2)"/>
1211 <xsl:variable name="busName_" select="exsl:node-set($p2pConn_heights_)/P2PCONN/@BUSNAME"/>
1212 <xsl:variable name="busStd_" select="exsl:node-set($p2pConn_heights_)/P2PCONN/@BUSSTD"/>
1215 <!-- Draw the vertical part of the bus -->
1217 <xsl:if test="$busStd_ = 'PLBV46_P2P'">
1218 <rect x="{$bcInSpace_X_ + $BLKD_P2P_BUS_W}"
1220 width= "{$BLKD_P2P_BUS_W}"
1221 height="{($busBot_ - $busTop_) + $BLKD_P2P_BUS_W}"
1222 style="stroke:{$COL_WHITE};stroke-width:1.5;fill:{$busColor_}"/>
1225 <xsl:if test="not($busStd_ = 'PLBV46_P2P')">
1226 <rect x="{$bcInSpace_X_ + $BLKD_P2P_BUS_W}"
1228 width= "{$BLKD_P2P_BUS_W}"
1229 height="{($busBot_ - $busTop_) + $BLKD_P2P_BUS_W}"
1230 style="stroke:none;fill:{$busColor_}"/>
1237 style="stroke:{$busColor_lt_};stroke-width:1;stroke-opacity:0.9;fill-opacity:2.0;fill:{$busColor_}"/>
1239 <!-- Place the bus label.-->
1240 <text class="p2pbuslabel"
1241 x="{$bcInSpace_X_ + $BLKD_BUS_ARROW_W + ceiling($BLKD_BUS_ARROW_W div 2) + ceiling($BLKD_BUS_ARROW_W div 4) + 6}"
1242 y="{$busTop_ + ($BLKD_BUS_ARROW_H * 3)}">
1243 <xsl:value-of select="$busName_"/>
1246 <!-- Draw the busconnection and horizontal lines.-->
1247 <xsl:for-each select="exsl:node-set($p2pConn_heights_)/P2PCONN">
1249 <xsl:variable name="bus_x_" select="($bcInSpace_X_ + ceiling($BLKD_BIFC_W div 2))"/>
1250 <xsl:variable name="bus_y_" select="@Y + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_P2P_BUS_W div 2)"/>
1252 <xsl:variable name="h_bus_ul_x_">
1254 <xsl:when test="@BIFSIDE='0'">
1255 <xsl:value-of select="$bus_x_"/>
1257 <xsl:when test="@BIFSIDE='1'">
1258 <xsl:value-of select="(@X + $BLKD_BIFC_W + $BLKD_BUS_ARROW_W) - 1"/>
1263 <xsl:variable name="h_bus_ul_y_" select="$bus_y_"/>
1265 <xsl:variable name="h_bus_height_" select="$BLKD_P2P_BUS_W"/>
1266 <xsl:variable name="h_bus_width_">
1268 <xsl:message>BIFSIDE <xsl:value-of select="@BIFSIDE"/></xsl:message>
1269 <xsl:message>BUSSTD <xsl:value-of select="@BUSSTD"/></xsl:message>
1270 <xsl:message>BIFRANK <xsl:value-of select="@BIFRANK"/></xsl:message>
1273 <xsl:when test="@BIFSIDE='0'">
1274 <xsl:value-of select="(@X - $bus_x_ - $BLKD_BUS_ARROW_W)"/>
1276 <xsl:when test="@BIFSIDE='1'">
1277 <xsl:value-of select="$bus_x_ - $h_bus_ul_x_ + 1"/>
1283 <!-- Draw Bus connection-->
1284 <use x="{@X}" y="{@Y}" xlink:href="#{@BUSSTD}_busconn_{@BIFRANK}"/>
1286 <!-- Draw the arrow -->
1288 <xsl:when test="((@BIFSIDE='0') and not((@BUSSTD = 'FSL') and ((@BIFRANK = 'INITIATOR') or (@BIFRANK = 'MASTER'))))">
1289 <use x="{@X - $BLKD_BUS_ARROW_W}" y="{@Y + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_BUS_ARROW_H div 2)}" xlink:href="#{@BUSSTD}_BusArrowEast"/>
1291 <xsl:when test="((@BIFSIDE='1') and not((@BUSSTD = 'FSL') and ((@BIFRANK = 'INITIATOR') or (@BIFRANK = 'MASTER'))))">
1292 <use x="{(@X + $BLKD_BIFC_W)}" y="{@Y + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_BUS_ARROW_H div 2)}" xlink:href="#{@BUSSTD}_BusArrowWest"/>
1295 <xsl:when test="((@BIFSIDE='0') and ((@BUSSTD = 'FSL') and ((@BIFRANK = 'INITIATOR') or (@BIFRANK = 'MASTER'))))">
1296 <use x="{@X - $BLKD_BUS_ARROW_W}" y="{@Y + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_BUS_ARROW_H div 2)}" xlink:href="#{@BUSSTD}_BusArrowHInitiator"/>
1299 <xsl:when test="((@BIFSIDE='1') and ((@BUSSTD = 'FSL') and ((@BIFRANK = 'INITIATOR') or (@BIFRANK = 'MASTER'))))">
1300 <use x="{(@X + $BLKD_BIFC_W)}" y="{@Y + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_BUS_ARROW_H div 2)}" xlink:href="#{@BUSSTD}_BusArrowHInitiator"/>
1305 <!-- Draw the horizontal part of the bus -->
1306 <rect x="{$h_bus_ul_x_}"
1308 width= "{$h_bus_width_}"
1309 height="{$h_bus_height_}"
1310 style="stroke:none; fill:{$busColor_}"/>
1315 <xsl:variable name="busTop_" select="math:min(exsl:node-set($p2pConn_heights_)/P2PCONN/@Y)"/>
1316 <xsl:variable name="busBot_" select="math:max(exsl:node-set($p2pConn_heights_)/P2PCONN/@Y)"/>
1317 <xsl:variable name="v_bus_y_" select="$busTop_ + ceiling($BLKD_BIFC_H div 2) - ceiling($P2P_BUS_W div 2)"/>
1318 <xsl:variable name="busName_" select="exsl:node-set($p2pConn_heights_)/P2PCONN/@BUSNAME"/>
1320 <!-- Draw the vertical part of the bus -->
1322 <rect x="{$bcInSpace_X_ + $P2P_BUS_W}"
1324 width= "{$P2P_BUS_W}"
1325 height="{($busBot_ - $busTop_) + $P2P_BUS_W}"
1326 style="stroke:{$COL_WHITE};stroke-width:1;stroke-opacity:0.9;fill-opacity:2.0;fill:{$busColor_}"/>
1330 style="stroke:{$busColor_lt_};stroke-width:1;stroke-opacity:0.9;fill-opacity:2.0;fill:{$busColor_}"/>
1332 <!-- Place the bus label.-->
1334 <text class="p2pbuslabel"
1335 x="{$bcInSpace_X_ + $BLKD_BUS_ARROW_W + ceiling($BLKD_BUS_ARROW_W div 2) + ceiling($BLKD_BUS_ARROW_W div 4) + 6}"
1336 y="{$busTop_ + ($BLKD_BUS_ARROW_H * 3)}">
1337 <xsl:value-of select="$busName_"/>
1347 ===========================================================
1348 Handle MultiStack Point to Point connections
1349 ===========================================================
1352 <xsl:template name="BCLaneSpace_MultiStack_PointToPoint">
1354 <xsl:param name="iBusStd" select="'NONE'"/>
1355 <xsl:param name="iBusName" select="'NONE'"/>
1356 <xsl:param name="iBifRank" select="'NONE'"/>
1357 <xsl:param name="iStackToEast" select="'NONE'"/>
1358 <xsl:param name="iStackToWest" select="'NONE'"/>
1359 <xsl:param name="iStackToEast_W" select="0"/>
1360 <xsl:param name="iStackToWest_W" select="0"/>
1361 <xsl:param name="iLaneInSpace_X" select="0"/>
1363 <xsl:variable name="busColor_">
1364 <xsl:call-template name="BusType2Color">
1365 <xsl:with-param name="iBusType" select="$iBusStd"/>
1366 </xsl:call-template>
1369 <xsl:variable name="space_W_">
1370 <xsl:call-template name="_calc_Space_Width">
1371 <xsl:with-param name="iStackToEast" select="$iStackToEast"/>
1372 <xsl:with-param name="iStackToWest" select="$iStackToWest"/>
1373 </xsl:call-template>
1376 <xsl:variable name ="extSpaceWest_W_" select="ceiling($iStackToWest_W div 2)"/>
1377 <xsl:variable name ="extSpaceEast_W_" select="ceiling($iStackToEast_W div 2)"/>
1379 <!-- Store the connections in a variable -->
1380 <xsl:variable name="bcInSpace_X_" select="($iLaneInSpace_X + ceiling($BLKD_BIFC_W div 2) - ceiling($BLKD_BUS_ARROW_W div 2))"/>
1382 <xsl:variable name="multiConns_">
1384 <xsl:for-each select="BUSCONN">
1386 <xsl:variable name="bifName_" select="@BUSINTERFACE"/>
1387 <xsl:variable name="multiInstance_" select="@INSTANCE"/>
1388 <xsl:variable name="mulshp_hori_idx_">
1390 <xsl:when test="@IS_PROCCONN">
1391 <xsl:value-of select="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $multiInstance_)]/@STACK_HORIZ_INDEX"/>
1394 <xsl:value-of select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $multiInstance_)])]/@STACK_HORIZ_INDEX"/>
1399 <xsl:variable name="mulshp_vert_idx_">
1401 <xsl:when test="@IS_PROCCONN">
1402 <xsl:value-of select="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $multiInstance_)]/@SHAPE_VERTI_INDEX"/>
1405 <xsl:value-of select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $multiInstance_)])]/@SHAPE_VERTI_INDEX"/>
1411 <xsl:message>Shape Horiz <xsl:value-of select="$mulshp_hori_idx_"/></xsl:message>
1412 <xsl:message>Shape Verti <xsl:value-of select="$mulshp_vert_idx_"/></xsl:message>
1415 <xsl:variable name="mulshp_Y_">
1416 <xsl:call-template name="_calc_Stack_Shape_Y">
1417 <xsl:with-param name="iHorizIdx" select="$mulshp_hori_idx_"/>
1418 <xsl:with-param name="iVertiIdx" select="$mulshp_vert_idx_"/>
1419 </xsl:call-template>
1422 <xsl:variable name="cmplxStack_H_diff_">
1424 <xsl:when test=" (($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">0</xsl:when>
1425 <xsl:when test="not(($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">
1427 <xsl:variable name="stackToWest_AbvSbs_H_">
1428 <xsl:call-template name="_calc_Stack_AbvSbs_Height">
1429 <xsl:with-param name="iStackIdx" select="$iStackToWest"/>
1430 </xsl:call-template>
1433 <xsl:variable name="stackToEast_AbvSbs_H_">
1434 <xsl:call-template name="_calc_Stack_AbvSbs_Height">
1435 <xsl:with-param name="iStackIdx" select="$iStackToEast"/>
1436 </xsl:call-template>
1440 <xsl:message>stack to west H <xsl:value-of select="$stackToWest_AbvSbs_H_"/></xsl:message>
1441 <xsl:message>stack to east H <xsl:value-of select="$stackToEast_AbvSbs_H_"/></xsl:message>
1444 <xsl:when test="(($mulshp_hori_idx_ = $iStackToEast) and ($stackToWest_AbvSbs_H_ > $stackToEast_AbvSbs_H_))">
1445 <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
1447 <xsl:when test="(($mulshp_hori_idx_ = $iStackToWest) and ($stackToEast_AbvSbs_H_ > $stackToWest_AbvSbs_H_))">
1448 <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
1450 <xsl:otherwise>0</xsl:otherwise>
1458 <xsl:variable name="procStack_H_diff_">
1460 <xsl:when test=" (($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">0</xsl:when>
1461 <xsl:when test="not(($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">
1463 <xsl:variable name="stackToWest_AbvSbs_H_">
1464 <xsl:call-template name="_calc_Stack_AbvSbs_Height">
1465 <xsl:with-param name="iStackIdx" select="$iStackToWest"/>
1466 </xsl:call-template>
1469 <xsl:variable name="stackToEast_AbvSbs_H_">
1470 <xsl:call-template name="_calc_Stack_AbvSbs_Height">
1471 <xsl:with-param name="iStackIdx" select="$iStackToEast"/>
1472 </xsl:call-template>
1476 <xsl:message>stack to west H <xsl:value-of select="$stackToWest_AbvSbs_H_"/></xsl:message>
1477 <xsl:message>stack to east H <xsl:value-of select="$stackToEast_AbvSbs_H_"/></xsl:message>
1480 <xsl:when test="(($mulshp_hori_idx_ = $iStackToEast) and ($stackToWest_AbvSbs_H_ > $stackToEast_AbvSbs_H_))">
1481 <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
1483 <xsl:when test="(($mulshp_hori_idx_ = $iStackToWest) and ($stackToEast_AbvSbs_H_ > $stackToWest_AbvSbs_H_))">
1484 <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
1486 <xsl:otherwise>0</xsl:otherwise>
1495 <xsl:when test="@IS_PROCCONN and @BIF_Y">
1497 <xsl:variable name="procBif_Y_" select="((($BLKD_BIF_H + $BLKD_MOD_BIF_GAP_V) * @BIF_Y) + ($BLKD_MOD_LANE_H + $BLKD_MOD_LABEL_H + $BLKD_MOD_BIF_GAP_V))"/>
1499 <xsl:variable name="procBifRank_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $multiInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIFRANK"/>
1500 <xsl:variable name="procBusName_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $multiInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BUSNAME"/>
1501 <xsl:variable name="procBifSide_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $multiInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_X"/>
1503 <xsl:variable name="bcProc_Y_" select="($mulshp_Y_ + $procBif_Y_ + ceiling($BLKD_BIF_H div 2) - ceiling($BLKD_BIFC_H div 2) + $procStack_H_diff_)"/>
1505 <xsl:variable name="bcProc_X_">
1507 <xsl:when test="$procBifSide_ = '0'">
1508 <xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_ - (ceiling($BLKD_MOD_W div 2) + $BLKD_BIFC_W))"/>
1510 <xsl:when test="$procBifSide_ = '1'">
1511 <xsl:value-of select="ceiling($BLKD_MOD_W div 2)"/>
1513 <xsl:otherwise>0</xsl:otherwise>
1517 <MULTICONN X="{$bcProc_X_}" Y="{$bcProc_Y_}" BUSNAME="{$procBusName_}" BUSSTD="{$iBusStd}" BIFRANK="{$procBifRank_}" BIFSIDE="{$procBifSide_}"/>
1522 <xsl:variable name="modType_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $multiInstance_)]/@MODCLASS"/>
1523 <xsl:variable name="modBif_Y_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $multiInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_Y"/>
1524 <xsl:variable name="modBifSide_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $multiInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_X"/>
1525 <xsl:variable name="modBusStd_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $multiInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BUSSTD"/>
1526 <xsl:variable name="memcMOD_W_" select="((/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[MODULE[(@INSTANCE = $multiInstance_)]]/@MODS_W) * $BLKD_MOD_W)"/>
1528 <xsl:variable name="modBc_Y_">
1530 <xsl:when test="($modType_ = 'MEMORY_CNTLR') and (($modBusStd_ = 'LMB') or ($modBusStd_= 'OCM'))">
1531 <xsl:value-of select="$BLKD_MOD_H + $BLKD_MOD_LANE_H + ((($BLKD_BIF_H + $BLKD_MOD_BIF_GAP_V) * $modBif_Y_))"/>
1534 <xsl:value-of select="((($BLKD_BIF_H + $BLKD_MOD_BIF_GAP_V) * $modBif_Y_) + ($BLKD_MOD_LANE_H + $BLKD_MOD_LABEL_H + $BLKD_MOD_BIF_GAP_V))"/>
1539 <xsl:message><xsl:value-of select="$multiInstance_"/>.<xsl:value-of select="$bifName_"/>:Y = <xsl:value-of select="$modBif_Y_"/></xsl:message>
1540 <xsl:message><xsl:value-of select="$multiInstance_"/>.<xsl:value-of select="$bifName_"/>:BcY = <xsl:value-of select="$modBc_Y_"/></xsl:message>
1541 <xsl:message><xsl:value-of select="$multiInstance_"/>.<xsl:value-of select="$bifName_"/>:TcY = <xsl:value-of select="($BLKD_MOD_LANE_H + $BLKD_MOD_LABEL_H + $BLKD_MOD_BIF_GAP_V)"/></xsl:message>
1544 <xsl:variable name="modBifRank_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $multiInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIFRANK"/>
1545 <xsl:variable name="modBusName_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $multiInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BUSNAME"/>
1548 <xsl:variable name="bcMod_Y_" select="($mulshp_Y_ + $modBc_Y_ + ceiling($BLKD_BIF_H div 2) - ceiling($BLKD_BIFC_H div 2))"/>
1550 <xsl:variable name="bcMod_Y_" select="($mulshp_Y_ + $modBc_Y_ + ceiling($BLKD_BIF_H div 2) - ceiling($BLKD_BIFC_H div 2) + $cmplxStack_H_diff_)"/>
1552 <xsl:variable name="bcMod_X_">
1554 <xsl:when test="$modBifSide_ = '0'">
1555 <xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_ - (ceiling($memcMOD_W_ div 2) + $BLKD_BIFC_W))"/>
1557 <xsl:when test="$modBifSide_ = '1'">
1558 <xsl:value-of select="ceiling($memcMOD_W_ div 2)"/>
1560 <xsl:otherwise>0</xsl:otherwise>
1565 <MULTICONN X="{$bcMod_X_}" Y="{$bcMod_Y_}" BUSNAME="{$modBusName_}" BUSSTD="{$iBusStd}" BIFRANK="{$modBifRank_}" BIFSIDE="{$modBifSide_}"/>
1567 <MULTICONN X="{$bcInSpace_X_}" Y="{$bcMod_Y_}" BUSSTD="{$busStd}" BIFRANK="{$modBifRank_}" BIFSIDE="{$modBifSide_}"/>
1575 <!-- Draw the busconnection and horizontal lines.-->
1576 <xsl:for-each select="exsl:node-set($multiConns_)/MULTICONN">
1578 <xsl:variable name="bus_x_" select="($bcInSpace_X_ + ceiling($BLKD_BIFC_W div 2))"/>
1579 <xsl:variable name="bus_y_" select="@Y + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_P2P_BUS_W div 2)"/>
1581 <xsl:variable name="h_bus_ul_x_">
1583 <xsl:when test="@BIFSIDE='0'">
1584 <xsl:value-of select="$bus_x_"/>
1586 <xsl:when test="@BIFSIDE='1'">
1587 <xsl:value-of select="(@X + $BLKD_BIFC_W + $BLKD_BUS_ARROW_W)"/>
1592 <xsl:variable name="h_bus_ul_y_" select="$bus_y_"/>
1594 <xsl:variable name="h_bus_height_" select="$BLKD_P2P_BUS_W"/>
1595 <xsl:variable name="h_bus_width_">
1597 <xsl:message>BUSSTD <xsl:value-of select="@BUSSTD"/></xsl:message>
1598 <xsl:message>BIFSIDE <xsl:value-of select="@BIFSIDE"/></xsl:message>
1599 <xsl:message>BIFRANK <xsl:value-of select="@BIFRANK"/></xsl:message>
1602 <xsl:when test="@BIFSIDE='0'">
1603 <xsl:value-of select="(@X - $bus_x_ - $BLKD_BUS_ARROW_W)"/>
1605 <xsl:when test="@BIFSIDE='1'">
1606 <xsl:value-of select="$bus_x_ - $h_bus_ul_x_"/>
1612 <!-- Draw the horizontal part of the bus -->
1613 <rect x="{$h_bus_ul_x_}"
1615 width= "{$h_bus_width_}"
1616 height="{$h_bus_height_}"
1617 style="stroke:none; fill:{$busColor_}"/>
1620 <!-- Draw the arrow -->
1622 <xsl:when test="((@BIFSIDE='0') and not((@BUSSTD = 'FSL') and ((@BIFRANK = 'INITIATOR') or (@BIFRANK = 'MASTER'))))">
1623 <use x="{@X - $BLKD_BUS_ARROW_W}" y="{@Y + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_BUS_ARROW_H div 2)}" xlink:href="#{@BUSSTD}_BusArrowEast"/>
1625 <xsl:when test="((@BIFSIDE='1') and not((@BUSSTD = 'FSL') and ((@BIFRANK = 'INITIATOR') or (@BIFRANK = 'MASTER'))))">
1626 <use x="{(@X + $BLKD_BIFC_W)}" y="{@Y + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_BUS_ARROW_H div 2)}" xlink:href="#{@BUSSTD}_BusArrowWest"/>
1629 <xsl:when test="((@BIFSIDE='0') and ((@BUSSTD = 'FSL') and ((@BIFRANK = 'INITIATOR') or (@BIFRANK = 'MASTER'))))">
1630 <use x="{@X - $BLKD_BUS_ARROW_W}" y="{@Y + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_BUS_ARROW_H div 2)}" xlink:href="#{@BUSSTD}_BusArrowHInitiator"/>
1633 <xsl:when test="((@BIFSIDE='1') and ((@BUSSTD = 'FSL') and ((@BIFRANK = 'INITIATOR') or (@BIFRANK = 'MASTER'))))">
1634 <use x="{(@X + $BLKD_BIFC_W)}" y="{@Y + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_BUS_ARROW_H div 2)}" xlink:href="#{@BUSSTD}_BusArrowHInitiator"/>
1639 <use x="{@X}" y="{@Y}" xlink:href="#{@BUSSTD}_busconn_{@BIFRANK}"/>
1644 <xsl:variable name="busTop_" select="math:min(exsl:node-set($multiConns_)/MULTICONN/@Y)"/>
1645 <xsl:variable name="busBot_" select="math:max(exsl:node-set($multiConns_)/MULTICONN/@Y)"/>
1647 <xsl:variable name="topRnk_" select="(exsl:node-set($multiConns_)/MULTICONN[(@Y = $busTop_)]/@BIFRANK)"/>
1648 <xsl:variable name="botRnk_" select="(exsl:node-set($multiConns_)/MULTICONN[(@Y = $busBot_)]/@BIFRANK)"/>
1651 <xsl:variable name="v_bus_y_" select="$busTop_ + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_P2P_BUS_W div 2)"/>
1652 <xsl:variable name="busName_" select="exsl:node-set($multiConns_)/MULTICONN/@BUSNAME"/>
1654 <!-- Draw the vertical part of the bus -->
1655 <rect x="{$bcInSpace_X_ + $BLKD_P2P_BUS_W}"
1657 width= "{$BLKD_P2P_BUS_W}"
1658 height="{($busBot_ - $busTop_) + $BLKD_P2P_BUS_W}"
1659 style="stroke:none; fill:{$busColor_}"/>
1661 <!-- Place the bus label.-->
1662 <text class="p2pbuslabel"
1663 x="{$bcInSpace_X_ + $BLKD_BUS_ARROW_W + ceiling($BLKD_BUS_ARROW_W div 2) + ceiling($BLKD_BUS_ARROW_W div 4) + 6}"
1664 y="{$busTop_ + ($BLKD_BUS_ARROW_H * 3)}">
1665 <xsl:value-of select="$busName_"/>
1669 <xsl:message>Bot Rank <xsl:value-of select="$botRnk_"/></xsl:message>
1673 <xsl:call-template name="Draw_P2PBus">
1674 <xsl:with-param name="busX" select="$bcInSpace_X_"/>
1675 <xsl:with-param name="busTop" select="$busTop_"/>
1676 <xsl:with-param name="busBot" select="$busBot_"/>
1677 <xsl:with-param name="topRnk" select="$topRnk_"/>
1678 <xsl:with-param name="botRnk" select="$botRnk_"/>
1679 <xsl:with-param name="busStd" select="$busStd"/>
1680 <xsl:with-param name="busName" select="$busName"/>
1681 </xsl:call-template>
1688 ===========================================================
1689 Handle Processor to processor connections
1690 ===========================================================
1692 <xsl:template name="BCLaneSpace_ProcToProc">
1694 <xsl:param name="iBusStd" select="'NONE'"/>
1695 <xsl:param name="iBusName" select="'NONE'"/>
1696 <xsl:param name="iBifRank" select="'NONE'"/>
1697 <xsl:param name="iStackToEast" select="'NONE'"/>
1698 <xsl:param name="iStackToWest" select="'NONE'"/>
1699 <xsl:param name="iStackToEast_W" select="0"/>
1700 <xsl:param name="iStackToWest_W" select="0"/>
1701 <xsl:param name="iLaneInSpace_X" select="0"/>
1703 <xsl:variable name="busColor_">
1704 <xsl:call-template name="BusType2Color">
1705 <xsl:with-param name="iBusType" select="$iBusStd"/>
1706 </xsl:call-template>
1709 <xsl:variable name="space_W_">
1710 <xsl:call-template name="_calc_Space_Width">
1711 <xsl:with-param name="iStackToEast" select="$iStackToEast"/>
1712 <xsl:with-param name="iStackToWest" select="$iStackToWest"/>
1713 </xsl:call-template>
1716 <xsl:variable name ="extSpaceWest_W_" select="ceiling($iStackToWest_W div 2)"/>
1717 <xsl:variable name ="extSpaceEast_W_" select="ceiling($iStackToEast_W div 2)"/>
1719 <xsl:variable name="pr2pr_StackToWest_" select="math:min(BUSCONN/@STACK_HORIZ_INDEX)"/>
1720 <xsl:variable name="pr2pr_StackToEast_" select="math:max(BUSCONN/@STACK_HORIZ_INDEX)"/>
1721 <xsl:variable name="proc2procConn_heights_">
1723 <xsl:for-each select="BUSCONN">
1725 <xsl:variable name="procInstance_" select="@INSTANCE"/>
1726 <xsl:variable name="bifName_" select="@BUSINTERFACE"/>
1727 <xsl:variable name="procshp_hori_idx_" select="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $procInstance_)]/@STACK_HORIZ_INDEX"/>
1728 <xsl:variable name="procshp_vert_idx_" select="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $procInstance_)]/@SHAPE_VERTI_INDEX"/>
1729 <xsl:variable name="procshp_Y_">
1730 <xsl:call-template name="_calc_Stack_Shape_Y">
1731 <xsl:with-param name="iHorizIdx" select="$procshp_hori_idx_"/>
1732 <xsl:with-param name="iVertiIdx" select="$procshp_vert_idx_"/>
1733 </xsl:call-template>
1736 <xsl:variable name="procStack_H_diff_">
1738 <xsl:when test=" (($pr2pr_StackToEast_ = 'NONE') or ($pr2pr_StackToWest_ = 'NONE'))">0</xsl:when>
1739 <xsl:when test="not(($pr2pr_StackToEast_ = 'NONE') or ($pr2pr_StackToWest_ = 'NONE'))">
1741 <xsl:variable name="stackToWest_AbvSbs_H_">
1742 <xsl:call-template name="_calc_Stack_AbvSbs_Height">
1743 <xsl:with-param name="iStackIdx" select="$pr2pr_StackToWest_"/>
1744 </xsl:call-template>
1747 <xsl:variable name="stackToEast_AbvSbs_H_">
1748 <xsl:call-template name="_calc_Stack_AbvSbs_Height">
1749 <xsl:with-param name="iStackIdx" select="$pr2pr_StackToEast_"/>
1750 </xsl:call-template>
1753 <xsl:message>stack to west H <xsl:value-of select="$stackToWest_AbvSbs_H_"/></xsl:message>
1754 <xsl:message>stack to east H <xsl:value-of select="$stackToEast_AbvSbs_H_"/></xsl:message>
1757 <xsl:when test="(($procshp_hori_idx_ = $pr2pr_StackToEast_) and ($stackToWest_AbvSbs_H_ > $stackToEast_AbvSbs_H_))">
1758 <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
1760 <xsl:when test="(($procshp_hori_idx_ = $pr2pr_StackToWest_) and ($stackToEast_AbvSbs_H_ > $stackToWest_AbvSbs_H_))">
1761 <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
1763 <xsl:otherwise>0</xsl:otherwise>
1770 <!-- Store the conns in a variable -->
1771 <xsl:variable name="procBif_Y_" select="((($BLKD_BIF_H + $BLKD_MOD_BIF_GAP_V) * @BIF_Y) + ($BLKD_MOD_LANE_H + $BLKD_MOD_LABEL_H + $BLKD_MOD_BIF_GAP_V))"/>
1773 <xsl:variable name="procBifRank_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $procInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIFRANK"/>
1774 <xsl:variable name="procBifSide_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $procInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_X"/>
1776 <xsl:variable name="bcInSpace_X_">
1778 <xsl:when test="$procBifSide_ = '1'"><xsl:value-of select="ceiling($BLKD_MOD_W div 2)"/></xsl:when>
1779 <xsl:when test="$procBifSide_ = '0'"><xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_ - ceiling($BLKD_MOD_W div 2) - $BLKD_BIFC_W)"/></xsl:when>
1783 <xsl:variable name="bcProc_Y_" select="($procshp_Y_ + $procBif_Y_ + ceiling($BLKD_BIF_H div 2) - ceiling($BLKD_BIFC_H div 2) + $procStack_H_diff_)"/>
1785 <xsl:message>Conn X <xsl:value-of select="$bcInSpace_X_"/></xsl:message>
1786 <xsl:message>Conn Y <xsl:value-of select="$bcProc_Y_"/></xsl:message>
1789 <PR2PRCONN X="{$bcInSpace_X_}" Y="{$bcProc_Y_}" BUSSTD="{$iBusStd}" BIFRANK="{$procBifRank_}" BIFSIDE="{$procBifSide_}" SHAPE_ID="{$procshp_hori_idx_}"/>
1793 <xsl:variable name="pr2prLeft_" select="math:min(exsl:node-set($proc2procConn_heights_)/PR2PRCONN/@SHAPE_ID)"/>
1794 <xsl:variable name="pr2prRght_" select="math:max(exsl:node-set($proc2procConn_heights_)/PR2PRCONN/@SHAPE_ID)"/>
1796 <xsl:variable name="pr2pr_stack_Left_X_">
1797 <xsl:call-template name="_calc_Stack_X">
1798 <xsl:with-param name="iStackIdx" select="$pr2prLeft_"/>
1799 </xsl:call-template>
1802 <xsl:variable name="pr2pr_stack_Rght_X_">
1803 <xsl:call-template name="_calc_Stack_X">
1804 <xsl:with-param name="iStackIdx" select="$pr2prRght_"/>
1805 </xsl:call-template>
1809 <xsl:message>Left stack X <xsl:value-of select="$pr2pr_stack_Left_X_"/></xsl:message>
1810 <xsl:message>Rght stack X <xsl:value-of select="$pr2pr_stack_Rght_X_"/></xsl:message>
1812 <xsl:variable name="pr2pr_space_W_" select="($pr2pr_stack_Rght_X_ - $pr2pr_stack_Left_X_)"/>
1815 <xsl:variable name="pr2pr_extStackEast_W_">
1816 <xsl:call-template name="_calc_Stack_Width">
1817 <xsl:with-param name="iStackIdx" select="$pr2prRght_"/>
1818 </xsl:call-template>
1821 <xsl:variable name="pr2pr_extStackWest_W_">
1822 <xsl:call-template name="_calc_Stack_Width">
1823 <xsl:with-param name="iStackIdx" select="$pr2prLeft_"/>
1824 </xsl:call-template>
1828 <xsl:message>Space W <xsl:value-of select="$pr2pr_space_W_"/></xsl:message>
1829 <xsl:message>Rght stack <xsl:value-of select="$pr2pr_extStackEast_W_"/></xsl:message>
1830 <xsl:message>Left stack <xsl:value-of select="$pr2pr_extStackWest_W_"/></xsl:message>
1833 <xsl:variable name="connLeft_X_" select="ceiling($BLKD_MOD_W div 2)"/>
1834 <xsl:variable name="connRght_X_" select="($pr2pr_space_W_ - ceiling($pr2pr_extStackWest_W_ div 2) + ceiling($pr2pr_extStackEast_W_ div 2) - ceiling($BLKD_MOD_W div 2) - $BLKD_BIFC_W)"/>
1836 <!-- Draw the busconnections .-->
1837 <xsl:for-each select="exsl:node-set($proc2procConn_heights_)/PR2PRCONN">
1838 <xsl:variable name="conn_X_">
1840 <xsl:when test="@BIFSIDE = '1'"><xsl:value-of select="ceiling($BLKD_MOD_W div 2)"/></xsl:when>
1841 <xsl:when test="@BIFSIDE = '0'"><xsl:value-of select="($pr2pr_space_W_ - ceiling($pr2pr_extStackWest_W_ div 2) + ceiling($pr2pr_extStackEast_W_ div 2) - ceiling($BLKD_MOD_W div 2) - $BLKD_BIFC_W)"/></xsl:when>
1843 <xsl:when test="@BIFSIDE = '0'"><xsl:value-of select="($pr2pr_space_W_ + $pr2pr_extStackWest_W_ + $pr2pr_extStackEast_W_ - ceiling($BLKD_MOD_W div 2) - $BLKD_BIFC_W)"/></xsl:when>
1849 <use x="{$conn_X_}" y="{@Y}" xlink:href="#{@BUSSTD}_busconn_{@BIFRANK}"/>
1852 <xsl:variable name="bc_Y_" select="math:min(exsl:node-set($proc2procConn_heights_)/PR2PRCONN/@Y)"/>
1853 <xsl:variable name="bcLeft_" select="math:min(exsl:node-set($proc2procConn_heights_)/PR2PRCONN/@X)"/>
1854 <xsl:variable name="bcRght_" select="math:max(exsl:node-set($proc2procConn_heights_)/PR2PRCONN/@X)"/>
1856 <xsl:variable name="leftRnk_" select="(exsl:node-set($proc2procConn_heights_)/PR2PRCONN[(@X = $bcLeft_)]/@BIFRANK)"/>
1857 <xsl:variable name="rghtRnk_" select="(exsl:node-set($proc2procConn_heights_)/PR2PRCONN[(@X = $bcRght_)]/@BIFRANK)"/>
1859 <xsl:call-template name="Draw_Proc2ProcBus">
1860 <xsl:with-param name="iBc_Y" select="$bc_Y_"/>
1861 <xsl:with-param name="iBusStd" select="$iBusStd"/>
1862 <xsl:with-param name="iBusName" select="$iBusName"/>
1863 <xsl:with-param name="iLeftRnk" select="$leftRnk_"/>
1864 <xsl:with-param name="iRghtRnk" select="$rghtRnk_"/>
1865 <xsl:with-param name="iBcLeft_X" select="$connLeft_X_ + $BLKD_BIFC_W"/>
1866 <xsl:with-param name="iBcRght_X" select="$connRght_X_"/>
1867 </xsl:call-template>
1872 ===========================================================
1873 Handle connections to the MPMC
1874 ===========================================================
1876 <xsl:template name="BCLaneSpace_ToStandAloneMPMC">
1878 <xsl:param name="iBusStd" select="'NONE'"/>
1879 <xsl:param name="iBusName" select="'NONE'"/>
1880 <xsl:param name="iBifRank" select="'NONE'"/>
1881 <xsl:param name="iStackToEast" select="'NONE'"/>
1882 <xsl:param name="iStackToWest" select="'NONE'"/>
1883 <xsl:param name="iStackToEast_W" select="0"/>
1884 <xsl:param name="iStackToWest_W" select="0"/>
1885 <xsl:param name="iLaneInSpace_X" select="0"/>
1887 <xsl:variable name="busColor_">
1888 <xsl:call-template name="BusType2Color">
1889 <xsl:with-param name="iBusType" select="$iBusStd"/>
1890 </xsl:call-template>
1893 <xsl:variable name="busColor_lt_">
1894 <xsl:call-template name="BusType2LightColor">
1895 <xsl:with-param name="iBusType" select="$iBusStd"/>
1896 </xsl:call-template>
1899 <xsl:variable name="space_W_">
1900 <xsl:call-template name="_calc_Space_Width">
1901 <xsl:with-param name="iStackToEast" select="$iStackToEast"/>
1902 <xsl:with-param name="iStackToWest" select="$iStackToWest"/>
1903 </xsl:call-template>
1906 <xsl:variable name ="extSpaceWest_W_" select="ceiling($iStackToWest_W div 2)"/>
1907 <xsl:variable name ="extSpaceEast_W_" select="ceiling($iStackToEast_W div 2)"/>
1909 <xsl:variable name="bcInSpace_X_" select="($iLaneInSpace_X + ceiling($BLKD_BIFC_W div 2) - ceiling($BLKD_BUS_ARROW_W div 2))"/>
1910 <xsl:variable name="p2pInstance_" select="BUSCONN[(@BIF_Y)]/@INSTANCE"/>
1912 <xsl:variable name="p2pshp_hori_idx_">
1914 <xsl:when test="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $p2pInstance_)]">
1915 <xsl:value-of select="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $p2pInstance_)]/@STACK_HORIZ_INDEX"/>
1918 <xsl:value-of select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $p2pInstance_)])]/@STACK_HORIZ_INDEX"/>
1923 <xsl:variable name="p2pshp_vert_idx_">
1925 <xsl:when test="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $p2pInstance_)]">
1926 <xsl:value-of select="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $p2pInstance_)]/@SHAPE_VERTI_INDEX"/>
1929 <xsl:value-of select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $p2pInstance_)])]/@SHAPE_VERTI_INDEX"/>
1934 <xsl:variable name="p2pshp_Y_">
1935 <xsl:call-template name="_calc_Stack_Shape_Y">
1936 <xsl:with-param name="iHorizIdx" select="$p2pshp_hori_idx_"/>
1937 <xsl:with-param name="iVertiIdx" select="$p2pshp_vert_idx_"/>
1938 </xsl:call-template>
1941 <xsl:variable name="cmplxStack_H_diff_">
1943 <xsl:when test=" (($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">0</xsl:when>
1944 <xsl:when test="not(($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">
1946 <xsl:variable name="stackToWest_AbvSbs_H_">
1947 <xsl:call-template name="_calc_Stack_AbvSbs_Height">
1948 <xsl:with-param name="iStackIdx" select="$iStackToWest"/>
1949 </xsl:call-template>
1952 <xsl:variable name="stackToEast_AbvSbs_H_">
1953 <xsl:call-template name="_calc_Stack_AbvSbs_Height">
1954 <xsl:with-param name="iStackIdx" select="$iStackToEast"/>
1955 </xsl:call-template>
1959 <xsl:message>stack to west H <xsl:value-of select="$stackToWest_AbvSbs_H_"/></xsl:message>
1960 <xsl:message>stack to east H <xsl:value-of select="$stackToEast_AbvSbs_H_"/></xsl:message>
1964 <xsl:when test="(($p2pshp_hori_idx_ = $iStackToEast) and ($stackToWest_AbvSbs_H_ > $stackToEast_AbvSbs_H_))">
1965 <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
1967 <xsl:when test="(($p2pshp_hori_idx_ = $iStackToWest) and ($stackToEast_AbvSbs_H_ > $stackToWest_AbvSbs_H_))">
1968 <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
1970 <xsl:otherwise>0</xsl:otherwise>
1977 <xsl:variable name="procStack_H_diff_">
1979 <xsl:when test=" (($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">0</xsl:when>
1980 <xsl:when test="not(($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">
1982 <xsl:variable name="stackToWest_AbvSbs_H_">
1983 <xsl:call-template name="_calc_Stack_AbvSbs_Height">
1984 <xsl:with-param name="iStackIdx" select="$iStackToWest"/>
1985 </xsl:call-template>
1988 <xsl:variable name="stackToEast_AbvSbs_H_">
1989 <xsl:call-template name="_calc_Stack_AbvSbs_Height">
1990 <xsl:with-param name="iStackIdx" select="$iStackToEast"/>
1991 </xsl:call-template>
1995 <xsl:message>stack to west H <xsl:value-of select="$stackToWest_AbvSbs_H_"/></xsl:message>
1996 <xsl:message>stack to east H <xsl:value-of select="$stackToEast_AbvSbs_H_"/></xsl:message>
1999 <xsl:when test="(($p2pshp_hori_idx_ = $iStackToEast) and ($stackToWest_AbvSbs_H_ > $stackToEast_AbvSbs_H_))">
2000 <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
2002 <xsl:when test="(($p2pshp_hori_idx_ = $iStackToWest) and ($stackToEast_AbvSbs_H_ > $stackToWest_AbvSbs_H_))">
2003 <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
2005 <xsl:otherwise>0</xsl:otherwise>
2014 <!-- Store the conns in a variable -->
2015 <xsl:variable name="p2pConn_heights_">
2017 <xsl:for-each select="BUSCONN">
2019 <xsl:variable name="bifName_" select="@BUSINTERFACE"/>
2022 <xsl:when test="@IS_PROCCONN and @BIF_Y">
2025 <xsl:message>Proc <xsl:value-of select="$procInstance_"/></xsl:message>
2027 <xsl:variable name="procBif_Y_" select="((($BLKD_BIF_H + $BLKD_MOD_BIF_GAP_V) * @BIF_Y) + ($BLKD_MOD_LANE_H + $BLKD_MOD_LABEL_H + $BLKD_MOD_BIF_GAP_V))"/>
2028 <xsl:variable name="procBifRank_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $p2pInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIFRANK"/>
2029 <xsl:variable name="procBusName_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $p2pInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BUSNAME"/>
2030 <xsl:variable name="procBifSide_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $p2pInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_X"/>
2032 <xsl:variable name="bcProc_Y_" select="($p2pshp_Y_ + $procBif_Y_ + ceiling($BIF_H div 2) - ceiling($BLKD_BIFC_H div 2) + $procStack_H_diff_)"/>
2033 <xsl:variable name="bcProc_X_">
2035 <xsl:when test="$procBifSide_ = '0'">
2036 <xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_ - (ceiling($BLKD_MOD_W div 2) + $BLKD_BIFC_W))"/>
2038 <xsl:when test="$procBifSide_ = '1'">
2039 <xsl:value-of select="ceiling($BLKD_MOD_W div 2)"/>
2041 <xsl:otherwise>0</xsl:otherwise>
2045 <P2PCONN X="{$bcProc_X_}" Y="{$bcProc_Y_}" BUSNAME= "{$procBusName_}" BUSSTD="{$iBusStd}" BIFRANK="{$procBifRank_}" BIFSIDE="{$procBifSide_}"/>
2051 <xsl:variable name="modInstance_" select="@INSTANCE"/>
2052 <xsl:variable name="modshp_vert_idx_" select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[MODULE[(@INSTANCE = $modInstance_)]]/@SHAPE_VERTI_INDEX"/>
2053 <xsl:variable name="modBifSide_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $modInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_X"/>
2054 <xsl:variable name="modBif_Y_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $modInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_Y"/>
2055 <xsl:variable name="modBc_Y_" select="((($BLKD_BIF_H + $BLKD_MOD_BIF_GAP_V) * $modBif_Y_) + ($BLKD_MOD_LANE_H + $BLKD_MOD_LABEL_H + $BLKD_MOD_BIF_GAP_V))"/>
2058 <xsl:message>Memory Instance <xsl:value-of select="$procInstance_"/></xsl:message>
2061 <xsl:variable name="modshp_Y_">
2062 <xsl:call-template name="_calc_Stack_Shape_Y">
2063 <xsl:with-param name="iHorizIdx" select="$p2pshp_hori_idx_"/>
2064 <xsl:with-param name="iVertiIdx" select="$modshp_vert_idx_"/>
2065 </xsl:call-template>
2068 <xsl:variable name="modBifRank_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $modInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIFRANK"/>
2069 <xsl:variable name="modBusName_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $modInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BUSNAME"/>
2070 <xsl:variable name="bcMod_Y_" select="($modshp_Y_ + $modBc_Y_ + ceiling($BLKD_BIF_H div 2) - ceiling($BLKD_BIFC_H div 2) + $cmplxStack_H_diff_)"/>
2071 <xsl:variable name="bcMod_X_">
2073 <xsl:when test="$modBifSide_ = '0'">
2074 <xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_ - (ceiling($BLKD_MOD_W div 2) + $BLKD_BIFC_W))"/>
2076 <xsl:when test="$modBifSide_ = '1'">
2077 <xsl:value-of select="ceiling($BLKD_MOD_W div 2)"/>
2079 <xsl:otherwise>0</xsl:otherwise>
2083 <P2PCONN X="{$bcMod_X_}" Y="{$bcMod_Y_}" BUSNAME="{$modBusName_}" BUSSTD="{$iBusStd}" BIFRANK="{$modBifRank_}" BIFSIDE="{$modBifSide_}"/>
2092 <xsl:variable name="busTop_" select="math:min(exsl:node-set($p2pConn_heights_)/P2PCONN/@Y)"/>
2093 <xsl:variable name="busBot_" select="math:max(exsl:node-set($p2pConn_heights_)/P2PCONN/@Y)"/>
2094 <xsl:variable name="v_bus_y_" select="$busTop_ + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_P2P_BUS_W div 2)"/>
2096 <xsl:variable name="busName_" select="exsl:node-set($p2pConn_heights_)/P2PCONN/@BUSNAME"/>
2097 <xsl:variable name="busStd_" select="exsl:node-set($p2pConn_heights_)/P2PCONN/@BUSSTD"/>
2100 <xsl:message>BUS TOP <xsl:value-of select="$busTop_"/></xsl:message>
2101 <xsl:message>BUS BOT <xsl:value-of select="$busBot_"/></xsl:message>
2104 <!-- Draw the vertical part of the bus -->
2106 <rect x="{$bcInSpace_X_ + $BLKD_P2P_BUS_W}"
2108 width= "{$BLKD_P2P_BUS_W}"
2109 height="{200 + $BLKD_P2P_BUS_W}"
2110 style="stroke:none;fill:{$busColor_}"/>
2113 <!-- Place the bus label.-->
2115 <text class="p2pbuslabel"
2116 x="{$bcInSpace_X_ + $BLKD_BUS_ARROW_W + ceiling($BLKD_BUS_ARROW_W div 2) + ceiling($BLKD_BUS_ARROW_W div 4) + 6}"
2117 y="{$busTop_ + ($BLKD_BUS_ARROW_H * 3)}">
2118 <xsl:value-of select="$busName_"/>
2122 <!-- Draw the busconnection and horizontal lines.-->
2123 <xsl:for-each select="exsl:node-set($p2pConn_heights_)/P2PCONN">
2125 <xsl:variable name="bus_x_" select="($bcInSpace_X_ + ceiling($BLKD_BIFC_W div 2))"/>
2126 <xsl:variable name="bus_y_" select="@Y + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_P2P_BUS_W div 2)"/>
2128 <xsl:variable name="h_bus_ul_x_">
2130 <xsl:when test="@BIFSIDE='0'">
2131 <xsl:value-of select="$bus_x_"/>
2133 <xsl:when test="@BIFSIDE='1'">
2134 <xsl:value-of select="(@X + $BLKD_BIFC_W + $BLKD_BUS_ARROW_W) - 1"/>
2139 <xsl:variable name="h_bus_ul_y_" select="$bus_y_"/>
2141 <xsl:variable name="h_bus_height_" select="$BLKD_P2P_BUS_W"/>
2142 <xsl:variable name="h_bus_width_">
2144 <xsl:message>BIFSIDE <xsl:value-of select="@BIFSIDE"/></xsl:message>
2145 <xsl:message>BUSSTD <xsl:value-of select="@BUSSTD"/></xsl:message>
2146 <xsl:message>BIFRANK <xsl:value-of select="@BIFRANK"/></xsl:message>
2149 <xsl:when test="@BIFSIDE='0'">
2150 <xsl:value-of select="(@X - $bus_x_ - $BLKD_BUS_ARROW_W)"/>
2152 <xsl:when test="@BIFSIDE='1'">
2153 <xsl:value-of select="$bus_x_ - $h_bus_ul_x_ + 1"/>
2159 <!-- Draw Bus connection-->
2160 <use x="{@X}" y="{@Y}" xlink:href="#{@BUSSTD}_busconn_{@BIFRANK}"/>
2162 <!-- Draw the arrow -->
2164 <xsl:when test="((@BIFSIDE='0') and not((@BUSSTD = 'FSL') and ((@BIFRANK = 'INITIATOR') or (@BIFRANK = 'MASTER'))))">
2165 <use x="{@X - $BLKD_BUS_ARROW_W}" y="{@Y + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_BUS_ARROW_H div 2)}" xlink:href="#{@BUSSTD}_BusArrowEast"/>
2167 <xsl:when test="((@BIFSIDE='1') and not((@BUSSTD = 'FSL') and ((@BIFRANK = 'INITIATOR') or (@BIFRANK = 'MASTER'))))">
2168 <use x="{(@X + $BLKD_BIFC_W)}" y="{@Y + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_BUS_ARROW_H div 2)}" xlink:href="#{@BUSSTD}_BusArrowWest"/>
2171 <xsl:when test="((@BIFSIDE='0') and ((@BUSSTD = 'FSL') and ((@BIFRANK = 'INITIATOR') or (@BIFRANK = 'MASTER'))))">
2172 <use x="{@X - $BLKD_BUS_ARROW_W}" y="{@Y + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_BUS_ARROW_H div 2)}" xlink:href="#{@BUSSTD}_BusArrowHInitiator"/>
2175 <xsl:when test="((@BIFSIDE='1') and ((@BUSSTD = 'FSL') and ((@BIFRANK = 'INITIATOR') or (@BIFRANK = 'MASTER'))))">
2176 <use x="{(@X + $BLKD_BIFC_W)}" y="{@Y + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_BUS_ARROW_H div 2)}" xlink:href="#{@BUSSTD}_BusArrowHInitiator"/>
2181 <!-- Draw the horizontal part of the bus -->
2182 <rect x="{$h_bus_ul_x_}"
2184 width= "{$h_bus_width_}"
2185 height="{$h_bus_height_}"
2187 style="stroke:none; fill:{$busColor_}"/>
2190 Draw the vertical part of the bus. The MPMC BIF and the top arrow will
2191 be added later when the main drawing happens.
2193 <xsl:variable name="v_bus_ul_x_">
2195 <xsl:when test="@BIFSIDE='0'"><xsl:value-of select="($h_bus_ul_x_)"/></xsl:when>
2196 <xsl:when test="@BIFSIDE='1'"><xsl:value-of select="($h_bus_ul_x_ + $h_bus_width_ - $BLKD_P2P_BUS_W)"/></xsl:when>
2200 <rect x="{$v_bus_ul_x_}"
2202 width= "{$BLKD_P2P_BUS_W}"
2203 height="{$h_bus_ul_y_}"
2204 style="stroke:none; fill:{$busColor_}"/>
2207 <text class="p2pbuslabel"
2208 x="{$v_bus_ul_x_ + $BLKD_BUS_ARROW_W + ceiling($BLKD_BUS_ARROW_W div 2) + ceiling($BLKD_BUS_ARROW_W div 4)}"
2209 y="{($BLKD_BUS_ARROW_H * 3)}"><xsl:value-of select="$busName_"/></text>
2220 ======================================================================
2221 Handle Split connections, (connections that go between adjacent stacks)
2222 ======================================================================
2225 <xsl:template name="BCLaneSpace_SplitConn">
2227 <xsl:param name="iBusStd" select="'NONE'"/>
2228 <xsl:param name="iBusName" select="'NONE'"/>
2229 <xsl:param name="iBifRank" select="'NONE'"/>
2230 <xsl:param name="iStackToEast" select="'NONE'"/>
2231 <xsl:param name="iStackToWest" select="'NONE'"/>
2232 <xsl:param name="iStackToEast_W" select="0"/>
2233 <xsl:param name="iStackToWest_W" select="0"/>
2234 <xsl:param name="iLaneInSpace_X" select="0"/>
2236 <xsl:variable name="busColor_">
2237 <xsl:call-template name="BusType2Color">
2238 <xsl:with-param name="iBusType" select="$iBusStd"/>
2239 </xsl:call-template>
2242 <xsl:variable name="space_W_">
2243 <xsl:call-template name="_calc_Space_Width">
2244 <xsl:with-param name="iStackToEast" select="$iStackToEast"/>
2245 <xsl:with-param name="iStackToWest" select="$iStackToWest"/>
2246 </xsl:call-template>
2249 <xsl:variable name ="extSpaceWest_W_" select="ceiling($iStackToWest_W div 2)"/>
2250 <xsl:variable name ="extSpaceEast_W_" select="ceiling($iStackToEast_W div 2)"/>
2253 <xsl:variable name="bifName_" select="BUSCONN/@BUSINTERFACE"/>
2254 <xsl:variable name="shpInstance_" select="BUSCONN/@INSTANCE"/>
2257 <xsl:message>Found a split connection on <xsl:value-of select="$shpInstance_"/></xsl:message>
2261 <xsl:variable name="shp_hori_idx_">
2264 <xsl:when test="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $shpInstance_)]">
2265 <xsl:value-of select="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $shpInstance_)]/@STACK_HORIZ_INDEX"/>
2268 <xsl:when test="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $shpInstance_)])]">
2269 <xsl:value-of select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $shpInstance_)])]/@STACK_HORIZ_INDEX"/>
2271 <xsl:otherwise>_unknown_</xsl:otherwise>
2276 <xsl:variable name="shp_vert_idx_">
2279 <xsl:when test="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $shpInstance_)]">
2280 <xsl:value-of select="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $shpInstance_)]/@SHAPE_VERTI_INDEX"/>
2283 <xsl:when test="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $shpInstance_)])]">
2284 <xsl:value-of select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $shpInstance_)])]/@SHAPE_VERTI_INDEX"/>
2286 <xsl:otherwise>_unknown_</xsl:otherwise>
2291 <xsl:variable name="splitshp_Width_">
2294 <xsl:when test="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $shpInstance_)]">
2295 <xsl:value-of select="$BLKD_MOD_W"/>
2298 <xsl:when test="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $shpInstance_)])]/@MODS_W">
2300 <xsl:message>Using mods width on <xsl:value-of select="$shpInstance_"/></xsl:message>
2302 <xsl:value-of select="(/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $shpInstance_)])]/@MODS_W * $BLKD_MOD_W)"/>
2305 <xsl:value-of select="$BLKD_MOD_W"/>
2312 <xsl:message>Found width of <xsl:value-of select="$splitshp_Width_"/></xsl:message>
2316 <xsl:variable name="splitshp_Y_">
2317 <xsl:call-template name="_calc_Stack_Shape_Y">
2318 <xsl:with-param name="iHorizIdx" select="$shp_hori_idx_"/>
2319 <xsl:with-param name="iVertiIdx" select="$shp_vert_idx_"/>
2320 </xsl:call-template>
2324 <xsl:variable name="splitStack_H_diff_">
2326 <xsl:when test=" (($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">0</xsl:when>
2327 <xsl:when test="not(($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">
2329 <xsl:variable name="stackToWest_AbvSbs_H_">
2330 <xsl:call-template name="_calc_Stack_AbvSbs_Height">
2331 <xsl:with-param name="iStackIdx" select="$iStackToWest"/>
2332 </xsl:call-template>
2335 <xsl:variable name="stackToEast_AbvSbs_H_">
2336 <xsl:call-template name="_calc_Stack_AbvSbs_Height">
2337 <xsl:with-param name="iStackIdx" select="$iStackToEast"/>
2338 </xsl:call-template>
2342 <xsl:message>stack to west H <xsl:value-of select="$stackToWest_AbvSbs_H_"/></xsl:message>
2343 <xsl:message>stack to east H <xsl:value-of select="$stackToEast_AbvSbs_H_"/></xsl:message>
2346 <xsl:when test="(($shp_hori_idx_ = $iStackToEast) and ($stackToWest_AbvSbs_H_ > $stackToEast_AbvSbs_H_))">
2347 <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
2349 <xsl:when test="(($shp_hori_idx_ = $iStackToWest) and ($stackToEast_AbvSbs_H_ > $stackToWest_AbvSbs_H_))">
2350 <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
2352 <xsl:otherwise>0</xsl:otherwise>
2360 <xsl:variable name="splitBif_Y_" select="((($BLKD_BIF_H + $BLKD_MOD_BIF_GAP_V) * BUSCONN/@BIF_Y) + ($BLKD_MOD_LANE_H + $BLKD_MOD_LABEL_H + $BLKD_MOD_BIF_GAP_V))"/>
2361 <xsl:variable name="splitBusStd_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $shpInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BUSSTD"/>
2362 <xsl:variable name="splitBifRank_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $shpInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIFRANK"/>
2363 <xsl:variable name="splitBifSide_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $shpInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_X"/>
2365 <xsl:variable name="bcInSpace_X_">
2367 <xsl:when test="$splitBifSide_ = '1'"><xsl:value-of select="ceiling($splitshp_Width_ div 2)"/></xsl:when>
2368 <xsl:when test="$splitBifSide_ = '0'"><xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_ - ceiling($splitshp_Width_ div 2) - $BLKD_BIFC_W)"/></xsl:when>
2373 <xsl:variable name="bcBus_X_">
2375 <xsl:when test="$splitBifSide_ = '1'"><xsl:value-of select="$bcInSpace_X_"/></xsl:when>
2376 <xsl:when test="$splitBifSide_ = '0'"><xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_ - ceiling($BLKD_MOD_W div 2) - $BLKD_BIFC_W)"/></xsl:when>
2380 <xsl:variable name="bcSplit_Y_">
2382 <xsl:when test="(BUSCONN/@IS_MEMCONN) and (($splitBusStd_ = 'LMB') or ($splitBusStd_ = 'OCM'))">
2384 <xsl:message>Found memory conn split connection on <xsl:value-of select="$shpInstance_"/> </xsl:message>
2386 <xsl:value-of select="($splitshp_Y_ + $BLKD_MOD_H + $BLKD_MOD_BIF_GAP_V + (BUSCONN/@BIF_Y * ($BLKD_BIF_H + $BLKD_MOD_BIF_GAP_V)) + ceiling($BLKD_BIF_H div 2) - ceiling($BLKD_BIFC_H div 2) + $splitStack_H_diff_)"/>
2389 <xsl:value-of select="($splitshp_Y_ + $splitBif_Y_ + ceiling($BLKD_BIF_H div 2) - ceiling($BLKD_BIFC_H div 2) + $splitStack_H_diff_)"/>
2394 <xsl:value-of select="($splitshp_Y_ + $splitBif_Y_ + ceiling($BIF_H div 2) - ceiling($BLKD_BIFC_H div 2) + $splitStack_H_diff_)"/>
2397 <xsl:message>VERTI INDEX <xsl:value-of select="$shp_vert_idx_"/></xsl:message>
2398 <xsl:message>BIF Y <xsl:value-of select="$splitBif_Y_"/></xsl:message>
2399 <xsl:message>HORIZ INDEX <xsl:value-of select="$shp_hori_idx_"/></xsl:message>
2402 <use x="{$bcInSpace_X_}" y="{$bcSplit_Y_}" xlink:href="#{@BUSSTD}_busconn_{$splitBifRank_}"/>
2405 <xsl:call-template name="Draw_SplitConnBus">
2406 <xsl:with-param name="iBc_Y" select="$bcSplit_Y_"/>
2407 <xsl:with-param name="iBc_X" select="$bcInSpace_X_"/>
2408 <xsl:with-param name="iBc_Rnk" select="$splitBifRank_"/>
2409 <xsl:with-param name="iBc_Side" select="$splitBifSide_"/>
2410 <xsl:with-param name="iBusStd" select="$iBusStd"/>
2411 <xsl:with-param name="iBusName" select="$iBusName"/>
2412 </xsl:call-template>
2418 <xsl:template name="Define_BusLaneSpace">
2420 <xsl:param name="iStackToEast" select="'NONE'"/>
2421 <xsl:param name="iStackToWest" select="'NONE'"/>
2424 <xsl:message>Input Stack to West <xsl:value-of select="$iStackToWest"/></xsl:message>
2425 <xsl:message>Input Stack to East <xsl:value-of select="$iStackToEast"/></xsl:message>
2428 <xsl:variable name="stackToEast_">
2430 <xsl:when test="not($iStackToEast = 'NONE')"><xsl:value-of select="$iStackToEast"/></xsl:when>
2431 <xsl:otherwise>NONE</xsl:otherwise>
2435 <xsl:variable name="stackToWest_">
2437 <xsl:when test=" not($iStackToWest = 'NONE')"><xsl:value-of select="$iStackToWest"/></xsl:when>
2438 <xsl:when test="(not($iStackToEast = 'NONE') and not($iStackToEast = '0'))"><xsl:value-of select="($iStackToEast - 1)"/></xsl:when>
2439 <xsl:otherwise>NONE</xsl:otherwise>
2444 <xsl:message>Stack to West <xsl:value-of select="$stackToWest_"/></xsl:message>
2445 <xsl:message>Stack to East <xsl:value-of select="$stackToEast_"/></xsl:message>
2446 <xsl:message>Stack abv diff <xsl:value-of select="$stack_H_diff_"/></xsl:message>
2449 <xsl:variable name="spaceAbvSbs_H_">
2450 <xsl:call-template name="_calc_Space_AbvSbs_Height">
2451 <xsl:with-param name="iStackToEast" select="$iStackToEast"/>
2452 <xsl:with-param name="iStackToWest" select="$iStackToWest"/>
2453 </xsl:call-template>
2456 <xsl:variable name="spaceBlwSbs_H_">
2457 <xsl:call-template name="_calc_Space_BlwSbs_Height">
2458 <xsl:with-param name="iStackToEast" select="$iStackToEast"/>
2459 <xsl:with-param name="iStackToWest" select="$iStackToWest"/>
2460 </xsl:call-template>
2464 <xsl:variable name="space_H_" select="($spaceAbvSbs_H_ + $BLKD_PROC2SBS_GAP + $G_total_SharedBus_H + $spaceBlwSbs_H_)"/>
2465 <xsl:variable name="space_W_">
2466 <xsl:call-template name="_calc_Space_Width">
2467 <xsl:with-param name="iStackToEast" select="$iStackToEast"/>
2468 <xsl:with-param name="iStackToWest" select="$iStackToWest"/>
2469 </xsl:call-template>
2472 <xsl:variable name="spaceSharedBus_Y_" select="$spaceAbvSbs_H_ + $BLKD_PROC2SBS_GAP"/>
2474 <xsl:variable name="space_name_">
2475 <xsl:call-template name="_gen_Space_Name">
2476 <xsl:with-param name="iStackToEast" select="$stackToEast_"/>
2477 <xsl:with-param name="iStackToWest" select="$stackToWest_"/>
2478 </xsl:call-template>
2482 <xsl:message>Stack Width <xsl:value-of select="$space_W_"/></xsl:message>
2483 <xsl:message>Space Name <xsl:value-of select="$space_name_"/></xsl:message>
2484 <xsl:message>Stack Abv <xsl:value-of select="$spaceAbvSbs_H_"/></xsl:message>
2485 <xsl:message>Stack Blw <xsl:value-of select="$spaceBlwSbs_H_"/></xsl:message>
2486 <xsl:message>Total Sbs <xsl:value-of select="$totalSbs_H_"/></xsl:message>
2489 <xsl:variable name = "stackToWest_W_">
2491 <xsl:when test="(($iStackToEast = '0') and ($iStackToWest = 'NONE'))">0</xsl:when>
2492 <xsl:when test="(($iStackToEast = 'NONE') and not($iStackToWest = 'NONE'))">
2493 <xsl:call-template name="_calc_Stack_Width">
2494 <xsl:with-param name="iStackIdx" select="$iStackToWest"/>
2495 </xsl:call-template>
2497 <xsl:when test="(not($iStackToEast = '0') and not($iStackToEast = 'NONE') and ($iStackToWest = 'NONE'))">
2498 <xsl:call-template name="_calc_Stack_Width">
2499 <xsl:with-param name="iStackIdx" select="($iStackToEast - 1)"/>
2500 </xsl:call-template>
2502 <xsl:otherwise>0</xsl:otherwise>
2506 <xsl:variable name = "stackToEast_W_">
2507 <xsl:call-template name="_calc_Stack_Width">
2508 <xsl:with-param name="iStackIdx" select="$iStackToEast"/>
2509 </xsl:call-template>
2512 <xsl:variable name ="extSpaceWest_W_" select="ceiling($stackToWest_W_ div 2)"/>
2513 <xsl:variable name ="extSpaceEast_W_" select="ceiling($stackToEast_W_ div 2)"/>
2516 <xsl:message>Stack To West <xsl:value-of select="$stackToWest_W_"/></xsl:message>
2517 <xsl:message>Stack To East <xsl:value-of select="$stackToEast_W_"/></xsl:message>
2520 <symbol id="{$space_name_}">
2527 style="stroke:none; fill:{$COL_WHITE}"/>
2530 <xsl:for-each select="/EDKSYSTEM/BLKDSHAPES/BCLANESPACES/BCLANESPACE[((@EAST = $iStackToEast) or (($iStackToEast = 'NONE') and (@WEST = $iStackToWest)))]/BUSCONNLANE[@BUSSTD and @BUSNAME]">
2532 <xsl:variable name="busStd_" select="@BUSSTD"/>
2533 <xsl:variable name="busName_" select="@BUSNAME"/>
2534 <xsl:variable name="lane_X_" select="@BUSLANE_X"/>
2536 <xsl:variable name="laneInSpace_X_" select="($extSpaceWest_W_ + (@BUSLANE_X * $BLKD_BUS_LANE_W))"/>
2537 <xsl:message>Oriented <xsl:value-of select="@ORIENTED"/></xsl:message>
2538 <xsl:message>laneInSpace_XY <xsl:value-of select="($extSpaceWest_W_ + (@BUSLANE_X * $BLKD_BUS_LANE_W))"/></xsl:message>
2539 <xsl:message>Lane in space X <xsl:value-of select="$laneInSpace_X_"/></xsl:message>
2542 <xsl:variable name="laneInSpace_X_">
2544 <xsl:when test="(@ORIENTED = 'EAST')">
2545 <xsl:value-of select="($extSpaceWest_W_ + (@BUSLANE_X * $BLKD_BUS_LANE_W) - $BLKD_BUS_ARROW_W - $BLKD_P2P_BUS_W)"/>
2547 <xsl:otherwise><xsl:value-of select="($extSpaceWest_W_ + (@BUSLANE_X * $BLKD_BUS_LANE_W))"/></xsl:otherwise>
2552 <xsl:variable name="busColor_">
2553 <xsl:call-template name="BusType2Color">
2554 <xsl:with-param name="iBusType" select="@BUSSTD"/>
2555 </xsl:call-template>
2560 ===========================================================
2561 Handle Bucket connections to the shared busses.
2562 ===========================================================
2564 <xsl:when test="@BUSLANE_X and @IS_BKTCONN and BUSCONN[@BIFRANK] and /EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $busName_)]/@BUSINDEX">
2565 <xsl:call-template name="BCLaneSpace_BucketToSharedBus">
2566 <xsl:with-param name="iBusName" select="$busName_"/>
2567 <xsl:with-param name="iBusStd" select="$busStd_"/>
2568 <xsl:with-param name="iBifRank" select="BUSCONN/@BIFRANK"/>
2569 <xsl:with-param name="iStackToEast" select="$stackToEast_"/>
2570 <xsl:with-param name="iStackToWest" select="$stackToWest_"/>
2571 <xsl:with-param name="iStackToEast_W" select="$stackToEast_W_"/>
2572 <xsl:with-param name="iStackToWest_W" select="$stackToWest_W_"/>
2573 <xsl:with-param name="iLaneInSpace_X" select="$laneInSpace_X_"/>
2574 <xsl:with-param name="iSpaceSharedBus_Y" select="$spaceSharedBus_Y_"/>
2575 </xsl:call-template>
2581 ===========================================================
2582 Handle Processor's Shared bus connections.
2583 ===========================================================
2585 <xsl:when test="@BUSLANE_X and @IS_SBSCONN and not(@IS_MPMCCONN) and BUSCONN[@BIF_Y and @IS_PROCCONN and @INSTANCE and @BUSINTERFACE] and /EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $busName_)]/@BUSINDEX">
2586 <xsl:call-template name="BCLaneSpace_ProcBifToSharedBus">
2587 <xsl:with-param name="iBusStd" select="$busStd_"/>
2588 <xsl:with-param name="iBusName" select="$busName_"/>
2589 <xsl:with-param name="iBifRank" select="BUSCONN/@BIFRANK"/>
2590 <xsl:with-param name="iStackToEast" select="$stackToEast_"/>
2591 <xsl:with-param name="iStackToWest" select="$stackToWest_"/>
2592 <xsl:with-param name="iStackToEast_W" select="$stackToEast_W_"/>
2593 <xsl:with-param name="iStackToWest_W" select="$stackToWest_W_"/>
2594 <xsl:with-param name="iLaneInSpace_X" select="$laneInSpace_X_"/>
2595 <xsl:with-param name="iSpaceSharedBus_Y" select="$spaceSharedBus_Y_"/>
2596 </xsl:call-template>
2602 ===========================================================
2603 Handle non Processor Shared Bus connections.
2604 ===========================================================
2606 <xsl:when test="@BUSLANE_X and @IS_SBSCONN and not(@IS_MPMCCONN) and BUSCONN[@BIF_Y and not(@IS_PROCCONN) and @INSTANCE and @BUSINTERFACE] and /EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $busName_)]/@BUSINDEX">
2607 <xsl:call-template name="BCLaneSpace_NonProcBifToSharedBus">
2608 <xsl:with-param name="iBusStd" select="$busStd_"/>
2609 <xsl:with-param name="iBusName" select="$busName_"/>
2610 <xsl:with-param name="iBifRank" select="BUSCONN/@BIFRANK"/>
2611 <xsl:with-param name="iStackToEast" select="$stackToEast_"/>
2612 <xsl:with-param name="iStackToWest" select="$stackToWest_"/>
2613 <xsl:with-param name="iStackToEast_W" select="$stackToEast_W_"/>
2614 <xsl:with-param name="iStackToWest_W" select="$stackToWest_W_"/>
2615 <xsl:with-param name="iLaneInSpace_X" select="$laneInSpace_X_"/>
2616 <xsl:with-param name="iSpaceSharedBus_Y" select="$spaceSharedBus_Y_"/>
2617 </xsl:call-template>
2623 ===========================================================
2624 Handle connections from processors to Memory UNITs
2625 ===========================================================
2627 <xsl:when test="@BUSLANE_X and @IS_MEMCONN and not(@IS_MULTISTK) and BUSCONN[@BIF_Y and @IS_PROCCONN and not(@IS_SPLITCONN) and @INSTANCE and @BUSINTERFACE]">
2628 <xsl:call-template name="BCLaneSpace_ProcBifToMemoryUnit">
2629 <xsl:with-param name="iBusStd" select="$busStd_"/>
2630 <xsl:with-param name="iBusName" select="$busName_"/>
2631 <xsl:with-param name="iBifRank" select="BUSCONN/@BIFRANK"/>
2632 <xsl:with-param name="iStackToEast" select="$stackToEast_"/>
2633 <xsl:with-param name="iStackToWest" select="$stackToWest_"/>
2634 <xsl:with-param name="iStackToEast_W" select="$stackToEast_W_"/>
2635 <xsl:with-param name="iStackToWest_W" select="$stackToWest_W_"/>
2636 <xsl:with-param name="iLaneInSpace_X" select="$laneInSpace_X_"/>
2637 </xsl:call-template>
2644 ===========================================================
2645 Handle generic Point to Point connections
2646 ===========================================================
2648 <xsl:when test="@BUSLANE_X and not(@IS_MULTISTK) and not(@IS_MPMCCONN) and not(@IS_MEMCONN) and not(@IS_SBSCONN) and BUSCONN[@BIF_Y and @INSTANCE and @BUSINTERFACE and not(@IS_SPLITCONN)]">
2649 <xsl:call-template name="BCLaneSpace_PointToPoint">
2650 <xsl:with-param name="iBusStd" select="$busStd_"/>
2651 <xsl:with-param name="iBusName" select="$busName_"/>
2652 <xsl:with-param name="iBifRank" select="BUSCONN/@BIFRANK"/>
2653 <xsl:with-param name="iStackToEast" select="$stackToEast_"/>
2654 <xsl:with-param name="iStackToWest" select="$stackToWest_"/>
2655 <xsl:with-param name="iStackToEast_W" select="$stackToEast_W_"/>
2656 <xsl:with-param name="iStackToWest_W" select="$stackToWest_W_"/>
2657 <xsl:with-param name="iLaneInSpace_X" select="$laneInSpace_X_"/>
2658 </xsl:call-template>
2664 ===========================================================
2665 Handle MultiStack Point to Point connections
2666 ===========================================================
2668 <xsl:when test="@BUSLANE_X and (@IS_MULTISTK) and not(@IS_SBSCONN) and BUSCONN[@BIF_Y and @IS_PROCCONN and @INSTANCE and @BUSINTERFACE]">
2669 <xsl:call-template name="BCLaneSpace_MultiStack_PointToPoint">
2670 <xsl:with-param name="iBusStd" select="$busStd_"/>
2671 <xsl:with-param name="iBusName" select="$busName_"/>
2672 <xsl:with-param name="iBifRank" select="BUSCONN/@BIFRANK"/>
2673 <xsl:with-param name="iStackToEast" select="$stackToEast_"/>
2674 <xsl:with-param name="iStackToWest" select="$stackToWest_"/>
2675 <xsl:with-param name="iStackToEast_W" select="$stackToEast_W_"/>
2676 <xsl:with-param name="iStackToWest_W" select="$stackToWest_W_"/>
2677 <xsl:with-param name="iLaneInSpace_X" select="$laneInSpace_X_"/>
2678 </xsl:call-template>
2683 ===========================================================
2684 Handle Processor to processor connections
2685 ===========================================================
2689 <xsl:when test="(@IS_PROC2PROC and (count(BUSCONN[@BIF_Y and @INSTANCE and @BUSINTERFACE]) = 2))">
2690 <xsl:call-template name="BCLaneSpace_ProcToProc">
2691 <xsl:with-param name="iBusStd" select="$busStd_"/>
2692 <xsl:with-param name="iBusName" select="$busName_"/>
2693 <xsl:with-param name="iBifRank" select="BUSCONN/@BIFRANK"/>
2694 <xsl:with-param name="iStackToEast" select="$stackToEast_"/>
2695 <xsl:with-param name="iStackToWest" select="$stackToWest_"/>
2696 <xsl:with-param name="iStackToEast_W" select="$stackToEast_W_"/>
2697 <xsl:with-param name="iStackToWest_W" select="$stackToWest_W_"/>
2698 <xsl:with-param name="iLaneInSpace_X" select="$laneInSpace_X_"/>
2699 </xsl:call-template>
2703 ===========================================================
2704 Handle connections to the StandAlone MPMC
2705 ===========================================================
2707 <xsl:when test="@BUSLANE_X and (@IS_MPMCCONN) and not(@IS_SBSCONN) and BUSCONN[(@BIF_Y and @INSTANCE and @BUSINTERFACE)]">
2710 <xsl:call-template name="BCLaneSpace_ToStandAloneMPMC">
2711 <xsl:with-param name="iBusStd" select="$busStd_"/>
2712 <xsl:with-param name="iBusName" select="$busName_"/>
2713 <xsl:with-param name="iBifRank" select="BUSCONN/@BIFRANK"/>
2714 <xsl:with-param name="iStackToEast" select="$stackToEast_"/>
2715 <xsl:with-param name="iStackToWest" select="$stackToWest_"/>
2716 <xsl:with-param name="iStackToEast_W" select="$stackToEast_W_"/>
2717 <xsl:with-param name="iStackToWest_W" select="$stackToWest_W_"/>
2718 <xsl:with-param name="iLaneInSpace_X" select="$laneInSpace_X_"/>
2719 </xsl:call-template>
2723 ===========================================================
2724 Handle Split connections, (connections that go between non adjacent stacks)
2725 ===========================================================
2727 <xsl:when test="(BUSCONN[@BIF_Y and @INSTANCE and @BUSINTERFACE and @IS_SPLITCONN])">
2728 <xsl:call-template name="BCLaneSpace_SplitConn">
2729 <xsl:with-param name="iBusStd" select="$busStd_"/>
2730 <xsl:with-param name="iBusName" select="$busName_"/>
2731 <xsl:with-param name="iBifRank" select="BUSCONN/@BIFRANK"/>
2732 <xsl:with-param name="iStackToEast" select="$stackToEast_"/>
2733 <xsl:with-param name="iStackToWest" select="$stackToWest_"/>
2734 <xsl:with-param name="iStackToEast_W" select="$stackToEast_W_"/>
2735 <xsl:with-param name="iStackToWest_W" select="$stackToWest_W_"/>
2736 <xsl:with-param name="iLaneInSpace_X" select="$laneInSpace_X_"/>
2737 </xsl:call-template>
2750 <xsl:template name="Define_BusLaneSpaces">
2752 <xsl:variable name="lastStack_" select="(/EDKSYSTEM/BLKDSHAPES/@STACK_HORIZ_WIDTH) - 1"/>
2754 <xsl:for-each select="/EDKSYSTEM/BLKDSHAPES/BCLANESPACES/BCLANESPACE[@EAST]">
2755 <xsl:sort select="@EAST" data-type="number"/>
2757 <xsl:call-template name="Define_BusLaneSpace">
2758 <xsl:with-param name="iStackToEast" select="@EAST"/>
2759 </xsl:call-template>
2763 <xsl:message>Last Stack <xsl:value-of select="$lastStack_"/></xsl:message>
2766 <xsl:for-each select="/EDKSYSTEM/BLKDSHAPES/BCLANESPACES/BCLANESPACE[(@WEST = $lastStack_)]">
2767 <xsl:call-template name="Define_BusLaneSpace">
2768 <xsl:with-param name="iStackToWest" select="$lastStack_"/>
2769 </xsl:call-template>