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:math="http://exslt.org/math"
7 xmlns:exsl="http://exslt.org/common"
8 xmlns:xlink="http://www.w3.org/1999/xlink"
9 extension-element-prefixes="math">
11 <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"
12 doctype-public="-//W3C//DTD SVG 1.0//EN"
13 doctype-system="http://www.w3.org/TR/SVG/DTD/svg10.dtd"/>
17 ===========================================================
18 Handle Bucket connections to the shared busses.
19 ===========================================================
22 <xsl:template name="BCLaneSpace_BucketToSharedBus">
24 <xsl:param name="iBusStd" select="'NONE'"/>
25 <xsl:param name="iBifType" select="'NONE'"/>
26 <xsl:param name="iBusName" select="'NONE'"/>
27 <xsl:param name="iStackToEast" select="'NONE'"/>
28 <xsl:param name="iStackToWest" select="'NONE'"/>
29 <xsl:param name="iStackToEast_W" select="0"/>
30 <xsl:param name="iStackToWest_W" select="0"/>
31 <xsl:param name="iLaneInSpace_X" select="0"/>
32 <xsl:param name="iSpaceSharedBus_Y" select="0"/>
35 <xsl:message>Stack To East <xsl:value-of select="$iStackToEast"/></xsl:message>
36 <xsl:message>Stack to West <xsl:value-of select="$iStackToWest"/></xsl:message>
37 <xsl:message>Stack to East Width <xsl:value-of select="$iStackToEast_W"/></xsl:message>
38 <xsl:message>Stack to West Width <xsl:value-of select="$iStackToWest_W"/></xsl:message>
39 <xsl:message>Shared Bus Y <xsl:value-of select="$iSpaceSharedBus_Y"/></xsl:message>
40 <xsl:message>Lane in space X <xsl:value-of select="$iLaneInSpace_X"/></xsl:message>
43 <xsl:variable name="busColor_">
44 <xsl:call-template name="F_BusStd2RGB">
45 <xsl:with-param name="iBusStd" select="$iBusStd"/>
49 <xsl:variable name="sbs_idx_" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE= $iBusName)]/@BUS_INDEX"/>
50 <xsl:variable name="sbs_name_" select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/SBSBUCKETS/SBSBUCKET[(@BUS_INDEX = $sbs_idx_)]/@BUSNAME"/>
52 <xsl:variable name="sbs_bc_y_" select="($iSpaceSharedBus_Y + ($sbs_idx_ * $BLKD_SBS_LANE_H))"/>
54 <xsl:variable name="bktshp_hori_idx_" select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/SBSBUCKETS/SBSBUCKET[(@BUS_INDEX = $sbs_idx_)]/@STACK_HORIZ_INDEX"/>
55 <xsl:variable name="bktshp_vert_idx_" select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/SBSBUCKETS/SBSBUCKET[(@BUS_INDEX = $sbs_idx_)]/@SHAPE_VERTI_INDEX"/>
57 <xsl:variable name="space_W_">
58 <xsl:call-template name="F_Calc_Space_Width">
59 <xsl:with-param name="iStackToEast" select="$iStackToEast"/>
60 <xsl:with-param name="iStackToWest" select="$iStackToWest"/>
64 <xsl:variable name ="extSpaceWest_W_" select="ceiling($iStackToWest_W div 2)"/>
65 <xsl:variable name ="extSpaceEast_W_" select="ceiling($iStackToEast_W div 2)"/>
68 <xsl:message>Ext Shape to West <xsl:value-of select="$extSpaceWest_W_"/></xsl:message>
69 <xsl:message>Ext Shape to East <xsl:value-of select="$extSpaceEast_W_"/></xsl:message>
71 <xsl:variable name="bktshp_Y_">
72 <xsl:call-template name="F_Calc_Stack_Shape_Y">
73 <xsl:with-param name="iHorizIdx" select="$bktshp_hori_idx_"/>
74 <xsl:with-param name="iVertiIdx" select="$bktshp_vert_idx_"/>
78 <xsl:variable name="sbsStack_H_diff_">
80 <xsl:when test=" (($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">0</xsl:when>
81 <xsl:when test="not(($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">
83 <xsl:variable name="stackToWest_AbvSbs_H_">
84 <xsl:call-template name="F_Calc_Stack_AbvSbs_Height">
85 <xsl:with-param name="iStackIdx" select="$iStackToWest"/>
89 <xsl:variable name="stackToEast_AbvSbs_H_">
90 <xsl:call-template name="F_Calc_Stack_AbvSbs_Height">
91 <xsl:with-param name="iStackIdx" select="$iStackToEast"/>
96 <xsl:message>stack to west H <xsl:value-of select="$stackToWest_AbvSbs_H_"/></xsl:message>
97 <xsl:message>stack to east H <xsl:value-of select="$stackToEast_AbvSbs_H_"/></xsl:message>
99 <xsl:if test="($stackToWest_AbvSbs_H_ > $stackToEast_AbvSbs_H_)">
100 <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
103 <xsl:if test="not($stackToWest_AbvSbs_H_ > $stackToEast_AbvSbs_H_)">0</xsl:if>
108 <xsl:variable name="vert_line_x_" select="($iLaneInSpace_X + ceiling($BLKD_BIFC_W div 2))"/>
109 <xsl:variable name="vert_line_y1_" select="($iSpaceSharedBus_Y + ($sbs_idx_ * $BLKD_SBS_LANE_H) + ceiling($BLKD_BIFC_W div 2))"/>
110 <xsl:variable name="vert_line_y2_" select="($bktshp_Y_ + ceiling($BLKD_MOD_W div 2) + $sbsStack_H_diff_)"/>
111 <xsl:variable name="bcInSpace_X_" select="($iLaneInSpace_X + ceiling($BLKD_BIFC_W div 2) - ceiling($BLKD_BUS_ARROW_W div 2))"/>
115 <xsl:message>Shared Bus Y <xsl:value-of select="$G_SharedBus_Y"/></xsl:message>
116 <xsl:message>Vert Bus Y <xsl:value-of select="$vert_line_y1_"/></xsl:message>
117 <xsl:message>vert y1 <xsl:value-of select="$vert_line_y1_"/></xsl:message>
118 <xsl:message>vert y2 <xsl:value-of select="$vert_line_y2_"/></xsl:message>
121 <xsl:variable name="horz_line_y_" select="$vert_line_y2_"/>
122 <xsl:variable name="horz_line_x1_" select="$vert_line_x_"/>
123 <xsl:variable name="horz_line_x2_" select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_)"/>
125 <xsl:variable name="v_bus_ul_x_" select="$vert_line_x_"/>
126 <xsl:variable name="v_bus_ul_y_" select="$vert_line_y1_"/>
127 <xsl:variable name="v_bus_width_" select="$BLKD_P2P_BUS_W"/>
129 <xsl:variable name="v_bus_height_" select="(($vert_line_y2_ - $vert_line_y1_) - ceiling($BLKD_BIFC_H div 2))"/>
131 <xsl:variable name="h_bus_ul_x_" select="$v_bus_ul_x_"/>
132 <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)"/>
133 <xsl:variable name="h_bus_width_" select="ceiling($space_W_ div 2) + $extSpaceEast_W_"/>
134 <xsl:variable name="h_bus_height_" select="$BLKD_P2P_BUS_W"/>
137 <xsl:variable name="h_bus_width_" select="($space_W_ + ceiling(($extSpaceWest_W_ + $extSpaceEast_W_) div 2) - $BLKD_BIFC_W)"/>
138 <xsl:message>v bus x <xsl:value-of select="$v_bus_ul_x_"/></xsl:message>
139 <xsl:message>v bus y <xsl:value-of select="$v_bus_ul_y_"/></xsl:message>
140 <xsl:message>v bus w <xsl:value-of select="$v_bus_width_"/></xsl:message>
141 <xsl:message>v bus y1 <xsl:value-of select="$vert_line_y1_"/></xsl:message>
142 <xsl:message>v bus y2 <xsl:value-of select="$vert_line_y2_"/></xsl:message>
143 <xsl:message>v bus h <xsl:value-of select="$v_bus_height_"/></xsl:message>
144 <xsl:message>h bus w <xsl:value-of select="$h_bus_width_"/></xsl:message>
148 <!-- Draw rectangular parts of the bus -->
149 <rect x="{$v_bus_ul_x_}"
150 y="{$v_bus_ul_y_ - 2}"
151 width= "{$v_bus_width_}"
152 height="{$v_bus_height_}"
153 style="stroke:none; fill:{$busColor_}"/>
155 <rect x="{$h_bus_ul_x_}"
156 y="{$h_bus_ul_y_ - 5}"
157 width= "{$h_bus_width_}"
158 height="{$h_bus_height_}"
159 style="stroke:none; fill:{$busColor_}"/>
166 ===========================================================
167 Handle Processor's Shared bus connections.
168 ===========================================================
171 <xsl:template name="BCLaneSpace_ProcBifToSharedBus">
173 <xsl:param name="iBusStd" select="'NONE'"/>
174 <xsl:param name="iBusName" select="'NONE'"/>
175 <xsl:param name="iBifType" select="'NONE'"/>
176 <xsl:param name="iStackToEast" select="'NONE'"/>
177 <xsl:param name="iStackToWest" select="'NONE'"/>
178 <xsl:param name="iStackToEast_W" select="0"/>
179 <xsl:param name="iStackToWest_W" select="0"/>
180 <xsl:param name="iLaneInSpace_X" select="0"/>
181 <xsl:param name="iSpaceSharedBus_Y" select="0"/>
184 <xsl:message>Proc Bus Std <xsl:value-of select="$iBusStd"/></xsl:message>
185 <xsl:message>Proc Bus Name <xsl:value-of select="$iBusName"/></xsl:message>
186 <xsl:message>Proc Bif Type <xsl:value-of select="$iBifType"/></xsl:message>
189 <xsl:variable name="busColor_">
190 <xsl:call-template name="F_BusStd2RGB">
191 <xsl:with-param name="iBusStd" select="$iBusStd"/>
195 <xsl:variable name="sbs_idx_" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE= $iBusName)]/@BUS_INDEX"/>
196 <xsl:variable name="sbs_bc_y_" select="($iSpaceSharedBus_Y + ($sbs_idx_ * $BLKD_SBS_LANE_H))"/>
197 <xsl:variable name="procInst_" select="BUSCONN/@INSTANCE"/>
201 <xsl:message>Shared Bus Idx <xsl:value-of select="$sbs_idx_"/></xsl:message>
202 <xsl:message>Proc inst <xsl:value-of select="$procInst_"/></xsl:message>
205 <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))"/>
206 <xsl:variable name="procBifName_" select="BUSCONN/@BUSINTERFACE"/>
207 <xsl:variable name="procBifSide_" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $procInst_)]/BUSINTERFACE[(@NAME = $procBifName_)]/@BIF_X"/>
208 <xsl:variable name="procBifType_" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $procInst_)]/BUSINTERFACE[(@NAME = $procBifName_)]/@TYPE"/>
210 <xsl:variable name="procshp_hori_idx_" select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[(@INSTANCE = $procInst_)]/@STACK_HORIZ_INDEX"/>
211 <xsl:variable name="procshp_vert_idx_" select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[(@INSTANCE = $procInst_)]/@SHAPE_VERTI_INDEX"/>
213 <xsl:variable name="space_W_">
214 <xsl:call-template name="F_Calc_Space_Width">
215 <xsl:with-param name="iStackToEast" select="$iStackToEast"/>
216 <xsl:with-param name="iStackToWest" select="$iStackToWest"/>
220 <xsl:variable name ="extSpaceWest_W_" select="ceiling($iStackToWest_W div 2)"/>
221 <xsl:variable name ="extSpaceEast_W_" select="ceiling($iStackToEast_W div 2)"/>
225 <xsl:message>Ext Space to West <xsl:value-of select="$extSpaceWest_W_"/></xsl:message>
226 <xsl:message>Ext Space to East <xsl:value-of select="$extSpaceEast_W_"/></xsl:message>
228 <xsl:message>Ext Space to East <xsl:value-of select="$extSpaceEast_W_"/></xsl:message>
229 <xsl:message>Stack horiz <xsl:value-of select="$procshp_hori_idx_"/></xsl:message>
230 <xsl:message>Stack verti <xsl:value-of select="$procshp_vert_idx_"/></xsl:message>
231 <xsl:message>Proc Bif Y <xsl:value-of select="$procBif_Y_"/></xsl:message>
234 <xsl:variable name="procshp_Y_">
235 <xsl:call-template name="F_Calc_Stack_Shape_Y">
236 <xsl:with-param name="iHorizIdx" select="$procshp_hori_idx_"/>
237 <xsl:with-param name="iVertiIdx" select="$procshp_vert_idx_"/>
242 <xsl:variable name="procStack_H_diff_">
244 <xsl:when test=" (($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">0</xsl:when>
245 <xsl:when test="not(($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">
247 <xsl:variable name="stackToWest_AbvSbs_H_">
248 <xsl:call-template name="F_Calc_Stack_AbvSbs_Height">
249 <xsl:with-param name="iStackIdx" select="$iStackToWest"/>
253 <xsl:variable name="stackToEast_AbvSbs_H_">
254 <xsl:call-template name="F_Calc_Stack_AbvSbs_Height">
255 <xsl:with-param name="iStackIdx" select="$iStackToEast"/>
260 <xsl:message>stack to west H <xsl:value-of select="$stackToWest_AbvSbs_H_"/></xsl:message>
261 <xsl:message>stack to east H <xsl:value-of select="$stackToEast_AbvSbs_H_"/></xsl:message>
264 <xsl:when test="(($procshp_hori_idx_ = $iStackToEast) and ($stackToWest_AbvSbs_H_ > $stackToEast_AbvSbs_H_))">
265 <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
267 <xsl:when test="(($procshp_hori_idx_ = $iStackToWest) and ($stackToEast_AbvSbs_H_ > $stackToWest_AbvSbs_H_))">
268 <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
270 <xsl:otherwise>0</xsl:otherwise>
276 <xsl:variable name="bc_Y_" select="($procshp_Y_ + $procBif_Y_ + ceiling($BIF_H div 2) + $procStack_H_diff_) - ceiling($BLKD_BIFC_H div 2)"/>
278 <xsl:variable name="bc_x_" select="($laneInSpace_X + ceiling($BLKD_BIFC_W div 2))"/>
279 <xsl:variable name="bc_x_" select="0"/>
280 <xsl:message>Test</xsl:message>
283 <xsl:variable name="bc_X_">
285 <xsl:when test="$procBifSide_ = '0'">
286 <xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_ - (ceiling($BLKD_MOD_W div 2) + $BLKD_BIFC_W))"/>
288 <xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_)"/>
289 <xsl:value-of select="($space_W_ - ceiling($BLKD_MOD_W div 2))"/>
290 <xsl:value-of select="$space_W_ + $extSpaceEast_W_"/>
291 <xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_ - (ceiling($BLKD_MOD_W div 2) + $BLKD_BIFC_W))"/>
294 <xsl:when test="$procBifSide_ = '1'">
295 <xsl:value-of select="ceiling($BLKD_MOD_W div 2)"/>
297 <xsl:otherwise>0</xsl:otherwise>
301 <!-- Place the bus connectijon -->
302 <use x="{$bc_X_}" y="{$bc_Y_}" xlink:href="#{$iBusStd}_busconn_{$procBifType_}"/>
305 <xsl:variable name="vert_line_x_" select="($iLaneInSpace_X + ceiling($BLKD_BIFC_W div 2))"/>
306 <xsl:variable name="vert_line_y1_" select="($procshp_Y_ + $procBif_Y_ + ceiling($BLKD_BIF_H div 2) + $procStack_H_diff_)"/>
307 <xsl:variable name="vert_line_y2_" select="($iSpaceSharedBus_Y + ($sbs_idx_ * $BLKD_SBS_LANE_H) + ceiling($BLKD_BIFC_W div 2))"/>
310 <xsl:message>Vert line Y1 <xsl:value-of select="$vert_line_y1_"/></xsl:message>
311 <xsl:message>Vert line Y2 <xsl:value-of select="$vert_line_y2_"/></xsl:message>
314 <xsl:variable name="v_bus_ul_y_">
316 <xsl:when test="$vert_line_y1_ > $vert_line_y2_">
317 <xsl:value-of select="$vert_line_y2_"/>
319 <xsl:when test="$vert_line_y2_ > $vert_line_y1_">
320 <xsl:value-of select="$vert_line_y1_"/>
325 <xsl:variable name="v_bus_ul_x_">
327 <xsl:when test="@ORIENTED='WEST'">
328 <xsl:value-of select="($vert_line_x_ + $BLKD_MOD_BIF_GAP_H)"/>
330 <xsl:when test="@ORIENTED='EAST'">
331 <xsl:value-of select="($vert_line_x_ - $BLKD_MOD_BIF_GAP_H)"/>
337 <xsl:variable name="v_bus_width_" select="$BLKD_P2P_BUS_W"/>
338 <xsl:variable name="v_bus_height_">
340 <xsl:when test="$vert_line_y1_ > $vert_line_y2_">
341 <xsl:value-of select="($vert_line_y1_ - $vert_line_y2_) - $BLKD_P2P_BUS_W"/>
343 <xsl:when test="$vert_line_y2_ > $vert_line_y1_">
344 <xsl:value-of select="($vert_line_y2_ - $vert_line_y1_) - $BLKD_P2P_BUS_W"/>
349 <xsl:variable name="h_bus_ul_x_">
351 <xsl:when test="@ORIENTED='WEST'">
352 <xsl:value-of select="($bc_X_ + $BLKD_BIFC_W - ceiling(($BLKD_BIFC_W - $BLKD_BIFC_Wi) div 2))"/>
354 <xsl:value-of select="$v_bus_ul_x_"/>
357 <xsl:when test="@ORIENTED='EAST'">
358 <xsl:value-of select="$v_bus_ul_x_"/>
363 <xsl:variable name="h_bus_ul_y_">
365 <xsl:when test="$vert_line_y1_ > $vert_line_y2_">
366 <xsl:value-of select="$vert_line_y2_ - ceiling($BLKD_P2P_BUS_W div 2)"/>
368 <xsl:when test="$vert_line_y2_ > $vert_line_y1_">
369 <xsl:value-of select="$vert_line_y1_ - ceiling($BLKD_P2P_BUS_W div 2)"/>
375 <xsl:variable name="h_bus_height_" select="$BLKD_P2P_BUS_W"/>
376 <xsl:variable name="h_bus_width_">
378 <xsl:when test="@ORIENTED='WEST'">
379 <xsl:value-of select="$v_bus_ul_x_ - $h_bus_ul_x_ + $BLKD_P2P_BUS_W"/>
381 <xsl:when test="@ORIENTED='EAST'">
382 <xsl:value-of select="($bc_X_ - $v_bus_ul_x_) + ceiling(($BLKD_BIFC_W - $BLKD_BIFC_Wi) div 2) + 1"/>
388 <xsl:if test="(@ORIENTED = 'WEST')">
391 <xsl:message>bc_X_ <xsl:value-of select="$bc_X_"/></xsl:message>
392 <xsl:message>v_bus_ul_x <xsl:value-of select="$v_bus_ul_x_"/></xsl:message>
393 <xsl:message>h_bus_width <xsl:value-of select="$h_bus_width_"/></xsl:message>
394 <xsl:message>h_bus_ul_y <xsl:value-of select="$h_bus_ul_y_"/></xsl:message>
397 <rect x="{$v_bus_ul_x_}"
398 y="{$v_bus_ul_y_ + 2}"
399 width= "{$v_bus_width_}"
400 height="{$v_bus_height_}"
401 style="stroke:none; fill:{$busColor_}"/>
403 <rect x="{$h_bus_ul_x_}"
405 width= "{$h_bus_width_}"
406 height="{$h_bus_height_}"
407 style="stroke:none; fill:{$busColor_}"/>
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="iBifType" select="'NONE'"/>
420 <xsl:param name="iBusName" 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="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE= $iBusName)]/@BUS_INDEX"/>
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="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $cmplxInst_)]/BUSINTERFACE[(@NAME = $cmplxBifName_)]/@BIF_X"/>
440 <xsl:variable name="cmplxBifType_" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $cmplxInst_)]/BUSINTERFACE[(@NAME = $cmplxBifName_)]/@TYPE"/>
442 <xsl:variable name="cmplxshp_hori_idx_" select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $cmplxInst_)])]/@STACK_HORIZ_INDEX"/>
443 <xsl:variable name="cmplxshp_vert_idx_" select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $cmplxInst_)])]/@SHAPE_VERTI_INDEX"/>
445 <xsl:variable name="is_abvSbs_" select="($G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[MODULE[(@INSTANCE = $cmplxInst_)]]/@IS_ABVSBS)"/>
446 <xsl:variable name="is_blwSbs_" select="($G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[MODULE[(@INSTANCE = $cmplxInst_)]]/@IS_BLWSBS)"/>
449 <xsl:message>iStackToEast <xsl:value-of select="$iStackToEast"/></xsl:message>
450 <xsl:message>iStackToWest <xsl:value-of select="$iStackToWest"/></xsl:message>
451 <xsl:message><xsl:value-of select="$cmplxInst_"/> : <xsl:value-of select="$is_blwSbs_"/></xsl:message>
452 <xsl:message><xsl:value-of select="$cmplxInst_"/> : <xsl:value-of select="$is_abvSbs_"/></xsl:message>
453 <xsl:message><xsl:value-of select="$cmplxInst_"/> : <xsl:value-of select="$is_blwSbs_"/></xsl:message>
454 <xsl:message><xsl:value-of select="$cmplxInst_"/> : <xsl:value-of select="$is_abvSbs_"/></xsl:message>
455 <xsl:message>Stack horiz <xsl:value-of select="$cmplxshp_hori_idx_"/></xsl:message>
456 <xsl:message>Stack verti <xsl:value-of select="$cmplxshp_vert_idx_"/></xsl:message>
457 <xsl:message>Proc Bif Y <xsl:value-of select="$procBif_Y_"/></xsl:message>
461 <xsl:variable name="busColor_">
462 <xsl:call-template name="F_BusStd2RGB">
463 <xsl:with-param name="iBusStd" select="$iBusStd"/>
467 <xsl:variable name="space_W_">
468 <xsl:call-template name="F_Calc_Space_Width">
469 <xsl:with-param name="iStackToEast" select="$iStackToEast"/>
470 <xsl:with-param name="iStackToWest" select="$iStackToWest"/>
474 <xsl:variable name ="extSpaceWest_W_" select="ceiling($iStackToWest_W div 2)"/>
475 <xsl:variable name ="extSpaceEast_W_" select="ceiling($iStackToEast_W div 2)"/>
477 <xsl:variable name="cmplxshp_Y_">
478 <xsl:call-template name="F_Calc_Stack_Shape_Y">
479 <xsl:with-param name="iHorizIdx" select="$cmplxshp_hori_idx_"/>
480 <xsl:with-param name="iVertiIdx" select="$cmplxshp_vert_idx_"/>
485 <xsl:message>Complex shape Y <xsl:value-of select="$cmplxshp_Y_"/></xsl:message>
488 <xsl:variable name="stackToEast_">
490 <xsl:when test="not($iStackToEast = 'NONE')"><xsl:value-of select="$iStackToEast"/></xsl:when>
491 <xsl:otherwise>NONE</xsl:otherwise>
495 <xsl:variable name="stackToWest_">
497 <xsl:when test=" not($iStackToWest = 'NONE')"><xsl:value-of select="$iStackToWest"/></xsl:when>
498 <xsl:when test="(not($iStackToEast = 'NONE') and not($iStackToEast = '0'))"><xsl:value-of select="($iStackToEast - 1)"/></xsl:when>
499 <xsl:otherwise>NONE</xsl:otherwise>
504 <xsl:variable name="cmplxStack_H_diff_">
506 <xsl:when test=" (($stackToEast_ = 'NONE') or ($stackToWest_ = 'NONE'))">0</xsl:when>
507 <xsl:when test="not(($stackToEast_ = 'NONE') or ($stackToWest_ = 'NONE'))">
509 <xsl:variable name="stackToWest_AbvSbs_H_">
510 <xsl:call-template name="F_Calc_Stack_AbvSbs_Height">
511 <xsl:with-param name="iStackIdx" select="$stackToWest_"/>
515 <xsl:variable name="stackToEast_AbvSbs_H_">
516 <xsl:call-template name="F_Calc_Stack_AbvSbs_Height">
517 <xsl:with-param name="iStackIdx" select="$stackToEast_"/>
522 <xsl:message>stack to west H <xsl:value-of select="$stackToWest_AbvSbs_H_"/></xsl:message>
523 <xsl:message>stack to east H <xsl:value-of select="$stackToEast_AbvSbs_H_"/></xsl:message>
526 <xsl:when test="(($cmplxshp_hori_idx_ = $stackToEast_) and ($stackToWest_AbvSbs_H_ > $stackToEast_AbvSbs_H_))">
527 <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
529 <xsl:when test="(($cmplxshp_hori_idx_ = $stackToWest_) and ($stackToEast_AbvSbs_H_ > $stackToWest_AbvSbs_H_))">
530 <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
532 <xsl:otherwise>0</xsl:otherwise>
540 <xsl:variable name="bc_Y_" select="($cmplxshp_Y_ + $cmplxBif_Y_ + ceiling($BIF_H div 2) + $cmplxStack_H_diff_) - ceiling($BLKD_BIFC_H div 2)"/>
544 <xsl:message>Sstack H Diff <xsl:value-of select="$cmplxStack_H_diff_"/></xsl:message>
545 <xsl:message>BC Y <xsl:value-of select="$bc_Y_"/></xsl:message>
546 <xsl:variable name="bc_x_" select="($laneInSpace_X + ceiling($BLKD_BIFC_W div 2))"/>
547 <xsl:variable name="bc_x_" select="0"/>
549 <xsl:variable name="bc_X_">
551 <xsl:when test="$cmplxBifSide_ = '0'">
552 <xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_ - (ceiling($BLKD_MOD_W div 2) + $BLKD_BIFC_W))"/>
554 <xsl:when test="$cmplxBifSide_ = '1'">
555 <xsl:value-of select="ceiling($BLKD_MOD_W div 2)"/>
557 <xsl:otherwise>0</xsl:otherwise>
561 <use x="{$bc_X_}" y="{$bc_Y_}" xlink:href="#{$iBusStd}_busconn_{$cmplxBifType_}"/>
563 <xsl:variable name="vert_line_x_" select="($iLaneInSpace_X + ceiling($BLKD_BIFC_W div 2))"/>
564 <xsl:variable name="vert_line_y1_" select="($cmplxshp_Y_ + $cmplxBif_Y_ + ceiling($BLKD_BIF_H div 2) + $cmplxStack_H_diff_)"/>
565 <xsl:variable name="vert_line_y2_" select="($iSpaceSharedBus_Y + ($sbs_idx_ * $BLKD_SBS_LANE_H) + ceiling($BLKD_BIFC_W div 2))"/>
567 <xsl:variable name="v_bus_ul_y_">
569 <xsl:when test="$vert_line_y1_ > $vert_line_y2_">
570 <xsl:value-of select="$vert_line_y2_"/>
572 <xsl:when test="$vert_line_y2_ > $vert_line_y1_">
573 <xsl:value-of select="$vert_line_y1_"/>
578 <xsl:variable name="v_bus_ul_x_">
580 <xsl:when test="@ORIENTED='WEST'">
581 <xsl:value-of select="($vert_line_x_ + $BLKD_MOD_BIF_GAP_H)"/>
583 <xsl:when test="@ORIENTED='EAST'">
584 <xsl:value-of select="($vert_line_x_ - $BLKD_MOD_BIF_GAP_H)"/>
589 <xsl:variable name="v_bus_width_" select="$BLKD_P2P_BUS_W"/>
590 <xsl:variable name="v_bus_height_">
592 <xsl:when test="$vert_line_y1_ > $vert_line_y2_">
593 <xsl:value-of select="($vert_line_y1_ - $vert_line_y2_) - $BLKD_P2P_BUS_W + 8"/>
595 <xsl:when test="$vert_line_y2_ > $vert_line_y1_">
596 <xsl:value-of select="($vert_line_y2_ - $vert_line_y1_) - $BLKD_P2P_BUS_W + 8"/>
601 <xsl:variable name="h_bus_ul_x_">
603 <xsl:when test="@ORIENTED='WEST'">
604 <xsl:value-of select="($bc_X_ + $BLKD_BIFC_W - ceiling(($BLKD_BIFC_W - $BLKD_BIFC_Wi) div 2))"/>
606 <xsl:when test="@ORIENTED='EAST'">
607 <xsl:value-of select="$v_bus_ul_x_"/>
612 <xsl:variable name="h_bus_ul_y_">
615 <xsl:when test="($is_blwSbs_ = 'TRUE') and ($vert_line_y1_ > $vert_line_y2_)">
616 <xsl:value-of select="$vert_line_y1_ - ceiling($BLKD_P2P_BUS_W div 2)"/>
618 <xsl:when test="($is_blwSbs_ = 'TRUE') and ($vert_line_y2_ > $vert_line_y1_)">
619 <xsl:value-of select="$vert_line_y2_ - ceiling($BLKD_P2P_BUS_W div 2)"/>
622 <xsl:when test="($is_abvSbs_ = 'TRUE') and ($vert_line_y1_ > $vert_line_y2_)">
623 <xsl:value-of select="$vert_line_y2_ - ceiling($BLKD_P2P_BUS_W div 2)"/>
625 <xsl:when test="($is_abvSbs_ = 'TRUE') and ($vert_line_y2_ > $vert_line_y1_)">
626 <xsl:value-of select="$vert_line_y1_ - ceiling($BLKD_P2P_BUS_W div 2)"/>
633 <xsl:variable name="h_bus_height_" select="$BLKD_P2P_BUS_W"/>
634 <xsl:variable name="h_bus_width_">
636 <xsl:when test="@ORIENTED='WEST'">
637 <xsl:value-of select="$v_bus_ul_x_ - $h_bus_ul_x_ + $BLKD_P2P_BUS_W"/>
639 <xsl:when test="@ORIENTED='EAST'">
640 <xsl:value-of select="($bc_X_ - $v_bus_ul_x_) + ceiling(($BLKD_BIFC_W - $BLKD_BIFC_Wi) div 2) + 1"/>
646 <rect x="{$v_bus_ul_x_}"
647 y="{$v_bus_ul_y_ - 2}"
648 width= "{$v_bus_width_}"
649 height="{$v_bus_height_}"
650 style="stroke:none; fill:{$busColor_}"/>
652 <rect x="{$h_bus_ul_x_}"
654 width= "{$h_bus_width_}"
655 height="{$h_bus_height_}"
656 style="stroke:none; fill:{$busColor_}"/>
661 ===========================================================
662 Handle connections from processors to Memory UNITs
663 ===========================================================
667 <xsl:template name="BCLaneSpace_ProcBifToMemoryUnit">
669 <xsl:param name="iBusStd" select="'NONE'"/>
670 <xsl:param name="iBusName" select="'NONE'"/>
671 <xsl:param name="iBifType" select="'NONE'"/>
672 <xsl:param name="iStackToEast" select="'NONE'"/>
673 <xsl:param name="iStackToWest" select="'NONE'"/>
674 <xsl:param name="iStackToEast_W" select="0"/>
675 <xsl:param name="iStackToWest_W" select="0"/>
676 <xsl:param name="iLaneInSpace_X" select="0"/>
678 <xsl:variable name="bcInSpace_X_" select="$iLaneInSpace_X"/>
679 <xsl:variable name="procInstance_" select="BUSCONN[@IS_PROCCONN]/@INSTANCE"/>
680 <xsl:variable name="mem_procshp_hori_idx_" select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[(@INSTANCE = $procInstance_)]/@STACK_HORIZ_INDEX"/>
681 <xsl:variable name="mem_procshp_vert_idx_" select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[(@INSTANCE = $procInstance_)]/@SHAPE_VERTI_INDEX"/>
683 <xsl:variable name="mem_procshp_Y_">
684 <xsl:call-template name="F_Calc_Stack_Shape_Y">
685 <xsl:with-param name="iHorizIdx" select="$mem_procshp_hori_idx_"/>
686 <xsl:with-param name="iVertiIdx" select="$mem_procshp_vert_idx_"/>
690 <xsl:variable name="busColor_">
691 <xsl:call-template name="F_BusStd2RGB">
692 <xsl:with-param name="iBusStd" select="$iBusStd"/>
696 <xsl:variable name="space_W_">
697 <xsl:call-template name="F_Calc_Space_Width">
698 <xsl:with-param name="iStackToEast" select="$iStackToEast"/>
699 <xsl:with-param name="iStackToWest" select="$iStackToWest"/>
703 <xsl:variable name ="extSpaceWest_W_" select="ceiling($iStackToWest_W div 2)"/>
704 <xsl:variable name ="extSpaceEast_W_" select="ceiling($iStackToEast_W div 2)"/>
706 <xsl:variable name="cmplxStack_H_diff_">
708 <xsl:when test=" (($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">0</xsl:when>
709 <xsl:when test="not(($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">
711 <xsl:variable name="stackToWest_AbvSbs_H_">
712 <xsl:call-template name="F_Calc_Stack_AbvSbs_Height">
713 <xsl:with-param name="iStackIdx" select="$iStackToWest"/>
717 <xsl:variable name="stackToEast_AbvSbs_H_">
718 <xsl:call-template name="F_Calc_Stack_AbvSbs_Height">
719 <xsl:with-param name="iStackIdx" select="$iStackToEast"/>
724 <xsl:message>stack to west H <xsl:value-of select="$stackToWest_AbvSbs_H_"/></xsl:message>
725 <xsl:message>stack to east H <xsl:value-of select="$stackToEast_AbvSbs_H_"/></xsl:message>
728 <xsl:when test="(($mem_procshp_hori_idx_ = $iStackToEast) and ($stackToWest_AbvSbs_H_ > $stackToEast_AbvSbs_H_))">
729 <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
731 <xsl:when test="(($mem_procshp_hori_idx_ = $iStackToWest) and ($stackToEast_AbvSbs_H_ > $stackToWest_AbvSbs_H_))">
732 <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
734 <xsl:otherwise>0</xsl:otherwise>
741 <xsl:variable name="mem_procStack_H_diff_">
743 <xsl:when test=" (($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">0</xsl:when>
744 <xsl:when test="not(($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">
746 <xsl:variable name="stackToWest_AbvSbs_H_">
747 <xsl:call-template name="F_Calc_Stack_AbvSbs_Height">
748 <xsl:with-param name="iStackIdx" select="$iStackToWest"/>
752 <xsl:variable name="stackToEast_AbvSbs_H_">
753 <xsl:call-template name="F_Calc_Stack_AbvSbs_Height">
754 <xsl:with-param name="iStackIdx" select="$iStackToEast"/>
759 <xsl:message>stack to west H <xsl:value-of select="$stackToWest_AbvSbs_H_"/></xsl:message>
760 <xsl:message>stack to east H <xsl:value-of select="$stackToEast_AbvSbs_H_"/></xsl:message>
763 <xsl:when test="(($mem_procshp_hori_idx_ = $iStackToEast) and ($stackToWest_AbvSbs_H_ > $stackToEast_AbvSbs_H_))">
764 <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
766 <xsl:when test="(($mem_procshp_hori_idx_ = $iStackToWest) and ($stackToEast_AbvSbs_H_ > $stackToWest_AbvSbs_H_))">
767 <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
769 <xsl:otherwise>0</xsl:otherwise>
776 <!-- Store the conns in a variable -->
777 <xsl:variable name="memConn_heights_">
779 <xsl:for-each select="BUSCONN">
781 <xsl:variable name="bifName_" select="@BUSINTERFACE"/>
785 <xsl:when test="@IS_PROCCONN and @BIF_Y">
787 <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))"/>
788 <xsl:variable name="procBifType_" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $procInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@TYPE"/>
789 <xsl:variable name="procBusName_" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $procInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BUSNAME"/>
790 <xsl:variable name="procBifSide_" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $procInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_X"/>
791 <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_)"/>
792 <xsl:variable name="bcProc_X_">
794 <xsl:when test="$procBifSide_ = '0'">
795 <xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_ - (ceiling($BLKD_MOD_W div 2) + $BLKD_BIFC_W))"/>
797 <xsl:when test="$procBifSide_ = '1'">
798 <xsl:value-of select="ceiling($BLKD_MOD_W div 2)"/>
800 <xsl:otherwise>0</xsl:otherwise>
804 <MEMCONN X="{$bcProc_X_}" Y="{$bcProc_Y_}" BUSNAME="{$procBusName_}" BUSSTD="{$iBusStd}" TYPE="{$procBifType_}" BIFSIDE="{$procBifSide_}"/>
810 <xsl:variable name="memcInstance_" select="@INSTANCE"/>
811 <xsl:variable name="memcshp_vert_idx_" select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[MODULE[(@INSTANCE = $memcInstance_)]]/@SHAPE_VERTI_INDEX"/>
812 <xsl:variable name="memcBifSide_" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $memcInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_X"/>
813 <xsl:variable name="memcBif_Y_" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $memcInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_Y"/>
815 <xsl:variable name="memshp_Y_">
816 <xsl:call-template name="F_Calc_Stack_Shape_Y">
817 <xsl:with-param name="iHorizIdx" select="$mem_procshp_hori_idx_"/>
818 <xsl:with-param name="iVertiIdx" select="$memcshp_vert_idx_"/>
822 <xsl:variable name="memcMOD_W_" select="(($G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[MODULE[(@INSTANCE = $memcInstance_)]]/@MODS_W) * $BLKD_MOD_W)"/>
824 <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))"/>
826 <xsl:variable name="memcConn_Y_">
828 <xsl:when test="($G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[MODULE[(@INSTANCE = $memcInstance_)]]/@MODS_H = 1)">
829 <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_)"/>
832 <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_)"/>
837 <xsl:variable name="memcConn_X_">
839 <xsl:when test="$memcBifSide_ = '0'">
840 <xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_ - (ceiling($memcMOD_W_ div 2) + $BLKD_BIFC_W))"/>
842 <xsl:when test="$memcBifSide_ = '1'">
843 <xsl:value-of select="ceiling($memcMOD_W_ div 2)"/>
848 <xsl:variable name="memcBifType_" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $memcInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@TYPE"/>
849 <xsl:variable name="memcBusName_" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $memcInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BUSNAME"/>
851 <MEMCONN X="{$memcConn_X_}" Y="{$memcConn_Y_}" BUSNAME="{$memcBusName_}" BUSSTD="{$iBusStd}" TYPE="{$memcBifType_}" BIFSIDE="{$memcBifSide_}"/>
859 <!-- Draw the busconnection and horizontal lines.-->
860 <xsl:for-each select="exsl:node-set($memConn_heights_)/MEMCONN">
862 <xsl:variable name="bus_x_" select="($bcInSpace_X_ + ceiling($BLKD_BIFC_W div 2))"/>
863 <xsl:variable name="bus_y_" select="@Y + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_P2P_BUS_W div 2)"/>
865 <xsl:variable name="adjusted_X_">
867 <xsl:when test="((@X < ($bus_x_ + $BLKD_BUS_ARROW_W)) and (@BIFSIDE ='0'))">
868 <xsl:value-of select="(@X + $BLKD_P2P_BUS_W)"/>
871 <xsl:value-of select="@X"/>
876 <xsl:variable name="h_bus_ul_x_dx_">
878 <xsl:when test="((@X < ($bus_x_ + $BLKD_BUS_ARROW_W)) and (@BIFSIDE='0'))">
879 <xsl:value-of select="$BLKD_P2P_BUS_W"/>
881 <xsl:otherwise>0</xsl:otherwise>
885 <xsl:variable name="h_bus_ul_x_">
887 <xsl:when test="@BIFSIDE='0'">
888 <xsl:value-of select="($bus_x_ - $h_bus_ul_x_dx_)"/>
890 <xsl:when test="@BIFSIDE='1'">
891 <xsl:value-of select="(@X + $BLKD_BIFC_W + $BLKD_BUS_ARROW_W)"/>
896 <xsl:variable name="h_bus_ul_y_" select="$bus_y_"/>
898 <xsl:variable name="h_bus_height_" select="$BLKD_P2P_BUS_W"/>
899 <xsl:variable name="h_bus_width_">
901 <xsl:when test="@BIFSIDE='0'">
902 <xsl:value-of select="($adjusted_X_ - $bus_x_ - $BLKD_BUS_ARROW_W)"/>
904 <xsl:when test="@BIFSIDE='1'">
905 <xsl:value-of select="$bus_x_ - $h_bus_ul_x_"/>
910 <!-- Place the bus connection -->
911 <use x="{@X}" y="{@Y}" xlink:href="#{@BUSSTD}_busconn_{@TYPE}"/>
913 <!-- Draw the arrow -->
915 <xsl:when test="@BIFSIDE='0'">
916 <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"/>
918 <xsl:when test="@BIFSIDE='1'">
919 <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"/>
924 <!-- Draw the horizontal part of the bus -->
925 <rect x="{$h_bus_ul_x_}"
927 width= "{$h_bus_width_}"
928 height="{$h_bus_height_}"
929 style="stroke:none; fill:{$busColor_}"/>
932 <xsl:variable name="busTop_" select="math:min(exsl:node-set($memConn_heights_)/MEMCONN/@Y)"/>
933 <xsl:variable name="busBot_" select="math:max(exsl:node-set($memConn_heights_)/MEMCONN/@Y)"/>
934 <xsl:variable name="busName_" select="exsl:node-set($memConn_heights_)/MEMCONN/@BUSNAME"/>
935 <xsl:variable name="busSide_" select="exsl:node-set($memConn_heights_)/MEMCONN/@BIFSIDE"/>
936 <xsl:variable name="leftmost_x_" select="math:min(exsl:node-set($memConn_heights_)/MEMCONN/@X)"/>
938 <!-- Hack to fix CR473515 -->
939 <xsl:variable name="v_bus_x_dx_">
941 <xsl:when test="(($busSide_ = '0') and (($leftmost_x_ - ($bcInSpace_X_ + $BLKD_P2P_BUS_W)) <= $BLKD_P2P_BUS_W))">-4</xsl:when>
942 <xsl:otherwise><xsl:value-of select="$BLKD_P2P_BUS_W"/></xsl:otherwise>
947 <xsl:variable name="v_bus_y_" select="$busTop_ + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_P2P_BUS_W div 2)"/>
948 <xsl:variable name="v_bus_x_">
950 <xsl:when test="$busSide_ ='0'">
951 <xsl:value-of select="($bcInSpace_X_ + $v_bus_x_dx_)"/>
953 <xsl:when test="$busSide_ ='1'">
954 <xsl:value-of select="($bcInSpace_X_ + $BLKD_P2P_BUS_W)"/>
959 <!-- Draw the vertical part of the bus -->
960 <rect x="{$v_bus_x_}"
962 width= "{$BLKD_P2P_BUS_W}"
963 height="{($busBot_ - $busTop_) + $BLKD_P2P_BUS_W}"
964 style="stroke:none; fill:{$busColor_}"/>
966 <!-- Hack to fix CR473515 -->
967 <xsl:if test="($busSide_ ='0')">
968 <rect x="{$v_bus_x_}"
969 y="{$v_bus_y_ + ($busBot_ - $busTop_)}"
970 width= "{$BLKD_P2P_BUS_W * 2}"
971 height="{$BLKD_P2P_BUS_W}"
972 style="stroke:none; fill:{$busColor_}"/>
976 <xsl:message>v_bus_x <xsl:value-of select="$v_bus_x_"/></xsl:message>
979 <!-- Place the bus label.-->
981 <text class="p2pbuslabel"
982 x="{$bcInSpace_X_ + $BLKD_BUS_ARROW_W + ceiling($BLKD_BUS_ARROW_W div 2) + ceiling($BLKD_BUS_ARROW_W div 4) + 6}"
983 y="{$busTop_ + ($BLKD_BUS_ARROW_H * 3)}">
984 <xsl:value-of select="$busName_"/>
988 <xsl:call-template name="F_WriteText">
989 <xsl:with-param name="iX" select="($bcInSpace_X_ + $BLKD_BUS_ARROW_W + ceiling($BLKD_BUS_ARROW_W div 2) + ceiling($BLKD_BUS_ARROW_W div 4) + 6)"/>
990 <xsl:with-param name="iY" select="($busTop_ + ($BLKD_BUS_ARROW_H * 3))"/>
991 <xsl:with-param name="iText" select="$busName_"/>
992 <xsl:with-param name="iClass" select="'p2pbus_label'"/>
999 ===========================================================
1000 Handle generic Point to Point connections
1001 ===========================================================
1004 <xsl:template name="BCLaneSpace_PointToPoint">
1006 <xsl:param name="iBusStd" select="'NONE'"/>
1007 <xsl:param name="iBifType" select="'NONE'"/>
1008 <xsl:param name="iBusName" select="'NONE'"/>
1009 <xsl:param name="iStackToEast" select="'NONE'"/>
1010 <xsl:param name="iStackToWest" select="'NONE'"/>
1011 <xsl:param name="iStackToEast_W" select="0"/>
1012 <xsl:param name="iStackToWest_W" select="0"/>
1013 <xsl:param name="iLaneInSpace_X" select="0"/>
1015 <xsl:variable name="busColor_">
1016 <xsl:call-template name="F_BusStd2RGB">
1017 <xsl:with-param name="iBusStd" select="$iBusStd"/>
1018 </xsl:call-template>
1021 <xsl:variable name="busColor_lt_">
1022 <xsl:call-template name="F_BusStd2RGB_LT">
1023 <xsl:with-param name="iBusStd" select="$iBusStd"/>
1024 </xsl:call-template>
1028 <xsl:variable name="space_W_">
1029 <xsl:call-template name="F_Calc_Space_Width">
1030 <xsl:with-param name="iStackToEast" select="$iStackToEast"/>
1031 <xsl:with-param name="iStackToWest" select="$iStackToWest"/>
1032 </xsl:call-template>
1035 <xsl:variable name ="extSpaceWest_W_" select="ceiling($iStackToWest_W div 2)"/>
1036 <xsl:variable name ="extSpaceEast_W_" select="ceiling($iStackToEast_W div 2)"/>
1038 <xsl:variable name="bcInSpace_X_" select="($iLaneInSpace_X + ceiling($BLKD_BIFC_W div 2) - ceiling($BLKD_BUS_ARROW_W div 2))"/>
1039 <xsl:variable name="p2pInstance_" select="BUSCONN[(@BIF_Y)]/@INSTANCE"/>
1041 <xsl:variable name="p2pshp_hori_idx_">
1043 <xsl:when test="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[(@INSTANCE = $p2pInstance_)]">
1044 <xsl:value-of select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[(@INSTANCE = $p2pInstance_)]/@STACK_HORIZ_INDEX"/>
1047 <xsl:value-of select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $p2pInstance_)])]/@STACK_HORIZ_INDEX"/>
1052 <xsl:variable name="p2pshp_vert_idx_">
1054 <xsl:when test="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[(@INSTANCE = $p2pInstance_)]">
1055 <xsl:value-of select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[(@INSTANCE = $p2pInstance_)]/@SHAPE_VERTI_INDEX"/>
1058 <xsl:value-of select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $p2pInstance_)])]/@SHAPE_VERTI_INDEX"/>
1064 <xsl:variable name="p2pshp_hori_idx_" select="/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[(@INSTANCE = $procInstance_)]/@STACK_HORIZ_INDEX"/>
1065 <xsl:variable name="p2pshp_vert_idx_" select="/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[(@INSTANCE = $procInstance_)]/@SHAPE_VERTI_INDEX"/>
1068 <xsl:variable name="p2pshp_Y_">
1069 <xsl:call-template name="F_Calc_Stack_Shape_Y">
1070 <xsl:with-param name="iHorizIdx" select="$p2pshp_hori_idx_"/>
1071 <xsl:with-param name="iVertiIdx" select="$p2pshp_vert_idx_"/>
1072 </xsl:call-template>
1075 <xsl:variable name="cmplxStack_H_diff_">
1077 <xsl:when test=" (($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">0</xsl:when>
1078 <xsl:when test="not(($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">
1080 <xsl:variable name="stackToWest_AbvSbs_H_">
1081 <xsl:call-template name="F_Calc_Stack_AbvSbs_Height">
1082 <xsl:with-param name="iStackIdx" select="$iStackToWest"/>
1083 </xsl:call-template>
1086 <xsl:variable name="stackToEast_AbvSbs_H_">
1087 <xsl:call-template name="F_Calc_Stack_AbvSbs_Height">
1088 <xsl:with-param name="iStackIdx" select="$iStackToEast"/>
1089 </xsl:call-template>
1093 <xsl:message>stack to west H <xsl:value-of select="$stackToWest_AbvSbs_H_"/></xsl:message>
1094 <xsl:message>stack to east H <xsl:value-of select="$stackToEast_AbvSbs_H_"/></xsl:message>
1097 <xsl:when test="(($p2pshp_hori_idx_ = $iStackToEast) and ($stackToWest_AbvSbs_H_ > $stackToEast_AbvSbs_H_))">
1098 <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
1100 <xsl:when test="(($p2pshp_hori_idx_ = $iStackToWest) and ($stackToEast_AbvSbs_H_ > $stackToWest_AbvSbs_H_))">
1101 <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
1103 <xsl:otherwise>0</xsl:otherwise>
1111 <xsl:variable name="procStack_H_diff_">
1113 <xsl:when test=" (($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">0</xsl:when>
1114 <xsl:when test="not(($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">
1116 <xsl:variable name="stackToWest_AbvSbs_H_">
1117 <xsl:call-template name="F_Calc_Stack_AbvSbs_Height">
1118 <xsl:with-param name="iStackIdx" select="$iStackToWest"/>
1119 </xsl:call-template>
1122 <xsl:variable name="stackToEast_AbvSbs_H_">
1123 <xsl:call-template name="F_Calc_Stack_AbvSbs_Height">
1124 <xsl:with-param name="iStackIdx" select="$iStackToEast"/>
1125 </xsl:call-template>
1129 <xsl:message>stack to west H <xsl:value-of select="$stackToWest_AbvSbs_H_"/></xsl:message>
1130 <xsl:message>stack to east H <xsl:value-of select="$stackToEast_AbvSbs_H_"/></xsl:message>
1133 <xsl:when test="(($p2pshp_hori_idx_ = $iStackToEast) and ($stackToWest_AbvSbs_H_ > $stackToEast_AbvSbs_H_))">
1134 <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
1136 <xsl:when test="(($p2pshp_hori_idx_ = $iStackToWest) and ($stackToEast_AbvSbs_H_ > $stackToWest_AbvSbs_H_))">
1137 <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
1139 <xsl:otherwise>0</xsl:otherwise>
1148 <!-- Store the conns in a variable -->
1149 <xsl:variable name="p2pConn_heights_">
1151 <xsl:for-each select="BUSCONN">
1153 <xsl:variable name="bifName_" select="@BUSINTERFACE"/>
1156 <xsl:when test="@IS_PROCCONN and @BIF_Y">
1159 <xsl:message>Proc <xsl:value-of select="$procInstance_"/></xsl:message>
1161 <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))"/>
1162 <xsl:variable name="procBifType_" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $p2pInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@TYPE"/>
1163 <xsl:variable name="procBusName_" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $p2pInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BUSNAME"/>
1164 <xsl:variable name="procBifSide_" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $p2pInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_X"/>
1166 <xsl:variable name="bcProc_Y_" select="($p2pshp_Y_ + $procBif_Y_ + ceiling($BIF_H div 2) - ceiling($BLKD_BIFC_H div 2) + $procStack_H_diff_)"/>
1167 <xsl:variable name="bcProc_X_">
1169 <xsl:when test="$procBifSide_ = '0'">
1170 <xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_ - (ceiling($BLKD_MOD_W div 2) + $BLKD_BIFC_W))"/>
1172 <xsl:when test="$procBifSide_ = '1'">
1173 <xsl:value-of select="ceiling($BLKD_MOD_W div 2)"/>
1175 <xsl:otherwise>0</xsl:otherwise>
1179 <P2PCONN X="{$bcProc_X_}" Y="{$bcProc_Y_}" BUSNAME= "{$procBusName_}" BUSSTD="{$iBusStd}" TYPE="{$procBifType_}" BIFSIDE="{$procBifSide_}"/>
1182 <xsl:message>bcProc_X_ <xsl:value-of select="$bcProc_X_"/></xsl:message>
1183 <xsl:message>bcProc_Y_ <xsl:value-of select="$bcProc_Y_"/></xsl:message>
1184 <P2PCONN X="{$bcInSpace_X_}" Y="{$bcProc_Y_}" BUSSTD="{$busStd}" TYPE="{$procBifType_}" BIFSIDE="{$procBifSide_}" STACK_ID=""/>
1190 <xsl:variable name="modInstance_" select="@INSTANCE"/>
1191 <xsl:variable name="modshp_vert_idx_" select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[MODULE[(@INSTANCE = $modInstance_)]]/@SHAPE_VERTI_INDEX"/>
1192 <xsl:variable name="modBifSide_" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $modInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_X"/>
1193 <xsl:variable name="modBif_Y_" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $modInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_Y"/>
1194 <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))"/>
1197 <xsl:message>Memory Instance <xsl:value-of select="$procInstance_"/></xsl:message>
1200 <xsl:variable name="modshp_Y_">
1201 <xsl:call-template name="F_Calc_Stack_Shape_Y">
1202 <xsl:with-param name="iHorizIdx" select="$p2pshp_hori_idx_"/>
1203 <xsl:with-param name="iVertiIdx" select="$modshp_vert_idx_"/>
1204 </xsl:call-template>
1207 <xsl:variable name="modBifType_" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $modInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@TYPE"/>
1208 <xsl:variable name="modBusName_" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $modInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BUSNAME"/>
1209 <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_)"/>
1210 <xsl:variable name="bcMod_X_">
1212 <xsl:when test="$modBifSide_ = '0'">
1213 <xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_ - (ceiling($BLKD_MOD_W div 2) + $BLKD_BIFC_W))"/>
1215 <xsl:when test="$modBifSide_ = '1'">
1216 <xsl:value-of select="ceiling($BLKD_MOD_W div 2)"/>
1218 <xsl:otherwise>0</xsl:otherwise>
1223 <xsl:message>Bc Bif Y <xsl:value-of select="$modBif_Y_"/></xsl:message>
1224 <xsl:message>Bc Mod Y <xsl:value-of select="$modBc_Y_"/></xsl:message>
1225 <xsl:message>Bc Mod X <xsl:value-of select="$bcMod_X_"/></xsl:message>
1226 <P2PCONN X="{$bcInSpace_X_}" Y="{$bcMod_Y_}" BUSSTD="{$busStd}" TYPE="{$modBifType_}" BIFSIDE="{$modBifSide_}"/>
1228 <P2PCONN X="{$bcMod_X_}" Y="{$bcMod_Y_}" BUSNAME="{$modBusName_}" BUSSTD="{$iBusStd}" TYPE="{$modBifType_}" BIFSIDE="{$modBifSide_}"/>
1237 <xsl:variable name="busTop_" select="math:min(exsl:node-set($p2pConn_heights_)/P2PCONN/@Y)"/>
1238 <xsl:variable name="busBot_" select="math:max(exsl:node-set($p2pConn_heights_)/P2PCONN/@Y)"/>
1239 <xsl:variable name="v_bus_y_" select="$busTop_ + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_P2P_BUS_W div 2)"/>
1240 <xsl:variable name="busName_" select="exsl:node-set($p2pConn_heights_)/P2PCONN/@BUSNAME"/>
1241 <xsl:variable name="busStd_" select="exsl:node-set($p2pConn_heights_)/P2PCONN/@BUSSTD"/>
1244 <!-- Draw the vertical part of the bus -->
1245 <xsl:if test="$busStd_ = 'PLBV46_P2P'">
1246 <rect x="{$bcInSpace_X_ + $BLKD_P2P_BUS_W}"
1248 width= "{$BLKD_P2P_BUS_W}"
1249 height="{($busBot_ - $busTop_) + $BLKD_P2P_BUS_W}"
1250 style="stroke:{$COL_WHITE};stroke-width:1.5;fill:{$busColor_}"/>
1253 <xsl:if test="not($busStd_ = 'PLBV46_P2P')">
1254 <rect x="{$bcInSpace_X_ + $BLKD_P2P_BUS_W}"
1256 width= "{$BLKD_P2P_BUS_W}"
1257 height="{($busBot_ - $busTop_) + $BLKD_P2P_BUS_W}"
1258 style="stroke:none;fill:{$busColor_}"/>
1264 style="stroke:{$busColor_lt_};stroke-width:1;stroke-opacity:0.9;fill-opacity:2.0;fill:{$busColor_}"/>
1267 <!-- Place the bus label.-->
1269 <text class="p2pbuslabel"
1270 x="{$bcInSpace_X_ + $BLKD_BUS_ARROW_W + ceiling($BLKD_BUS_ARROW_W div 2) + ceiling($BLKD_BUS_ARROW_W div 4) + 6}"
1271 y="{$busTop_ + ($BLKD_BUS_ARROW_H * 3)}">
1272 <xsl:value-of select="$busName_"/>
1275 <xsl:call-template name="F_WriteText">
1276 <xsl:with-param name="iX" select="($bcInSpace_X_ + $BLKD_BUS_ARROW_W + ceiling($BLKD_BUS_ARROW_W div 2) + ceiling($BLKD_BUS_ARROW_W div 4) + 6)"/>
1277 <xsl:with-param name="iY" select="($busTop_ + ($BLKD_BUS_ARROW_H * 3))"/>
1278 <xsl:with-param name="iText" select="$busName_"/>
1279 <xsl:with-param name="iClass" select="'p2pbus_label'"/>
1280 </xsl:call-template>
1282 <!-- Draw the busconnection and horizontal lines.-->
1283 <xsl:for-each select="exsl:node-set($p2pConn_heights_)/P2PCONN">
1285 <xsl:variable name="bus_x_" select="($bcInSpace_X_ + ceiling($BLKD_BIFC_W div 2))"/>
1286 <xsl:variable name="bus_y_" select="@Y + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_P2P_BUS_W div 2)"/>
1288 <xsl:variable name="h_bus_ul_x_">
1290 <xsl:when test="@BIFSIDE='0'">
1291 <xsl:value-of select="$bus_x_"/>
1293 <xsl:when test="@BIFSIDE='1'">
1294 <xsl:value-of select="(@X + $BLKD_BIFC_W + $BLKD_BUS_ARROW_W) - 1"/>
1299 <xsl:variable name="h_bus_ul_y_" select="$bus_y_"/>
1301 <xsl:variable name="h_bus_height_" select="$BLKD_P2P_BUS_W"/>
1302 <xsl:variable name="h_bus_width_">
1304 <xsl:message>BIFSIDE <xsl:value-of select="@BIFSIDE"/></xsl:message>
1305 <xsl:message>BUSSTD <xsl:value-of select="@BUSSTD"/></xsl:message>
1306 <xsl:message>TYPE <xsl:value-of select="@TYPE"/></xsl:message>
1309 <xsl:when test="@BIFSIDE='0'">
1310 <xsl:value-of select="(@X - $bus_x_ - $BLKD_BUS_ARROW_W)"/>
1312 <xsl:when test="@BIFSIDE='1'">
1313 <xsl:value-of select="$bus_x_ - $h_bus_ul_x_ + 1"/>
1319 <!-- Draw Bus connection-->
1320 <use x="{@X}" y="{@Y}" xlink:href="#{@BUSSTD}_busconn_{@TYPE}"/>
1322 <!-- Draw the arrow -->
1324 <xsl:when test="((@BIFSIDE='0') and not((@BUSSTD = 'FSL') and ((@TYPE = 'INITIATOR') or (@TYPE = 'MASTER'))))">
1325 <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"/>
1327 <xsl:when test="((@BIFSIDE='1') and not((@BUSSTD = 'FSL') and ((@TYPE = 'INITIATOR') or (@TYPE = 'MASTER'))))">
1328 <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"/>
1331 <xsl:when test="((@BIFSIDE='0') and ((@BUSSTD = 'FSL') and ((@TYPE = 'INITIATOR') or (@TYPE = 'MASTER'))))">
1332 <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"/>
1335 <xsl:when test="((@BIFSIDE='1') and ((@BUSSTD = 'FSL') and ((@TYPE = 'INITIATOR') or (@TYPE = 'MASTER'))))">
1336 <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"/>
1341 <!-- Draw the horizontal part of the bus -->
1342 <rect x="{$h_bus_ul_x_}"
1344 width= "{$h_bus_width_}"
1345 height="{$h_bus_height_}"
1346 style="stroke:none; fill:{$busColor_}"/>
1351 <xsl:variable name="busTop_" select="math:min(exsl:node-set($p2pConn_heights_)/P2PCONN/@Y)"/>
1352 <xsl:variable name="busBot_" select="math:max(exsl:node-set($p2pConn_heights_)/P2PCONN/@Y)"/>
1353 <xsl:variable name="v_bus_y_" select="$busTop_ + ceiling($BLKD_BIFC_H div 2) - ceiling($P2P_BUS_W div 2)"/>
1354 <xsl:variable name="busName_" select="exsl:node-set($p2pConn_heights_)/P2PCONN/@BUSNAME"/>
1356 <!-- Draw the vertical part of the bus -->
1358 <rect x="{$bcInSpace_X_ + $P2P_BUS_W}"
1360 width= "{$P2P_BUS_W}"
1361 height="{($busBot_ - $busTop_) + $P2P_BUS_W}"
1362 style="stroke:{$COL_WHITE};stroke-width:1;stroke-opacity:0.9;fill-opacity:2.0;fill:{$busColor_}"/>
1366 style="stroke:{$busColor_lt_};stroke-width:1;stroke-opacity:0.9;fill-opacity:2.0;fill:{$busColor_}"/>
1368 <!-- Place the bus label.-->
1370 <text class="p2pbuslabel"
1371 x="{$bcInSpace_X_ + $BLKD_BUS_ARROW_W + ceiling($BLKD_BUS_ARROW_W div 2) + ceiling($BLKD_BUS_ARROW_W div 4) + 6}"
1372 y="{$busTop_ + ($BLKD_BUS_ARROW_H * 3)}">
1373 <xsl:value-of select="$busName_"/>
1383 ===========================================================
1384 Handle MultiStack Point to Point connections
1385 ===========================================================
1388 <xsl:template name="BCLaneSpace_MultiStack_PointToPoint">
1390 <xsl:param name="iBusStd" select="'NONE'"/>
1391 <xsl:param name="iBusName" select="'NONE'"/>
1392 <xsl:param name="iBifType" select="'NONE'"/>
1393 <xsl:param name="iStackToEast" select="'NONE'"/>
1394 <xsl:param name="iStackToWest" select="'NONE'"/>
1395 <xsl:param name="iStackToEast_W" select="0"/>
1396 <xsl:param name="iStackToWest_W" select="0"/>
1397 <xsl:param name="iLaneInSpace_X" select="0"/>
1400 <xsl:message>Stack To East <xsl:value-of select="$iStackToEast"/></xsl:message>
1401 <xsl:message>Stack to West <xsl:value-of select="$iStackToWest"/></xsl:message>
1402 <xsl:message>Stack to East Width <xsl:value-of select="$iStackToEast_W"/></xsl:message>
1403 <xsl:message>Stack to West Width <xsl:value-of select="$iStackToWest_W"/></xsl:message>
1404 <xsl:message>Lane in space X <xsl:value-of select="$iLaneInSpace_X"/></xsl:message>
1405 <xsl:message>Shared Bus Y <xsl:value-of select="$iSpaceSharedBus_Y"/></xsl:message>
1408 <xsl:variable name="busColor_">
1409 <xsl:call-template name="F_BusStd2RGB">
1410 <xsl:with-param name="iBusStd" select="$iBusStd"/>
1411 </xsl:call-template>
1414 <xsl:variable name="space_W_">
1415 <xsl:call-template name="F_Calc_Space_Width">
1416 <xsl:with-param name="iStackToEast" select="$iStackToEast"/>
1417 <xsl:with-param name="iStackToWest" select="$iStackToWest"/>
1418 </xsl:call-template>
1421 <xsl:variable name ="extSpaceWest_W_" select="ceiling($iStackToWest_W div 2)"/>
1422 <xsl:variable name ="extSpaceEast_W_" select="ceiling($iStackToEast_W div 2)"/>
1424 <!-- Store the connections in a variable -->
1425 <xsl:variable name="bcInSpace_X_" select="($iLaneInSpace_X + ceiling($BLKD_BIFC_W div 2) - ceiling($BLKD_BUS_ARROW_W div 2))"/>
1427 <xsl:variable name="multiConns_">
1429 <xsl:for-each select="BUSCONN">
1431 <xsl:variable name="bifName_" select="@BUSINTERFACE"/>
1432 <xsl:variable name="multiInstance_" select="@INSTANCE"/>
1433 <xsl:variable name="mulshp_hori_idx_">
1435 <xsl:when test="@IS_PROCCONN">
1436 <xsl:value-of select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[(@INSTANCE = $multiInstance_)]/@STACK_HORIZ_INDEX"/>
1439 <xsl:value-of select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $multiInstance_)])]/@STACK_HORIZ_INDEX"/>
1444 <xsl:variable name="mulshp_vert_idx_">
1446 <xsl:when test="@IS_PROCCONN">
1447 <xsl:value-of select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[(@INSTANCE = $multiInstance_)]/@SHAPE_VERTI_INDEX"/>
1450 <xsl:value-of select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $multiInstance_)])]/@SHAPE_VERTI_INDEX"/>
1456 <xsl:message>Shape Horiz <xsl:value-of select="$mulshp_hori_idx_"/></xsl:message>
1457 <xsl:message>Shape Verti <xsl:value-of select="$mulshp_vert_idx_"/></xsl:message>
1460 <xsl:variable name="mulshp_Y_">
1461 <xsl:call-template name="F_Calc_Stack_Shape_Y">
1462 <xsl:with-param name="iHorizIdx" select="$mulshp_hori_idx_"/>
1463 <xsl:with-param name="iVertiIdx" select="$mulshp_vert_idx_"/>
1464 </xsl:call-template>
1467 <xsl:variable name="cmplxStack_H_diff_">
1469 <xsl:when test=" (($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">0</xsl:when>
1470 <xsl:when test="not(($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">
1472 <xsl:variable name="stackToWest_AbvSbs_H_">
1473 <xsl:call-template name="F_Calc_Stack_AbvSbs_Height">
1474 <xsl:with-param name="iStackIdx" select="$iStackToWest"/>
1475 </xsl:call-template>
1478 <xsl:variable name="stackToEast_AbvSbs_H_">
1479 <xsl:call-template name="F_Calc_Stack_AbvSbs_Height">
1480 <xsl:with-param name="iStackIdx" select="$iStackToEast"/>
1481 </xsl:call-template>
1485 <xsl:message>stack to west H <xsl:value-of select="$stackToWest_AbvSbs_H_"/></xsl:message>
1486 <xsl:message>stack to east H <xsl:value-of select="$stackToEast_AbvSbs_H_"/></xsl:message>
1489 <xsl:when test="(($mulshp_hori_idx_ = $iStackToEast) and ($stackToWest_AbvSbs_H_ > $stackToEast_AbvSbs_H_))">
1490 <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
1492 <xsl:when test="(($mulshp_hori_idx_ = $iStackToWest) and ($stackToEast_AbvSbs_H_ > $stackToWest_AbvSbs_H_))">
1493 <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
1495 <xsl:otherwise>0</xsl:otherwise>
1503 <xsl:variable name="procStack_H_diff_">
1505 <xsl:when test=" (($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">0</xsl:when>
1506 <xsl:when test="not(($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">
1508 <xsl:variable name="stackToWest_AbvSbs_H_">
1509 <xsl:call-template name="F_Calc_Stack_AbvSbs_Height">
1510 <xsl:with-param name="iStackIdx" select="$iStackToWest"/>
1511 </xsl:call-template>
1514 <xsl:variable name="stackToEast_AbvSbs_H_">
1515 <xsl:call-template name="F_Calc_Stack_AbvSbs_Height">
1516 <xsl:with-param name="iStackIdx" select="$iStackToEast"/>
1517 </xsl:call-template>
1521 <xsl:message>stack to west H <xsl:value-of select="$stackToWest_AbvSbs_H_"/></xsl:message>
1522 <xsl:message>stack to east H <xsl:value-of select="$stackToEast_AbvSbs_H_"/></xsl:message>
1525 <xsl:when test="(($mulshp_hori_idx_ = $iStackToEast) and ($stackToWest_AbvSbs_H_ > $stackToEast_AbvSbs_H_))">
1526 <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
1528 <xsl:when test="(($mulshp_hori_idx_ = $iStackToWest) and ($stackToEast_AbvSbs_H_ > $stackToWest_AbvSbs_H_))">
1529 <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
1531 <xsl:otherwise>0</xsl:otherwise>
1540 <xsl:when test="@IS_PROCCONN and @BIF_Y">
1542 <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))"/>
1544 <xsl:variable name="procBifType_" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $multiInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@TYPE"/>
1545 <xsl:variable name="procBusName_" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $multiInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BUSNAME"/>
1546 <xsl:variable name="procBifSide_" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $multiInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_X"/>
1548 <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_)"/>
1550 <xsl:variable name="bcProc_X_">
1552 <xsl:when test="$procBifSide_ = '0'">
1553 <xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_ - (ceiling($BLKD_MOD_W div 2) + $BLKD_BIFC_W))"/>
1555 <xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_ - ceiling($BLKD_MOD_W div 2))"/>
1558 <xsl:when test="$procBifSide_ = '1'">
1559 <xsl:value-of select="ceiling($BLKD_MOD_W div 2)"/>
1561 <xsl:otherwise>0</xsl:otherwise>
1565 <MULTICONN X="{$bcProc_X_}" Y="{$bcProc_Y_}" BUSNAME="{$procBusName_}" BUSSTD="{$iBusStd}" TYPE="{$procBifType_}" BIFSIDE="{$procBifSide_}" IS_PROC="TRUE"/>
1570 <xsl:variable name="modType_" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $multiInstance_)]/@MODCLASS"/>
1571 <xsl:variable name="modBif_Y_" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $multiInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_Y"/>
1572 <xsl:variable name="modBifSide_" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $multiInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_X"/>
1573 <xsl:variable name="modBusStd_" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $multiInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BUSSTD"/>
1574 <xsl:variable name="memcMOD_W_" select="(($G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[MODULE[(@INSTANCE = $multiInstance_)]]/@MODS_W) * $BLKD_MOD_W)"/>
1576 <xsl:variable name="modBc_Y_">
1578 <xsl:when test="($modType_ = 'MEMORY_CNTLR') and (($modBusStd_ = 'LMB') or ($modBusStd_= 'OCM'))">
1579 <xsl:value-of select="$BLKD_MOD_H + $BLKD_MOD_LANE_H + ((($BLKD_BIF_H + $BLKD_MOD_BIF_GAP_V) * $modBif_Y_))"/>
1582 <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))"/>
1587 <xsl:message><xsl:value-of select="$multiInstance_"/>.<xsl:value-of select="$bifName_"/>:Y = <xsl:value-of select="$modBif_Y_"/></xsl:message>
1588 <xsl:message><xsl:value-of select="$multiInstance_"/>.<xsl:value-of select="$bifName_"/>:BcY = <xsl:value-of select="$modBc_Y_"/></xsl:message>
1589 <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>
1592 <xsl:variable name="modBifType_" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $multiInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@TYPE"/>
1593 <xsl:variable name="modBusName_" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $multiInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BUSNAME"/>
1596 <xsl:variable name="bcMod_Y_" select="($mulshp_Y_ + $modBc_Y_ + ceiling($BLKD_BIF_H div 2) - ceiling($BLKD_BIFC_H div 2))"/>
1598 <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_)"/>
1600 <xsl:variable name="bcMod_X_">
1602 <xsl:when test="$modBifSide_ = '0'">
1603 <xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_ - (ceiling($memcMOD_W_ div 2) + $BLKD_BIFC_W))"/>
1607 <xsl:when test="$modBifSide_ = '1'">
1608 <xsl:value-of select="ceiling($memcMOD_W_ div 2)"/>
1610 <xsl:otherwise>0</xsl:otherwise>
1615 <MULTICONN X="{$bcMod_X_}" Y="{$bcMod_Y_}" BUSNAME="{$modBusName_}" BUSSTD="{$iBusStd}" TYPE="{$modBifType_}" BIFSIDE="{$modBifSide_}" IS_MOD="TRUE"/>
1617 <MULTICONN X="{$bcInSpace_X_}" Y="{$bcMod_Y_}" BUSSTD="{$busStd}" TYPE="{$modBifType_}" BIFSIDE="{$modBifSide_}"/>
1625 <!-- Draw the busconnection and horizontal lines.-->
1626 <xsl:for-each select="exsl:node-set($multiConns_)/MULTICONN">
1628 <xsl:variable name="bus_x_" select="($bcInSpace_X_ + ceiling($BLKD_BIFC_W div 2))"/>
1629 <xsl:variable name="bus_y_" select="@Y + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_P2P_BUS_W div 2)"/>
1632 <xsl:value-of select="$bus_x_"/>
1634 <xsl:variable name="h_bus_ul_x_">
1636 <xsl:when test="@BIFSIDE='0' and (@IS_PROC)">
1637 <xsl:value-of select="$bus_x_ - $BLKD_P2P_BUS_W"/>
1639 <xsl:when test="@BIFSIDE='0' and (@IS_MOD)">
1640 <xsl:value-of select="$bus_x_ - $BLKD_P2P_BUS_W"/>
1642 <xsl:when test="@BIFSIDE='1' and (@IS_PROC)">
1643 <xsl:value-of select="(@X + $BLKD_BIFC_W + $BLKD_BUS_ARROW_W)"/>
1645 <xsl:when test="@BIFSIDE='1' and (@IS_MOD)">
1646 <xsl:value-of select="(@X + $BLKD_BIFC_W + $BLKD_BUS_ARROW_W)"/>
1651 <xsl:variable name="h_bus_ul_y_" select="$bus_y_"/>
1652 <xsl:variable name="h_bus_height_" select="$BLKD_P2P_BUS_W"/>
1653 <xsl:variable name="h_bus_width_">
1655 <xsl:message>BUSSTD <xsl:value-of select="@BUSSTD"/></xsl:message>
1656 <xsl:message>BIFSIDE <xsl:value-of select="@BIFSIDE"/></xsl:message>
1657 <xsl:message>TYPE <xsl:value-of select="@TYPE"/></xsl:message>
1660 <xsl:when test="@BIFSIDE='0' and (@IS_PROC)">
1661 <xsl:value-of select="(@X - $bus_x_ - $BLKD_P2P_BUS_W)"/>
1663 <xsl:when test="@BIFSIDE='0' and (@IS_MOD)">
1664 <xsl:value-of select="(@X - $bus_x_ - $BLKD_BUS_ARROW_W)"/>
1666 <xsl:when test="@BIFSIDE='1' and (@IS_PROC)">
1667 <xsl:value-of select="$bus_x_ - $h_bus_ul_x_ - $BLKD_BUS_ARROW_W - $BLKD_P2P_BUS_W"/>
1669 <xsl:when test="@BIFSIDE='1' and (@IS_MOD)">
1670 <xsl:value-of select="$BLKD_P2P_BUS_W + $BLKD_BUS_ARROW_W "/>
1672 <xsl:value-of select="$bus_x_ - $h_bus_ul_x_"/>
1680 <xsl:message>h_bus_x_ <xsl:value-of select="$h_bus_ul_x_"/></xsl:message>
1681 <xsl:message>BIFSIDE <xsl:value-of select="@BIFSIDE"/></xsl:message>
1682 <xsl:message>h_bus_width_ <xsl:value-of select="$h_bus_width_"/></xsl:message>
1685 <!-- Draw the horizontal part of the bus -->
1686 <xsl:if test="($h_bus_width_ > 0)">
1687 <rect x="{$h_bus_ul_x_}"
1689 width= "{$h_bus_width_}"
1690 height="{$h_bus_height_}"
1691 style="stroke:none; fill:{$busColor_}"/>
1695 <!-- Draw the arrow -->
1697 <xsl:when test="((@BIFSIDE='0') and not((@BUSSTD = 'FSL') and ((@TYPE = 'INITIATOR') or (@TYPE = 'MASTER'))))">
1698 <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"/>
1700 <xsl:when test="((@BIFSIDE='1') and not((@BUSSTD = 'FSL') and ((@TYPE = 'INITIATOR') or (@TYPE = 'MASTER'))))">
1701 <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"/>
1704 <xsl:when test="((@BIFSIDE='0') and ((@BUSSTD = 'FSL') and ((@TYPE = 'INITIATOR') or (@TYPE = 'MASTER'))))">
1705 <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"/>
1708 <xsl:when test="((@BIFSIDE='1') and ((@BUSSTD = 'FSL') and ((@TYPE = 'INITIATOR') or (@TYPE = 'MASTER'))))">
1709 <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"/>
1714 <use x="{@X}" y="{@Y}" xlink:href="#{@BUSSTD}_busconn_{@TYPE}"/>
1719 <xsl:variable name="busTop_" select="math:min(exsl:node-set($multiConns_)/MULTICONN/@Y)"/>
1720 <xsl:variable name="busBot_" select="math:max(exsl:node-set($multiConns_)/MULTICONN/@Y)"/>
1721 <xsl:variable name="v_bus_y_" select="$busTop_ + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_P2P_BUS_W div 2)"/>
1722 <xsl:variable name="busName_" select="exsl:node-set($multiConns_)/MULTICONN/@BUSNAME"/>
1726 <!-- Draw the vertical part of the bus -->
1727 <rect x="{$bcInSpace_X_ - $BLKD_P2P_BUS_W}"
1729 width= "{$BLKD_P2P_BUS_W}"
1730 height="{($busBot_ - $busTop_) + $BLKD_P2P_BUS_W}"
1731 style="stroke:none; fill:{$busColor_}"/>
1733 <xsl:message>v_bus_x_ <xsl:value-of select="($bcInSpace_X_ + $BLKD_P2P_BUS_W)"/></xsl:message>
1736 <!-- Place the bus label.-->
1737 <xsl:call-template name="F_WriteText">
1738 <xsl:with-param name="iX" select="($bcInSpace_X_ + $BLKD_BUS_ARROW_W + ceiling($BLKD_BUS_ARROW_W div 2) + ceiling($BLKD_BUS_ARROW_W div 4) + 6)"/>
1739 <xsl:with-param name="iY" select="($busTop_ + ($BLKD_BUS_ARROW_H * 3))"/>
1740 <xsl:with-param name="iText" select="$busName_"/>
1741 <xsl:with-param name="iClass" select="'p2pbus_label'"/>
1742 </xsl:call-template>
1748 ===========================================================
1749 Handle Processor to processor connections
1750 ===========================================================
1752 <xsl:template name="BCLaneSpace_ProcToProc">
1754 <xsl:param name="iBusStd" select="'NONE'"/>
1755 <xsl:param name="iBusName" select="'NONE'"/>
1756 <xsl:param name="iBifType" select="'NONE'"/>
1757 <xsl:param name="iStackToEast" select="'NONE'"/>
1758 <xsl:param name="iStackToWest" select="'NONE'"/>
1759 <xsl:param name="iStackToEast_W" select="0"/>
1760 <xsl:param name="iStackToWest_W" select="0"/>
1761 <xsl:param name="iLaneInSpace_X" select="0"/>
1763 <xsl:variable name="busColor_">
1764 <xsl:call-template name="F_BusStd2RGB">
1765 <xsl:with-param name="iBusStd" select="$iBusStd"/>
1766 </xsl:call-template>
1769 <xsl:variable name="space_W_">
1770 <xsl:call-template name="F_Calc_Space_Width">
1771 <xsl:with-param name="iStackToEast" select="$iStackToEast"/>
1772 <xsl:with-param name="iStackToWest" select="$iStackToWest"/>
1773 </xsl:call-template>
1776 <xsl:variable name ="extSpaceWest_W_" select="ceiling($iStackToWest_W div 2)"/>
1777 <xsl:variable name ="extSpaceEast_W_" select="ceiling($iStackToEast_W div 2)"/>
1779 <xsl:variable name="pr2pr_StackToWest_" select="math:min(BUSCONN/@STACK_HORIZ_INDEX)"/>
1780 <xsl:variable name="pr2pr_StackToEast_" select="math:max(BUSCONN/@STACK_HORIZ_INDEX)"/>
1781 <xsl:variable name="proc2procConn_heights_">
1783 <xsl:for-each select="BUSCONN">
1785 <xsl:variable name="procInstance_" select="@INSTANCE"/>
1786 <xsl:variable name="bifName_" select="@BUSINTERFACE"/>
1787 <xsl:variable name="procshp_hori_idx_" select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[(@INSTANCE = $procInstance_)]/@STACK_HORIZ_INDEX"/>
1788 <xsl:variable name="procshp_vert_idx_" select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[(@INSTANCE = $procInstance_)]/@SHAPE_VERTI_INDEX"/>
1789 <xsl:variable name="procshp_Y_">
1790 <xsl:call-template name="F_Calc_Stack_Shape_Y">
1791 <xsl:with-param name="iHorizIdx" select="$procshp_hori_idx_"/>
1792 <xsl:with-param name="iVertiIdx" select="$procshp_vert_idx_"/>
1793 </xsl:call-template>
1796 <xsl:variable name="procStack_H_diff_">
1798 <xsl:when test=" (($pr2pr_StackToEast_ = 'NONE') or ($pr2pr_StackToWest_ = 'NONE'))">0</xsl:when>
1799 <xsl:when test="not(($pr2pr_StackToEast_ = 'NONE') or ($pr2pr_StackToWest_ = 'NONE'))">
1801 <xsl:variable name="stackToWest_AbvSbs_H_">
1802 <xsl:call-template name="F_Calc_Stack_AbvSbs_Height">
1803 <xsl:with-param name="iStackIdx" select="$pr2pr_StackToWest_"/>
1804 </xsl:call-template>
1807 <xsl:variable name="stackToEast_AbvSbs_H_">
1808 <xsl:call-template name="F_Calc_Stack_AbvSbs_Height">
1809 <xsl:with-param name="iStackIdx" select="$pr2pr_StackToEast_"/>
1810 </xsl:call-template>
1813 <xsl:message>stack to west H <xsl:value-of select="$stackToWest_AbvSbs_H_"/></xsl:message>
1814 <xsl:message>stack to east H <xsl:value-of select="$stackToEast_AbvSbs_H_"/></xsl:message>
1817 <xsl:when test="(($procshp_hori_idx_ = $pr2pr_StackToEast_) and ($stackToWest_AbvSbs_H_ > $stackToEast_AbvSbs_H_))">
1818 <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
1820 <xsl:when test="(($procshp_hori_idx_ = $pr2pr_StackToWest_) and ($stackToEast_AbvSbs_H_ > $stackToWest_AbvSbs_H_))">
1821 <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
1823 <xsl:otherwise>0</xsl:otherwise>
1830 <!-- Store the conns in a variable -->
1831 <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))"/>
1833 <xsl:variable name="procBifType_" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $procInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@TYPE"/>
1834 <xsl:variable name="procBifSide_" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $procInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_X"/>
1836 <xsl:variable name="bcInSpace_X_">
1838 <xsl:when test="$procBifSide_ = '1'"><xsl:value-of select="ceiling($BLKD_MOD_W div 2)"/></xsl:when>
1839 <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>
1843 <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_)"/>
1845 <xsl:message>Conn X <xsl:value-of select="$bcInSpace_X_"/></xsl:message>
1846 <xsl:message>Conn Y <xsl:value-of select="$bcProc_Y_"/></xsl:message>
1849 <PR2PRCONN X="{$bcInSpace_X_}" Y="{$bcProc_Y_}" BUSSTD="{$iBusStd}" TYPE="{$procBifType_}" BIFSIDE="{$procBifSide_}" SHAPE_ID="{$procshp_hori_idx_}"/>
1853 <xsl:variable name="pr2prLeft_" select="math:min(exsl:node-set($proc2procConn_heights_)/PR2PRCONN/@SHAPE_ID)"/>
1854 <xsl:variable name="pr2prRght_" select="math:max(exsl:node-set($proc2procConn_heights_)/PR2PRCONN/@SHAPE_ID)"/>
1856 <xsl:variable name="pr2pr_stack_Left_X_">
1857 <xsl:call-template name="F_Calc_Stack_X">
1858 <xsl:with-param name="iStackIdx" select="$pr2prLeft_"/>
1859 </xsl:call-template>
1862 <xsl:variable name="pr2pr_stack_Rght_X_">
1863 <xsl:call-template name="F_Calc_Stack_X">
1864 <xsl:with-param name="iStackIdx" select="$pr2prRght_"/>
1865 </xsl:call-template>
1869 <xsl:message>Left stack X <xsl:value-of select="$pr2pr_stack_Left_X_"/></xsl:message>
1870 <xsl:message>Rght stack X <xsl:value-of select="$pr2pr_stack_Rght_X_"/></xsl:message>
1872 <xsl:variable name="pr2pr_space_W_" select="($pr2pr_stack_Rght_X_ - $pr2pr_stack_Left_X_)"/>
1875 <xsl:variable name="pr2pr_extStackEast_W_">
1876 <xsl:call-template name="F_Calc_Stack_Width">
1877 <xsl:with-param name="iStackIdx" select="$pr2prRght_"/>
1878 </xsl:call-template>
1881 <xsl:variable name="pr2pr_extStackWest_W_">
1882 <xsl:call-template name="F_Calc_Stack_Width">
1883 <xsl:with-param name="iStackIdx" select="$pr2prLeft_"/>
1884 </xsl:call-template>
1888 <xsl:message>Space W <xsl:value-of select="$pr2pr_space_W_"/></xsl:message>
1889 <xsl:message>Rght stack <xsl:value-of select="$pr2pr_extStackEast_W_"/></xsl:message>
1890 <xsl:message>Left stack <xsl:value-of select="$pr2pr_extStackWest_W_"/></xsl:message>
1893 <xsl:variable name="connLeft_X_" select="ceiling($BLKD_MOD_W div 2)"/>
1894 <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)"/>
1896 <!-- Draw the busconnections .-->
1897 <xsl:for-each select="exsl:node-set($proc2procConn_heights_)/PR2PRCONN">
1898 <xsl:variable name="conn_X_">
1900 <xsl:when test="@BIFSIDE = '1'"><xsl:value-of select="ceiling($BLKD_MOD_W div 2)"/></xsl:when>
1901 <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>
1903 <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>
1909 <use x="{$conn_X_}" y="{@Y}" xlink:href="#{@BUSSTD}_busconn_{@TYPE}"/>
1912 <xsl:variable name="bc_Y_" select="math:min(exsl:node-set($proc2procConn_heights_)/PR2PRCONN/@Y)"/>
1913 <xsl:variable name="bcLeft_" select="math:min(exsl:node-set($proc2procConn_heights_)/PR2PRCONN/@X)"/>
1914 <xsl:variable name="bcRght_" select="math:max(exsl:node-set($proc2procConn_heights_)/PR2PRCONN/@X)"/>
1916 <xsl:variable name="leftType_" select="(exsl:node-set($proc2procConn_heights_)/PR2PRCONN[(@X = $bcLeft_)]/@TYPE)"/>
1917 <xsl:variable name="rghtType_" select="(exsl:node-set($proc2procConn_heights_)/PR2PRCONN[(@X = $bcRght_)]/@TYPE)"/>
1919 <xsl:call-template name="Draw_Proc2ProcBus">
1920 <xsl:with-param name="iBc_Y" select="$bc_Y_"/>
1921 <xsl:with-param name="iBusStd" select="$iBusStd"/>
1922 <xsl:with-param name="iBusName" select="$iBusName"/>
1923 <xsl:with-param name="iLeftType" select="$leftType_"/>
1924 <xsl:with-param name="iRghtType" select="$rghtType_"/>
1925 <xsl:with-param name="iBcLeft_X" select="$connLeft_X_ + $BLKD_BIFC_W"/>
1926 <xsl:with-param name="iBcRght_X" select="$connRght_X_"/>
1927 </xsl:call-template>
1932 ===========================================================
1933 Handle connections to the MPMC
1934 ===========================================================
1936 <xsl:template name="BCLaneSpace_ToStandAloneMPMC">
1938 <xsl:param name="iBusStd" select="'NONE'"/>
1939 <xsl:param name="iBusName" select="'NONE'"/>
1940 <xsl:param name="iBifType" select="'NONE'"/>
1941 <xsl:param name="iStackToEast" select="'NONE'"/>
1942 <xsl:param name="iStackToWest" select="'NONE'"/>
1943 <xsl:param name="iStackToEast_W" select="0"/>
1944 <xsl:param name="iStackToWest_W" select="0"/>
1945 <xsl:param name="iLaneInSpace_X" select="0"/>
1947 <xsl:variable name="busColor_">
1948 <xsl:call-template name="F_BusStd2RGB">
1949 <xsl:with-param name="iBusStd" select="$iBusStd"/>
1950 </xsl:call-template>
1953 <xsl:variable name="busColor_lt_">
1954 <xsl:call-template name="F_BusStd2RGB_LT">
1955 <xsl:with-param name="iBusStd" select="$iBusStd"/>
1956 </xsl:call-template>
1959 <xsl:variable name="space_W_">
1960 <xsl:call-template name="F_Calc_Space_Width">
1961 <xsl:with-param name="iStackToEast" select="$iStackToEast"/>
1962 <xsl:with-param name="iStackToWest" select="$iStackToWest"/>
1963 </xsl:call-template>
1966 <xsl:variable name ="extSpaceWest_W_" select="ceiling($iStackToWest_W div 2)"/>
1967 <xsl:variable name ="extSpaceEast_W_" select="ceiling($iStackToEast_W div 2)"/>
1969 <xsl:variable name="bcInSpace_X_" select="($iLaneInSpace_X + ceiling($BLKD_BIFC_W div 2) - ceiling($BLKD_BUS_ARROW_W div 2))"/>
1970 <xsl:variable name="p2pInstance_" select="BUSCONN[(@BIF_Y)]/@INSTANCE"/>
1972 <xsl:variable name="p2pshp_hori_idx_">
1974 <xsl:when test="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[(@INSTANCE = $p2pInstance_)]">
1975 <xsl:value-of select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[(@INSTANCE = $p2pInstance_)]/@STACK_HORIZ_INDEX"/>
1978 <xsl:value-of select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $p2pInstance_)])]/@STACK_HORIZ_INDEX"/>
1983 <xsl:variable name="p2pshp_vert_idx_">
1985 <xsl:when test="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[(@INSTANCE = $p2pInstance_)]">
1986 <xsl:value-of select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[(@INSTANCE = $p2pInstance_)]/@SHAPE_VERTI_INDEX"/>
1989 <xsl:value-of select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $p2pInstance_)])]/@SHAPE_VERTI_INDEX"/>
1994 <xsl:variable name="p2pshp_Y_">
1995 <xsl:call-template name="F_Calc_Stack_Shape_Y">
1996 <xsl:with-param name="iHorizIdx" select="$p2pshp_hori_idx_"/>
1997 <xsl:with-param name="iVertiIdx" select="$p2pshp_vert_idx_"/>
1998 </xsl:call-template>
2001 <xsl:variable name="cmplxStack_H_diff_">
2003 <xsl:when test=" (($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">0</xsl:when>
2004 <xsl:when test="not(($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">
2006 <xsl:variable name="stackToWest_AbvSbs_H_">
2007 <xsl:call-template name="F_Calc_Stack_AbvSbs_Height">
2008 <xsl:with-param name="iStackIdx" select="$iStackToWest"/>
2009 </xsl:call-template>
2012 <xsl:variable name="stackToEast_AbvSbs_H_">
2013 <xsl:call-template name="F_Calc_Stack_AbvSbs_Height">
2014 <xsl:with-param name="iStackIdx" select="$iStackToEast"/>
2015 </xsl:call-template>
2019 <xsl:message>stack to west H <xsl:value-of select="$stackToWest_AbvSbs_H_"/></xsl:message>
2020 <xsl:message>stack to east H <xsl:value-of select="$stackToEast_AbvSbs_H_"/></xsl:message>
2024 <xsl:when test="(($p2pshp_hori_idx_ = $iStackToEast) and ($stackToWest_AbvSbs_H_ > $stackToEast_AbvSbs_H_))">
2025 <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
2027 <xsl:when test="(($p2pshp_hori_idx_ = $iStackToWest) and ($stackToEast_AbvSbs_H_ > $stackToWest_AbvSbs_H_))">
2028 <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
2030 <xsl:otherwise>0</xsl:otherwise>
2037 <xsl:variable name="procStack_H_diff_">
2039 <xsl:when test=" (($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">0</xsl:when>
2040 <xsl:when test="not(($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">
2042 <xsl:variable name="stackToWest_AbvSbs_H_">
2043 <xsl:call-template name="F_Calc_Stack_AbvSbs_Height">
2044 <xsl:with-param name="iStackIdx" select="$iStackToWest"/>
2045 </xsl:call-template>
2048 <xsl:variable name="stackToEast_AbvSbs_H_">
2049 <xsl:call-template name="F_Calc_Stack_AbvSbs_Height">
2050 <xsl:with-param name="iStackIdx" select="$iStackToEast"/>
2051 </xsl:call-template>
2055 <xsl:message>stack to west H <xsl:value-of select="$stackToWest_AbvSbs_H_"/></xsl:message>
2056 <xsl:message>stack to east H <xsl:value-of select="$stackToEast_AbvSbs_H_"/></xsl:message>
2059 <xsl:when test="(($p2pshp_hori_idx_ = $iStackToEast) and ($stackToWest_AbvSbs_H_ > $stackToEast_AbvSbs_H_))">
2060 <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
2062 <xsl:when test="(($p2pshp_hori_idx_ = $iStackToWest) and ($stackToEast_AbvSbs_H_ > $stackToWest_AbvSbs_H_))">
2063 <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
2065 <xsl:otherwise>0</xsl:otherwise>
2074 <!-- Store the conns in a variable -->
2075 <xsl:variable name="p2pConn_heights_">
2077 <xsl:for-each select="BUSCONN">
2079 <xsl:variable name="bifName_" select="@BUSINTERFACE"/>
2082 <xsl:when test="@IS_PROCCONN and @BIF_Y">
2085 <xsl:message>Proc <xsl:value-of select="$procInstance_"/></xsl:message>
2087 <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))"/>
2088 <xsl:variable name="procBifType_" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $p2pInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@TYPE"/>
2089 <xsl:variable name="procBusName_" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $p2pInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BUSNAME"/>
2090 <xsl:variable name="procBifSide_" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $p2pInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_X"/>
2092 <xsl:variable name="bcProc_Y_" select="($p2pshp_Y_ + $procBif_Y_ + ceiling($BIF_H div 2) - ceiling($BLKD_BIFC_H div 2) + $procStack_H_diff_)"/>
2093 <xsl:variable name="bcProc_X_">
2095 <xsl:when test="$procBifSide_ = '0'">
2096 <xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_ - (ceiling($BLKD_MOD_W div 2) + $BLKD_BIFC_W))"/>
2098 <xsl:when test="$procBifSide_ = '1'">
2099 <xsl:value-of select="ceiling($BLKD_MOD_W div 2)"/>
2101 <xsl:otherwise>0</xsl:otherwise>
2105 <P2PCONN X="{$bcProc_X_}" Y="{$bcProc_Y_}" BUSNAME= "{$procBusName_}" BUSSTD="{$iBusStd}" TYPE="{$procBifType_}" BIFSIDE="{$procBifSide_}"/>
2111 <xsl:variable name="modInstance_" select="@INSTANCE"/>
2112 <xsl:variable name="modshp_vert_idx_" select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[MODULE[(@INSTANCE = $modInstance_)]]/@SHAPE_VERTI_INDEX"/>
2113 <xsl:variable name="modBifSide_" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $modInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_X"/>
2114 <xsl:variable name="modBif_Y_" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $modInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_Y"/>
2115 <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))"/>
2118 <xsl:message>Memory Instance <xsl:value-of select="$procInstance_"/></xsl:message>
2121 <xsl:variable name="modshp_Y_">
2122 <xsl:call-template name="F_Calc_Stack_Shape_Y">
2123 <xsl:with-param name="iHorizIdx" select="$p2pshp_hori_idx_"/>
2124 <xsl:with-param name="iVertiIdx" select="$modshp_vert_idx_"/>
2125 </xsl:call-template>
2128 <xsl:variable name="modBifType_" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $modInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@TYPE"/>
2129 <xsl:variable name="modBusName_" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $modInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BUSNAME"/>
2130 <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_)"/>
2131 <xsl:variable name="bcMod_X_">
2133 <xsl:when test="$modBifSide_ = '0'">
2134 <xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_ - (ceiling($BLKD_MOD_W div 2) + $BLKD_BIFC_W))"/>
2136 <xsl:when test="$modBifSide_ = '1'">
2137 <xsl:value-of select="ceiling($BLKD_MOD_W div 2)"/>
2139 <xsl:otherwise>0</xsl:otherwise>
2143 <P2PCONN X="{$bcMod_X_}" Y="{$bcMod_Y_}" BUSNAME="{$modBusName_}" BUSSTD="{$iBusStd}" TYPE="{$modBifType_}" BIFSIDE="{$modBifSide_}"/>
2152 <xsl:variable name="busTop_" select="math:min(exsl:node-set($p2pConn_heights_)/P2PCONN/@Y)"/>
2153 <xsl:variable name="busBot_" select="math:max(exsl:node-set($p2pConn_heights_)/P2PCONN/@Y)"/>
2154 <xsl:variable name="v_bus_y_" select="$busTop_ + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_P2P_BUS_W div 2)"/>
2156 <xsl:variable name="busName_" select="exsl:node-set($p2pConn_heights_)/P2PCONN/@BUSNAME"/>
2157 <xsl:variable name="busStd_" select="exsl:node-set($p2pConn_heights_)/P2PCONN/@BUSSTD"/>
2159 <!-- Draw the vertical part of the bus -->
2160 <!-- Place the bus label.-->
2161 <!-- Draw the busconnection and horizontal lines.-->
2162 <xsl:for-each select="exsl:node-set($p2pConn_heights_)/P2PCONN">
2164 <xsl:variable name="bus_x_" select="($bcInSpace_X_ + ceiling($BLKD_BIFC_W div 2))"/>
2165 <xsl:variable name="bus_y_" select="@Y + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_P2P_BUS_W div 2)"/>
2167 <xsl:variable name="h_bus_ul_x_">
2169 <xsl:when test="@BIFSIDE='0'">
2170 <xsl:value-of select="$bus_x_"/>
2172 <xsl:when test="@BIFSIDE='1'">
2173 <xsl:value-of select="(@X + $BLKD_BIFC_W + $BLKD_BUS_ARROW_W) - 1"/>
2178 <xsl:variable name="h_bus_ul_y_" select="$bus_y_"/>
2180 <xsl:variable name="h_bus_height_" select="$BLKD_P2P_BUS_W"/>
2181 <xsl:variable name="h_bus_width_">
2183 <xsl:when test="@BIFSIDE='0'">
2184 <xsl:value-of select="(@X - $bus_x_ - $BLKD_BUS_ARROW_W)"/>
2186 <xsl:when test="@BIFSIDE='1'">
2187 <xsl:value-of select="$bus_x_ - $h_bus_ul_x_ + 1"/>
2193 <!-- Draw Bus connection-->
2194 <use x="{@X}" y="{@Y}" xlink:href="#{@BUSSTD}_busconn_{@TYPE}"/>
2196 <!-- Draw the arrow -->
2198 <xsl:when test="((@BIFSIDE='0') and not((@BUSSTD = 'FSL') and ((@TYPE = 'INITIATOR') or (@TYPE = 'MASTER'))))">
2199 <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"/>
2201 <xsl:when test="((@BIFSIDE='1') and not((@BUSSTD = 'FSL') and ((@TYPE = 'INITIATOR') or (@TYPE = 'MASTER'))))">
2202 <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"/>
2205 <xsl:when test="((@BIFSIDE='0') and ((@BUSSTD = 'FSL') and ((@TYPE = 'INITIATOR') or (@TYPE = 'MASTER'))))">
2206 <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"/>
2209 <xsl:when test="((@BIFSIDE='1') and ((@BUSSTD = 'FSL') and ((@TYPE = 'INITIATOR') or (@TYPE = 'MASTER'))))">
2210 <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"/>
2215 <!-- Draw the horizontal part of the bus -->
2216 <rect x="{$h_bus_ul_x_}"
2218 width= "{$h_bus_width_}"
2219 height="{$h_bus_height_}"
2221 style="stroke:none; fill:{$busColor_}"/>
2224 Draw the vertical part of the bus. The MPMC BIF and the top arrow will
2225 be added later when the main drawing happens.
2227 <xsl:variable name="v_bus_ul_x_">
2229 <xsl:when test="@BIFSIDE='0'"><xsl:value-of select="($h_bus_ul_x_)"/></xsl:when>
2230 <xsl:when test="@BIFSIDE='1'"><xsl:value-of select="($h_bus_ul_x_ + $h_bus_width_ - $BLKD_P2P_BUS_W)"/></xsl:when>
2234 <rect x="{$v_bus_ul_x_}"
2236 width= "{$BLKD_P2P_BUS_W}"
2237 height="{$h_bus_ul_y_}"
2238 style="stroke:none; fill:{$busColor_}"/>
2246 ======================================================================
2247 Handle Split connections, (connections that go between adjacent stacks)
2248 ======================================================================
2251 <xsl:template name="BCLaneSpace_SplitConn">
2253 <xsl:param name="iBusStd" select="'NONE'"/>
2254 <xsl:param name="iBusName" select="'NONE'"/>
2255 <xsl:param name="iBifType" select="'NONE'"/>
2256 <xsl:param name="iStackToEast" select="'NONE'"/>
2257 <xsl:param name="iStackToWest" select="'NONE'"/>
2258 <xsl:param name="iStackToEast_W" select="0"/>
2259 <xsl:param name="iStackToWest_W" select="0"/>
2260 <xsl:param name="iLaneInSpace_X" select="0"/>
2262 <xsl:variable name="busColor_">
2263 <xsl:call-template name="F_BusStd2RGB">
2264 <xsl:with-param name="iBusStd" select="$iBusStd"/>
2265 </xsl:call-template>
2268 <xsl:variable name="space_W_">
2269 <xsl:call-template name="F_Calc_Space_Width">
2270 <xsl:with-param name="iStackToEast" select="$iStackToEast"/>
2271 <xsl:with-param name="iStackToWest" select="$iStackToWest"/>
2272 </xsl:call-template>
2275 <xsl:variable name ="extSpaceWest_W_" select="ceiling($iStackToWest_W div 2)"/>
2276 <xsl:variable name ="extSpaceEast_W_" select="ceiling($iStackToEast_W div 2)"/>
2279 <xsl:variable name="bifName_" select="BUSCONN/@BUSINTERFACE"/>
2280 <xsl:variable name="shpInstance_" select="BUSCONN/@INSTANCE"/>
2283 <xsl:message>Found a split connection on <xsl:value-of select="$shpInstance_"/></xsl:message>
2287 <xsl:variable name="shp_hori_idx_">
2290 <xsl:when test="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[(@INSTANCE = $shpInstance_)]">
2291 <xsl:value-of select="/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[(@INSTANCE = $shpInstance_)]/@STACK_HORIZ_INDEX"/>
2294 <xsl:when test="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $shpInstance_)])]">
2295 <xsl:value-of select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $shpInstance_)])]/@STACK_HORIZ_INDEX"/>
2297 <xsl:otherwise>_unknown_</xsl:otherwise>
2302 <xsl:variable name="shp_vert_idx_">
2305 <xsl:when test="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[(@INSTANCE = $shpInstance_)]">
2306 <xsl:value-of select="/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[(@INSTANCE = $shpInstance_)]/@SHAPE_VERTI_INDEX"/>
2309 <xsl:when test="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $shpInstance_)])]">
2310 <xsl:value-of select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $shpInstance_)])]/@SHAPE_VERTI_INDEX"/>
2312 <xsl:otherwise>_unknown_</xsl:otherwise>
2317 <xsl:variable name="splitshp_Width_">
2320 <xsl:when test="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[(@INSTANCE = $shpInstance_)]">
2321 <xsl:value-of select="$BLKD_MOD_W"/>
2324 <xsl:when test="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $shpInstance_)])]/@MODS_W">
2326 <xsl:message>Using mods width on <xsl:value-of select="$shpInstance_"/></xsl:message>
2328 <xsl:value-of select="($G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $shpInstance_)])]/@MODS_W * $BLKD_MOD_W)"/>
2331 <xsl:value-of select="$BLKD_MOD_W"/>
2338 <xsl:message>Found width of <xsl:value-of select="$splitshp_Width_"/></xsl:message>
2342 <xsl:variable name="splitshp_Y_">
2343 <xsl:call-template name="F_Calc_Stack_Shape_Y">
2344 <xsl:with-param name="iHorizIdx" select="$shp_hori_idx_"/>
2345 <xsl:with-param name="iVertiIdx" select="$shp_vert_idx_"/>
2346 </xsl:call-template>
2350 <xsl:variable name="splitStack_H_diff_">
2352 <xsl:when test=" (($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">0</xsl:when>
2353 <xsl:when test="not(($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">
2355 <xsl:variable name="stackToWest_AbvSbs_H_">
2356 <xsl:call-template name="F_Calc_Stack_AbvSbs_Height">
2357 <xsl:with-param name="iStackIdx" select="$iStackToWest"/>
2358 </xsl:call-template>
2361 <xsl:variable name="stackToEast_AbvSbs_H_">
2362 <xsl:call-template name="F_Calc_Stack_AbvSbs_Height">
2363 <xsl:with-param name="iStackIdx" select="$iStackToEast"/>
2364 </xsl:call-template>
2368 <xsl:when test="(($shp_hori_idx_ = $iStackToEast) and ($stackToWest_AbvSbs_H_ > $stackToEast_AbvSbs_H_))">
2369 <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
2371 <xsl:when test="(($shp_hori_idx_ = $iStackToWest) and ($stackToEast_AbvSbs_H_ > $stackToWest_AbvSbs_H_))">
2372 <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
2374 <xsl:otherwise>0</xsl:otherwise>
2382 <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))"/>
2383 <xsl:variable name="splitBusStd_" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $shpInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BUSSTD"/>
2384 <xsl:variable name="splitBifType_" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $shpInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@TYPE"/>
2385 <xsl:variable name="splitBifSide_" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $shpInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_X"/>
2387 <xsl:variable name="bcInSpace_X_">
2389 <xsl:when test="$splitBifSide_ = '1'"><xsl:value-of select="ceiling($splitshp_Width_ div 2)"/></xsl:when>
2390 <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>
2395 <xsl:variable name="bcBus_X_">
2397 <xsl:when test="$splitBifSide_ = '1'"><xsl:value-of select="$bcInSpace_X_"/></xsl:when>
2398 <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>
2402 <xsl:variable name="bcSplit_Y_">
2404 <xsl:when test="(BUSCONN/@IS_MEMCONN) and (($splitBusStd_ = 'LMB') or ($splitBusStd_ = 'OCM'))">
2406 <xsl:message>Found memory conn split connection on <xsl:value-of select="$shpInstance_"/> </xsl:message>
2408 <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_)"/>
2411 <xsl:value-of select="($splitshp_Y_ + $splitBif_Y_ + ceiling($BLKD_BIF_H div 2) - ceiling($BLKD_BIFC_H div 2) + $splitStack_H_diff_)"/>
2416 <use x="{$bcInSpace_X_}" y="{$bcSplit_Y_}" xlink:href="#{@BUSSTD}_busconn_{$splitBifType_}"/>
2419 <xsl:call-template name="Draw_SplitConnBus">
2420 <xsl:with-param name="iBc_Y" select="$bcSplit_Y_"/>
2421 <xsl:with-param name="iBc_X" select="$bcInSpace_X_"/>
2422 <xsl:with-param name="iBusStd" select="$iBusStd"/>
2423 <xsl:with-param name="iBc_Type" select="$splitBifType_"/>
2424 <xsl:with-param name="iBc_Side" select="$splitBifSide_"/>
2425 <xsl:with-param name="iBusName" select="$iBusName"/>
2426 </xsl:call-template>
2432 <xsl:template name="Define_BusLaneSpace">
2434 <xsl:param name="iStackToEast" select="'NONE'"/>
2435 <xsl:param name="iStackToWest" select="'NONE'"/>
2438 <xsl:message>Input Stack to West <xsl:value-of select="$iStackToWest"/></xsl:message>
2439 <xsl:message>Input Stack to East <xsl:value-of select="$iStackToEast"/></xsl:message>
2442 <xsl:variable name="stackToEast_">
2444 <xsl:when test="not($iStackToEast = 'NONE')"><xsl:value-of select="$iStackToEast"/></xsl:when>
2445 <xsl:otherwise>NONE</xsl:otherwise>
2449 <xsl:variable name="stackToWest_">
2451 <xsl:when test=" not($iStackToWest = 'NONE')"><xsl:value-of select="$iStackToWest"/></xsl:when>
2452 <xsl:when test="(not($iStackToEast = 'NONE') and not($iStackToEast = '0'))"><xsl:value-of select="($iStackToEast - 1)"/></xsl:when>
2453 <xsl:otherwise>NONE</xsl:otherwise>
2457 <xsl:variable name="spaceAbvSbs_H_">
2458 <xsl:call-template name="F_Calc_Space_AbvSbs_Height">
2459 <xsl:with-param name="iStackToEast" select="$iStackToEast"/>
2460 <xsl:with-param name="iStackToWest" select="$iStackToWest"/>
2461 </xsl:call-template>
2464 <xsl:variable name="spaceBlwSbs_H_">
2465 <xsl:call-template name="F_Calc_Space_BlwSbs_Height">
2466 <xsl:with-param name="iStackToEast" select="$iStackToEast"/>
2467 <xsl:with-param name="iStackToWest" select="$iStackToWest"/>
2468 </xsl:call-template>
2472 <xsl:variable name="space_H_" select="($spaceAbvSbs_H_ + $BLKD_PROC2SBS_GAP + $G_Total_SharedBus_H + $spaceBlwSbs_H_)"/>
2473 <xsl:variable name="space_W_">
2474 <xsl:call-template name="F_Calc_Space_Width">
2475 <xsl:with-param name="iStackToEast" select="$iStackToEast"/>
2476 <xsl:with-param name="iStackToWest" select="$iStackToWest"/>
2477 </xsl:call-template>
2480 <xsl:variable name="spaceSharedBus_Y_" select="$spaceAbvSbs_H_ + $BLKD_PROC2SBS_GAP"/>
2482 <xsl:variable name="space_name_">
2483 <xsl:call-template name="F_generate_Space_Name">
2484 <xsl:with-param name="iStackToEast" select="$stackToEast_"/>
2485 <xsl:with-param name="iStackToWest" select="$stackToWest_"/>
2486 </xsl:call-template>
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="F_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="F_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="F_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)"/>
2515 <g id="{$space_name_}">
2516 <xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/BCLANESPACES/BCLANESPACE[((@EAST = $iStackToEast) or (($iStackToEast = 'NONE') and (@WEST = $iStackToWest)))]/BUSCONNLANE[@BUSSTD and @BUSNAME]">
2518 <xsl:variable name="busStd_" select="@BUSSTD"/>
2519 <xsl:variable name="busName_" select="@BUSNAME"/>
2520 <xsl:variable name="lane_X_" select="@BUSLANE_X"/>
2522 <xsl:variable name="eastBusLane_X_">
2524 <xsl:when test="(@BUSLANE_X = 0)"><xsl:value-of select="@BUSLANE_X"/></xsl:when>
2525 <xsl:otherwise><xsl:value-of select="(@BUSLANE_X - 1)"/></xsl:otherwise>
2529 <xsl:variable name="laneInSpace_X_">
2531 <xsl:when test="(@ORIENTED = 'EAST')">
2532 <xsl:value-of select="($extSpaceWest_W_ + ($eastBusLane_X_ * $BLKD_BUS_LANE_W) - $BLKD_BUS_ARROW_W - $BLKD_P2P_BUS_W)"/>
2534 <xsl:otherwise><xsl:value-of select="($extSpaceWest_W_ + (@BUSLANE_X * $BLKD_BUS_LANE_W))"/></xsl:otherwise>
2539 <xsl:variable name="busColor_">
2540 <xsl:call-template name="F_BusStd2RGB">
2541 <xsl:with-param name="iBusStd" select="@BUSSTD"/>
2542 </xsl:call-template>
2547 ===========================================================
2548 Handle Bucket connections to the shared busses.
2549 ===========================================================
2551 <xsl:when test="@BUSLANE_X and @IS_BKTCONN and BUSCONN[@TYPE] and $G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $busName_)]/@BUS_INDEX">
2552 <xsl:call-template name="BCLaneSpace_BucketToSharedBus">
2553 <xsl:with-param name="iBusName" select="$busName_"/>
2554 <xsl:with-param name="iBusStd" select="$busStd_"/>
2555 <xsl:with-param name="iBifType" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $busName_)]/BUSINTERFACE/@TYPE"/>
2556 <xsl:with-param name="iStackToEast" select="$stackToEast_"/>
2557 <xsl:with-param name="iStackToWest" select="$stackToWest_"/>
2558 <xsl:with-param name="iStackToEast_W" select="$stackToEast_W_"/>
2559 <xsl:with-param name="iStackToWest_W" select="$stackToWest_W_"/>
2560 <xsl:with-param name="iLaneInSpace_X" select="$laneInSpace_X_"/>
2561 <xsl:with-param name="iSpaceSharedBus_Y" select="$spaceSharedBus_Y_"/>
2562 </xsl:call-template>
2566 ===========================================================
2567 Handle Processor's Shared bus connections.
2568 ===========================================================
2570 <xsl:when test="@BUSLANE_X and @IS_SBSCONN and not(@IS_MPMCCONN) and BUSCONN[@BIF_Y and @IS_PROCCONN and @INSTANCE and @BUSINTERFACE] and $G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $busName_)]/@BUS_INDEX">
2571 <xsl:call-template name="BCLaneSpace_ProcBifToSharedBus">
2572 <xsl:with-param name="iBusStd" select="$busStd_"/>
2573 <xsl:with-param name="iBusName" select="$busName_"/>
2574 <xsl:with-param name="iBifType" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $busName_)]/BUSINTERFACE/@TYPE"/>
2575 <xsl:with-param name="iStackToEast" select="$stackToEast_"/>
2576 <xsl:with-param name="iStackToWest" select="$stackToWest_"/>
2577 <xsl:with-param name="iStackToEast_W" select="$stackToEast_W_"/>
2578 <xsl:with-param name="iStackToWest_W" select="$stackToWest_W_"/>
2579 <xsl:with-param name="iLaneInSpace_X" select="$laneInSpace_X_"/>
2580 <xsl:with-param name="iSpaceSharedBus_Y" select="$spaceSharedBus_Y_"/>
2581 </xsl:call-template>
2587 ===========================================================
2588 Handle non Processor Shared Bus connections.
2589 ===========================================================
2591 <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_)]/@BUS_INDEX">
2592 <xsl:call-template name="BCLaneSpace_NonProcBifToSharedBus">
2593 <xsl:with-param name="iBusStd" select="$busStd_"/>
2594 <xsl:with-param name="iBusName" select="$busName_"/>
2595 <xsl:with-param name="iBifType" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $busName_)]/BUSINTERFACE/@TYPE"/>
2596 <xsl:with-param name="iStackToEast" select="$stackToEast_"/>
2597 <xsl:with-param name="iStackToWest" select="$stackToWest_"/>
2598 <xsl:with-param name="iStackToEast_W" select="$stackToEast_W_"/>
2599 <xsl:with-param name="iStackToWest_W" select="$stackToWest_W_"/>
2600 <xsl:with-param name="iLaneInSpace_X" select="$laneInSpace_X_"/>
2601 <xsl:with-param name="iSpaceSharedBus_Y" select="$spaceSharedBus_Y_"/>
2602 </xsl:call-template>
2608 ===========================================================
2609 Handle connections from processors to Memory UNITs
2610 ===========================================================
2612 <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]">
2613 <xsl:call-template name="BCLaneSpace_ProcBifToMemoryUnit">
2614 <xsl:with-param name="iBusStd" select="$busStd_"/>
2615 <xsl:with-param name="iBusName" select="$busName_"/>
2616 <xsl:with-param name="iBifType" select="BUSCONN/@TYPE"/>
2617 <xsl:with-param name="iStackToEast" select="$stackToEast_"/>
2618 <xsl:with-param name="iStackToWest" select="$stackToWest_"/>
2619 <xsl:with-param name="iStackToEast_W" select="$stackToEast_W_"/>
2620 <xsl:with-param name="iStackToWest_W" select="$stackToWest_W_"/>
2621 <xsl:with-param name="iLaneInSpace_X" select="$laneInSpace_X_"/>
2622 </xsl:call-template>
2629 ===========================================================
2630 Handle generic Point to Point connections
2631 ===========================================================
2633 <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)]">
2634 <xsl:call-template name="BCLaneSpace_PointToPoint">
2635 <xsl:with-param name="iBusStd" select="$busStd_"/>
2636 <xsl:with-param name="iBusName" select="$busName_"/>
2637 <xsl:with-param name="iBifType" select="BUSCONN/@TYPE"/>
2638 <xsl:with-param name="iStackToEast" select="$stackToEast_"/>
2639 <xsl:with-param name="iStackToWest" select="$stackToWest_"/>
2640 <xsl:with-param name="iStackToEast_W" select="$stackToEast_W_"/>
2641 <xsl:with-param name="iStackToWest_W" select="$stackToWest_W_"/>
2642 <xsl:with-param name="iLaneInSpace_X" select="$laneInSpace_X_"/>
2643 </xsl:call-template>
2649 ===========================================================
2650 Handle MultiStack Point to Point connections
2651 ===========================================================
2653 <xsl:when test="@BUSLANE_X and (@IS_MULTISTK) and not(@IS_SBSCONN) and BUSCONN[@BIF_Y and @IS_PROCCONN and @INSTANCE and @BUSINTERFACE]">
2654 <xsl:call-template name="BCLaneSpace_MultiStack_PointToPoint">
2655 <xsl:with-param name="iBusStd" select="$busStd_"/>
2656 <xsl:with-param name="iBusName" select="$busName_"/>
2657 <xsl:with-param name="iBifType" select="BUSCONN/@TYPE"/>
2658 <xsl:with-param name="iStackToEast" select="$stackToEast_"/>
2659 <xsl:with-param name="iStackToWest" select="$stackToWest_"/>
2660 <xsl:with-param name="iStackToEast_W" select="$stackToEast_W_"/>
2661 <xsl:with-param name="iStackToWest_W" select="$stackToWest_W_"/>
2662 <xsl:with-param name="iLaneInSpace_X" select="$laneInSpace_X_"/>
2663 </xsl:call-template>
2667 ===========================================================
2668 Handle Processor to processor connections
2669 ===========================================================
2673 <xsl:when test="(@IS_PROC2PROC and (count(BUSCONN[@BIF_Y and @INSTANCE and @BUSINTERFACE]) = 2))">
2674 <xsl:call-template name="BCLaneSpace_ProcToProc">
2675 <xsl:with-param name="iBusStd" select="$busStd_"/>
2676 <xsl:with-param name="iBusName" select="$busName_"/>
2677 <xsl:with-param name="iBifType" select="BUSCONN/@TYPE"/>
2678 <xsl:with-param name="iStackToEast" select="$stackToEast_"/>
2679 <xsl:with-param name="iStackToWest" select="$stackToWest_"/>
2680 <xsl:with-param name="iStackToEast_W" select="$stackToEast_W_"/>
2681 <xsl:with-param name="iStackToWest_W" select="$stackToWest_W_"/>
2682 <xsl:with-param name="iLaneInSpace_X" select="$laneInSpace_X_"/>
2683 </xsl:call-template>
2687 ===========================================================
2688 Handle connections to the StandAlone MPMC
2689 ===========================================================
2691 <xsl:when test="@BUSLANE_X and (@IS_MPMCCONN) and not(@IS_SBSCONN) and BUSCONN[(@BIF_Y and @INSTANCE and @BUSINTERFACE)]">
2694 <xsl:call-template name="BCLaneSpace_ToStandAloneMPMC">
2695 <xsl:with-param name="iBusStd" select="$busStd_"/>
2696 <xsl:with-param name="iBusName" select="$busName_"/>
2697 <xsl:with-param name="iBifType" select="BUSCONN/@TYPE"/>
2698 <xsl:with-param name="iStackToEast" select="$stackToEast_"/>
2699 <xsl:with-param name="iStackToWest" select="$stackToWest_"/>
2700 <xsl:with-param name="iStackToEast_W" select="$stackToEast_W_"/>
2701 <xsl:with-param name="iStackToWest_W" select="$stackToWest_W_"/>
2702 <xsl:with-param name="iLaneInSpace_X" select="$laneInSpace_X_"/>
2703 </xsl:call-template>
2707 ===========================================================
2708 Handle Split connections, (connections that go between non adjacent stacks)
2709 ===========================================================
2711 <xsl:when test="(BUSCONN[@BIF_Y and @INSTANCE and @BUSINTERFACE and @IS_SPLITCONN])">
2712 <xsl:call-template name="BCLaneSpace_SplitConn">
2713 <xsl:with-param name="iBusStd" select="$busStd_"/>
2714 <xsl:with-param name="iBusName" select="$busName_"/>
2715 <xsl:with-param name="iBifType" select="BUSCONN/@TYPE"/>
2716 <xsl:with-param name="iStackToEast" select="$stackToEast_"/>
2717 <xsl:with-param name="iStackToWest" select="$stackToWest_"/>
2718 <xsl:with-param name="iStackToEast_W" select="$stackToEast_W_"/>
2719 <xsl:with-param name="iStackToWest_W" select="$stackToWest_W_"/>
2720 <xsl:with-param name="iLaneInSpace_X" select="$laneInSpace_X_"/>
2721 </xsl:call-template>
2733 <xsl:template name="Define_BusLaneSpaces">
2735 <xsl:variable name="lastStack_" select="(/EDKSYSTEM/BLKDIAGRAM/@STACK_HORIZ_WIDTH) - 1"/>
2737 <xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/BCLANESPACES/BCLANESPACE[@EAST]">
2738 <xsl:sort select="@EAST" data-type="number"/>
2740 <xsl:call-template name="Define_BusLaneSpace">
2741 <xsl:with-param name="iStackToEast" select="@EAST"/>
2742 </xsl:call-template>
2746 <xsl:message>Last Stack <xsl:value-of select="$lastStack_"/></xsl:message>
2749 <xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/BCLANESPACES/BCLANESPACE[(@WEST = $lastStack_)]">
2750 <xsl:call-template name="Define_BusLaneSpace">
2751 <xsl:with-param name="iStackToWest" select="$lastStack_"/>
2752 </xsl:call-template>