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="sbs_Y" select="0"/>
23 <xsl:param name="stkToEast" select="'NONE'"/>
24 <xsl:param name="stkToWest" select="'NONE'"/>
25 <xsl:param name="stkToEast_W" select="0"/>
26 <xsl:param name="stkToWest_W" select="0"/>
27 <xsl:param name="busStd" select="'NONE'"/>
28 <xsl:param name="busName" select="'NONE'"/>
29 <xsl:param name="bifRank" select="'NONE'"/>
30 <xsl:param name="laneInSpace_X" select="0"/>
32 <xsl:variable name="bus_color_">
33 <xsl:call-template name="BusType2Color">
34 <xsl:with-param name="busType" select="$busStd"/>
38 <xsl:variable name="sbs_idx_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE= $busName)]/@BUSINDEX"/>
39 <xsl:variable name="sbs_name_" select="/EDKSYSTEM/BLKDSHAPES/SBSBUCKETS/SBSBUCKET[(@BUSINDEX = $sbs_idx_)]/@BUSNAME"/>
41 <xsl:variable name="sbs_bc_y_" select="($sbs_Y + ($sbs_idx_ * $SBS_LANE_H))"/>
43 <xsl:variable name="bktshp_hori_idx_" select="/EDKSYSTEM/BLKDSHAPES/SBSBUCKETS/SBSBUCKET[(@BUSINDEX = $sbs_idx_)]/@STACK_HORIZ_INDEX"/>
44 <xsl:variable name="bktshp_vert_idx_" select="/EDKSYSTEM/BLKDSHAPES/SBSBUCKETS/SBSBUCKET[(@BUSINDEX = $sbs_idx_)]/@SHAPE_VERTI_INDEX"/>
46 <xsl:variable name="space_W_">
47 <xsl:call-template name="_calc_Space_Width">
48 <xsl:with-param name="stackToEast" select="$stkToEast"/>
49 <xsl:with-param name="stackToWest" select="$stkToWest"/>
53 <xsl:variable name ="extSpaceWest_W_" select="ceiling($stkToWest_W div 2)"/>
54 <xsl:variable name ="extSpaceEast_W_" select="ceiling($stkToEast_W div 2)"/>
56 <xsl:variable name="bktshp_Y_">
57 <xsl:call-template name="_calc_Stack_Shape_Y">
58 <xsl:with-param name="horizIdx" select="$bktshp_hori_idx_"/>
59 <xsl:with-param name="vertiIdx" select="$bktshp_vert_idx_"/>
63 <xsl:variable name="sbsStack_H_diff_">
65 <xsl:when test=" (($stkToEast = 'NONE') or ($stkToWest = 'NONE'))">0</xsl:when>
66 <xsl:when test="not(($stkToEast = 'NONE') or ($stkToWest = 'NONE'))">
68 <xsl:variable name="stackToWest_AbvSbs_H_">
69 <xsl:call-template name="_calc_Stack_AbvSbs_Height">
70 <xsl:with-param name="stackIdx" select="$stkToWest"/>
74 <xsl:variable name="stackToEast_AbvSbs_H_">
75 <xsl:call-template name="_calc_Stack_AbvSbs_Height">
76 <xsl:with-param name="stackIdx" select="$stkToEast"/>
81 <xsl:message>stack to west H <xsl:value-of select="$stackToWest_AbvSbs_H_"/></xsl:message>
82 <xsl:message>stack to east H <xsl:value-of select="$stackToEast_AbvSbs_H_"/></xsl:message>
84 <xsl:if test="($stackToWest_AbvSbs_H_ > $stackToEast_AbvSbs_H_)">
85 <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
88 <xsl:if test="not($stackToWest_AbvSbs_H_ > $stackToEast_AbvSbs_H_)">0</xsl:if>
93 <xsl:variable name="vert_line_x_" select="($laneInSpace_X + ceiling($BIFC_W div 2))"/>
94 <xsl:variable name="vert_line_y1_" select="($sbs_Y + ($sbs_idx_ * $SBS_LANE_H) + ceiling($BIFC_W div 2))"/>
95 <xsl:variable name="vert_line_y2_" select="($bktshp_Y_ + ceiling($periMOD_W div 2) + $sbsStack_H_diff_)"/>
96 <xsl:variable name="bcInSpace_X_" select="($laneInSpace_X + ceiling($BIFC_W div 2) - ceiling($BUS_ARROW_W div 2))"/>
98 <xsl:variable name="horz_line_y_" select="$vert_line_y2_"/>
99 <xsl:variable name="horz_line_x1_" select="$vert_line_x_"/>
100 <xsl:variable name="horz_line_x2_" select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_)"/>
102 <xsl:variable name="v_bus_ul_x_" select="$vert_line_x_"/>
103 <xsl:variable name="v_bus_ul_y_" select="$vert_line_y1_"/>
104 <xsl:variable name="v_bus_width_" select="$P2P_BUS_W"/>
105 <xsl:variable name="v_bus_height_" select="($vert_line_y2_ - $vert_line_y1_ - ceiling($BIFC_H div 2))"/>
107 <xsl:variable name="h_bus_ul_x_" select="$v_bus_ul_x_"/>
108 <xsl:variable name="h_bus_ul_y_" select="$vert_line_y2_ - $BIFC_H + ceiling($BIFC_H div 2) - ceiling($P2P_BUS_W div 2)"/>
109 <xsl:variable name="h_bus_width_" select="($space_W_ + ceiling(($extSpaceWest_W_ + $extSpaceEast_W_) div 2) - $BIFC_W)"/>
110 <xsl:variable name="h_bus_height_" select="$P2P_BUS_W"/>
113 <xsl:message>v bus x <xsl:value-of select="$v_bus_ul_x_"/></xsl:message>
114 <xsl:message>v bus y <xsl:value-of select="$v_bus_ul_y_"/></xsl:message>
115 <xsl:message>v bus w <xsl:value-of select="$v_bus_width_"/></xsl:message>
116 <xsl:message>v bus h <xsl:value-of select="$v_bus_height_"/></xsl:message>
119 <!-- Draw rectangular parts of the bus -->
120 <rect x="{$v_bus_ul_x_}"
121 y="{$v_bus_ul_y_ - 2}"
122 width= "{$v_bus_width_}"
123 height="{$v_bus_height_}"
124 style="stroke:none; fill:{$bus_color_}"/>
127 <rect x="{$h_bus_ul_x_}"
128 y="{$h_bus_ul_y_ - 5}"
129 width= "{$h_bus_width_}"
130 height="{$h_bus_height_}"
131 style="stroke:none; fill:{$bus_color_}"/>
139 ===========================================================
140 Handle Processor's Shared bus connections.
141 ===========================================================
144 <xsl:template name="BCLaneSpace_ProcBifToSharedBus">
146 <xsl:param name="sbs_Y" select="0"/>
147 <xsl:param name="stkToEast" select="'NONE'"/>
148 <xsl:param name="stkToWest" select="'NONE'"/>
149 <xsl:param name="stkToEast_W" select="0"/>
150 <xsl:param name="stkToWest_W" select="0"/>
151 <xsl:param name="busStd" select="'NONE'"/>
152 <xsl:param name="busName" select="'NONE'"/>
153 <xsl:param name="bifRank" select="'NONE'"/>
154 <xsl:param name="laneInSpace_X" select="0"/>
158 <xsl:message>Proc diff <xsl:value-of select="$procStack_H_diff_"/></xsl:message>
159 <xsl:message>Proc inst <xsl:value-of select="$procInst_"/></xsl:message>
160 <xsl:message>Proc Bif Name <xsl:value-of select="$procBifName_"/></xsl:message>
161 <xsl:message>Proc Bif Rank <xsl:value-of select="$procBifRank_"/></xsl:message>
164 <xsl:variable name="bus_color_">
165 <xsl:call-template name="BusType2Color">
166 <xsl:with-param name="busType" select="$busStd"/>
170 <xsl:variable name="sbs_idx_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE= $busName)]/@BUSINDEX"/>
171 <xsl:variable name="sbs_bc_y_" select="($sbs_Y + ($sbs_idx_ * $SBS_LANE_H))"/>
173 <xsl:variable name="procInst_" select="BUSCONN/@INSTANCE"/>
176 <xsl:message>Proc inst <xsl:value-of select="$procInst_"/></xsl:message>
179 <xsl:variable name="procBif_Y_" select="((($BIF_H + $MOD_BIF_GAP_V) * BUSCONN/@BIF_Y) + ($MOD_LANE_H + $MOD_LABEL_H + $MOD_BIF_GAP_V))"/>
180 <xsl:variable name="procBifName_" select="BUSCONN/@BUSINTERFACE"/>
181 <xsl:variable name="procBifSide_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $procInst_)]/BUSINTERFACE[(@NAME = $procBifName_)]/@BIF_X"/>
182 <xsl:variable name="procBifRank_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $procInst_)]/BUSINTERFACE[(@NAME = $procBifName_)]/@BIFRANK"/>
184 <xsl:variable name="procshp_hori_idx_" select="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $procInst_)]/@STACK_HORIZ_INDEX"/>
185 <xsl:variable name="procshp_vert_idx_" select="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $procInst_)]/@SHAPE_VERTI_INDEX"/>
187 <xsl:variable name="space_W_">
188 <xsl:call-template name="_calc_Space_Width">
189 <xsl:with-param name="stackToEast" select="$stkToEast"/>
190 <xsl:with-param name="stackToWest" select="$stkToWest"/>
194 <xsl:variable name ="extSpaceWest_W_" select="ceiling($stkToWest_W div 2)"/>
195 <xsl:variable name ="extSpaceEast_W_" select="ceiling($stkToEast_W div 2)"/>
199 <xsl:message>Stack horiz <xsl:value-of select="$procshp_hori_idx_"/></xsl:message>
200 <xsl:message>Stack verti <xsl:value-of select="$procshp_vert_idx_"/></xsl:message>
201 <xsl:message>Proc Bif Y <xsl:value-of select="$procBif_Y_"/></xsl:message>
204 <xsl:variable name="procshp_Y_">
205 <xsl:call-template name="_calc_Stack_Shape_Y">
206 <xsl:with-param name="horizIdx" select="$procshp_hori_idx_"/>
207 <xsl:with-param name="vertiIdx" select="$procshp_vert_idx_"/>
212 <xsl:variable name="procStack_H_diff_">
214 <xsl:when test=" (($stkToEast = 'NONE') or ($stkToWest = 'NONE'))">0</xsl:when>
215 <xsl:when test="not(($stkToEast = 'NONE') or ($stkToWest = 'NONE'))">
217 <xsl:variable name="stackToWest_AbvSbs_H_">
218 <xsl:call-template name="_calc_Stack_AbvSbs_Height">
219 <xsl:with-param name="stackIdx" select="$stkToWest"/>
223 <xsl:variable name="stackToEast_AbvSbs_H_">
224 <xsl:call-template name="_calc_Stack_AbvSbs_Height">
225 <xsl:with-param name="stackIdx" select="$stkToEast"/>
230 <xsl:message>stack to west H <xsl:value-of select="$stackToWest_AbvSbs_H_"/></xsl:message>
231 <xsl:message>stack to east H <xsl:value-of select="$stackToEast_AbvSbs_H_"/></xsl:message>
234 <xsl:when test="(($procshp_hori_idx_ = $stkToEast) and ($stackToWest_AbvSbs_H_ > $stackToEast_AbvSbs_H_))">
235 <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
237 <xsl:when test="(($procshp_hori_idx_ = $stkToWest) and ($stackToEast_AbvSbs_H_ > $stackToWest_AbvSbs_H_))">
238 <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
240 <xsl:otherwise>0</xsl:otherwise>
246 <xsl:variable name="bc_Y_" select="($procshp_Y_ + $procBif_Y_ + ceiling($BIF_H div 2) + $procStack_H_diff_) - ceiling($BIFC_H div 2)"/>
248 <xsl:variable name="bc_x_" select="($laneInSpace_X + ceiling($BIFC_W div 2))"/>
249 <xsl:variable name="bc_x_" select="0"/>
251 <xsl:variable name="bc_X_">
253 <xsl:when test="$procBifSide_ = '0'">
254 <xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_ - (ceiling($periMOD_W div 2) + $BIFC_W))"/>
256 <xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_ - ceiling($periMOD_W div 2))"/>
257 <xsl:value-of select="($space_W_ - ceiling($periMOD_W div 2))"/>
260 <xsl:when test="$procBifSide_ = '1'">
261 <xsl:value-of select="ceiling($periMOD_W div 2)"/>
263 <xsl:otherwise>0</xsl:otherwise>
267 <!-- Place the bus connection -->
268 <use x="{$bc_X_}" y="{$bc_Y_}" xlink:href="#{$busStd}_busconn_{$procBifRank_}"/>
272 <use x="{$laneInSpace_X}" y="{$sbs_bc_y_ - ceiling($BIFC_H div 4)}" xlink:href="#{$busStd}_busconn_{$procBifRank_}"/>
276 <xsl:variable name="vert_line_x_" select="($laneInSpace_X + ceiling($BIFC_W div 2))"/>
277 <xsl:variable name="vert_line_y1_" select="($procshp_Y_ + $procBif_Y_ + ceiling($BIF_H div 2) + $procStack_H_diff_)"/>
278 <xsl:variable name="vert_line_y2_" select="($sbs_Y + ($sbs_idx_ * $SBS_LANE_H) + ceiling($BIFC_W div 2))"/>
280 <xsl:variable name="v_bus_ul_y_">
282 <xsl:when test="$vert_line_y1_ > $vert_line_y2_">
283 <xsl:value-of select="$vert_line_y2_"/>
285 <xsl:when test="$vert_line_y2_ > $vert_line_y1_">
286 <xsl:value-of select="$vert_line_y1_"/>
291 <xsl:variable name="v_bus_ul_x_">
293 <xsl:when test="@ORIENTED='WEST'">
294 <xsl:value-of select="($vert_line_x_ + $MOD_BIF_GAP_H)"/>
296 <xsl:when test="@ORIENTED='EAST'">
297 <xsl:value-of select="($vert_line_x_ - $MOD_BIF_GAP_H)"/>
303 <xsl:variable name="v_bus_width_" select="$P2P_BUS_W"/>
304 <xsl:variable name="v_bus_height_">
306 <xsl:when test="$vert_line_y1_ > $vert_line_y2_">
307 <xsl:value-of select="($vert_line_y1_ - $vert_line_y2_) - $P2P_BUS_W"/>
309 <xsl:when test="$vert_line_y2_ > $vert_line_y1_">
310 <xsl:value-of select="($vert_line_y2_ - $vert_line_y1_) - $P2P_BUS_W"/>
315 <xsl:variable name="h_bus_ul_x_">
317 <xsl:when test="@ORIENTED='WEST'">
318 <xsl:value-of select="($bc_X_ + $BIFC_W - ceiling(($BIFC_W - $BIFC_Wi) div 2))"/>
320 <xsl:value-of select="$v_bus_ul_x_"/>
323 <xsl:when test="@ORIENTED='EAST'">
324 <xsl:value-of select="$v_bus_ul_x_"/>
329 <xsl:variable name="h_bus_ul_y_">
331 <xsl:when test="$vert_line_y1_ > $vert_line_y2_">
332 <xsl:value-of select="$vert_line_y2_ - ceiling($P2P_BUS_W div 2)"/>
334 <xsl:when test="$vert_line_y2_ > $vert_line_y1_">
335 <xsl:value-of select="$vert_line_y1_ - ceiling($P2P_BUS_W div 2)"/>
341 <xsl:variable name="h_bus_height_" select="$P2P_BUS_W"/>
342 <xsl:variable name="h_bus_width_">
344 <xsl:when test="@ORIENTED='WEST'">
345 <xsl:value-of select="$v_bus_ul_x_ - $h_bus_ul_x_ + $P2P_BUS_W"/>
347 <xsl:when test="@ORIENTED='EAST'">
348 <xsl:value-of select="($bc_X_ - $v_bus_ul_x_) + ceiling(($BIFC_W - $BIFC_Wi) div 2) + 1"/>
356 <xsl:if test="(@ORIENTED = 'WEST')">
359 <xsl:message>bc_X_ <xsl:value-of select="$bc_X_"/></xsl:message>
360 <xsl:message>v_bus_ul_x <xsl:value-of select="$v_bus_ul_x_"/></xsl:message>
361 <xsl:message>h_bus_width <xsl:value-of select="$h_bus_width_"/></xsl:message>
362 <xsl:message>h_bus_ul_y <xsl:value-of select="$h_bus_ul_y_"/></xsl:message>
365 <rect x="{$v_bus_ul_x_}"
366 y="{$v_bus_ul_y_ + 2}"
367 width= "{$v_bus_width_}"
368 height="{$v_bus_height_}"
369 style="stroke:none; fill:{$bus_color_}"/>
371 <rect x="{$h_bus_ul_x_}"
373 width= "{$h_bus_width_}"
374 height="{$h_bus_height_}"
375 style="stroke:none; fill:{$bus_color_}"/>
378 <xsl:message>Proc diff <xsl:value-of select="$procStack_H_diff_"/></xsl:message>
379 <xsl:message>Proc inst <xsl:value-of select="$procInst_"/></xsl:message>
380 <xsl:message>Proc Bif Name <xsl:value-of select="$procBifName_"/></xsl:message>
381 <xsl:message>Proc Bif Rank <xsl:value-of select="$procBifRank_"/></xsl:message>
388 ===========================================================
389 Handle non Processor Sharedebus connections.
390 ===========================================================
393 <xsl:template name="BCLaneSpace_NonProcBifToSharedBus">
395 <xsl:param name="sbs_Y" select="0"/>
396 <xsl:param name="stkToEast" select="'NONE'"/>
397 <xsl:param name="stkToWest" select="'NONE'"/>
398 <xsl:param name="stkToEast_W" select="0"/>
399 <xsl:param name="stkToWest_W" select="0"/>
400 <xsl:param name="busStd" select="'NONE'"/>
401 <xsl:param name="busName" select="'NONE'"/>
402 <xsl:param name="bifRank" select="'NONE'"/>
403 <xsl:param name="laneInSpace_X" select="0"/>
406 <xsl:variable name="sbs_idx_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE= $busName)]/@BUSINDEX"/>
407 <xsl:variable name="sbs_bc_y_" select="($sbs_Y + ($sbs_idx_ * $SBS_LANE_H))"/>
409 <xsl:variable name="cmplxInst_" select="BUSCONN/@INSTANCE"/>
411 <xsl:variable name="cmplxBif_Y_" select="((($BIF_H + $MOD_BIF_GAP_V) * BUSCONN/@BIF_Y) + ($MOD_LANE_H + $MOD_LABEL_H + $MOD_BIF_GAP_V))"/>
412 <xsl:variable name="cmplxBifName_" select="BUSCONN/@BUSINTERFACE"/>
413 <xsl:variable name="cmplxBifSide_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $cmplxInst_)]/BUSINTERFACE[(@NAME = $cmplxBifName_)]/@BIF_X"/>
414 <xsl:variable name="cmplxBifRank_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $cmplxInst_)]/BUSINTERFACE[(@NAME = $cmplxBifName_)]/@BIFRANK"/>
416 <xsl:variable name="cmplxshp_hori_idx_" select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $cmplxInst_)])]/@STACK_HORIZ_INDEX"/>
417 <xsl:variable name="cmplxshp_vert_idx_" select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $cmplxInst_)])]/@SHAPE_VERTI_INDEX"/>
419 <xsl:variable name="is_abvSbs_" select="(/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[MODULE[(@INSTANCE = $cmplxInst_)]]/@IS_ABVSBS)"/>
420 <xsl:variable name="is_blwSbs_" select="(/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[MODULE[(@INSTANCE = $cmplxInst_)]]/@IS_BLWSBS)"/>
423 <xsl:message><xsl:value-of select="$cmplxInst_"/> : <xsl:value-of select="$is_blwSbs_"/></xsl:message>
424 <xsl:message><xsl:value-of select="$cmplxInst_"/> : <xsl:value-of select="$is_abvSbs_"/></xsl:message>
425 <xsl:message>Stack horiz <xsl:value-of select="$cmplxshp_hori_idx_"/></xsl:message>
426 <xsl:message>Stack verti <xsl:value-of select="$cmplxshp_vert_idx_"/></xsl:message>
427 <xsl:message>Proc Bif Y <xsl:value-of select="$procBif_Y_"/></xsl:message>
430 <xsl:variable name="bus_color_">
431 <xsl:call-template name="BusType2Color">
432 <xsl:with-param name="busType" select="$busStd"/>
436 <xsl:variable name="space_W_">
437 <xsl:call-template name="_calc_Space_Width">
438 <xsl:with-param name="stackToEast" select="$stkToEast"/>
439 <xsl:with-param name="stackToWest" select="$stkToWest"/>
443 <xsl:variable name ="extSpaceWest_W_" select="ceiling($stkToWest_W div 2)"/>
444 <xsl:variable name ="extSpaceEast_W_" select="ceiling($stkToEast_W div 2)"/>
446 <xsl:variable name="cmplxshp_Y_">
447 <xsl:call-template name="_calc_Stack_Shape_Y">
448 <xsl:with-param name="horizIdx" select="$cmplxshp_hori_idx_"/>
449 <xsl:with-param name="vertiIdx" select="$cmplxshp_vert_idx_"/>
453 <xsl:variable name="cmplxStack_H_diff_">
455 <xsl:when test=" (($stkToEast = 'NONE') or ($stkToWest = 'NONE'))">0</xsl:when>
456 <xsl:when test="not(($stkToEast = 'NONE') or ($stkToWest = 'NONE'))">
458 <xsl:variable name="stackToWest_AbvSbs_H_">
459 <xsl:call-template name="_calc_Stack_AbvSbs_Height">
460 <xsl:with-param name="stackIdx" select="$stkToWest"/>
464 <xsl:variable name="stackToEast_AbvSbs_H_">
465 <xsl:call-template name="_calc_Stack_AbvSbs_Height">
466 <xsl:with-param name="stackIdx" select="$stkToEast"/>
471 <xsl:message>stack to west H <xsl:value-of select="$stackToWest_AbvSbs_H_"/></xsl:message>
472 <xsl:message>stack to east H <xsl:value-of select="$stackToEast_AbvSbs_H_"/></xsl:message>
475 <xsl:when test="(($cmplxshp_hori_idx_ = $stkToEast) and ($stackToWest_AbvSbs_H_ > $stackToEast_AbvSbs_H_))">
476 <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
478 <xsl:when test="(($cmplxshp_hori_idx_ = $stkToWest) and ($stackToEast_AbvSbs_H_ > $stackToWest_AbvSbs_H_))">
479 <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
481 <xsl:otherwise>0</xsl:otherwise>
488 <xsl:variable name="bc_Y_" select="($cmplxshp_Y_ + $cmplxBif_Y_ + ceiling($BIF_H div 2) + $cmplxStack_H_diff_) - ceiling($BIFC_H div 2)"/>
491 <xsl:variable name="bc_x_" select="($laneInSpace_X + ceiling($BIFC_W div 2))"/>
492 <xsl:variable name="bc_x_" select="0"/>
494 <xsl:variable name="bc_X_">
496 <xsl:when test="$cmplxBifSide_ = '0'">
497 <xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_ - (ceiling($periMOD_W div 2) + $BIFC_W))"/>
499 <xsl:when test="$cmplxBifSide_ = '1'">
500 <xsl:value-of select="ceiling($periMOD_W div 2)"/>
502 <xsl:otherwise>0</xsl:otherwise>
506 <use x="{$bc_X_}" y="{$bc_Y_}" xlink:href="#{$busStd}_busconn_{$cmplxBifRank_}"/>
509 <xsl:message>Bif Rank <xsl:value-of select="$cmplxBifRank_"/></xsl:message>
511 <xsl:variable name="vert_line_x_" select="($laneInSpace_X + ceiling($BIFC_W div 2))"/>
512 <xsl:variable name="vert_line_y1_" select="($cmplxshp_Y_ + $cmplxBif_Y_ + ceiling($BIF_H div 2) + $cmplxStack_H_diff_)"/>
513 <xsl:variable name="vert_line_y2_" select="($sbs_Y + ($sbs_idx_ * $SBS_LANE_H) + ceiling($BIFC_W div 2))"/>
515 <xsl:variable name="v_bus_ul_y_">
517 <xsl:when test="$vert_line_y1_ > $vert_line_y2_">
518 <xsl:value-of select="$vert_line_y2_"/>
520 <xsl:when test="$vert_line_y2_ > $vert_line_y1_">
521 <xsl:value-of select="$vert_line_y1_"/>
526 <xsl:variable name="v_bus_ul_x_">
528 <xsl:when test="@ORIENTED='WEST'">
529 <xsl:value-of select="($vert_line_x_ + $MOD_BIF_GAP_H)"/>
531 <xsl:when test="@ORIENTED='EAST'">
532 <xsl:value-of select="($vert_line_x_ - $MOD_BIF_GAP_H)"/>
537 <xsl:variable name="v_bus_width_" select="$P2P_BUS_W"/>
538 <xsl:variable name="v_bus_height_">
540 <xsl:when test="$vert_line_y1_ > $vert_line_y2_">
541 <xsl:value-of select="($vert_line_y1_ - $vert_line_y2_) - $P2P_BUS_W + 8"/>
543 <xsl:when test="$vert_line_y2_ > $vert_line_y1_">
544 <xsl:value-of select="($vert_line_y2_ - $vert_line_y1_) - $P2P_BUS_W + 8"/>
549 <xsl:variable name="h_bus_ul_x_">
551 <xsl:when test="@ORIENTED='WEST'">
552 <xsl:value-of select="($bc_X_ + $BIFC_W - ceiling(($BIFC_W - $BIFC_Wi) div 2))"/>
554 <xsl:when test="@ORIENTED='EAST'">
555 <xsl:value-of select="$v_bus_ul_x_"/>
560 <xsl:variable name="h_bus_ul_y_">
563 <xsl:when test="($is_blwSbs_ = 'TRUE') and ($vert_line_y1_ > $vert_line_y2_)">
564 <xsl:value-of select="$vert_line_y1_ - ceiling($P2P_BUS_W div 2)"/>
566 <xsl:when test="($is_blwSbs_ = 'TRUE') and ($vert_line_y2_ > $vert_line_y1_)">
567 <xsl:value-of select="$vert_line_y2_ - ceiling($P2P_BUS_W div 2)"/>
570 <xsl:when test="($is_abvSbs_ = 'TRUE') and ($vert_line_y1_ > $vert_line_y2_)">
571 <xsl:value-of select="$vert_line_y2_ - ceiling($P2P_BUS_W div 2)"/>
573 <xsl:when test="($is_abvSbs_ = 'TRUE') and ($vert_line_y2_ > $vert_line_y1_)">
574 <xsl:value-of select="$vert_line_y1_ - ceiling($P2P_BUS_W div 2)"/>
581 <xsl:variable name="h_bus_height_" select="$P2P_BUS_W"/>
582 <xsl:variable name="h_bus_width_">
584 <xsl:when test="@ORIENTED='WEST'">
585 <xsl:value-of select="$v_bus_ul_x_ - $h_bus_ul_x_ + $P2P_BUS_W"/>
587 <xsl:when test="@ORIENTED='EAST'">
588 <xsl:value-of select="($bc_X_ - $v_bus_ul_x_) + ceiling(($BIFC_W - $BIFC_Wi) div 2) + 1"/>
594 <rect x="{$v_bus_ul_x_}"
595 y="{$v_bus_ul_y_ - 2}"
596 width= "{$v_bus_width_}"
597 height="{$v_bus_height_}"
598 style="stroke:none; fill:{$bus_color_}"/>
600 <rect x="{$h_bus_ul_x_}"
602 width= "{$h_bus_width_}"
603 height="{$h_bus_height_}"
604 style="stroke:none; fill:{$bus_color_}"/>
609 ===========================================================
610 Handle connections from processors to Memory UNITs
611 ===========================================================
614 <xsl:template name="BCLaneSpace_ProcBifToMemoryUnit">
616 <xsl:param name="sbs_Y" select="0"/>
617 <xsl:param name="stkToEast" select="'NONE'"/>
618 <xsl:param name="stkToWest" select="'NONE'"/>
619 <xsl:param name="stkToEast_W" select="0"/>
620 <xsl:param name="stkToWest_W" select="0"/>
621 <xsl:param name="busStd" select="'NONE'"/>
622 <xsl:param name="busName" select="'NONE'"/>
623 <xsl:param name="bifRank" select="'NONE'"/>
624 <xsl:param name="laneInSpace_X" select="0"/>
629 <xsl:variable name="bcInSpace_X_" select="($laneInSpace_X + ceiling($BIFC_W div 2) - ceiling($BUS_ARROW_W div 2))"/>
631 <xsl:variable name="bcInSpace_X_" select="$laneInSpace_X"/>
632 <xsl:variable name="procInstance_" select="BUSCONN[@IS_PROCONN]/@INSTANCE"/>
633 <xsl:variable name="mem_procshp_hori_idx_" select="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $procInstance_)]/@STACK_HORIZ_INDEX"/>
634 <xsl:variable name="mem_procshp_vert_idx_" select="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $procInstance_)]/@SHAPE_VERTI_INDEX"/>
636 <xsl:variable name="mem_procshp_Y_">
637 <xsl:call-template name="_calc_Stack_Shape_Y">
638 <xsl:with-param name="horizIdx" select="$mem_procshp_hori_idx_"/>
639 <xsl:with-param name="vertiIdx" select="$mem_procshp_vert_idx_"/>
643 <xsl:variable name="bus_color_">
644 <xsl:call-template name="BusType2Color">
645 <xsl:with-param name="busType" select="$busStd"/>
649 <xsl:variable name="space_W_">
650 <xsl:call-template name="_calc_Space_Width">
651 <xsl:with-param name="stackToEast" select="$stkToEast"/>
652 <xsl:with-param name="stackToWest" select="$stkToWest"/>
656 <xsl:variable name ="extSpaceWest_W_" select="ceiling($stkToWest_W div 2)"/>
657 <xsl:variable name ="extSpaceEast_W_" select="ceiling($stkToEast_W div 2)"/>
659 <xsl:variable name="cmplxStack_H_diff_">
661 <xsl:when test=" (($stkToEast = 'NONE') or ($stkToWest = 'NONE'))">0</xsl:when>
662 <xsl:when test="not(($stkToEast = 'NONE') or ($stkToWest = 'NONE'))">
664 <xsl:variable name="stackToWest_AbvSbs_H_">
665 <xsl:call-template name="_calc_Stack_AbvSbs_Height">
666 <xsl:with-param name="stackIdx" select="$stkToWest"/>
670 <xsl:variable name="stackToEast_AbvSbs_H_">
671 <xsl:call-template name="_calc_Stack_AbvSbs_Height">
672 <xsl:with-param name="stackIdx" select="$stkToEast"/>
677 <xsl:message>stack to west H <xsl:value-of select="$stackToWest_AbvSbs_H_"/></xsl:message>
678 <xsl:message>stack to east H <xsl:value-of select="$stackToEast_AbvSbs_H_"/></xsl:message>
681 <xsl:when test="(($mem_procshp_hori_idx_ = $stkToEast) and ($stackToWest_AbvSbs_H_ > $stackToEast_AbvSbs_H_))">
682 <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
684 <xsl:when test="(($mem_procshp_hori_idx_ = $stkToWest) and ($stackToEast_AbvSbs_H_ > $stackToWest_AbvSbs_H_))">
685 <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
687 <xsl:otherwise>0</xsl:otherwise>
694 <xsl:variable name="mem_procStack_H_diff_">
696 <xsl:when test=" (($stkToEast = 'NONE') or ($stkToWest = 'NONE'))">0</xsl:when>
697 <xsl:when test="not(($stkToEast = 'NONE') or ($stkToWest = 'NONE'))">
699 <xsl:variable name="stackToWest_AbvSbs_H_">
700 <xsl:call-template name="_calc_Stack_AbvSbs_Height">
701 <xsl:with-param name="stackIdx" select="$stkToWest"/>
705 <xsl:variable name="stackToEast_AbvSbs_H_">
706 <xsl:call-template name="_calc_Stack_AbvSbs_Height">
707 <xsl:with-param name="stackIdx" select="$stkToEast"/>
712 <xsl:message>stack to west H <xsl:value-of select="$stackToWest_AbvSbs_H_"/></xsl:message>
713 <xsl:message>stack to east H <xsl:value-of select="$stackToEast_AbvSbs_H_"/></xsl:message>
716 <xsl:when test="(($mem_procshp_hori_idx_ = $stkToEast) and ($stackToWest_AbvSbs_H_ > $stackToEast_AbvSbs_H_))">
717 <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
719 <xsl:when test="(($mem_procshp_hori_idx_ = $stkToWest) and ($stackToEast_AbvSbs_H_ > $stackToWest_AbvSbs_H_))">
720 <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
722 <xsl:otherwise>0</xsl:otherwise>
729 <!-- Store the conns in a variable -->
730 <xsl:variable name="memConn_heights_">
732 <xsl:for-each select="BUSCONN">
734 <xsl:variable name="bifName_" select="@BUSINTERFACE"/>
738 <xsl:when test="@IS_PROCONN and @BIF_Y">
740 <xsl:variable name="procBif_Y_" select="((($BIF_H + $MOD_BIF_GAP_V) * @BIF_Y) + ($MOD_LANE_H + $MOD_LABEL_H + $MOD_BIF_GAP_V))"/>
741 <xsl:variable name="procBifRank_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $procInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIFRANK"/>
742 <xsl:variable name="procBusName_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $procInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BUSNAME"/>
743 <xsl:variable name="procBifSide_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $procInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_X"/>
744 <xsl:variable name="bcProc_Y_" select="($mem_procshp_Y_ + $procBif_Y_ + ceiling($BIF_H div 2) - ceiling($BIFC_H div 2) + $mem_procStack_H_diff_)"/>
745 <xsl:variable name="bcProc_X_">
747 <xsl:when test="$procBifSide_ = '0'">
748 <xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_ - (ceiling($periMOD_W div 2) + $BIFC_W))"/>
750 <xsl:when test="$procBifSide_ = '1'">
751 <xsl:value-of select="ceiling($periMOD_W div 2)"/>
753 <xsl:otherwise>0</xsl:otherwise>
757 <MEMCONN X="{$bcProc_X_}" Y="{$bcProc_Y_}" BUSNAME="{$procBusName_}" BUSSTD="{$busStd}" BIFRANK="{$procBifRank_}" BIFSIDE="{$procBifSide_}"/>
763 <xsl:variable name="memcInstance_" select="@INSTANCE"/>
764 <xsl:variable name="memcshp_vert_idx_" select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[MODULE[(@INSTANCE = $memcInstance_)]]/@SHAPE_VERTI_INDEX"/>
765 <xsl:variable name="memcBifSide_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $memcInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_X"/>
766 <xsl:variable name="memcBif_Y_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $memcInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_Y"/>
768 <xsl:variable name="memshp_Y_">
769 <xsl:call-template name="_calc_Stack_Shape_Y">
770 <xsl:with-param name="horizIdx" select="$mem_procshp_hori_idx_"/>
771 <xsl:with-param name="vertiIdx" select="$memcshp_vert_idx_"/>
775 <xsl:variable name="memcMOD_W_" select="((/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[MODULE[(@INSTANCE = $memcInstance_)]]/@MODS_W) * $periMOD_W)"/>
777 <xsl:variable name="procBif_Y_" select="((($BIF_H + $MOD_BIF_GAP_V) * @BIF_Y) + ($MOD_LANE_H + $MOD_LABEL_H + $MOD_BIF_GAP_V))"/>
779 <xsl:variable name="memcConn_Y_">
781 <xsl:when test="(/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[MODULE[(@INSTANCE = $memcInstance_)]]/@MODS_H = 1)">
782 <xsl:value-of select="($memshp_Y_ + ($MOD_LANE_H + $MOD_LABEL_H + $MOD_BIF_GAP_V) + ($memcBif_Y_ * ($BIF_H + $MOD_BIF_GAP_V)) + ceiling($BIF_H div 2) - ceiling($BIFC_H div 2) + $cmplxStack_H_diff_)"/>
785 <xsl:value-of select="($memshp_Y_ + $periMOD_H + $MOD_LANE_H + ($memcBif_Y_ * ($BIF_H + $MOD_BIF_GAP_V)) + ceiling($BIF_H div 2) - ceiling($BIFC_H div 2))"/>
790 <xsl:variable name="memcConn_X_">
792 <xsl:when test="$memcBifSide_ = '0'">
793 <xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_ - (ceiling($memcMOD_W_ div 2) + $BIFC_W))"/>
795 <xsl:when test="$memcBifSide_ = '1'">
796 <xsl:value-of select="ceiling($memcMOD_W_ div 2)"/>
801 <xsl:variable name="memcBifRank_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $memcInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIFRANK"/>
802 <xsl:variable name="memcBusName_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $memcInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BUSNAME"/>
804 <MEMCONN X="{$memcConn_X_}" Y="{$memcConn_Y_}" BUSNAME="{$memcBusName_}" BUSSTD="{$busStd}" BIFRANK="{$memcBifRank_}" BIFSIDE="{$memcBifSide_}"/>
812 <!-- Draw the busconnection and horizontal lines.-->
813 <xsl:for-each select="exsl:node-set($memConn_heights_)/MEMCONN">
815 <xsl:variable name="bus_x_" select="($bcInSpace_X_ + ceiling($BIFC_W div 2))"/>
816 <xsl:variable name="bus_y_" select="@Y + ceiling($BIFC_H div 2) - ceiling($P2P_BUS_W div 2)"/>
818 <xsl:variable name="h_bus_ul_x_">
820 <xsl:when test="@BIFSIDE='0'">
821 <xsl:value-of select="$bus_x_"/>
823 <xsl:when test="@BIFSIDE='1'">
824 <xsl:value-of select="(@X + $BIFC_W + $BUS_ARROW_W)"/>
829 <xsl:variable name="h_bus_ul_y_" select="$bus_y_"/>
831 <xsl:variable name="h_bus_height_" select="$P2P_BUS_W"/>
832 <xsl:variable name="h_bus_width_">
834 <xsl:when test="@BIFSIDE='0'">
835 <xsl:value-of select="(@X - $bus_x_ - $BUS_ARROW_W)"/>
837 <xsl:when test="@BIFSIDE='1'">
838 <xsl:value-of select="$bus_x_ - $h_bus_ul_x_"/>
844 <xsl:message>bc_X_ <xsl:value-of select="@X"/></xsl:message>
845 <xsl:message>h_bus_ul_x <xsl:value-of select="$h_bus_ul_x_"/></xsl:message>
846 <xsl:message>h_bus_ul_y <xsl:value-of select="$h_bus_ul_y_"/></xsl:message>
847 <xsl:message>h_bus_width <xsl:value-of select="$h_bus_width_"/></xsl:message>
850 <!-- Place the bus connection -->
851 <use x="{@X}" y="{@Y}" xlink:href="#{@BUSSTD}_busconn_{@BIFRANK}"/>
853 <!-- Draw the arrow -->
855 <xsl:when test="@BIFSIDE='0'">
856 <use x="{@X - $BUS_ARROW_W}" y="{@Y + ceiling($BIFC_H div 2) - ceiling($BUS_ARROW_H div 2)}" xlink:href="#{@BUSSTD}_BusArrowEast"/>
858 <xsl:when test="@BIFSIDE='1'">
859 <use x="{(@X + $BIFC_W)}" y="{@Y + ceiling($BIFC_H div 2) - ceiling($BUS_ARROW_H div 2)}" xlink:href="#{@BUSSTD}_BusArrowWest"/>
864 <!-- Draw the horizontal part of the bus -->
865 <rect x="{$h_bus_ul_x_}"
867 width= "{$h_bus_width_}"
868 height="{$h_bus_height_}"
869 style="stroke:none; fill:{$bus_color_}"/>
873 <xsl:variable name="busTop_" select="math:min(exsl:node-set($memConn_heights_)/MEMCONN/@Y)"/>
874 <xsl:variable name="busBot_" select="math:max(exsl:node-set($memConn_heights_)/MEMCONN/@Y)"/>
875 <xsl:variable name="busName_" select="exsl:node-set($memConn_heights_)/MEMCONN/@BUSNAME"/>
877 <xsl:variable name="v_bus_y_" select="$busTop_ + ceiling($BIFC_H div 2) - ceiling($P2P_BUS_W div 2)"/>
880 <!-- Draw the vertical part of the bus -->
881 <rect x="{$bcInSpace_X_ + $P2P_BUS_W}"
883 width= "{$P2P_BUS_W}"
884 height="{($busBot_ - $busTop_) + $P2P_BUS_W}"
885 style="stroke:none; fill:{$bus_color_}"/>
887 <!-- Place the bus label.-->
888 <text class="p2pbuslabel"
889 x="{$bcInSpace_X_ + $BUS_ARROW_W + ceiling($BUS_ARROW_W div 2) + ceiling($BUS_ARROW_W div 4) + 6}"
890 y="{$busTop_ + ($BUS_ARROW_H * 3)}">
891 <xsl:value-of select="$busName_"/>
899 ===========================================================
900 Handle generic Point to Point connections
901 ===========================================================
904 <xsl:template name="BCLaneSpace_PointToPoint">
906 <xsl:param name="sbs_Y" select="0"/>
907 <xsl:param name="stkToEast" select="'NONE'"/>
908 <xsl:param name="stkToWest" select="'NONE'"/>
909 <xsl:param name="stkToEast_W" select="0"/>
910 <xsl:param name="stkToWest_W" select="0"/>
911 <xsl:param name="busStd" select="'NONE'"/>
912 <xsl:param name="busName" select="'NONE'"/>
913 <xsl:param name="bifRank" select="'NONE'"/>
914 <xsl:param name="laneInSpace_X" select="0"/>
916 <xsl:variable name="bus_color_">
917 <xsl:call-template name="BusType2Color">
918 <xsl:with-param name="busType" select="$busStd"/>
922 <xsl:variable name="bus_color_lt_">
923 <xsl:call-template name="BusType2LightColor">
924 <xsl:with-param name="busType" select="$busStd"/>
929 <xsl:variable name="space_W_">
930 <xsl:call-template name="_calc_Space_Width">
931 <xsl:with-param name="stackToEast" select="$stkToEast"/>
932 <xsl:with-param name="stackToWest" select="$stkToWest"/>
936 <xsl:variable name ="extSpaceWest_W_" select="ceiling($stkToWest_W div 2)"/>
937 <xsl:variable name ="extSpaceEast_W_" select="ceiling($stkToEast_W div 2)"/>
939 <xsl:variable name="bcInSpace_X_" select="($laneInSpace_X + ceiling($BIFC_W div 2) - ceiling($BUS_ARROW_W div 2))"/>
940 <xsl:variable name="p2pInstance_" select="BUSCONN[(@BIF_Y)]/@INSTANCE"/>
942 <xsl:variable name="p2pshp_hori_idx_">
944 <xsl:when test="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $p2pInstance_)]">
945 <xsl:value-of select="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $p2pInstance_)]/@STACK_HORIZ_INDEX"/>
948 <xsl:value-of select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $p2pInstance_)])]/@STACK_HORIZ_INDEX"/>
953 <xsl:variable name="p2pshp_vert_idx_">
955 <xsl:when test="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $p2pInstance_)]">
956 <xsl:value-of select="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $p2pInstance_)]/@SHAPE_VERTI_INDEX"/>
959 <xsl:value-of select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $p2pInstance_)])]/@SHAPE_VERTI_INDEX"/>
965 <xsl:variable name="p2pshp_hori_idx_" select="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $procInstance_)]/@STACK_HORIZ_INDEX"/>
966 <xsl:variable name="p2pshp_vert_idx_" select="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $procInstance_)]/@SHAPE_VERTI_INDEX"/>
969 <xsl:variable name="p2pshp_Y_">
970 <xsl:call-template name="_calc_Stack_Shape_Y">
971 <xsl:with-param name="horizIdx" select="$p2pshp_hori_idx_"/>
972 <xsl:with-param name="vertiIdx" select="$p2pshp_vert_idx_"/>
976 <xsl:variable name="cmplxStack_H_diff_">
978 <xsl:when test=" (($stkToEast = 'NONE') or ($stkToWest = 'NONE'))">0</xsl:when>
979 <xsl:when test="not(($stkToEast = 'NONE') or ($stkToWest = 'NONE'))">
981 <xsl:variable name="stackToWest_AbvSbs_H_">
982 <xsl:call-template name="_calc_Stack_AbvSbs_Height">
983 <xsl:with-param name="stackIdx" select="$stkToWest"/>
987 <xsl:variable name="stackToEast_AbvSbs_H_">
988 <xsl:call-template name="_calc_Stack_AbvSbs_Height">
989 <xsl:with-param name="stackIdx" select="$stkToEast"/>
994 <xsl:message>stack to west H <xsl:value-of select="$stackToWest_AbvSbs_H_"/></xsl:message>
995 <xsl:message>stack to east H <xsl:value-of select="$stackToEast_AbvSbs_H_"/></xsl:message>
998 <xsl:when test="(($p2pshp_hori_idx_ = $stkToEast) and ($stackToWest_AbvSbs_H_ > $stackToEast_AbvSbs_H_))">
999 <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
1001 <xsl:when test="(($p2pshp_hori_idx_ = $stkToWest) and ($stackToEast_AbvSbs_H_ > $stackToWest_AbvSbs_H_))">
1002 <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
1004 <xsl:otherwise>0</xsl:otherwise>
1012 <xsl:variable name="procStack_H_diff_">
1014 <xsl:when test=" (($stkToEast = 'NONE') or ($stkToWest = 'NONE'))">0</xsl:when>
1015 <xsl:when test="not(($stkToEast = 'NONE') or ($stkToWest = 'NONE'))">
1017 <xsl:variable name="stackToWest_AbvSbs_H_">
1018 <xsl:call-template name="_calc_Stack_AbvSbs_Height">
1019 <xsl:with-param name="stackIdx" select="$stkToWest"/>
1020 </xsl:call-template>
1023 <xsl:variable name="stackToEast_AbvSbs_H_">
1024 <xsl:call-template name="_calc_Stack_AbvSbs_Height">
1025 <xsl:with-param name="stackIdx" select="$stkToEast"/>
1026 </xsl:call-template>
1030 <xsl:message>stack to west H <xsl:value-of select="$stackToWest_AbvSbs_H_"/></xsl:message>
1031 <xsl:message>stack to east H <xsl:value-of select="$stackToEast_AbvSbs_H_"/></xsl:message>
1034 <xsl:when test="(($p2pshp_hori_idx_ = $stkToEast) and ($stackToWest_AbvSbs_H_ > $stackToEast_AbvSbs_H_))">
1035 <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
1037 <xsl:when test="(($p2pshp_hori_idx_ = $stkToWest) and ($stackToEast_AbvSbs_H_ > $stackToWest_AbvSbs_H_))">
1038 <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
1040 <xsl:otherwise>0</xsl:otherwise>
1049 <!-- Store the conns in a variable -->
1050 <xsl:variable name="p2pConn_heights_">
1052 <xsl:for-each select="BUSCONN">
1054 <xsl:variable name="bifName_" select="@BUSINTERFACE"/>
1057 <xsl:when test="@IS_PROCONN and @BIF_Y">
1060 <xsl:message>Proc <xsl:value-of select="$procInstance_"/></xsl:message>
1062 <xsl:variable name="procBif_Y_" select="((($BIF_H + $MOD_BIF_GAP_V) * @BIF_Y) + ($MOD_LANE_H + $MOD_LABEL_H + $MOD_BIF_GAP_V))"/>
1063 <xsl:variable name="procBifRank_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $p2pInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIFRANK"/>
1064 <xsl:variable name="procBusName_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $p2pInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BUSNAME"/>
1065 <xsl:variable name="procBifSide_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $p2pInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_X"/>
1067 <xsl:variable name="bcProc_Y_" select="($p2pshp_Y_ + $procBif_Y_ + ceiling($BIF_H div 2) - ceiling($BIFC_H div 2) + $procStack_H_diff_)"/>
1068 <xsl:variable name="bcProc_X_">
1070 <xsl:when test="$procBifSide_ = '0'">
1071 <xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_ - (ceiling($periMOD_W div 2) + $BIFC_W))"/>
1073 <xsl:when test="$procBifSide_ = '1'">
1074 <xsl:value-of select="ceiling($periMOD_W div 2)"/>
1076 <xsl:otherwise>0</xsl:otherwise>
1080 <P2PCONN X="{$bcProc_X_}" Y="{$bcProc_Y_}" BUSNAME= "{$procBusName_}" BUSSTD="{$busStd}" BIFRANK="{$procBifRank_}" BIFSIDE="{$procBifSide_}"/>
1083 <xsl:message>bcProc_X_ <xsl:value-of select="$bcProc_X_"/></xsl:message>
1084 <xsl:message>bcProc_Y_ <xsl:value-of select="$bcProc_Y_"/></xsl:message>
1085 <P2PCONN X="{$bcInSpace_X_}" Y="{$bcProc_Y_}" BUSSTD="{$busStd}" BIFRANK="{$procBifRank_}" BIFSIDE="{$procBifSide_}" STACK_ID=""/>
1091 <xsl:variable name="modInstance_" select="@INSTANCE"/>
1092 <xsl:variable name="modshp_vert_idx_" select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[MODULE[(@INSTANCE = $modInstance_)]]/@SHAPE_VERTI_INDEX"/>
1093 <xsl:variable name="modBifSide_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $modInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_X"/>
1094 <xsl:variable name="modBif_Y_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $modInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_Y"/>
1095 <xsl:variable name="modBc_Y_" select="((($BIF_H + $MOD_BIF_GAP_V) * $modBif_Y_) + ($MOD_LANE_H + $MOD_LABEL_H + $MOD_BIF_GAP_V))"/>
1098 <xsl:message>Memory Instance <xsl:value-of select="$procInstance_"/></xsl:message>
1101 <xsl:variable name="modshp_Y_">
1102 <xsl:call-template name="_calc_Stack_Shape_Y">
1103 <xsl:with-param name="horizIdx" select="$p2pshp_hori_idx_"/>
1104 <xsl:with-param name="vertiIdx" select="$modshp_vert_idx_"/>
1105 </xsl:call-template>
1108 <xsl:variable name="modBifRank_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $modInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIFRANK"/>
1109 <xsl:variable name="modBusName_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $modInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BUSNAME"/>
1110 <xsl:variable name="bcMod_Y_" select="($modshp_Y_ + $modBc_Y_ + ceiling($BIF_H div 2) - ceiling($BIFC_H div 2) + $cmplxStack_H_diff_)"/>
1111 <xsl:variable name="bcMod_X_">
1113 <xsl:when test="$modBifSide_ = '0'">
1114 <xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_ - (ceiling($periMOD_W div 2) + $BIFC_W))"/>
1116 <xsl:when test="$modBifSide_ = '1'">
1117 <xsl:value-of select="ceiling($periMOD_W div 2)"/>
1119 <xsl:otherwise>0</xsl:otherwise>
1124 <xsl:message>Bc Bif Y <xsl:value-of select="$modBif_Y_"/></xsl:message>
1125 <xsl:message>Bc Mod Y <xsl:value-of select="$modBc_Y_"/></xsl:message>
1126 <xsl:message>Bc Mod X <xsl:value-of select="$bcMod_X_"/></xsl:message>
1127 <P2PCONN X="{$bcInSpace_X_}" Y="{$bcMod_Y_}" BUSSTD="{$busStd}" BIFRANK="{$modBifRank_}" BIFSIDE="{$modBifSide_}"/>
1129 <P2PCONN X="{$bcMod_X_}" Y="{$bcMod_Y_}" BUSNAME="{$modBusName_}" BUSSTD="{$busStd}" BIFRANK="{$modBifRank_}" BIFSIDE="{$modBifSide_}"/>
1138 <xsl:variable name="busTop_" select="math:min(exsl:node-set($p2pConn_heights_)/P2PCONN/@Y)"/>
1139 <xsl:variable name="busBot_" select="math:max(exsl:node-set($p2pConn_heights_)/P2PCONN/@Y)"/>
1140 <xsl:variable name="v_bus_y_" select="$busTop_ + ceiling($BIFC_H div 2) - ceiling($P2P_BUS_W div 2)"/>
1141 <xsl:variable name="busName_" select="exsl:node-set($p2pConn_heights_)/P2PCONN/@BUSNAME"/>
1142 <xsl:variable name="busStd_" select="exsl:node-set($p2pConn_heights_)/P2PCONN/@BUSSTD"/>
1145 <!-- Draw the vertical part of the bus -->
1147 <xsl:if test="$busStd_ = 'PLBV46_P2P'">
1148 <rect x="{$bcInSpace_X_ + $P2P_BUS_W}"
1150 width= "{$P2P_BUS_W}"
1151 height="{($busBot_ - $busTop_) + $P2P_BUS_W}"
1152 style="stroke:{$COL_WHITE};stroke-width:1.5;fill:{$bus_color_}"/>
1155 <xsl:if test="not($busStd_ = 'PLBV46_P2P')">
1156 <rect x="{$bcInSpace_X_ + $P2P_BUS_W}"
1158 width= "{$P2P_BUS_W}"
1159 height="{($busBot_ - $busTop_) + $P2P_BUS_W}"
1160 style="stroke:none;fill:{$bus_color_}"/>
1167 style="stroke:{$bus_color_lt_};stroke-width:1;stroke-opacity:0.9;fill-opacity:2.0;fill:{$bus_color_}"/>
1169 <!-- Place the bus label.-->
1170 <text class="p2pbuslabel"
1171 x="{$bcInSpace_X_ + $BUS_ARROW_W + ceiling($BUS_ARROW_W div 2) + ceiling($BUS_ARROW_W div 4) + 6}"
1172 y="{$busTop_ + ($BUS_ARROW_H * 3)}">
1173 <xsl:value-of select="$busName_"/>
1176 <!-- Draw the busconnection and horizontal lines.-->
1177 <xsl:for-each select="exsl:node-set($p2pConn_heights_)/P2PCONN">
1179 <xsl:variable name="bus_x_" select="($bcInSpace_X_ + ceiling($BIFC_W div 2))"/>
1180 <xsl:variable name="bus_y_" select="@Y + ceiling($BIFC_H div 2) - ceiling($P2P_BUS_W div 2)"/>
1182 <xsl:variable name="h_bus_ul_x_">
1184 <xsl:when test="@BIFSIDE='0'">
1185 <xsl:value-of select="$bus_x_"/>
1187 <xsl:when test="@BIFSIDE='1'">
1188 <xsl:value-of select="(@X + $BIFC_W + $BUS_ARROW_W) - 1"/>
1193 <xsl:variable name="h_bus_ul_y_" select="$bus_y_"/>
1195 <xsl:variable name="h_bus_height_" select="$P2P_BUS_W"/>
1196 <xsl:variable name="h_bus_width_">
1198 <xsl:message>BIFSIDE <xsl:value-of select="@BIFSIDE"/></xsl:message>
1199 <xsl:message>BUSSTD <xsl:value-of select="@BUSSTD"/></xsl:message>
1200 <xsl:message>BIFRANK <xsl:value-of select="@BIFRANK"/></xsl:message>
1203 <xsl:when test="@BIFSIDE='0'">
1204 <xsl:value-of select="(@X - $bus_x_ - $BUS_ARROW_W)"/>
1206 <xsl:when test="@BIFSIDE='1'">
1207 <xsl:value-of select="$bus_x_ - $h_bus_ul_x_ + 1"/>
1213 <!-- Draw Bus connection-->
1214 <use x="{@X}" y="{@Y}" xlink:href="#{@BUSSTD}_busconn_{@BIFRANK}"/>
1216 <!-- Draw the arrow -->
1218 <xsl:when test="((@BIFSIDE='0') and not((@BUSSTD = 'FSL') and ((@BIFRANK = 'INITIATOR') or (@BIFRANK = 'MASTER'))))">
1219 <use x="{@X - $BUS_ARROW_W}" y="{@Y + ceiling($BIFC_H div 2) - ceiling($BUS_ARROW_H div 2)}" xlink:href="#{@BUSSTD}_BusArrowEast"/>
1221 <xsl:when test="((@BIFSIDE='1') and not((@BUSSTD = 'FSL') and ((@BIFRANK = 'INITIATOR') or (@BIFRANK = 'MASTER'))))">
1222 <use x="{(@X + $BIFC_W)}" y="{@Y + ceiling($BIFC_H div 2) - ceiling($BUS_ARROW_H div 2)}" xlink:href="#{@BUSSTD}_BusArrowWest"/>
1225 <xsl:when test="((@BIFSIDE='0') and ((@BUSSTD = 'FSL') and ((@BIFRANK = 'INITIATOR') or (@BIFRANK = 'MASTER'))))">
1226 <use x="{@X - $BUS_ARROW_W}" y="{@Y + ceiling($BIFC_H div 2) - ceiling($BUS_ARROW_H div 2)}" xlink:href="#{@BUSSTD}_BusArrowHInitiator"/>
1229 <xsl:when test="((@BIFSIDE='1') and ((@BUSSTD = 'FSL') and ((@BIFRANK = 'INITIATOR') or (@BIFRANK = 'MASTER'))))">
1230 <use x="{(@X + $BIFC_W)}" y="{@Y + ceiling($BIFC_H div 2) - ceiling($BUS_ARROW_H div 2)}" xlink:href="#{@BUSSTD}_BusArrowHInitiator"/>
1235 <!-- Draw the horizontal part of the bus -->
1236 <rect x="{$h_bus_ul_x_}"
1238 width= "{$h_bus_width_}"
1239 height="{$h_bus_height_}"
1240 style="stroke:none; fill:{$bus_color_}"/>
1245 <xsl:variable name="busTop_" select="math:min(exsl:node-set($p2pConn_heights_)/P2PCONN/@Y)"/>
1246 <xsl:variable name="busBot_" select="math:max(exsl:node-set($p2pConn_heights_)/P2PCONN/@Y)"/>
1247 <xsl:variable name="v_bus_y_" select="$busTop_ + ceiling($BIFC_H div 2) - ceiling($P2P_BUS_W div 2)"/>
1248 <xsl:variable name="busName_" select="exsl:node-set($p2pConn_heights_)/P2PCONN/@BUSNAME"/>
1250 <!-- Draw the vertical part of the bus -->
1252 <rect x="{$bcInSpace_X_ + $P2P_BUS_W}"
1254 width= "{$P2P_BUS_W}"
1255 height="{($busBot_ - $busTop_) + $P2P_BUS_W}"
1256 style="stroke:{$COL_WHITE};stroke-width:1;stroke-opacity:0.9;fill-opacity:2.0;fill:{$bus_color_}"/>
1260 style="stroke:{$bus_color_lt_};stroke-width:1;stroke-opacity:0.9;fill-opacity:2.0;fill:{$bus_color_}"/>
1262 <!-- Place the bus label.-->
1264 <text class="p2pbuslabel"
1265 x="{$bcInSpace_X_ + $BUS_ARROW_W + ceiling($BUS_ARROW_W div 2) + ceiling($BUS_ARROW_W div 4) + 6}"
1266 y="{$busTop_ + ($BUS_ARROW_H * 3)}">
1267 <xsl:value-of select="$busName_"/>
1277 ===========================================================
1278 Handle MultiStack Point to Point connections
1279 ===========================================================
1282 <xsl:template name="BCLaneSpace_MultiStack_PointToPoint">
1284 <xsl:param name="sbs_Y" select="0"/>
1285 <xsl:param name="stkToEast" select="'NONE'"/>
1286 <xsl:param name="stkToWest" select="'NONE'"/>
1287 <xsl:param name="stkToEast_W" select="0"/>
1288 <xsl:param name="stkToWest_W" select="0"/>
1289 <xsl:param name="busStd" select="'NONE'"/>
1290 <xsl:param name="busName" select="'NONE'"/>
1291 <xsl:param name="bifRank" select="'NONE'"/>
1292 <xsl:param name="laneInSpace_X" select="0"/>
1294 <xsl:variable name="bus_color_">
1295 <xsl:call-template name="BusType2Color">
1296 <xsl:with-param name="busType" select="$busStd"/>
1297 </xsl:call-template>
1300 <xsl:variable name="space_W_">
1301 <xsl:call-template name="_calc_Space_Width">
1302 <xsl:with-param name="stackToEast" select="$stkToEast"/>
1303 <xsl:with-param name="stackToWest" select="$stkToWest"/>
1304 </xsl:call-template>
1307 <xsl:variable name ="extSpaceWest_W_" select="ceiling($stkToWest_W div 2)"/>
1308 <xsl:variable name ="extSpaceEast_W_" select="ceiling($stkToEast_W div 2)"/>
1311 <!-- Store the connections in a variable -->
1312 <xsl:variable name="bcInSpace_X_" select="($laneInSpace_X + ceiling($BIFC_W div 2) - ceiling($BUS_ARROW_W div 2))"/>
1314 <xsl:variable name="multiConns_">
1316 <xsl:for-each select="BUSCONN">
1318 <xsl:variable name="bifName_" select="@BUSINTERFACE"/>
1319 <xsl:variable name="multiInstance_" select="@INSTANCE"/>
1320 <xsl:variable name="mulshp_hori_idx_">
1322 <xsl:when test="@IS_PROCONN">
1323 <xsl:value-of select="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $multiInstance_)]/@STACK_HORIZ_INDEX"/>
1326 <xsl:value-of select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $multiInstance_)])]/@STACK_HORIZ_INDEX"/>
1331 <xsl:variable name="mulshp_vert_idx_">
1333 <xsl:when test="@IS_PROCONN">
1334 <xsl:value-of select="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $multiInstance_)]/@SHAPE_VERTI_INDEX"/>
1337 <xsl:value-of select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $multiInstance_)])]/@SHAPE_VERTI_INDEX"/>
1343 <xsl:message>Shape Horiz <xsl:value-of select="$mulshp_hori_idx_"/></xsl:message>
1344 <xsl:message>Shape Verti <xsl:value-of select="$mulshp_vert_idx_"/></xsl:message>
1347 <xsl:variable name="mulshp_Y_">
1348 <xsl:call-template name="_calc_Stack_Shape_Y">
1349 <xsl:with-param name="horizIdx" select="$mulshp_hori_idx_"/>
1350 <xsl:with-param name="vertiIdx" select="$mulshp_vert_idx_"/>
1351 </xsl:call-template>
1354 <xsl:variable name="cmplxStack_H_diff_">
1356 <xsl:when test=" (($stkToEast = 'NONE') or ($stkToWest = 'NONE'))">0</xsl:when>
1357 <xsl:when test="not(($stkToEast = 'NONE') or ($stkToWest = 'NONE'))">
1359 <xsl:variable name="stackToWest_AbvSbs_H_">
1360 <xsl:call-template name="_calc_Stack_AbvSbs_Height">
1361 <xsl:with-param name="stackIdx" select="$stkToWest"/>
1362 </xsl:call-template>
1365 <xsl:variable name="stackToEast_AbvSbs_H_">
1366 <xsl:call-template name="_calc_Stack_AbvSbs_Height">
1367 <xsl:with-param name="stackIdx" select="$stkToEast"/>
1368 </xsl:call-template>
1372 <xsl:message>stack to west H <xsl:value-of select="$stackToWest_AbvSbs_H_"/></xsl:message>
1373 <xsl:message>stack to east H <xsl:value-of select="$stackToEast_AbvSbs_H_"/></xsl:message>
1376 <xsl:when test="(($mulshp_hori_idx_ = $stkToEast) and ($stackToWest_AbvSbs_H_ > $stackToEast_AbvSbs_H_))">
1377 <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
1379 <xsl:when test="(($mulshp_hori_idx_ = $stkToWest) and ($stackToEast_AbvSbs_H_ > $stackToWest_AbvSbs_H_))">
1380 <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
1382 <xsl:otherwise>0</xsl:otherwise>
1390 <xsl:variable name="procStack_H_diff_">
1392 <xsl:when test=" (($stkToEast = 'NONE') or ($stkToWest = 'NONE'))">0</xsl:when>
1393 <xsl:when test="not(($stkToEast = 'NONE') or ($stkToWest = 'NONE'))">
1395 <xsl:variable name="stackToWest_AbvSbs_H_">
1396 <xsl:call-template name="_calc_Stack_AbvSbs_Height">
1397 <xsl:with-param name="stackIdx" select="$stkToWest"/>
1398 </xsl:call-template>
1401 <xsl:variable name="stackToEast_AbvSbs_H_">
1402 <xsl:call-template name="_calc_Stack_AbvSbs_Height">
1403 <xsl:with-param name="stackIdx" select="$stkToEast"/>
1404 </xsl:call-template>
1408 <xsl:message>stack to west H <xsl:value-of select="$stackToWest_AbvSbs_H_"/></xsl:message>
1409 <xsl:message>stack to east H <xsl:value-of select="$stackToEast_AbvSbs_H_"/></xsl:message>
1412 <xsl:when test="(($mulshp_hori_idx_ = $stkToEast) and ($stackToWest_AbvSbs_H_ > $stackToEast_AbvSbs_H_))">
1413 <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
1415 <xsl:when test="(($mulshp_hori_idx_ = $stkToWest) and ($stackToEast_AbvSbs_H_ > $stackToWest_AbvSbs_H_))">
1416 <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
1418 <xsl:otherwise>0</xsl:otherwise>
1427 <xsl:when test="@IS_PROCONN and @BIF_Y">
1429 <xsl:variable name="procBif_Y_" select="((($BIF_H + $MOD_BIF_GAP_V) * @BIF_Y) + ($MOD_LANE_H + $MOD_LABEL_H + $MOD_BIF_GAP_V))"/>
1431 <xsl:variable name="procBifRank_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $multiInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIFRANK"/>
1432 <xsl:variable name="procBusName_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $multiInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BUSNAME"/>
1433 <xsl:variable name="procBifSide_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $multiInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_X"/>
1435 <xsl:variable name="bcProc_Y_" select="($mulshp_Y_ + $procBif_Y_ + ceiling($BIF_H div 2) - ceiling($BIFC_H div 2) + $procStack_H_diff_)"/>
1437 <xsl:variable name="bcProc_X_">
1439 <xsl:when test="$procBifSide_ = '0'">
1440 <xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_ - (ceiling($periMOD_W div 2) + $BIFC_W))"/>
1442 <xsl:when test="$procBifSide_ = '1'">
1443 <xsl:value-of select="ceiling($periMOD_W div 2)"/>
1445 <xsl:otherwise>0</xsl:otherwise>
1449 <MULTICONN X="{$bcProc_X_}" Y="{$bcProc_Y_}" BUSNAME="{$procBusName_}" BUSSTD="{$busStd}" BIFRANK="{$procBifRank_}" BIFSIDE="{$procBifSide_}"/>
1451 <MULTICONN X="{$bcInSpace_X_}" Y="{$bcProc_Y_}" BUSSTD="{$busStd}" BIFRANK="{$procBifRank_}" BIFSIDE="{$procBifSide_}"/>
1458 <xsl:variable name="modType_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $multiInstance_)]/@MODCLASS"/>
1459 <xsl:variable name="modBif_Y_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $multiInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_Y"/>
1460 <xsl:variable name="modBifSide_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $multiInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_X"/>
1462 <xsl:variable name="memcMOD_W_" select="((/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[MODULE[(@INSTANCE = $multiInstance_)]]/@MODS_W) * $periMOD_W)"/>
1464 <xsl:variable name="modBc_Y_">
1466 <xsl:when test="($modType_ = 'MEMORY_CNTLR')">
1467 <xsl:value-of select="$periMOD_H + $MOD_LANE_H + ((($BIF_H + $MOD_BIF_GAP_V) * $modBif_Y_))"/>
1470 <xsl:value-of select="((($BIF_H + $MOD_BIF_GAP_V) * $modBif_Y_) + ($MOD_LANE_H + $MOD_LABEL_H + $MOD_BIF_GAP_V))"/>
1477 <xsl:message>Multi module width <xsl:value-of select="$memcMOD_W_"/></xsl:message>
1478 <xsl:message>Multi instance <xsl:value-of select="$multiInstance_"/></xsl:message>
1479 <xsl:message>Multi instance <xsl:value-of select="$multiInstance_"/></xsl:message>
1482 <xsl:variable name="modBifRank_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $multiInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIFRANK"/>
1483 <xsl:variable name="modBusName_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $multiInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BUSNAME"/>
1484 <xsl:variable name="bcMod_Y_" select="($mulshp_Y_ + $modBc_Y_ + ceiling($BIF_H div 2) - ceiling($BIFC_H div 2) + $cmplxStack_H_diff_)"/>
1485 <xsl:variable name="bcMod_X_">
1487 <xsl:when test="$modBifSide_ = '0'">
1488 <xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_ - (ceiling($memcMOD_W_ div 2) + $BIFC_W))"/>
1490 <xsl:when test="$modBifSide_ = '1'">
1491 <xsl:value-of select="ceiling($memcMOD_W_ div 2)"/>
1493 <xsl:otherwise>0</xsl:otherwise>
1498 <MULTICONN X="{$bcMod_X_}" Y="{$bcMod_Y_}" BUSNAME="{$modBusName_}" BUSSTD="{$busStd}" BIFRANK="{$modBifRank_}" BIFSIDE="{$modBifSide_}"/>
1500 <MULTICONN X="{$bcInSpace_X_}" Y="{$bcMod_Y_}" BUSSTD="{$busStd}" BIFRANK="{$modBifRank_}" BIFSIDE="{$modBifSide_}"/>
1508 <!-- Draw the busconnection and horizontal lines.-->
1509 <xsl:for-each select="exsl:node-set($multiConns_)/MULTICONN">
1511 <xsl:variable name="bus_x_" select="($bcInSpace_X_ + ceiling($BIFC_W div 2))"/>
1512 <xsl:variable name="bus_y_" select="@Y + ceiling($BIFC_H div 2) - ceiling($P2P_BUS_W div 2)"/>
1514 <xsl:variable name="h_bus_ul_x_">
1516 <xsl:when test="@BIFSIDE='0'">
1517 <xsl:value-of select="$bus_x_"/>
1519 <xsl:when test="@BIFSIDE='1'">
1520 <xsl:value-of select="(@X + $BIFC_W + $BUS_ARROW_W)"/>
1525 <xsl:variable name="h_bus_ul_y_" select="$bus_y_"/>
1527 <xsl:variable name="h_bus_height_" select="$P2P_BUS_W"/>
1528 <xsl:variable name="h_bus_width_">
1530 <xsl:message>BUSSTD <xsl:value-of select="@BUSSTD"/></xsl:message>
1531 <xsl:message>BIFSIDE <xsl:value-of select="@BIFSIDE"/></xsl:message>
1532 <xsl:message>BIFRANK <xsl:value-of select="@BIFRANK"/></xsl:message>
1535 <xsl:when test="@BIFSIDE='0'">
1536 <xsl:value-of select="(@X - $bus_x_ - $BUS_ARROW_W)"/>
1538 <xsl:when test="@BIFSIDE='1'">
1539 <xsl:value-of select="$bus_x_ - $h_bus_ul_x_"/>
1545 <!-- Draw the horizontal part of the bus -->
1546 <rect x="{$h_bus_ul_x_}"
1548 width= "{$h_bus_width_}"
1549 height="{$h_bus_height_}"
1550 style="stroke:none; fill:{$bus_color_}"/>
1553 <!-- Draw the arrow -->
1555 <xsl:when test="((@BIFSIDE='0') and not((@BUSSTD = 'FSL') and ((@BIFRANK = 'INITIATOR') or (@BIFRANK = 'MASTER'))))">
1556 <use x="{@X - $BUS_ARROW_W}" y="{@Y + ceiling($BIFC_H div 2) - ceiling($BUS_ARROW_H div 2)}" xlink:href="#{@BUSSTD}_BusArrowEast"/>
1558 <xsl:when test="((@BIFSIDE='1') and not((@BUSSTD = 'FSL') and ((@BIFRANK = 'INITIATOR') or (@BIFRANK = 'MASTER'))))">
1559 <use x="{(@X + $BIFC_W)}" y="{@Y + ceiling($BIFC_H div 2) - ceiling($BUS_ARROW_H div 2)}" xlink:href="#{@BUSSTD}_BusArrowWest"/>
1562 <xsl:when test="((@BIFSIDE='0') and ((@BUSSTD = 'FSL') and ((@BIFRANK = 'INITIATOR') or (@BIFRANK = 'MASTER'))))">
1563 <use x="{@X - $BUS_ARROW_W}" y="{@Y + ceiling($BIFC_H div 2) - ceiling($BUS_ARROW_H div 2)}" xlink:href="#{@BUSSTD}_BusArrowHInitiator"/>
1566 <xsl:when test="((@BIFSIDE='1') and ((@BUSSTD = 'FSL') and ((@BIFRANK = 'INITIATOR') or (@BIFRANK = 'MASTER'))))">
1567 <use x="{(@X + $BIFC_W)}" y="{@Y + ceiling($BIFC_H div 2) - ceiling($BUS_ARROW_H div 2)}" xlink:href="#{@BUSSTD}_BusArrowHInitiator"/>
1572 <use x="{@X}" y="{@Y}" xlink:href="#{@BUSSTD}_busconn_{@BIFRANK}"/>
1577 <xsl:variable name="busTop_" select="math:min(exsl:node-set($multiConns_)/MULTICONN/@Y)"/>
1578 <xsl:variable name="busBot_" select="math:max(exsl:node-set($multiConns_)/MULTICONN/@Y)"/>
1580 <xsl:variable name="topRnk_" select="(exsl:node-set($multiConns_)/MULTICONN[(@Y = $busTop_)]/@BIFRANK)"/>
1581 <xsl:variable name="botRnk_" select="(exsl:node-set($multiConns_)/MULTICONN[(@Y = $busBot_)]/@BIFRANK)"/>
1584 <xsl:variable name="v_bus_y_" select="$busTop_ + ceiling($BIFC_H div 2) - ceiling($P2P_BUS_W div 2)"/>
1585 <xsl:variable name="busName_" select="exsl:node-set($multiConns_)/MULTICONN/@BUSNAME"/>
1587 <!-- Draw the vertical part of the bus -->
1588 <rect x="{$bcInSpace_X_ + $P2P_BUS_W}"
1590 width= "{$P2P_BUS_W}"
1591 height="{($busBot_ - $busTop_) + $P2P_BUS_W}"
1592 style="stroke:none; fill:{$bus_color_}"/>
1594 <!-- Place the bus label.-->
1595 <text class="p2pbuslabel"
1596 x="{$bcInSpace_X_ + $BUS_ARROW_W + ceiling($BUS_ARROW_W div 2) + ceiling($BUS_ARROW_W div 4) + 6}"
1597 y="{$busTop_ + ($BUS_ARROW_H * 3)}">
1598 <xsl:value-of select="$busName_"/>
1607 <xsl:message>Bot Rank <xsl:value-of select="$botRnk_"/></xsl:message>
1611 <xsl:call-template name="Draw_P2PBus">
1612 <xsl:with-param name="busX" select="$bcInSpace_X_"/>
1613 <xsl:with-param name="busTop" select="$busTop_"/>
1614 <xsl:with-param name="busBot" select="$busBot_"/>
1615 <xsl:with-param name="topRnk" select="$topRnk_"/>
1616 <xsl:with-param name="botRnk" select="$botRnk_"/>
1617 <xsl:with-param name="busStd" select="$busStd"/>
1618 <xsl:with-param name="busName" select="$busName"/>
1619 </xsl:call-template>
1626 ===========================================================
1627 Handle Processor to processor connections
1628 ===========================================================
1630 <xsl:template name="BCLaneSpace_ProcToProc">
1632 <xsl:param name="sbs_Y" select="0"/>
1633 <xsl:param name="stkToEast" select="'NONE'"/>
1634 <xsl:param name="stkToWest" select="'NONE'"/>
1635 <xsl:param name="stkToEast_W" select="0"/>
1636 <xsl:param name="stkToWest_W" select="0"/>
1637 <xsl:param name="busStd" select="'NONE'"/>
1638 <xsl:param name="busName" select="'NONE'"/>
1639 <xsl:param name="bifRank" select="'NONE'"/>
1640 <xsl:param name="laneInSpace_X" select="0"/>
1642 <xsl:variable name="bus_color_">
1643 <xsl:call-template name="BusType2Color">
1644 <xsl:with-param name="busType" select="$busStd"/>
1645 </xsl:call-template>
1648 <xsl:variable name="space_W_">
1649 <xsl:call-template name="_calc_Space_Width">
1650 <xsl:with-param name="stackToEast" select="$stkToEast"/>
1651 <xsl:with-param name="stackToWest" select="$stkToWest"/>
1652 </xsl:call-template>
1655 <xsl:variable name ="extSpaceWest_W_" select="ceiling($stkToWest_W div 2)"/>
1656 <xsl:variable name ="extSpaceEast_W_" select="ceiling($stkToEast_W div 2)"/>
1658 <xsl:variable name="pr2pr_stkToWest_" select="math:min(BUSCONN/@STACK_HORIZ_INDEX)"/>
1659 <xsl:variable name="pr2pr_stkToEast_" select="math:max(BUSCONN/@STACK_HORIZ_INDEX)"/>
1660 <xsl:variable name="proc2procConn_heights_">
1662 <xsl:for-each select="BUSCONN">
1664 <xsl:variable name="procInstance_" select="@INSTANCE"/>
1665 <xsl:variable name="bifName_" select="@BUSINTERFACE"/>
1666 <xsl:variable name="procshp_hori_idx_" select="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $procInstance_)]/@STACK_HORIZ_INDEX"/>
1667 <xsl:variable name="procshp_vert_idx_" select="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $procInstance_)]/@SHAPE_VERTI_INDEX"/>
1668 <xsl:variable name="procshp_Y_">
1669 <xsl:call-template name="_calc_Stack_Shape_Y">
1670 <xsl:with-param name="horizIdx" select="$procshp_hori_idx_"/>
1671 <xsl:with-param name="vertiIdx" select="$procshp_vert_idx_"/>
1672 </xsl:call-template>
1675 <xsl:variable name="procStack_H_diff_">
1677 <xsl:when test=" (($pr2pr_stkToEast_ = 'NONE') or ($pr2pr_stkToWest_ = 'NONE'))">0</xsl:when>
1678 <xsl:when test="not(($pr2pr_stkToEast_ = 'NONE') or ($pr2pr_stkToWest_ = 'NONE'))">
1680 <xsl:variable name="stackToWest_AbvSbs_H_">
1681 <xsl:call-template name="_calc_Stack_AbvSbs_Height">
1682 <xsl:with-param name="stackIdx" select="$pr2pr_stkToWest_"/>
1683 </xsl:call-template>
1686 <xsl:variable name="stackToEast_AbvSbs_H_">
1687 <xsl:call-template name="_calc_Stack_AbvSbs_Height">
1688 <xsl:with-param name="stackIdx" select="$pr2pr_stkToEast_"/>
1689 </xsl:call-template>
1692 <xsl:message>stack to west H <xsl:value-of select="$stackToWest_AbvSbs_H_"/></xsl:message>
1693 <xsl:message>stack to east H <xsl:value-of select="$stackToEast_AbvSbs_H_"/></xsl:message>
1696 <xsl:when test="(($procshp_hori_idx_ = $pr2pr_stkToEast_) and ($stackToWest_AbvSbs_H_ > $stackToEast_AbvSbs_H_))">
1697 <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
1699 <xsl:when test="(($procshp_hori_idx_ = $pr2pr_stkToWest_) and ($stackToEast_AbvSbs_H_ > $stackToWest_AbvSbs_H_))">
1700 <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
1702 <xsl:otherwise>0</xsl:otherwise>
1709 <!-- Store the conns in a variable -->
1710 <xsl:variable name="procBif_Y_" select="((($BIF_H + $MOD_BIF_GAP_V) * @BIF_Y) + ($MOD_LANE_H + $MOD_LABEL_H + $MOD_BIF_GAP_V))"/>
1712 <xsl:variable name="procBifRank_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $procInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIFRANK"/>
1713 <xsl:variable name="procBifSide_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $procInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_X"/>
1715 <xsl:variable name="bcInSpace_X_">
1717 <xsl:when test="$procBifSide_ = '1'"><xsl:value-of select="ceiling($periMOD_W div 2)"/></xsl:when>
1718 <xsl:when test="$procBifSide_ = '0'"><xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_ - ceiling($periMOD_W div 2) - $BIFC_W)"/></xsl:when>
1722 <xsl:variable name="bcProc_Y_" select="($procshp_Y_ + $procBif_Y_ + ceiling($BIF_H div 2) - ceiling($BIFC_H div 2) + $procStack_H_diff_)"/>
1726 <xsl:message>Conn X <xsl:value-of select="$bcInSpace_X_"/></xsl:message>
1727 <xsl:message>Conn Y <xsl:value-of select="$bcProc_Y_"/></xsl:message>
1730 <PR2PRCONN X="{$bcInSpace_X_}" Y="{$bcProc_Y_}" BUSSTD="{$busStd}" BIFRANK="{$procBifRank_}" BIFSIDE="{$procBifSide_}" SHAPE_ID="{$procshp_hori_idx_}"/>
1734 <xsl:variable name="pr2prLeft_" select="math:min(exsl:node-set($proc2procConn_heights_)/PR2PRCONN/@SHAPE_ID)"/>
1735 <xsl:variable name="pr2prRght_" select="math:max(exsl:node-set($proc2procConn_heights_)/PR2PRCONN/@SHAPE_ID)"/>
1737 <xsl:variable name="pr2pr_stack_Left_X_">
1738 <xsl:call-template name="_calc_Stack_X">
1739 <xsl:with-param name="stackIdx" select="$pr2prLeft_"/>
1740 </xsl:call-template>
1743 <xsl:variable name="pr2pr_stack_Rght_X_">
1744 <xsl:call-template name="_calc_Stack_X">
1745 <xsl:with-param name="stackIdx" select="$pr2prRght_"/>
1746 </xsl:call-template>
1750 <xsl:message>Left stack X <xsl:value-of select="$pr2pr_stack_Left_X_"/></xsl:message>
1751 <xsl:message>Rght stack X <xsl:value-of select="$pr2pr_stack_Rght_X_"/></xsl:message>
1753 <xsl:variable name="pr2pr_space_W_" select="($pr2pr_stack_Rght_X_ - $pr2pr_stack_Left_X_)"/>
1756 <xsl:variable name="pr2pr_extStackEast_W_">
1757 <xsl:call-template name="_calc_Stack_Width">
1758 <xsl:with-param name="stackIdx" select="$pr2prRght_"/>
1759 </xsl:call-template>
1762 <xsl:variable name="pr2pr_extStackWest_W_">
1763 <xsl:call-template name="_calc_Stack_Width">
1764 <xsl:with-param name="stackIdx" select="$pr2prLeft_"/>
1765 </xsl:call-template>
1769 <xsl:message>Space W <xsl:value-of select="$pr2pr_space_W_"/></xsl:message>
1770 <xsl:message>Rght stack <xsl:value-of select="$pr2pr_extStackEast_W_"/></xsl:message>
1771 <xsl:message>Left stack <xsl:value-of select="$pr2pr_extStackWest_W_"/></xsl:message>
1774 <xsl:variable name="connLeft_X_" select="ceiling($periMOD_W div 2)"/>
1775 <xsl:variable name="connRght_X_" select="($pr2pr_space_W_ - ceiling($pr2pr_extStackWest_W_ div 2) + ceiling($pr2pr_extStackEast_W_ div 2) - ceiling($periMOD_W div 2) - $BIFC_W)"/>
1777 <!-- Draw the busconnections .-->
1778 <xsl:for-each select="exsl:node-set($proc2procConn_heights_)/PR2PRCONN">
1779 <xsl:variable name="conn_X_">
1781 <xsl:when test="@BIFSIDE = '1'"><xsl:value-of select="ceiling($periMOD_W div 2)"/></xsl:when>
1782 <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($periMOD_W div 2) - $BIFC_W)"/></xsl:when>
1784 <xsl:when test="@BIFSIDE = '0'"><xsl:value-of select="($pr2pr_space_W_ + $pr2pr_extStackWest_W_ + $pr2pr_extStackEast_W_ - ceiling($periMOD_W div 2) - $BIFC_W)"/></xsl:when>
1790 <use x="{$conn_X_}" y="{@Y}" xlink:href="#{@BUSSTD}_busconn_{@BIFRANK}"/>
1793 <xsl:variable name="bc_Y_" select="math:min(exsl:node-set($proc2procConn_heights_)/PR2PRCONN/@Y)"/>
1794 <xsl:variable name="bcLeft_" select="math:min(exsl:node-set($proc2procConn_heights_)/PR2PRCONN/@X)"/>
1795 <xsl:variable name="bcRght_" select="math:max(exsl:node-set($proc2procConn_heights_)/PR2PRCONN/@X)"/>
1797 <xsl:variable name="leftRnk_" select="(exsl:node-set($proc2procConn_heights_)/PR2PRCONN[(@X = $bcLeft_)]/@BIFRANK)"/>
1798 <xsl:variable name="rghtRnk_" select="(exsl:node-set($proc2procConn_heights_)/PR2PRCONN[(@X = $bcRght_)]/@BIFRANK)"/>
1800 <xsl:call-template name="Draw_Proc2ProcBus">
1801 <xsl:with-param name="bc_Y" select="$bc_Y_"/>
1802 <xsl:with-param name="bcLeft_X" select="$connLeft_X_ + $BIFC_W"/>
1803 <xsl:with-param name="bcRght_X" select="$connRght_X_"/>
1804 <xsl:with-param name="leftRnk" select="$leftRnk_"/>
1805 <xsl:with-param name="rghtRnk" select="$rghtRnk_"/>
1806 <xsl:with-param name="busStd" select="$busStd"/>
1807 <xsl:with-param name="busName" select="$busName"/>
1808 </xsl:call-template>
1814 ===========================================================
1815 Handle Split connections, (connections that go between adjacent stacks)
1816 ===========================================================
1819 <xsl:template name="BCLaneSpace_SplitConn">
1821 <xsl:param name="sbs_Y" select="0"/>
1822 <xsl:param name="stkToEast" select="'NONE'"/>
1823 <xsl:param name="stkToWest" select="'NONE'"/>
1824 <xsl:param name="stkToEast_W" select="0"/>
1825 <xsl:param name="stkToWest_W" select="0"/>
1826 <xsl:param name="busStd" select="'NONE'"/>
1827 <xsl:param name="busName" select="'NONE'"/>
1828 <xsl:param name="bifRank" select="'NONE'"/>
1829 <xsl:param name="laneInSpace_X" select="0"/>
1831 <xsl:variable name="bus_color_">
1832 <xsl:call-template name="BusType2Color">
1833 <xsl:with-param name="busType" select="$busStd"/>
1834 </xsl:call-template>
1837 <xsl:variable name="space_W_">
1838 <xsl:call-template name="_calc_Space_Width">
1839 <xsl:with-param name="stackToEast" select="$stkToEast"/>
1840 <xsl:with-param name="stackToWest" select="$stkToWest"/>
1841 </xsl:call-template>
1844 <xsl:variable name ="extSpaceWest_W_" select="ceiling($stkToWest_W div 2)"/>
1845 <xsl:variable name ="extSpaceEast_W_" select="ceiling($stkToEast_W div 2)"/>
1848 <xsl:variable name="bifName_" select="BUSCONN/@BUSINTERFACE"/>
1849 <xsl:variable name="shpInstance_" select="BUSCONN/@INSTANCE"/>
1852 <xsl:message>Found a split connection on <xsl:value-of select="$shpInstance_"/></xsl:message>
1856 <xsl:variable name="shp_hori_idx_">
1859 <xsl:when test="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $shpInstance_)]">
1860 <xsl:value-of select="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $shpInstance_)]/@STACK_HORIZ_INDEX"/>
1863 <xsl:when test="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $shpInstance_)])]">
1864 <xsl:value-of select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $shpInstance_)])]/@STACK_HORIZ_INDEX"/>
1866 <xsl:otherwise>_unknown_</xsl:otherwise>
1871 <xsl:variable name="shp_vert_idx_">
1874 <xsl:when test="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $shpInstance_)]">
1875 <xsl:value-of select="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $shpInstance_)]/@SHAPE_VERTI_INDEX"/>
1878 <xsl:when test="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $shpInstance_)])]">
1879 <xsl:value-of select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $shpInstance_)])]/@SHAPE_VERTI_INDEX"/>
1881 <xsl:otherwise>_unknown_</xsl:otherwise>
1886 <xsl:variable name="splitshp_Width_">
1889 <xsl:when test="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $shpInstance_)]">
1890 <xsl:value-of select="$periMOD_W"/>
1893 <xsl:when test="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $shpInstance_)])]/@MODS_W">
1895 <xsl:message>Using mods width on <xsl:value-of select="$shpInstance_"/></xsl:message>
1897 <xsl:value-of select="(/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $shpInstance_)])]/@MODS_W * $periMOD_W)"/>
1900 <xsl:value-of select="$periMOD_W"/>
1907 <xsl:message>Found width of <xsl:value-of select="$splitshp_Width_"/></xsl:message>
1911 <xsl:variable name="splitshp_Y_">
1912 <xsl:call-template name="_calc_Stack_Shape_Y">
1913 <xsl:with-param name="horizIdx" select="$shp_hori_idx_"/>
1914 <xsl:with-param name="vertiIdx" select="$shp_vert_idx_"/>
1915 </xsl:call-template>
1919 <xsl:variable name="splitStack_H_diff_">
1921 <xsl:when test=" (($stkToEast = 'NONE') or ($stkToWest = 'NONE'))">0</xsl:when>
1922 <xsl:when test="not(($stkToEast = 'NONE') or ($stkToWest = 'NONE'))">
1924 <xsl:variable name="stackToWest_AbvSbs_H_">
1925 <xsl:call-template name="_calc_Stack_AbvSbs_Height">
1926 <xsl:with-param name="stackIdx" select="$stkToWest"/>
1927 </xsl:call-template>
1930 <xsl:variable name="stackToEast_AbvSbs_H_">
1931 <xsl:call-template name="_calc_Stack_AbvSbs_Height">
1932 <xsl:with-param name="stackIdx" select="$stkToEast"/>
1933 </xsl:call-template>
1937 <xsl:message>stack to west H <xsl:value-of select="$stackToWest_AbvSbs_H_"/></xsl:message>
1938 <xsl:message>stack to east H <xsl:value-of select="$stackToEast_AbvSbs_H_"/></xsl:message>
1941 <xsl:when test="(($shp_hori_idx_ = $stkToEast) and ($stackToWest_AbvSbs_H_ > $stackToEast_AbvSbs_H_))">
1942 <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
1944 <xsl:when test="(($shp_hori_idx_ = $stkToWest) and ($stackToEast_AbvSbs_H_ > $stackToWest_AbvSbs_H_))">
1945 <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
1947 <xsl:otherwise>0</xsl:otherwise>
1955 <xsl:variable name="splitBif_Y_" select="((($BIF_H + $MOD_BIF_GAP_V) * BUSCONN/@BIF_Y) + ($MOD_LANE_H + $MOD_LABEL_H + $MOD_BIF_GAP_V))"/>
1956 <xsl:variable name="splitBifRank_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $shpInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIFRANK"/>
1957 <xsl:variable name="splitBifSide_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $shpInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_X"/>
1959 <xsl:variable name="bcInSpace_X_">
1961 <xsl:when test="$splitBifSide_ = '1'"><xsl:value-of select="ceiling($splitshp_Width_ div 2)"/></xsl:when>
1962 <xsl:when test="$splitBifSide_ = '0'"><xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_ - ceiling($splitshp_Width_ div 2) - $BIFC_W)"/></xsl:when>
1967 <xsl:variable name="bcBus_X_">
1969 <xsl:when test="$splitBifSide_ = '1'"><xsl:value-of select="$bcInSpace_X_"/></xsl:when>
1970 <xsl:when test="$splitBifSide_ = '0'"><xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_ - ceiling($periMOD_W div 2) - $BIFC_W)"/></xsl:when>
1974 <xsl:variable name="bcSplit_Y_">
1976 <xsl:when test="(BUSCONN/@IS_MEMCONN)">
1978 <xsl:message>Found memory conn split connection on <xsl:value-of select="$shpInstance_"/> </xsl:message>
1980 <xsl:value-of select="($splitshp_Y_ + $periMOD_H + $MOD_BIF_GAP_V + (BUSCONN/@BIF_Y * ($BIF_H + $MOD_BIF_GAP_V)) + ceiling($BIF_H div 2) - ceiling($BIFC_H div 2) + $splitStack_H_diff_)"/>
1983 <xsl:value-of select="($splitshp_Y_ + $splitBif_Y_ + ceiling($BIF_H div 2) - ceiling($BIFC_H div 2) + $splitStack_H_diff_)"/>
1988 <xsl:value-of select="($splitshp_Y_ + $splitBif_Y_ + ceiling($BIF_H div 2) - ceiling($BIFC_H div 2) + $splitStack_H_diff_)"/>
1991 <xsl:message>VERTI INDEX <xsl:value-of select="$shp_vert_idx_"/></xsl:message>
1992 <xsl:message>BIF Y <xsl:value-of select="$splitBif_Y_"/></xsl:message>
1993 <xsl:message>HORIZ INDEX <xsl:value-of select="$shp_hori_idx_"/></xsl:message>
1996 <use x="{$bcInSpace_X_}" y="{$bcSplit_Y_}" xlink:href="#{@BUSSTD}_busconn_{$splitBifRank_}"/>
1999 <xsl:call-template name="Draw_SplitConnBus">
2000 <xsl:with-param name="bc_Y" select="$bcSplit_Y_"/>
2001 <xsl:with-param name="bc_X" select="$bcInSpace_X_"/>
2003 <xsl:with-param name="bc_Rnk" select="$splitBifRank_"/>
2004 <xsl:with-param name="bc_Side" select="$splitBifSide_"/>
2006 <xsl:with-param name="busStd" select="$busStd"/>
2007 <xsl:with-param name="busName" select="$busName"/>
2008 </xsl:call-template>
2014 <xsl:template name="Define_BusLaneSpace">
2016 <xsl:param name="stackToEast" select="'NONE'"/>
2017 <xsl:param name="stackToWest" select="'NONE'"/>
2019 <xsl:variable name="stkToEast_">
2021 <xsl:when test="not($stackToEast = 'NONE')"><xsl:value-of select="$stackToEast"/></xsl:when>
2023 <xsl:when test="not($stackToWest = 'NONE')"><xsl:value-of select="($stackToWest + 1)"/></xsl:when>
2025 <xsl:otherwise>NONE</xsl:otherwise>
2029 <xsl:variable name="stkToWest_">
2031 <xsl:when test="not($stackToWest = 'NONE')"><xsl:value-of select="$stackToWest"/></xsl:when>
2032 <xsl:when test="(not($stackToEast = 'NONE') and not($stackToEast = '0'))"><xsl:value-of select="($stackToEast - 1)"/></xsl:when>
2033 <xsl:otherwise>NONE</xsl:otherwise>
2038 <xsl:message>Stack to West <xsl:value-of select="$stackToWest"/></xsl:message>
2039 <xsl:message>Stack to East <xsl:value-of select="$stackToEast"/></xsl:message>
2043 <xsl:message>Stack abv diff <xsl:value-of select="$stack_H_diff_"/></xsl:message>
2046 <xsl:variable name="spaceAbvSbs_H_">
2047 <xsl:call-template name="_calc_Space_AbvSbs_Height">
2048 <xsl:with-param name="stackToEast" select="$stackToEast"/>
2049 <xsl:with-param name="stackToWest" select="$stackToWest"/>
2050 </xsl:call-template>
2053 <xsl:variable name="spaceBlwSbs_H_">
2054 <xsl:call-template name="_calc_Space_BlwSbs_Height">
2055 <xsl:with-param name="stackToEast" select="$stackToEast"/>
2056 <xsl:with-param name="stackToWest" select="$stackToWest"/>
2057 </xsl:call-template>
2060 <xsl:variable name="numSbs_" select="count(/EDKSYSTEM/BLKDSHAPES/SBSSHAPES/MODULE)"/>
2061 <xsl:variable name="totalSbs_H_" select="($numSbs_ * $SBS_LANE_H)"/>
2063 <xsl:variable name="space_H_" select="($spaceAbvSbs_H_ + $PROC2SBS_GAP + $totalSbs_H_ + $spaceBlwSbs_H_)"/>
2064 <xsl:variable name="space_W_">
2065 <xsl:call-template name="_calc_Space_Width">
2066 <xsl:with-param name="stackToEast" select="$stackToEast"/>
2067 <xsl:with-param name="stackToWest" select="$stackToWest"/>
2068 </xsl:call-template>
2072 <xsl:variable name="sbs_Y_" select="$spaceAbvSbs_H_ + $BIF_H"/>
2075 <xsl:variable name="sbs_Y_" select="$spaceAbvSbs_H_ + $PROC2SBS_GAP"/>
2077 <xsl:variable name="space_name_">
2078 <xsl:call-template name="_gen_Space_Name">
2079 <xsl:with-param name="stackToEast" select="$stackToEast"/>
2080 <xsl:with-param name="stackToWest" select="$stackToWest"/>
2081 </xsl:call-template>
2086 <xsl:message>Stack Width <xsl:value-of select="$space_W_"/></xsl:message>
2087 <xsl:message>Space Name <xsl:value-of select="$space_name_"/></xsl:message>
2088 <xsl:message>Stack Abv <xsl:value-of select="$spaceAbvSbs_H_"/></xsl:message>
2089 <xsl:message>Stack Blw <xsl:value-of select="$spaceBlwSbs_H_"/></xsl:message>
2090 <xsl:message>Total Sbs <xsl:value-of select="$totalSbs_H_"/></xsl:message>
2093 <xsl:variable name = "stackToWest_W_">
2095 <xsl:when test="(($stackToEast = '0') and ($stackToWest = 'NONE'))">0</xsl:when>
2096 <xsl:when test="(($stackToEast = 'NONE') and not($stackToWest = 'NONE'))">
2097 <xsl:call-template name="_calc_Stack_Width">
2098 <xsl:with-param name="stackIdx" select="$stackToWest"/>
2099 </xsl:call-template>
2101 <xsl:when test="(not($stackToEast = '0') and not($stackToEast = 'NONE') and ($stackToWest = 'NONE'))">
2102 <xsl:call-template name="_calc_Stack_Width">
2103 <xsl:with-param name="stackIdx" select="($stackToEast - 1)"/>
2104 </xsl:call-template>
2106 <xsl:otherwise>0</xsl:otherwise>
2110 <xsl:variable name = "stackToEast_W_">
2111 <xsl:call-template name="_calc_Stack_Width">
2112 <xsl:with-param name="stackIdx" select="$stackToEast"/>
2113 </xsl:call-template>
2116 <xsl:variable name ="extSpaceWest_W_" select="ceiling($stackToWest_W_ div 2)"/>
2117 <xsl:variable name ="extSpaceEast_W_" select="ceiling($stackToEast_W_ div 2)"/>
2120 <xsl:message>Stack To West <xsl:value-of select="$stackToWest_W_"/></xsl:message>
2121 <xsl:message>Stack To East <xsl:value-of select="$stackToEast_W_"/></xsl:message>
2124 <symbol id="{$space_name_}">
2127 <xsl:if test="not($stackToEast = 'NONE')">
2130 width = "{$space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_}"
2131 height= "{$space_H_}"
2132 style="fill:{$COL_YELLOW}; stroke:none;"/>
2135 <xsl:if test="not($stackToWest = 'NONE')">
2138 width = "{$space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_}"
2139 height= "{$space_H_}"
2140 style="fill:{$COL_WHITE}; stroke:none;"/>
2144 <xsl:for-each select="/EDKSYSTEM/BLKDSHAPES/BCLANESPACES/BCLANESPACE[((@EAST = $stackToEast) or (($stackToEast = 'NONE') and (@WEST = $stackToWest)))]/BUSCONNLANE[@BUSSTD and @BUSNAME]">
2147 <xsl:message>Bus Std of conn <xsl:value-of select="@BUSSTD"/></xsl:message>
2149 <xsl:variable name="busStd_" select="@BUSSTD"/>
2150 <xsl:variable name="busName_" select="@BUSNAME"/>
2151 <xsl:variable name="lane_X_" select="@BUSLANE_X"/>
2152 <xsl:variable name="laneInSpace_X_" select="($extSpaceWest_W_ + ($lane_X_ * $BUS_LANE_W))"/>
2154 <xsl:variable name="bus_color_">
2155 <xsl:call-template name="BusType2Color">
2156 <xsl:with-param name="busType" select="@BUSSTD"/>
2157 </xsl:call-template>
2163 ===========================================================
2164 Handle Bucket connections to the shared busses.
2165 ===========================================================
2167 <xsl:when test="@BUSLANE_X and @IS_BKTCONN and BUSCONN[@BIFRANK] and /EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $busName_)]/@BUSINDEX">
2169 <xsl:call-template name="BCLaneSpace_BucketToSharedBus">
2170 <xsl:with-param name="busName" select="$busName_"/>
2171 <xsl:with-param name="busStd" select="$busStd_"/>
2172 <xsl:with-param name="bifRank" select="BUSCONN/@BIFRANK"/>
2173 <xsl:with-param name="sbs_Y" select="$sbs_Y_"/>
2174 <xsl:with-param name="stkToEast" select="$stkToEast_"/>
2175 <xsl:with-param name="stkToWest" select="$stkToWest_"/>
2176 <xsl:with-param name="stkToEast_W" select="$stackToEast_W_"/>
2177 <xsl:with-param name="stkToWest_W" select="$stackToWest_W_"/>
2178 <xsl:with-param name="laneInSpace_X" select="$laneInSpace_X_"/>
2179 </xsl:call-template>
2185 ===========================================================
2186 Handle Processor's Shared bus connections.
2187 ===========================================================
2189 <xsl:when test="@BUSLANE_X and @IS_SBSCONN and BUSCONN[@BIF_Y and @IS_PROCONN and @INSTANCE and @BUSINTERFACE] and /EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $busName_)]/@BUSINDEX">
2190 <xsl:call-template name="BCLaneSpace_ProcBifToSharedBus">
2191 <xsl:with-param name="busName" select="$busName_"/>
2192 <xsl:with-param name="busStd" select="$busStd_"/>
2193 <xsl:with-param name="bifRank" select="BUSCONN/@BIFRANK"/>
2194 <xsl:with-param name="sbs_Y" select="$sbs_Y_"/>
2195 <xsl:with-param name="stkToEast" select="$stkToEast_"/>
2196 <xsl:with-param name="stkToWest" select="$stkToWest_"/>
2197 <xsl:with-param name="stkToEast_W" select="$stackToEast_W_"/>
2198 <xsl:with-param name="stkToWest_W" select="$stackToWest_W_"/>
2199 <xsl:with-param name="laneInSpace_X" select="$laneInSpace_X_"/>
2200 </xsl:call-template>
2205 ===========================================================
2206 Handle non Processor Sharedebus connections.
2207 ===========================================================
2209 <xsl:when test="@BUSLANE_X and @IS_SBSCONN and BUSCONN[@BIF_Y and not(@IS_PROCONN) and @INSTANCE and @BUSINTERFACE] and /EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $busName_)]/@BUSINDEX">
2210 <xsl:call-template name="BCLaneSpace_NonProcBifToSharedBus">
2211 <xsl:with-param name="busName" select="$busName_"/>
2212 <xsl:with-param name="busStd" select="$busStd_"/>
2213 <xsl:with-param name="bifRank" select="BUSCONN/@BIFRANK"/>
2214 <xsl:with-param name="sbs_Y" select="$sbs_Y_"/>
2215 <xsl:with-param name="stkToEast" select="$stkToEast_"/>
2216 <xsl:with-param name="stkToWest" select="$stkToWest_"/>
2217 <xsl:with-param name="stkToEast_W" select="$stackToEast_W_"/>
2218 <xsl:with-param name="stkToWest_W" select="$stackToWest_W_"/>
2219 <xsl:with-param name="laneInSpace_X" select="$laneInSpace_X_"/>
2220 </xsl:call-template>
2225 ===========================================================
2226 Handle connections from processors to Memory UNITs
2227 ===========================================================
2229 <xsl:when test="@BUSLANE_X and @IS_MEMCONN and not(@IS_MULTISTK) and BUSCONN[@BIF_Y and @IS_PROCONN and not(@IS_SPLITCONN) and @INSTANCE and @BUSINTERFACE]">
2230 <xsl:call-template name="BCLaneSpace_ProcBifToMemoryUnit">
2231 <xsl:with-param name="busName" select="$busName_"/>
2232 <xsl:with-param name="busStd" select="$busStd_"/>
2233 <xsl:with-param name="bifRank" select="BUSCONN/@BIFRANK"/>
2234 <xsl:with-param name="sbs_Y" select="$sbs_Y_"/>
2235 <xsl:with-param name="stkToEast" select="$stkToEast_"/>
2236 <xsl:with-param name="stkToWest" select="$stkToWest_"/>
2237 <xsl:with-param name="stkToEast_W" select="$stackToEast_W_"/>
2238 <xsl:with-param name="stkToWest_W" select="$stackToWest_W_"/>
2239 <xsl:with-param name="laneInSpace_X" select="$laneInSpace_X_"/>
2240 </xsl:call-template>
2245 ===========================================================
2246 Handle generic Point to Point connections
2247 ===========================================================
2250 <xsl:when test="@BUSLANE_X and not(@IS_MULTISTK) and not(@IS_MEMCONN) and not(@IS_SBSCONN) and BUSCONN[@BIF_Y and @INSTANCE and @BUSINTERFACE and not(@IS_SPLITCONN)]">
2252 <xsl:call-template name="BCLaneSpace_PointToPoint">
2253 <xsl:with-param name="busName" select="$busName_"/>
2254 <xsl:with-param name="busStd" select="$busStd_"/>
2255 <xsl:with-param name="bifRank" select="BUSCONN/@BIFRANK"/>
2256 <xsl:with-param name="sbs_Y" select="$sbs_Y_"/>
2257 <xsl:with-param name="stkToEast" select="$stkToEast_"/>
2258 <xsl:with-param name="stkToWest" select="$stkToWest_"/>
2259 <xsl:with-param name="stkToEast_W" select="$stackToEast_W_"/>
2260 <xsl:with-param name="stkToWest_W" select="$stackToWest_W_"/>
2261 <xsl:with-param name="laneInSpace_X" select="$laneInSpace_X_"/>
2262 </xsl:call-template>
2267 ===========================================================
2268 Handle MultiStack Point to Point connections
2269 ===========================================================
2272 <xsl:when test="@BUSLANE_X and (@IS_MULTISTK) and not(@IS_SBSCONN) and BUSCONN[@BIF_Y and @IS_PROCONN and @INSTANCE and @BUSINTERFACE]">
2274 <xsl:call-template name="BCLaneSpace_MultiStack_PointToPoint">
2275 <xsl:with-param name="busName" select="$busName_"/>
2276 <xsl:with-param name="busStd" select="$busStd_"/>
2277 <xsl:with-param name="bifRank" select="BUSCONN/@BIFRANK"/>
2278 <xsl:with-param name="sbs_Y" select="$sbs_Y_"/>
2279 <xsl:with-param name="stkToEast" select="$stkToEast_"/>
2280 <xsl:with-param name="stkToWest" select="$stkToWest_"/>
2281 <xsl:with-param name="stkToEast_W" select="$stackToEast_W_"/>
2282 <xsl:with-param name="stkToWest_W" select="$stackToWest_W_"/>
2283 <xsl:with-param name="laneInSpace_X" select="$laneInSpace_X_"/>
2284 </xsl:call-template>
2289 ===========================================================
2290 Handle Processor to processor connections
2291 ===========================================================
2293 <xsl:when test="(@IS_PROC2PROC and (count(BUSCONN[@BIF_Y and @INSTANCE and @BUSINTERFACE]) = 2))">
2295 <xsl:call-template name="BCLaneSpace_ProcToProc">
2296 <xsl:with-param name="busName" select="$busName_"/>
2297 <xsl:with-param name="busStd" select="$busStd_"/>
2298 <xsl:with-param name="bifRank" select="BUSCONN/@BIFRANK"/>
2299 <xsl:with-param name="sbs_Y" select="$sbs_Y_"/>
2300 <xsl:with-param name="stkToEast" select="$stkToEast_"/>
2301 <xsl:with-param name="stkToWest" select="$stkToWest_"/>
2302 <xsl:with-param name="stkToEast_W" select="$stackToEast_W_"/>
2303 <xsl:with-param name="stkToWest_W" select="$stackToWest_W_"/>
2304 <xsl:with-param name="laneInSpace_X" select="$laneInSpace_X_"/>
2305 </xsl:call-template>
2312 ===========================================================
2313 Handle Split connections, (connections that go between adjacent stacks)
2314 ===========================================================
2316 <xsl:when test="(BUSCONN[@BIF_Y and @INSTANCE and @BUSINTERFACE and @IS_SPLITCONN])">
2317 <xsl:call-template name="BCLaneSpace_SplitConn">
2318 <xsl:with-param name="busName" select="$busName_"/>
2319 <xsl:with-param name="busStd" select="$busStd_"/>
2320 <xsl:with-param name="bifRank" select="BUSCONN/@BIFRANK"/>
2321 <xsl:with-param name="sbs_Y" select="$sbs_Y_"/>
2322 <xsl:with-param name="stkToEast" select="$stkToEast_"/>
2323 <xsl:with-param name="stkToWest" select="$stkToWest_"/>
2324 <xsl:with-param name="stkToEast_W" select="$stackToEast_W_"/>
2325 <xsl:with-param name="stkToWest_W" select="$stackToWest_W_"/>
2326 <xsl:with-param name="laneInSpace_X" select="$laneInSpace_X_"/>
2327 </xsl:call-template>
2338 <xsl:template name="Define_BusLaneSpaces">
2340 <xsl:variable name="lastStack_" select="(/EDKSYSTEM/BLKDSHAPES/@STACK_HORIZ_WIDTH) - 1"/>
2342 <xsl:for-each select="/EDKSYSTEM/BLKDSHAPES/BCLANESPACES/BCLANESPACE[@EAST]">
2343 <xsl:sort select="@EAST" data-type="number"/>
2345 <xsl:call-template name="Define_BusLaneSpace">
2346 <xsl:with-param name="stackToEast" select="@EAST"/>
2347 </xsl:call-template>
2351 <xsl:message>Last Stack <xsl:value-of select="$lastStack_"/></xsl:message>
2354 <xsl:for-each select="/EDKSYSTEM/BLKDSHAPES/BCLANESPACES/BCLANESPACE[(@WEST = $lastStack_)]">
2355 <xsl:call-template name="Define_BusLaneSpace">
2356 <xsl:with-param name="stackToWest" select="$lastStack_"/>
2357 </xsl:call-template>