]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/PPC440_DP_FPU_Xilinx_Virtex5_GCC/__xps/.dswkshop/MdtTinySvgBLKD_BusLaneSpaces.xsl
Add FreeRTOS-Plus directory.
[freertos] / FreeRTOS / Demo / PPC440_DP_FPU_Xilinx_Virtex5_GCC / __xps / .dswkshop / MdtTinySvgBLKD_BusLaneSpaces.xsl
1 <?xml version="1.0" standalone="no"?>
2
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">
10            
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"/>
14         
15         
16 <!-- 
17                  ===========================================================
18                         Handle Bucket connections to the shared busses.
19                  ===========================================================
20 -->             
21         
22 <xsl:template name="BCLaneSpace_BucketToSharedBus">     
23         
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"/>        
33         
34 <!--    
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>
41 -->     
42         
43         <xsl:variable name="busColor_">
44                 <xsl:call-template name="F_BusStd2RGB">
45                         <xsl:with-param name="iBusStd" select="$iBusStd"/>
46                 </xsl:call-template>    
47         </xsl:variable>
48         
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"/>
51                                         
52         <xsl:variable name="sbs_bc_y_" select="($iSpaceSharedBus_Y + ($sbs_idx_ * $BLKD_SBS_LANE_H))"/>
53                                         
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"/>
56         
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"/>
61                 </xsl:call-template>            
62         </xsl:variable>
63         
64         <xsl:variable name ="extSpaceWest_W_" select="ceiling($iStackToWest_W div 2)"/>
65         <xsl:variable name ="extSpaceEast_W_" select="ceiling($iStackToEast_W div 2)"/>
66         
67 <!--    
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>
70 -->     
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_"/>
75                 </xsl:call-template>
76         </xsl:variable>
77                                                 
78         <xsl:variable name="sbsStack_H_diff_">
79                 <xsl:choose>
80                         <xsl:when test="   (($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">0</xsl:when>
81                         <xsl:when test="not(($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">
82                                 
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"/>
86                                         </xsl:call-template>
87                                 </xsl:variable>
88                                 
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"/>
92                                         </xsl:call-template>
93                                 </xsl:variable>
94                                 
95 <!--                            
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>
98 -->                             
99                                 <xsl:if test="($stackToWest_AbvSbs_H_ &gt; $stackToEast_AbvSbs_H_)">
100                                         <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
101                                 </xsl:if>       
102                                 
103                                 <xsl:if test="not($stackToWest_AbvSbs_H_ &gt; $stackToEast_AbvSbs_H_)">0</xsl:if>       
104                         </xsl:when>
105                 </xsl:choose>
106         </xsl:variable>
107         
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))"/>
112         
113         
114 <!--    
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>
119 -->     
120         
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_)"/>
124         
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"/>
128                 
129         <xsl:variable name="v_bus_height_" select="(($vert_line_y2_ - $vert_line_y1_) - ceiling($BLKD_BIFC_H div 2))"/>
130         
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"/>
135         
136 <!--    
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>
145 -->     
146         
147         
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_}"/>
154         
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_}"/>
160 <!--    
161 -->
162                 
163 </xsl:template>                                 
164         
165 <!--
166                  ===========================================================
167                         Handle Processor's Shared bus connections.
168                  ===========================================================
169 -->
170         
171 <xsl:template name="BCLaneSpace_ProcBifToSharedBus">    
172         
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"/>        
182         
183 <!--                                            
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>
187 -->
188         
189         <xsl:variable name="busColor_">
190                 <xsl:call-template name="F_BusStd2RGB">
191                         <xsl:with-param name="iBusStd" select="$iBusStd"/>
192                 </xsl:call-template>    
193         </xsl:variable>
194         
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"/>
198         
199         
200 <!--    
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>
203 -->                                             
204         
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"/>
209                                                 
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"/>
212         
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"/>
217                 </xsl:call-template>            
218         </xsl:variable>
219         
220         <xsl:variable name ="extSpaceWest_W_" select="ceiling($iStackToWest_W div 2)"/>
221         <xsl:variable name ="extSpaceEast_W_" select="ceiling($iStackToEast_W div 2)"/>
222         
223         
224 <!--                                            
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>
227         
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>
232 -->                                             
233                                                 
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_"/>
238                 </xsl:call-template>
239         </xsl:variable>
240                                                 
241         
242         <xsl:variable name="procStack_H_diff_">
243                 <xsl:choose>
244                         <xsl:when test="   (($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">0</xsl:when>
245                         <xsl:when test="not(($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">
246                 
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"/>
250                                         </xsl:call-template>
251                                 </xsl:variable>
252                                 
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"/>
256                                         </xsl:call-template>
257                                 </xsl:variable>
258                                 
259 <!--                            
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>
262 -->                             
263                                 <xsl:choose>
264                                         <xsl:when test="(($procshp_hori_idx_ = $iStackToEast) and ($stackToWest_AbvSbs_H_ &gt; $stackToEast_AbvSbs_H_))">
265                                                 <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
266                                         </xsl:when>     
267                                         <xsl:when test="(($procshp_hori_idx_ = $iStackToWest) and ($stackToEast_AbvSbs_H_ &gt; $stackToWest_AbvSbs_H_))">
268                                                 <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
269                                         </xsl:when>     
270                                         <xsl:otherwise>0</xsl:otherwise>        
271                                 </xsl:choose>   
272                         </xsl:when>
273                 </xsl:choose>
274         </xsl:variable>
275         
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)"/>
277 <!--    
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>
281 -->     
282
283         <xsl:variable name="bc_X_">
284                 <xsl:choose>
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))"/>
287 <!--                            
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))"/>
292 -->                             
293                         </xsl:when>
294                         <xsl:when test="$procBifSide_ = '1'">
295                                 <xsl:value-of select="ceiling($BLKD_MOD_W div 2)"/>
296                         </xsl:when>
297                         <xsl:otherwise>0</xsl:otherwise>
298                 </xsl:choose>
299         </xsl:variable>
300                                                 
301         <!-- Place the bus connectijon -->
302         <use   x="{$bc_X_}"   y="{$bc_Y_}"  xlink:href="#{$iBusStd}_busconn_{$procBifType_}"/>
303 <!--    
304 -->     
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))"/>
308         
309 <!--    
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>
312 -->             
313         
314         <xsl:variable name="v_bus_ul_y_">
315                 <xsl:choose>
316                         <xsl:when test="$vert_line_y1_ &gt; $vert_line_y2_">
317                                 <xsl:value-of select="$vert_line_y2_"/>
318                         </xsl:when>
319                         <xsl:when test="$vert_line_y2_ &gt; $vert_line_y1_">
320                                 <xsl:value-of select="$vert_line_y1_"/>
321                         </xsl:when>
322                 </xsl:choose>
323         </xsl:variable> 
324         
325         <xsl:variable name="v_bus_ul_x_">
326                 <xsl:choose>
327                         <xsl:when test="@ORIENTED='WEST'">
328                                 <xsl:value-of select="($vert_line_x_ + $BLKD_MOD_BIF_GAP_H)"/>
329                         </xsl:when>
330                         <xsl:when test="@ORIENTED='EAST'">
331                                 <xsl:value-of select="($vert_line_x_ - $BLKD_MOD_BIF_GAP_H)"/>
332                         </xsl:when>
333                 </xsl:choose>
334         </xsl:variable> 
335                 
336                 
337         <xsl:variable name="v_bus_width_" select="$BLKD_P2P_BUS_W"/>
338         <xsl:variable name="v_bus_height_">
339                 <xsl:choose>
340                         <xsl:when test="$vert_line_y1_ &gt; $vert_line_y2_">
341                                 <xsl:value-of select="($vert_line_y1_ - $vert_line_y2_) - $BLKD_P2P_BUS_W"/>
342                         </xsl:when>
343                         <xsl:when test="$vert_line_y2_ &gt; $vert_line_y1_">
344                                 <xsl:value-of select="($vert_line_y2_ - $vert_line_y1_) - $BLKD_P2P_BUS_W"/>
345                         </xsl:when>
346                 </xsl:choose>
347         </xsl:variable> 
348                 
349         <xsl:variable name="h_bus_ul_x_">
350                 <xsl:choose>
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))"/>
353 <!--                            
354                                 <xsl:value-of select="$v_bus_ul_x_"/>
355 -->     
356                         </xsl:when>
357                         <xsl:when test="@ORIENTED='EAST'">
358                                 <xsl:value-of select="$v_bus_ul_x_"/>
359                         </xsl:when>
360                 </xsl:choose>
361         </xsl:variable> 
362                 
363                 <xsl:variable name="h_bus_ul_y_">
364                         <xsl:choose>
365                                 <xsl:when test="$vert_line_y1_ &gt; $vert_line_y2_">
366                                         <xsl:value-of select="$vert_line_y2_ - ceiling($BLKD_P2P_BUS_W div 2)"/>
367                                 </xsl:when>
368                                 <xsl:when test="$vert_line_y2_ &gt; $vert_line_y1_">
369                                         <xsl:value-of select="$vert_line_y1_ - ceiling($BLKD_P2P_BUS_W div 2)"/>
370                                 </xsl:when>
371                         </xsl:choose>
372                 </xsl:variable> 
373         
374         
375                 <xsl:variable name="h_bus_height_" select="$BLKD_P2P_BUS_W"/>
376                 <xsl:variable name="h_bus_width_">
377                         <xsl:choose>
378                                 <xsl:when test="@ORIENTED='WEST'">
379                                         <xsl:value-of select="$v_bus_ul_x_ - $h_bus_ul_x_ + $BLKD_P2P_BUS_W"/>
380                                 </xsl:when>
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"/>
383                                 </xsl:when>
384                         </xsl:choose>
385                 </xsl:variable> 
386                         
387 <!--                    
388                 <xsl:if test="(@ORIENTED = 'WEST')">
389                 </xsl:if>
390                         
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>
395 -->     
396                         
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_}"/>
402                 
403                 <rect x="{$h_bus_ul_x_}" 
404                           y="{$h_bus_ul_y_}"  
405                           width= "{$h_bus_width_}" 
406                           height="{$h_bus_height_}" 
407                           style="stroke:none; fill:{$busColor_}"/>
408 </xsl:template>                                 
409         
410 <!--
411                  ===========================================================
412                         Handle non Processor Sharedebus connections.
413                  ===========================================================
414 -->
415                                 
416 <xsl:template name="BCLaneSpace_NonProcBifToSharedBus"> 
417         
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"/>        
427         
428                                                 
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))"/>
431 <!--    
432         <xsl:variable name="sbs_bc_y_" select="($G_SharedBus_Y + ($sbs_idx_ * $BLKD_SBS_LANE_H))"/>
433 -->     
434                                                 
435         <xsl:variable name="cmplxInst_" select="BUSCONN/@INSTANCE"/>
436                                                 
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"/>
441                                                 
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"/>
444                                                 
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)"/>
447         
448 <!--                                            
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>
458 -->                                             
459         
460         
461         <xsl:variable name="busColor_">
462                 <xsl:call-template name="F_BusStd2RGB">
463                         <xsl:with-param name="iBusStd" select="$iBusStd"/>
464                 </xsl:call-template>    
465         </xsl:variable> 
466         
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"/>
471                 </xsl:call-template>            
472         </xsl:variable>
473         
474         <xsl:variable name ="extSpaceWest_W_" select="ceiling($iStackToWest_W div 2)"/>
475         <xsl:variable name ="extSpaceEast_W_" select="ceiling($iStackToEast_W div 2)"/>                                         
476         
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_"/>
481                 </xsl:call-template>
482         </xsl:variable>
483         
484 <!--    
485         <xsl:message>Complex shape Y <xsl:value-of select="$cmplxshp_Y_"/></xsl:message>
486 -->     
487         
488         <xsl:variable name="stackToEast_">
489                 <xsl:choose>
490                         <xsl:when test="not($iStackToEast = 'NONE')"><xsl:value-of select="$iStackToEast"/></xsl:when>
491                         <xsl:otherwise>NONE</xsl:otherwise>
492                 </xsl:choose>
493         </xsl:variable> 
494         
495         <xsl:variable name="stackToWest_">
496                 <xsl:choose>
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>
500                 </xsl:choose>
501         </xsl:variable> 
502         
503                                                 
504         <xsl:variable name="cmplxStack_H_diff_">
505                 <xsl:choose>
506                         <xsl:when test="   (($stackToEast_ = 'NONE') or ($stackToWest_ = 'NONE'))">0</xsl:when>
507                         <xsl:when test="not(($stackToEast_ = 'NONE') or ($stackToWest_ = 'NONE'))">
508                                 
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_"/>
512                                         </xsl:call-template>
513                                 </xsl:variable>
514                                 
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_"/>
518                                         </xsl:call-template>
519                                 </xsl:variable>
520                                 
521 <!--                            
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>
524 -->                             
525                                 <xsl:choose>
526                                         <xsl:when test="(($cmplxshp_hori_idx_ = $stackToEast_) and ($stackToWest_AbvSbs_H_ &gt; $stackToEast_AbvSbs_H_))">
527                                                 <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
528                                         </xsl:when>     
529                                         <xsl:when test="(($cmplxshp_hori_idx_ = $stackToWest_) and ($stackToEast_AbvSbs_H_ &gt; $stackToWest_AbvSbs_H_))">
530                                                 <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
531                                         </xsl:when>     
532                                         <xsl:otherwise>0</xsl:otherwise>        
533                                 </xsl:choose>   
534                                                                         
535                         </xsl:when>
536                 </xsl:choose>
537         </xsl:variable>
538         
539         
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)"/>
541         
542         
543 <!--    
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"/>
548 -->     
549         <xsl:variable name="bc_X_">
550                 <xsl:choose>
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))"/>
553                         </xsl:when>
554                         <xsl:when test="$cmplxBifSide_ = '1'">
555                                 <xsl:value-of select="ceiling($BLKD_MOD_W div 2)"/>
556                         </xsl:when>
557                         <xsl:otherwise>0</xsl:otherwise>
558                 </xsl:choose>
559         </xsl:variable> 
560         
561         <use   x="{$bc_X_}"   y="{$bc_Y_}"  xlink:href="#{$iBusStd}_busconn_{$cmplxBifType_}"/>
562         
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))"/>
566         
567         <xsl:variable name="v_bus_ul_y_">
568                 <xsl:choose>
569                         <xsl:when test="$vert_line_y1_ &gt; $vert_line_y2_">
570                                 <xsl:value-of select="$vert_line_y2_"/>
571                         </xsl:when>
572                         <xsl:when test="$vert_line_y2_ &gt; $vert_line_y1_">
573                                 <xsl:value-of select="$vert_line_y1_"/>
574                         </xsl:when>
575                 </xsl:choose>
576         </xsl:variable> 
577         
578         <xsl:variable name="v_bus_ul_x_">
579                 <xsl:choose>
580                         <xsl:when test="@ORIENTED='WEST'">
581                                 <xsl:value-of select="($vert_line_x_ + $BLKD_MOD_BIF_GAP_H)"/>
582                         </xsl:when>
583                         <xsl:when test="@ORIENTED='EAST'">
584                                 <xsl:value-of select="($vert_line_x_ - $BLKD_MOD_BIF_GAP_H)"/>
585                         </xsl:when>
586                 </xsl:choose>
587         </xsl:variable> 
588                 
589         <xsl:variable name="v_bus_width_" select="$BLKD_P2P_BUS_W"/>
590         <xsl:variable name="v_bus_height_">
591                 <xsl:choose>
592                         <xsl:when test="$vert_line_y1_ &gt; $vert_line_y2_">
593                                 <xsl:value-of select="($vert_line_y1_ - $vert_line_y2_) - $BLKD_P2P_BUS_W + 8"/>
594                         </xsl:when>
595                         <xsl:when test="$vert_line_y2_ &gt; $vert_line_y1_">
596                                 <xsl:value-of select="($vert_line_y2_ - $vert_line_y1_) - $BLKD_P2P_BUS_W + 8"/>
597                         </xsl:when>
598                 </xsl:choose>
599         </xsl:variable> 
600                 
601         <xsl:variable name="h_bus_ul_x_">
602                 <xsl:choose>
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))"/>
605                         </xsl:when>
606                         <xsl:when test="@ORIENTED='EAST'">
607                                 <xsl:value-of select="$v_bus_ul_x_"/>
608                         </xsl:when>
609                 </xsl:choose>
610         </xsl:variable> 
611                 
612         <xsl:variable name="h_bus_ul_y_">
613                 <xsl:choose>
614                         
615                         <xsl:when test="($is_blwSbs_ = 'TRUE') and ($vert_line_y1_ &gt; $vert_line_y2_)">
616                                 <xsl:value-of select="$vert_line_y1_ - ceiling($BLKD_P2P_BUS_W div 2)"/>
617                         </xsl:when>
618                         <xsl:when test="($is_blwSbs_ = 'TRUE') and ($vert_line_y2_ &gt; $vert_line_y1_)">
619                                 <xsl:value-of select="$vert_line_y2_ - ceiling($BLKD_P2P_BUS_W div 2)"/>
620                         </xsl:when>
621                         
622                         <xsl:when test="($is_abvSbs_ = 'TRUE') and ($vert_line_y1_ &gt; $vert_line_y2_)">
623                                 <xsl:value-of select="$vert_line_y2_ - ceiling($BLKD_P2P_BUS_W div 2)"/>
624                         </xsl:when>
625                         <xsl:when test="($is_abvSbs_ = 'TRUE') and ($vert_line_y2_ &gt; $vert_line_y1_)">
626                                 <xsl:value-of select="$vert_line_y1_ - ceiling($BLKD_P2P_BUS_W div 2)"/>
627                         </xsl:when>
628                         
629                 </xsl:choose>
630         </xsl:variable> 
631         
632         
633         <xsl:variable name="h_bus_height_" select="$BLKD_P2P_BUS_W"/>
634         <xsl:variable name="h_bus_width_">
635                 <xsl:choose>
636                         <xsl:when test="@ORIENTED='WEST'">
637                                 <xsl:value-of select="$v_bus_ul_x_ - $h_bus_ul_x_ + $BLKD_P2P_BUS_W"/>
638                         </xsl:when>
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"/>
641                         </xsl:when>
642                 </xsl:choose>
643         </xsl:variable> 
644         
645                         
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_}"/>
651                 
652         <rect x="{$h_bus_ul_x_}" 
653                   y="{$h_bus_ul_y_}"  
654                   width= "{$h_bus_width_}" 
655                   height="{$h_bus_height_}" 
656                   style="stroke:none; fill:{$busColor_}"/>
657                 
658 </xsl:template>                                 
659         
660 <!-- 
661                  ===========================================================
662                         Handle connections from processors to Memory UNITs
663                  ===========================================================
664 -->
665         
666         
667 <xsl:template name="BCLaneSpace_ProcBifToMemoryUnit">   
668         
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"/>   
677         
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"/>
682                                                 
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_"/>
687                 </xsl:call-template>
688         </xsl:variable>
689         
690         <xsl:variable name="busColor_">
691                 <xsl:call-template name="F_BusStd2RGB">
692                         <xsl:with-param name="iBusStd" select="$iBusStd"/>
693                 </xsl:call-template>    
694         </xsl:variable> 
695         
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"/>
700                 </xsl:call-template>            
701         </xsl:variable>
702         
703         <xsl:variable name ="extSpaceWest_W_" select="ceiling($iStackToWest_W div 2)"/>
704         <xsl:variable name ="extSpaceEast_W_" select="ceiling($iStackToEast_W div 2)"/>                                                 
705         
706         <xsl:variable name="cmplxStack_H_diff_">
707                 <xsl:choose>
708                         <xsl:when test="   (($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">0</xsl:when>
709                         <xsl:when test="not(($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">
710                                 
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"/>
714                                         </xsl:call-template>
715                                 </xsl:variable>
716                                 
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"/>
720                                         </xsl:call-template>
721                                 </xsl:variable>
722                                 
723 <!--                            
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>
726 -->                             
727                                 <xsl:choose>
728                                         <xsl:when test="(($mem_procshp_hori_idx_ = $iStackToEast) and ($stackToWest_AbvSbs_H_ &gt; $stackToEast_AbvSbs_H_))">
729                                                 <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
730                                         </xsl:when>     
731                                         <xsl:when test="(($mem_procshp_hori_idx_ = $iStackToWest) and ($stackToEast_AbvSbs_H_ &gt; $stackToWest_AbvSbs_H_))">
732                                                 <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
733                                         </xsl:when>     
734                                         <xsl:otherwise>0</xsl:otherwise>        
735                                 </xsl:choose>   
736                                                                         
737                         </xsl:when>
738                 </xsl:choose>
739         </xsl:variable>
740                                                 
741         <xsl:variable name="mem_procStack_H_diff_">
742                 <xsl:choose>
743                         <xsl:when test="   (($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">0</xsl:when>
744                         <xsl:when test="not(($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">
745         
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"/>
749                                         </xsl:call-template>
750                                 </xsl:variable>
751                                 
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"/>
755                                         </xsl:call-template>
756                                 </xsl:variable>
757                                 
758 <!--                            
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>
761 -->                             
762                         <xsl:choose>
763                                 <xsl:when test="(($mem_procshp_hori_idx_ = $iStackToEast) and ($stackToWest_AbvSbs_H_ &gt; $stackToEast_AbvSbs_H_))">
764                                         <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
765                                 </xsl:when>     
766                                 <xsl:when test="(($mem_procshp_hori_idx_ = $iStackToWest) and ($stackToEast_AbvSbs_H_ &gt; $stackToWest_AbvSbs_H_))">
767                                         <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
768                                 </xsl:when>     
769                                 <xsl:otherwise>0</xsl:otherwise>        
770                         </xsl:choose>   
771                                                                         
772                 </xsl:when>
773         </xsl:choose>
774   </xsl:variable>
775                                                 
776         <!-- Store the conns in a variable -->  
777         <xsl:variable name="memConn_heights_">
778
779                 <xsl:for-each select="BUSCONN">
780                                                                 
781                         <xsl:variable name="bifName_"       select="@BUSINTERFACE"/>
782                         
783                                                         
784                         <xsl:choose>
785                                 <xsl:when test="@IS_PROCCONN and @BIF_Y">
786                                                         
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_">
793                                                 <xsl:choose>
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))"/>
796                                                         </xsl:when>
797                                                         <xsl:when test="$procBifSide_ = '1'">
798                                                                 <xsl:value-of select="ceiling($BLKD_MOD_W div 2)"/>
799                                                         </xsl:when>
800                                                         <xsl:otherwise>0</xsl:otherwise>
801                                                 </xsl:choose>
802                                         </xsl:variable>
803                                                 
804                                         <MEMCONN X="{$bcProc_X_}" Y="{$bcProc_Y_}" BUSNAME="{$procBusName_}" BUSSTD="{$iBusStd}" TYPE="{$procBifType_}" BIFSIDE="{$procBifSide_}"/>
805                                                                                 
806                                 </xsl:when>
807                                                                         
808                                 <xsl:otherwise>
809                                                                         
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"/>
814                                                                                 
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_"/>
819                                                 </xsl:call-template>
820                                     </xsl:variable>
821                                         
822                                         <xsl:variable name="memcMOD_W_" select="(($G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[MODULE[(@INSTANCE = $memcInstance_)]]/@MODS_W) * $BLKD_MOD_W)"/>
823                                                                                 
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))"/>
825                                         
826                                         <xsl:variable name="memcConn_Y_">
827                                                 <xsl:choose>
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_)"/>
830                                                         </xsl:when>
831                                                         <xsl:otherwise>
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_)"/>
833                                                         </xsl:otherwise>
834                                                 </xsl:choose>
835                                         </xsl:variable>
836                                         
837                                         <xsl:variable name="memcConn_X_">
838                                                 <xsl:choose>
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))"/>
841                                                         </xsl:when>
842                                                         <xsl:when test="$memcBifSide_ = '1'">
843                                                                 <xsl:value-of select="ceiling($memcMOD_W_ div 2)"/>
844                                                         </xsl:when>
845                                                 </xsl:choose>
846                                         </xsl:variable>
847                                                 
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"/>
850                                         
851                                         <MEMCONN X="{$memcConn_X_}" Y="{$memcConn_Y_}" BUSNAME="{$memcBusName_}" BUSSTD="{$iBusStd}" TYPE="{$memcBifType_}" BIFSIDE="{$memcBifSide_}"/>
852                                         
853                                 </xsl:otherwise>
854                         </xsl:choose>
855                 </xsl:for-each>
856         </xsl:variable>
857                                                 
858                                                 
859         <!-- Draw the busconnection and horizontal lines.-->                                            
860         <xsl:for-each select="exsl:node-set($memConn_heights_)/MEMCONN">
861                                                         
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)"/>
864                 
865                 <xsl:variable name="adjusted_X_">
866                         <xsl:choose>
867                                 <xsl:when test="((@X &lt; ($bus_x_ + $BLKD_BUS_ARROW_W)) and (@BIFSIDE ='0'))">
868                                         <xsl:value-of select="(@X + $BLKD_P2P_BUS_W)"/>
869                                 </xsl:when>
870                                 <xsl:otherwise>
871                                         <xsl:value-of select="@X"/>
872                                 </xsl:otherwise>
873                         </xsl:choose>
874                 </xsl:variable>
875                 
876                 <xsl:variable name="h_bus_ul_x_dx_">
877                         <xsl:choose>
878                                 <xsl:when test="((@X &lt; ($bus_x_ + $BLKD_BUS_ARROW_W)) and (@BIFSIDE='0'))">
879                                         <xsl:value-of select="$BLKD_P2P_BUS_W"/>
880                                 </xsl:when>
881                                 <xsl:otherwise>0</xsl:otherwise>
882                         </xsl:choose>
883                 </xsl:variable>
884                 
885                 <xsl:variable name="h_bus_ul_x_">
886                         <xsl:choose>
887                                 <xsl:when test="@BIFSIDE='0'">
888                                         <xsl:value-of select="($bus_x_ - $h_bus_ul_x_dx_)"/>
889                                 </xsl:when>
890                                 <xsl:when test="@BIFSIDE='1'">
891                                         <xsl:value-of select="(@X + $BLKD_BIFC_W + $BLKD_BUS_ARROW_W)"/>
892                                 </xsl:when>
893                         </xsl:choose>
894                 </xsl:variable> 
895                 
896                 <xsl:variable name="h_bus_ul_y_" select="$bus_y_"/>
897         
898                 <xsl:variable name="h_bus_height_" select="$BLKD_P2P_BUS_W"/>
899                 <xsl:variable name="h_bus_width_">
900                         <xsl:choose>
901                                 <xsl:when test="@BIFSIDE='0'">
902                                         <xsl:value-of select="($adjusted_X_ - $bus_x_ - $BLKD_BUS_ARROW_W)"/>
903                                 </xsl:when>
904                                 <xsl:when test="@BIFSIDE='1'">
905                                         <xsl:value-of select="$bus_x_ - $h_bus_ul_x_"/>
906                                 </xsl:when>
907                         </xsl:choose>
908                 </xsl:variable> 
909                 
910                 <!-- Place the bus connection -->
911                 <use   x="{@X}"   y="{@Y}"  xlink:href="#{@BUSSTD}_busconn_{@TYPE}"/>
912                 
913                 <!-- Draw the arrow -->
914                 <xsl:choose>
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"/>
917                         </xsl:when>
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"/>
920                         </xsl:when>
921                 </xsl:choose>
922                 
923                 
924                 <!-- Draw the horizontal part of the bus -->
925                 <rect x="{$h_bus_ul_x_}" 
926                           y="{$h_bus_ul_y_}"  
927                           width= "{$h_bus_width_}" 
928                           height="{$h_bus_height_}" 
929                           style="stroke:none; fill:{$busColor_}"/>
930         </xsl:for-each>
931         
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)"/>
937         
938 <!--  Hack to fix CR473515 -->
939         <xsl:variable name="v_bus_x_dx_">
940                 <xsl:choose> 
941                         <xsl:when test="(($busSide_ = '0') and (($leftmost_x_ - ($bcInSpace_X_ + $BLKD_P2P_BUS_W)) &lt;= $BLKD_P2P_BUS_W))">-4</xsl:when>
942                         <xsl:otherwise><xsl:value-of select="$BLKD_P2P_BUS_W"/></xsl:otherwise>
943                 </xsl:choose>
944         </xsl:variable> 
945         
946         
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_">
949                 <xsl:choose>
950                         <xsl:when test="$busSide_ ='0'">
951                                 <xsl:value-of select="($bcInSpace_X_ + $v_bus_x_dx_)"/>
952                         </xsl:when>
953                         <xsl:when test="$busSide_ ='1'">
954                                 <xsl:value-of select="($bcInSpace_X_ + $BLKD_P2P_BUS_W)"/>
955                         </xsl:when>
956                 </xsl:choose>
957         </xsl:variable> 
958         
959         <!-- Draw the vertical part of the bus -->      
960         <rect x="{$v_bus_x_}" 
961                   y="{$v_bus_y_}"  
962                   width= "{$BLKD_P2P_BUS_W}" 
963                   height="{($busBot_ - $busTop_) + $BLKD_P2P_BUS_W}" 
964                   style="stroke:none; fill:{$busColor_}"/>
965
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_}"/>
973         </xsl:if>
974                           
975 <!--    
976         <xsl:message>v_bus_x  <xsl:value-of select="$v_bus_x_"/></xsl:message>
977 -->     
978
979         <!-- Place the bus label.-->    
980 <!-- 
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_"/>
985         </text> 
986 -->     
987         
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'"/>
993         </xsl:call-template>
994                           
995 </xsl:template>                                 
996         
997         
998 <!-- 
999                  ===========================================================
1000                         Handle generic Point to Point connections
1001                  ===========================================================
1002 -->
1003         
1004 <xsl:template name="BCLaneSpace_PointToPoint">  
1005         
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"/>   
1014         
1015         <xsl:variable name="busColor_">
1016                 <xsl:call-template name="F_BusStd2RGB">
1017                         <xsl:with-param name="iBusStd" select="$iBusStd"/>
1018                 </xsl:call-template>    
1019         </xsl:variable> 
1020         
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>    
1025         </xsl:variable> 
1026         
1027         
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>            
1033         </xsl:variable>
1034         
1035         <xsl:variable name ="extSpaceWest_W_" select="ceiling($iStackToWest_W div 2)"/>
1036         <xsl:variable name ="extSpaceEast_W_" select="ceiling($iStackToEast_W div 2)"/>                                                 
1037         
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"/>
1040                                         
1041         <xsl:variable name="p2pshp_hori_idx_">
1042                 <xsl:choose>
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"/>
1045                         </xsl:when>
1046                         <xsl:otherwise>
1047                                 <xsl:value-of select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $p2pInstance_)])]/@STACK_HORIZ_INDEX"/>
1048                         </xsl:otherwise>
1049                 </xsl:choose>
1050         </xsl:variable>         
1051                                         
1052         <xsl:variable name="p2pshp_vert_idx_">
1053                 <xsl:choose>
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"/>
1056                         </xsl:when>
1057                         <xsl:otherwise>
1058                                 <xsl:value-of select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $p2pInstance_)])]/@SHAPE_VERTI_INDEX"/>
1059                         </xsl:otherwise>
1060                 </xsl:choose>
1061         </xsl:variable>         
1062                                         
1063 <!--                                    
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"/>
1066 -->                                     
1067                                                 
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>
1073         </xsl:variable>
1074                         
1075         <xsl:variable name="cmplxStack_H_diff_">
1076                 <xsl:choose>
1077                         <xsl:when test="   (($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">0</xsl:when>
1078                         <xsl:when test="not(($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">
1079                                 
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>
1084                                 </xsl:variable>
1085                                 
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>
1090                                 </xsl:variable>
1091                                 
1092 <!--                            
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>
1095 -->                             
1096                                 <xsl:choose>
1097                                         <xsl:when test="(($p2pshp_hori_idx_ = $iStackToEast) and ($stackToWest_AbvSbs_H_ &gt; $stackToEast_AbvSbs_H_))">
1098                                                 <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
1099                                         </xsl:when>     
1100                                         <xsl:when test="(($p2pshp_hori_idx_ = $iStackToWest) and ($stackToEast_AbvSbs_H_ &gt; $stackToWest_AbvSbs_H_))">
1101                                                 <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
1102                                         </xsl:when>     
1103                                         <xsl:otherwise>0</xsl:otherwise>        
1104                                 </xsl:choose>   
1105                                                                         
1106                         </xsl:when>
1107                 </xsl:choose>
1108         </xsl:variable>
1109                                                 
1110                                                                                                                                                                 
1111         <xsl:variable name="procStack_H_diff_">
1112                 <xsl:choose>
1113                         <xsl:when test="   (($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">0</xsl:when>
1114                         <xsl:when test="not(($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">
1115                         
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>
1120                                 </xsl:variable>
1121                                 
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>
1126                                 </xsl:variable>
1127                                 
1128 <!--                            
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>
1131 -->                             
1132                                 <xsl:choose>
1133                                         <xsl:when test="(($p2pshp_hori_idx_ = $iStackToEast) and ($stackToWest_AbvSbs_H_ &gt; $stackToEast_AbvSbs_H_))">
1134                                                 <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
1135                                         </xsl:when>     
1136                                         <xsl:when test="(($p2pshp_hori_idx_ = $iStackToWest) and ($stackToEast_AbvSbs_H_ &gt; $stackToWest_AbvSbs_H_))">
1137                                                 <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
1138                                         </xsl:when>     
1139                                         <xsl:otherwise>0</xsl:otherwise>        
1140                                 </xsl:choose>   
1141                                                                         
1142                         </xsl:when>
1143                 </xsl:choose>
1144         </xsl:variable>
1145                                                 
1146         
1147         
1148         <!-- Store the conns in a variable -->  
1149         <xsl:variable name="p2pConn_heights_">
1150         
1151                 <xsl:for-each select="BUSCONN">
1152                                                                         
1153                         <xsl:variable name="bifName_" select="@BUSINTERFACE"/>
1154                                                         
1155                                 <xsl:choose>
1156                                         <xsl:when test="@IS_PROCCONN and @BIF_Y">
1157                                                                                 
1158 <!--                                                                            
1159                                                                                 <xsl:message>Proc <xsl:value-of select="$procInstance_"/></xsl:message>
1160 -->                                                                             
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"/>
1165                                                                                 
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_">
1168                                                         <xsl:choose>
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))"/>
1171                                                                 </xsl:when>
1172                                                                 <xsl:when test="$procBifSide_ = '1'">
1173                                                                         <xsl:value-of select="ceiling($BLKD_MOD_W div 2)"/>
1174                                                                 </xsl:when>
1175                                                                 <xsl:otherwise>0</xsl:otherwise>
1176                                                         </xsl:choose>
1177                                                 </xsl:variable>
1178                                                 
1179                                                 <P2PCONN X="{$bcProc_X_}" Y="{$bcProc_Y_}" BUSNAME= "{$procBusName_}" BUSSTD="{$iBusStd}" TYPE="{$procBifType_}" BIFSIDE="{$procBifSide_}"/>
1180                                                                                 
1181 <!--                                            
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=""/>
1185 -->                                             
1186                                         </xsl:when>
1187                                                                         
1188                                         <xsl:otherwise>
1189                                                                                 
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))"/>
1195                                                                                 
1196 <!--                                                                            
1197                                                 <xsl:message>Memory Instance <xsl:value-of select="$procInstance_"/></xsl:message>
1198 -->                                                                             
1199                                                 
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>
1205                                                 </xsl:variable>
1206                                                                                 
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_">
1211                                                         <xsl:choose>
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))"/>
1214                                                                 </xsl:when>
1215                                                                 <xsl:when test="$modBifSide_ = '1'">
1216                                                                         <xsl:value-of select="ceiling($BLKD_MOD_W div 2)"/>
1217                                                                 </xsl:when>
1218                                                                 <xsl:otherwise>0</xsl:otherwise>
1219                                                         </xsl:choose>
1220                                                 </xsl:variable>
1221                                                 
1222 <!--                                                                            
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_}"/>
1227 -->                                                                             
1228                                                 <P2PCONN X="{$bcMod_X_}" Y="{$bcMod_Y_}" BUSNAME="{$modBusName_}" BUSSTD="{$iBusStd}" TYPE="{$modBifType_}" BIFSIDE="{$modBifSide_}"/>
1229                                                 
1230                                         </xsl:otherwise>
1231                                                                         
1232                                 </xsl:choose>
1233                         </xsl:for-each>
1234                 </xsl:variable>
1235         
1236         
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"/>
1242 <!--    
1243 -->     
1244         <!-- Draw the vertical part of the bus -->      
1245         <xsl:if test="$busStd_ = 'PLBV46_P2P'">
1246                 <rect x="{$bcInSpace_X_ + $BLKD_P2P_BUS_W}" 
1247                           y="{$v_bus_y_}"  
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_}"/>
1251         </xsl:if>
1252         
1253         <xsl:if test="not($busStd_ = 'PLBV46_P2P')">
1254                 <rect x="{$bcInSpace_X_ + $BLKD_P2P_BUS_W}" 
1255                       y="{$v_bus_y_}"  
1256                       width= "{$BLKD_P2P_BUS_W}" 
1257                       height="{($busBot_ - $busTop_) + $BLKD_P2P_BUS_W}" 
1258                       style="stroke:none;fill:{$busColor_}"/>
1259         </xsl:if>
1260         
1261 <!--     -->    
1262         
1263 <!--    
1264                   style="stroke:{$busColor_lt_};stroke-width:1;stroke-opacity:0.9;fill-opacity:2.0;fill:{$busColor_}"/>
1265 -->     
1266
1267         <!-- Place the bus label.-->    
1268 <!-- 
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_"/>
1273         </text> 
1274 -->     
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>
1281                           
1282                 <!-- Draw the busconnection and horizontal lines.-->                                            
1283                 <xsl:for-each select="exsl:node-set($p2pConn_heights_)/P2PCONN">
1284                                                         
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)"/>
1287                 
1288                         <xsl:variable name="h_bus_ul_x_">
1289                                 <xsl:choose>
1290                                         <xsl:when test="@BIFSIDE='0'">
1291                                                 <xsl:value-of select="$bus_x_"/>
1292                                         </xsl:when>
1293                                         <xsl:when test="@BIFSIDE='1'">
1294                                                 <xsl:value-of select="(@X + $BLKD_BIFC_W + $BLKD_BUS_ARROW_W) - 1"/>
1295                                         </xsl:when>
1296                                 </xsl:choose>
1297                         </xsl:variable> 
1298                 
1299                         <xsl:variable name="h_bus_ul_y_" select="$bus_y_"/>
1300         
1301                         <xsl:variable name="h_bus_height_" select="$BLKD_P2P_BUS_W"/>
1302                         <xsl:variable name="h_bus_width_">
1303 <!--                            
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>
1307 -->                             
1308                                 <xsl:choose>
1309                                         <xsl:when test="@BIFSIDE='0'">
1310                                                 <xsl:value-of select="(@X - $bus_x_ - $BLKD_BUS_ARROW_W)"/>
1311                                         </xsl:when>
1312                                         <xsl:when test="@BIFSIDE='1'">
1313                                                 <xsl:value-of select="$bus_x_ - $h_bus_ul_x_ + 1"/>
1314                                         </xsl:when>
1315                                         
1316                                 </xsl:choose>
1317                         </xsl:variable> 
1318                         
1319                         <!-- Draw Bus connection-->
1320                         <use   x="{@X}"   y="{@Y}"  xlink:href="#{@BUSSTD}_busconn_{@TYPE}"/>
1321                         
1322                         <!-- Draw the arrow -->
1323                         <xsl:choose>
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"/>
1326                                 </xsl:when>
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"/>
1329                                 </xsl:when>
1330                                 
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"/>
1333                                 </xsl:when>
1334                                 
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"/>
1337                                 </xsl:when>
1338                                         
1339                         </xsl:choose>
1340                 
1341                         <!-- Draw the horizontal part of the bus -->
1342                         <rect x="{$h_bus_ul_x_}" 
1343                                   y="{$h_bus_ul_y_}"  
1344                                   width= "{$h_bus_width_}" 
1345                                   height="{$h_bus_height_}" 
1346                               style="stroke:none; fill:{$busColor_}"/>
1347                 
1348         </xsl:for-each>
1349                                                 
1350 <!--    
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"/>
1355 -->     
1356         <!-- Draw the vertical part of the bus -->      
1357 <!--    
1358         <rect x="{$bcInSpace_X_ + $P2P_BUS_W}" 
1359                   y="{$v_bus_y_}"  
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_}"/>
1363 -->     
1364         
1365 <!--    
1366                   style="stroke:{$busColor_lt_};stroke-width:1;stroke-opacity:0.9;fill-opacity:2.0;fill:{$busColor_}"/>
1367 -->     
1368         <!-- Place the bus label.-->    
1369 <!--    
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_"/>
1374         </text> 
1375 -->     
1376         
1377                                                 
1378 </xsl:template> 
1379         
1380         
1381                                         
1382 <!-- 
1383                  ===========================================================
1384                         Handle MultiStack Point to Point connections
1385                  ===========================================================
1386 -->
1387                                         
1388 <xsl:template name="BCLaneSpace_MultiStack_PointToPoint">       
1389         
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"/> 
1398         
1399 <!--    
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>
1406 -->     
1407         
1408         <xsl:variable name="busColor_">
1409                 <xsl:call-template name="F_BusStd2RGB">
1410                         <xsl:with-param name="iBusStd" select="$iBusStd"/>
1411                 </xsl:call-template>    
1412         </xsl:variable> 
1413         
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>            
1419         </xsl:variable>
1420         
1421         <xsl:variable name ="extSpaceWest_W_" select="ceiling($iStackToWest_W div 2)"/>
1422         <xsl:variable name ="extSpaceEast_W_" select="ceiling($iStackToEast_W div 2)"/>                                                 
1423         
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))"/>
1426                                         
1427         <xsl:variable name="multiConns_">
1428                                                 
1429                 <xsl:for-each select="BUSCONN">
1430                                                         
1431                         <xsl:variable name="bifName_"      select="@BUSINTERFACE"/>
1432                         <xsl:variable name="multiInstance_" select="@INSTANCE"/>
1433                         <xsl:variable name="mulshp_hori_idx_">
1434                                 <xsl:choose>
1435                                         <xsl:when test="@IS_PROCCONN">
1436                                                 <xsl:value-of select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[(@INSTANCE = $multiInstance_)]/@STACK_HORIZ_INDEX"/>
1437                                         </xsl:when>
1438                                         <xsl:otherwise>
1439                                                 <xsl:value-of select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $multiInstance_)])]/@STACK_HORIZ_INDEX"/>
1440                                         </xsl:otherwise>
1441                                 </xsl:choose>
1442                         </xsl:variable> 
1443                                                         
1444                         <xsl:variable name="mulshp_vert_idx_">
1445                                 <xsl:choose>
1446                                         <xsl:when test="@IS_PROCCONN">
1447                                                 <xsl:value-of select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[(@INSTANCE = $multiInstance_)]/@SHAPE_VERTI_INDEX"/>
1448                                         </xsl:when>
1449                                         <xsl:otherwise>
1450                                                 <xsl:value-of select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $multiInstance_)])]/@SHAPE_VERTI_INDEX"/>
1451                                         </xsl:otherwise>
1452                                 </xsl:choose>
1453                         </xsl:variable> 
1454                                 
1455 <!--                                                    
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>
1458 -->     
1459                                                         
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>
1465                         </xsl:variable>
1466                                                 
1467                         <xsl:variable name="cmplxStack_H_diff_">
1468                                 <xsl:choose>
1469                                         <xsl:when test="   (($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">0</xsl:when>
1470                                         <xsl:when test="not(($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">
1471                                                 
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>
1476                                                 </xsl:variable>
1477                         
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>
1482                                                 </xsl:variable>
1483                                 
1484 <!--                            
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>
1487 -->                             
1488                                                 <xsl:choose>
1489                                                         <xsl:when test="(($mulshp_hori_idx_ = $iStackToEast) and ($stackToWest_AbvSbs_H_ &gt; $stackToEast_AbvSbs_H_))">
1490                                                                         <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
1491                                                         </xsl:when>     
1492                                                         <xsl:when test="(($mulshp_hori_idx_ = $iStackToWest) and ($stackToEast_AbvSbs_H_ &gt; $stackToWest_AbvSbs_H_))">
1493                                                                 <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
1494                                                         </xsl:when>     
1495                                                         <xsl:otherwise>0</xsl:otherwise>        
1496                                                 </xsl:choose>   
1497                                                                         
1498                                         </xsl:when>
1499                                 </xsl:choose>
1500                         </xsl:variable>
1501                                                 
1502                                                                                                                                                                 
1503                         <xsl:variable name="procStack_H_diff_">
1504                                 <xsl:choose>
1505                                         <xsl:when test="   (($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">0</xsl:when>
1506                                         <xsl:when test="not(($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">
1507                         
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>
1512                                                 </xsl:variable>
1513                                 
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>
1518                                                 </xsl:variable>
1519                                 
1520 <!--                            
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>
1523 -->                             
1524                                                 <xsl:choose>
1525                                                         <xsl:when test="(($mulshp_hori_idx_ = $iStackToEast) and ($stackToWest_AbvSbs_H_ &gt; $stackToEast_AbvSbs_H_))">
1526                                                                 <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
1527                                                         </xsl:when>     
1528                                                         <xsl:when test="(($mulshp_hori_idx_ = $iStackToWest) and ($stackToEast_AbvSbs_H_ &gt; $stackToWest_AbvSbs_H_))">
1529                                                                 <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
1530                                                         </xsl:when>     
1531                                                         <xsl:otherwise>0</xsl:otherwise>        
1532                                                 </xsl:choose>   
1533                                                                         
1534                                         </xsl:when>
1535                                 </xsl:choose>
1536                         </xsl:variable>
1537                                                         
1538                         <xsl:choose>
1539                                                         
1540                                 <xsl:when test="@IS_PROCCONN and @BIF_Y">
1541                                                                                 
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))"/>
1543                                                                                 
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"/>
1547                                                                                 
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_)"/>
1549                                         
1550                                         <xsl:variable name="bcProc_X_">
1551                                                 <xsl:choose>
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))"/>
1554 <!--
1555                                                                 <xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_ - ceiling($BLKD_MOD_W div 2))"/>
1556 -->                                                     
1557                                                         </xsl:when>
1558                                                         <xsl:when test="$procBifSide_ = '1'">
1559                                                                 <xsl:value-of select="ceiling($BLKD_MOD_W div 2)"/>
1560                                                         </xsl:when>
1561                                                         <xsl:otherwise>0</xsl:otherwise>
1562                                                 </xsl:choose>
1563                                         </xsl:variable>
1564                                         
1565                                         <MULTICONN X="{$bcProc_X_}" Y="{$bcProc_Y_}" BUSNAME="{$procBusName_}" BUSSTD="{$iBusStd}" TYPE="{$procBifType_}" BIFSIDE="{$procBifSide_}" IS_PROC="TRUE"/>
1566                                 </xsl:when>
1567                                                                         
1568                                 <xsl:otherwise>
1569                                                                                         
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)"/>
1575                                                                 
1576                                         <xsl:variable name="modBc_Y_">
1577                                                 <xsl:choose>
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_))"/>
1580                                                         </xsl:when>
1581                                                         <xsl:otherwise>
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))"/>
1583                                                         </xsl:otherwise>
1584                                                 </xsl:choose>
1585                                         </xsl:variable>   
1586 <!--                                    
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>
1590 -->     
1591                                         
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"/>
1594                                         
1595 <!--                                    
1596                                         <xsl:variable name="bcMod_Y_"     select="($mulshp_Y_ + $modBc_Y_ + ceiling($BLKD_BIF_H div 2) - ceiling($BLKD_BIFC_H div 2))"/>
1597 -->                                     
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_)"/>
1599                                         
1600                                         <xsl:variable name="bcMod_X_">
1601                                                 <xsl:choose>
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))"/>
1604 <!-- 
1605  -->                                                    
1606                                                         </xsl:when>
1607                                                         <xsl:when test="$modBifSide_ = '1'">
1608                                                                 <xsl:value-of select="ceiling($memcMOD_W_ div 2)"/>
1609                                                         </xsl:when>
1610                                                         <xsl:otherwise>0</xsl:otherwise>
1611                                                 </xsl:choose>
1612                                         </xsl:variable>
1613                                                 
1614                                         
1615                                         <MULTICONN X="{$bcMod_X_}" Y="{$bcMod_Y_}" BUSNAME="{$modBusName_}" BUSSTD="{$iBusStd}" TYPE="{$modBifType_}" BIFSIDE="{$modBifSide_}" IS_MOD="TRUE"/>
1616 <!--                                    
1617                                         <MULTICONN X="{$bcInSpace_X_}" Y="{$bcMod_Y_}" BUSSTD="{$busStd}" TYPE="{$modBifType_}" BIFSIDE="{$modBifSide_}"/>
1618 -->                                     
1619                                                 
1620                                         </xsl:otherwise>
1621                                 </xsl:choose>   
1622                         </xsl:for-each>
1623                 </xsl:variable>
1624                                         
1625                 <!-- Draw the busconnection and horizontal lines.-->                                            
1626                 <xsl:for-each select="exsl:node-set($multiConns_)/MULTICONN">
1627                                                         
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)"/>
1630                 
1631 <!--
1632                                                 <xsl:value-of select="$bus_x_"/>
1633 -->                                             
1634                         <xsl:variable name="h_bus_ul_x_">
1635                                 <xsl:choose>
1636                                         <xsl:when test="@BIFSIDE='0' and (@IS_PROC)">
1637                                                 <xsl:value-of select="$bus_x_ - $BLKD_P2P_BUS_W"/>
1638                                         </xsl:when>
1639                                         <xsl:when test="@BIFSIDE='0' and (@IS_MOD)">
1640                                                 <xsl:value-of select="$bus_x_ - $BLKD_P2P_BUS_W"/>
1641                                         </xsl:when>
1642                                         <xsl:when test="@BIFSIDE='1' and (@IS_PROC)">
1643                                                 <xsl:value-of select="(@X + $BLKD_BIFC_W + $BLKD_BUS_ARROW_W)"/>
1644                                         </xsl:when>
1645                                         <xsl:when test="@BIFSIDE='1' and (@IS_MOD)">
1646                                                 <xsl:value-of select="(@X + $BLKD_BIFC_W + $BLKD_BUS_ARROW_W)"/>
1647                                         </xsl:when>
1648                                 </xsl:choose>
1649                         </xsl:variable> 
1650                 
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_">
1654 <!--
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>
1658 -->                             
1659                                 <xsl:choose>
1660                                         <xsl:when test="@BIFSIDE='0' and (@IS_PROC)">
1661                                                 <xsl:value-of select="(@X - $bus_x_ - $BLKD_P2P_BUS_W)"/>
1662                                         </xsl:when>
1663                                         <xsl:when test="@BIFSIDE='0' and (@IS_MOD)">
1664                                                 <xsl:value-of select="(@X - $bus_x_ - $BLKD_BUS_ARROW_W)"/>
1665                                         </xsl:when>
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"/>
1668                                         </xsl:when>
1669                                         <xsl:when test="@BIFSIDE='1' and (@IS_MOD)">
1670                                                 <xsl:value-of select="$BLKD_P2P_BUS_W + $BLKD_BUS_ARROW_W "/>
1671 <!--
1672                                                 <xsl:value-of select="$bus_x_ - $h_bus_ul_x_"/>
1673   -->
1674                                         </xsl:when>
1675                                 </xsl:choose>
1676                         </xsl:variable>         
1677                         
1678                         
1679 <!-- 
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>
1683  -->                    
1684                         
1685                         <!-- Draw the horizontal part of the bus -->
1686                         <xsl:if test="($h_bus_width_ &gt; 0)">  
1687                                 <rect x="{$h_bus_ul_x_}" 
1688                                           y="{$h_bus_ul_y_}"  
1689                                           width= "{$h_bus_width_}" 
1690                                           height="{$h_bus_height_}" 
1691                                       style="stroke:none; fill:{$busColor_}"/>
1692                         </xsl:if>     
1693                 
1694                         
1695                         <!-- Draw the arrow -->
1696                         <xsl:choose>
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"/>
1699                                 </xsl:when>
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"/>
1702                                 </xsl:when>
1703                                 
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"/>
1706                                 </xsl:when>
1707                                 
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"/>
1710                                 </xsl:when>
1711                                         
1712                         </xsl:choose>
1713                 
1714                         <use   x="{@X}"   y="{@Y}"  xlink:href="#{@BUSSTD}_busconn_{@TYPE}"/>
1715                         
1716                                                         
1717                 </xsl:for-each>
1718                                                 
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"/>
1723         
1724 <!-- 
1725 -->               
1726                 <!-- Draw the vertical part of the bus -->      
1727                 <rect x="{$bcInSpace_X_ - $BLKD_P2P_BUS_W}" 
1728                           y="{$v_bus_y_}"  
1729                       width= "{$BLKD_P2P_BUS_W}" 
1730                       height="{($busBot_ - $busTop_) + $BLKD_P2P_BUS_W}" 
1731                       style="stroke:none; fill:{$busColor_}"/>
1732 <!-- 
1733                 <xsl:message>v_bus_x_  <xsl:value-of select="($bcInSpace_X_ + $BLKD_P2P_BUS_W)"/></xsl:message>
1734  -->                  
1735  
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>
1743                           
1744 </xsl:template> 
1745         
1746         
1747 <!-- 
1748                  ===========================================================
1749                         Handle Processor to processor connections
1750                  ===========================================================
1751 -->
1752 <xsl:template name="BCLaneSpace_ProcToProc">    
1753         
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"/>  
1762         
1763         <xsl:variable name="busColor_">
1764                 <xsl:call-template name="F_BusStd2RGB">
1765                         <xsl:with-param name="iBusStd" select="$iBusStd"/>
1766                 </xsl:call-template>    
1767         </xsl:variable> 
1768         
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>            
1774         </xsl:variable>
1775         
1776         <xsl:variable name ="extSpaceWest_W_" select="ceiling($iStackToWest_W div 2)"/>
1777         <xsl:variable name ="extSpaceEast_W_" select="ceiling($iStackToEast_W div 2)"/>                                                 
1778                 
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_">
1782         
1783         <xsl:for-each select="BUSCONN">
1784                                         
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>
1794                 </xsl:variable>
1795                                                 
1796                 <xsl:variable name="procStack_H_diff_">
1797                         <xsl:choose>
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'))">
1800                         
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>
1805                                         </xsl:variable>
1806                                 
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>
1811                                         </xsl:variable>
1812 <!--                            
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>
1815 -->                             
1816                                         <xsl:choose>
1817                                                 <xsl:when test="(($procshp_hori_idx_ = $pr2pr_StackToEast_) and ($stackToWest_AbvSbs_H_ &gt; $stackToEast_AbvSbs_H_))">
1818                                                         <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
1819                                                 </xsl:when>     
1820                                                 <xsl:when test="(($procshp_hori_idx_ = $pr2pr_StackToWest_) and ($stackToEast_AbvSbs_H_ &gt; $stackToWest_AbvSbs_H_))">
1821                                                         <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
1822                                                 </xsl:when>     
1823                                                 <xsl:otherwise>0</xsl:otherwise>        
1824                                         </xsl:choose>   
1825                                                                                 
1826                                 </xsl:when>
1827                         </xsl:choose>
1828                 </xsl:variable>
1829                                                 
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))"/>
1832                                                                                         
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"/>
1835                                                                         
1836                 <xsl:variable name="bcInSpace_X_">
1837                         <xsl:choose>
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>
1840                         </xsl:choose>
1841                 </xsl:variable> 
1842                                                         
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_)"/>
1844 <!--                                                    
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>
1847 -->                                                     
1848                                                                                 
1849                                 <PR2PRCONN X="{$bcInSpace_X_}" Y="{$bcProc_Y_}" BUSSTD="{$iBusStd}" TYPE="{$procBifType_}" BIFSIDE="{$procBifSide_}" SHAPE_ID="{$procshp_hori_idx_}"/>
1850                         </xsl:for-each>
1851                 </xsl:variable>
1852                                         
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)"/>
1855                                 
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>            
1860                 </xsl:variable> 
1861                                         
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>            
1866                 </xsl:variable> 
1867                                         
1868 <!--                                    
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>
1871 -->                                     
1872                 <xsl:variable name="pr2pr_space_W_" select="($pr2pr_stack_Rght_X_ - $pr2pr_stack_Left_X_)"/>
1873                                                 
1874                                         
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>
1879                 </xsl:variable>
1880                                         
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>
1885                 </xsl:variable>
1886                                         
1887 <!--                                    
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>
1891 -->                                     
1892         
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)"/>
1895                                         
1896                                         <!-- Draw the busconnections .-->                                               
1897                 <xsl:for-each select="exsl:node-set($proc2procConn_heights_)/PR2PRCONN">
1898                         <xsl:variable name="conn_X_">
1899                                 <xsl:choose>
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>
1902 <!--                                                                    
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>
1904 -->     
1905                                 </xsl:choose>
1906                         </xsl:variable> 
1907                                                         
1908                                                 
1909                         <use   x="{$conn_X_}"   y="{@Y}"  xlink:href="#{@BUSSTD}_busconn_{@TYPE}"/>
1910                 </xsl:for-each>
1911                                         
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)"/>
1915                                         
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)"/>
1918                                                 
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>
1928                                 
1929 </xsl:template> 
1930         
1931 <!-- 
1932                  ===========================================================
1933                         Handle connections to the MPMC
1934                  ===========================================================
1935 -->
1936 <xsl:template name="BCLaneSpace_ToStandAloneMPMC">      
1937         
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"/>   
1946         
1947         <xsl:variable name="busColor_">
1948                 <xsl:call-template name="F_BusStd2RGB">
1949                         <xsl:with-param name="iBusStd" select="$iBusStd"/>
1950                 </xsl:call-template>    
1951         </xsl:variable> 
1952         
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>    
1957         </xsl:variable> 
1958         
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>            
1964         </xsl:variable>
1965         
1966         <xsl:variable name ="extSpaceWest_W_" select="ceiling($iStackToWest_W div 2)"/>
1967         <xsl:variable name ="extSpaceEast_W_" select="ceiling($iStackToEast_W div 2)"/>                                                 
1968         
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"/>
1971                                         
1972         <xsl:variable name="p2pshp_hori_idx_">
1973                 <xsl:choose>
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"/>
1976                         </xsl:when>
1977                         <xsl:otherwise>
1978                                 <xsl:value-of select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $p2pInstance_)])]/@STACK_HORIZ_INDEX"/>
1979                         </xsl:otherwise>
1980                 </xsl:choose>
1981         </xsl:variable>         
1982                                         
1983         <xsl:variable name="p2pshp_vert_idx_">
1984                 <xsl:choose>
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"/>
1987                         </xsl:when>
1988                         <xsl:otherwise>
1989                                 <xsl:value-of select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $p2pInstance_)])]/@SHAPE_VERTI_INDEX"/>
1990                         </xsl:otherwise>
1991                 </xsl:choose>
1992         </xsl:variable>         
1993                                         
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>
1999         </xsl:variable>
2000                         
2001         <xsl:variable name="cmplxStack_H_diff_">
2002                 <xsl:choose>
2003                         <xsl:when test="   (($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">0</xsl:when>
2004                         <xsl:when test="not(($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">
2005                                 
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>
2010                                 </xsl:variable>
2011                                 
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>
2016                                 </xsl:variable>
2017                                 
2018 <!--                            
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>
2021 -->                             
2022                                 
2023                                 <xsl:choose>
2024                                         <xsl:when test="(($p2pshp_hori_idx_ = $iStackToEast) and ($stackToWest_AbvSbs_H_ &gt; $stackToEast_AbvSbs_H_))">
2025                                                 <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
2026                                         </xsl:when>     
2027                                         <xsl:when test="(($p2pshp_hori_idx_ = $iStackToWest) and ($stackToEast_AbvSbs_H_ &gt; $stackToWest_AbvSbs_H_))">
2028                                                 <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
2029                                         </xsl:when>     
2030                                         <xsl:otherwise>0</xsl:otherwise>        
2031                                 </xsl:choose>   
2032                                                                         
2033                         </xsl:when>
2034                 </xsl:choose>
2035         </xsl:variable>
2036                                                 
2037         <xsl:variable name="procStack_H_diff_">
2038                 <xsl:choose>
2039                         <xsl:when test="   (($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">0</xsl:when>
2040                         <xsl:when test="not(($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">
2041                         
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>
2046                                 </xsl:variable>
2047                                 
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>
2052                                 </xsl:variable>
2053                                 
2054 <!--                            
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>
2057 -->                             
2058                                 <xsl:choose>
2059                                         <xsl:when test="(($p2pshp_hori_idx_ = $iStackToEast) and ($stackToWest_AbvSbs_H_ &gt; $stackToEast_AbvSbs_H_))">
2060                                                 <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
2061                                         </xsl:when>     
2062                                         <xsl:when test="(($p2pshp_hori_idx_ = $iStackToWest) and ($stackToEast_AbvSbs_H_ &gt; $stackToWest_AbvSbs_H_))">
2063                                                 <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
2064                                         </xsl:when>     
2065                                         <xsl:otherwise>0</xsl:otherwise>        
2066                                 </xsl:choose>   
2067                                                                         
2068                         </xsl:when>
2069                 </xsl:choose>
2070         </xsl:variable>
2071                                                 
2072         
2073         
2074         <!-- Store the conns in a variable -->  
2075         <xsl:variable name="p2pConn_heights_">
2076         
2077                 <xsl:for-each select="BUSCONN">
2078                                                                         
2079                         <xsl:variable name="bifName_" select="@BUSINTERFACE"/>
2080                                                         
2081                                 <xsl:choose>
2082                                         <xsl:when test="@IS_PROCCONN and @BIF_Y">
2083                                                                                 
2084 <!--                                                                            
2085                                                                                 <xsl:message>Proc <xsl:value-of select="$procInstance_"/></xsl:message>
2086 -->                                                                             
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"/>
2091                                                                                 
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_">
2094                                                         <xsl:choose>
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))"/>
2097                                                                 </xsl:when>
2098                                                                 <xsl:when test="$procBifSide_ = '1'">
2099                                                                         <xsl:value-of select="ceiling($BLKD_MOD_W div 2)"/>
2100                                                                 </xsl:when>
2101                                                                 <xsl:otherwise>0</xsl:otherwise>
2102                                                         </xsl:choose>
2103                                                 </xsl:variable>
2104                                                 
2105                                                 <P2PCONN X="{$bcProc_X_}" Y="{$bcProc_Y_}" BUSNAME= "{$procBusName_}" BUSSTD="{$iBusStd}" TYPE="{$procBifType_}" BIFSIDE="{$procBifSide_}"/>
2106                                                                                 
2107                                         </xsl:when>
2108                                                                         
2109                                         <xsl:otherwise>
2110                                                                                 
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))"/>
2116                                                                                 
2117 <!--                                                                            
2118                                                 <xsl:message>Memory Instance <xsl:value-of select="$procInstance_"/></xsl:message>
2119 -->                                                                             
2120                                                 
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>
2126                                                 </xsl:variable>
2127                                                                                 
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_">
2132                                                         <xsl:choose>
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))"/>
2135                                                                 </xsl:when>
2136                                                                 <xsl:when test="$modBifSide_ = '1'">
2137                                                                         <xsl:value-of select="ceiling($BLKD_MOD_W div 2)"/>
2138                                                                 </xsl:when>
2139                                                                 <xsl:otherwise>0</xsl:otherwise>
2140                                                         </xsl:choose>
2141                                                 </xsl:variable>
2142                                                 
2143                                                 <P2PCONN X="{$bcMod_X_}" Y="{$bcMod_Y_}" BUSNAME="{$modBusName_}" BUSSTD="{$iBusStd}" TYPE="{$modBifType_}" BIFSIDE="{$modBifSide_}"/>
2144                                                 
2145                                         </xsl:otherwise>
2146                                                                         
2147                                 </xsl:choose>
2148                         </xsl:for-each>
2149                 </xsl:variable>
2150         
2151         
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)"/>
2155         
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"/>
2158         
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">
2163                                                         
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)"/>
2166                 
2167                         <xsl:variable name="h_bus_ul_x_">
2168                                 <xsl:choose>
2169                                         <xsl:when test="@BIFSIDE='0'">
2170                                                 <xsl:value-of select="$bus_x_"/>
2171                                         </xsl:when>
2172                                         <xsl:when test="@BIFSIDE='1'">
2173                                                 <xsl:value-of select="(@X + $BLKD_BIFC_W + $BLKD_BUS_ARROW_W) - 1"/>
2174                                         </xsl:when>
2175                                 </xsl:choose>
2176                         </xsl:variable> 
2177                 
2178                         <xsl:variable name="h_bus_ul_y_" select="$bus_y_"/>
2179         
2180                         <xsl:variable name="h_bus_height_" select="$BLKD_P2P_BUS_W"/>
2181                         <xsl:variable name="h_bus_width_">
2182                                 <xsl:choose>
2183                                         <xsl:when test="@BIFSIDE='0'">
2184                                                 <xsl:value-of select="(@X - $bus_x_ - $BLKD_BUS_ARROW_W)"/>
2185                                         </xsl:when>
2186                                         <xsl:when test="@BIFSIDE='1'">
2187                                                 <xsl:value-of select="$bus_x_ - $h_bus_ul_x_ + 1"/>
2188                                         </xsl:when>
2189                                         
2190                                 </xsl:choose>
2191                         </xsl:variable> 
2192                         
2193                         <!-- Draw Bus connection-->
2194                         <use   x="{@X}"   y="{@Y}"  xlink:href="#{@BUSSTD}_busconn_{@TYPE}"/>
2195                         
2196                         <!-- Draw the arrow -->
2197                         <xsl:choose>
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"/>
2200                                 </xsl:when>
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"/>
2203                                 </xsl:when>
2204                                 
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"/>
2207                                 </xsl:when>
2208                                 
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"/>
2211                                 </xsl:when>
2212                                         
2213                         </xsl:choose>
2214                 
2215                         <!-- Draw the horizontal part of the bus -->
2216                         <rect x="{$h_bus_ul_x_}" 
2217                                   y="{$h_bus_ul_y_}"  
2218                                   width= "{$h_bus_width_}" 
2219                                   height="{$h_bus_height_}" 
2220                                 
2221                               style="stroke:none; fill:{$busColor_}"/>
2222                         
2223                         <!-- 
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.
2226                         -->
2227                         <xsl:variable name="v_bus_ul_x_">
2228                                 <xsl:choose>
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>
2231                                 </xsl:choose>
2232                         </xsl:variable>
2233                         
2234                         <rect x="{$v_bus_ul_x_}" 
2235                                   y="0"  
2236                                   width= "{$BLKD_P2P_BUS_W}" 
2237                                   height="{$h_bus_ul_y_}"  
2238                               style="stroke:none; fill:{$busColor_}"/>
2239         </xsl:for-each>
2240                                                 
2241 </xsl:template> 
2242         
2243         
2244                                 
2245 <!-- 
2246          ======================================================================
2247      Handle Split connections, (connections that go between adjacent stacks)
2248          ======================================================================
2249 -->
2250         
2251 <xsl:template name="BCLaneSpace_SplitConn">     
2252         
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"/> 
2261         
2262         <xsl:variable name="busColor_">
2263                 <xsl:call-template name="F_BusStd2RGB">
2264                         <xsl:with-param name="iBusStd" select="$iBusStd"/>
2265                 </xsl:call-template>    
2266         </xsl:variable> 
2267         
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>            
2273         </xsl:variable>
2274         
2275         <xsl:variable name ="extSpaceWest_W_" select="ceiling($iStackToWest_W div 2)"/>
2276         <xsl:variable name ="extSpaceEast_W_" select="ceiling($iStackToEast_W div 2)"/>                                                 
2277                         
2278                                         
2279         <xsl:variable name="bifName_"      select="BUSCONN/@BUSINTERFACE"/>
2280         <xsl:variable name="shpInstance_"  select="BUSCONN/@INSTANCE"/>
2281                                         
2282 <!--                                    
2283                         <xsl:message>Found a split connection on <xsl:value-of select="$shpInstance_"/></xsl:message>   
2284 -->                                     
2285                                                 
2286                                         
2287                 <xsl:variable name="shp_hori_idx_">
2288                                                 
2289                         <xsl:choose>
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"/>
2292                                 </xsl:when>
2293                                                         
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"/>
2296                                 </xsl:when>
2297                                 <xsl:otherwise>_unknown_</xsl:otherwise>
2298                         </xsl:choose>           
2299                                                 
2300                 </xsl:variable> 
2301                                         
2302                 <xsl:variable name="shp_vert_idx_">
2303                                                 
2304                         <xsl:choose>
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"/>
2307                                 </xsl:when>
2308                                                         
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"/>
2311                                 </xsl:when>
2312                                 <xsl:otherwise>_unknown_</xsl:otherwise>
2313                         </xsl:choose>           
2314                                                 
2315                 </xsl:variable> 
2316                                         
2317                 <xsl:variable name="splitshp_Width_">
2318                                                 
2319                         <xsl:choose>
2320                                 <xsl:when  test="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[(@INSTANCE = $shpInstance_)]">
2321                                         <xsl:value-of select="$BLKD_MOD_W"/>
2322                                 </xsl:when>
2323                                                 
2324                                 <xsl:when  test="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $shpInstance_)])]/@MODS_W">
2325 <!--                                                            
2326                                                                 <xsl:message>Using mods width on <xsl:value-of select="$shpInstance_"/></xsl:message>
2327 -->                                                             
2328                                         <xsl:value-of select="($G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $shpInstance_)])]/@MODS_W * $BLKD_MOD_W)"/>
2329                                 </xsl:when>
2330                                 <xsl:otherwise>
2331                                         <xsl:value-of select="$BLKD_MOD_W"/>
2332                                 </xsl:otherwise>
2333                         </xsl:choose>           
2334                                                 
2335                 </xsl:variable> 
2336                                         
2337 <!--                                    
2338                                         <xsl:message>Found width of <xsl:value-of select="$splitshp_Width_"/></xsl:message>
2339 -->                                     
2340         
2341                                         
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>
2347                 </xsl:variable>
2348                                         
2349                                                 
2350                 <xsl:variable name="splitStack_H_diff_">
2351                         <xsl:choose>
2352                                 <xsl:when test="   (($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">0</xsl:when>
2353                                 <xsl:when test="not(($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">
2354         
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>
2359                                         </xsl:variable>
2360                                 
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>
2365                                         </xsl:variable>
2366                                 
2367                                         <xsl:choose>
2368                                                 <xsl:when test="(($shp_hori_idx_ = $iStackToEast) and ($stackToWest_AbvSbs_H_ &gt; $stackToEast_AbvSbs_H_))">
2369                                                         <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
2370                                                 </xsl:when>     
2371                                                 <xsl:when test="(($shp_hori_idx_ = $iStackToWest) and ($stackToEast_AbvSbs_H_ &gt; $stackToWest_AbvSbs_H_))">
2372                                                         <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
2373                                                 </xsl:when>     
2374                                                 <xsl:otherwise>0</xsl:otherwise>        
2375                                         </xsl:choose>   
2376                                                                                 
2377                                 </xsl:when>
2378                         </xsl:choose>
2379                 </xsl:variable>
2380                                                 
2381                                         
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"/>
2386                                                                         
2387                 <xsl:variable name="bcInSpace_X_">
2388                         <xsl:choose>
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>
2391                         </xsl:choose>
2392                                                                 
2393                 </xsl:variable> 
2394                                         
2395                 <xsl:variable name="bcBus_X_">
2396                         <xsl:choose>
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>
2399                         </xsl:choose>
2400                 </xsl:variable> 
2401                                                         
2402                 <xsl:variable name="bcSplit_Y_">
2403                         <xsl:choose>
2404                                 <xsl:when test="(BUSCONN/@IS_MEMCONN) and (($splitBusStd_ = 'LMB') or ($splitBusStd_ = 'OCM'))">
2405 <!--                                                            
2406                                         <xsl:message>Found memory conn split connection on <xsl:value-of select="$shpInstance_"/> </xsl:message>
2407 -->     
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_)"/>
2409                                 </xsl:when>     
2410                                 <xsl:otherwise>
2411                                         <xsl:value-of select="($splitshp_Y_ + $splitBif_Y_ + ceiling($BLKD_BIF_H div 2) - ceiling($BLKD_BIFC_H div 2) + $splitStack_H_diff_)"/>
2412                                 </xsl:otherwise>
2413                         </xsl:choose>
2414                 </xsl:variable>    
2415                                         
2416         <use   x="{$bcInSpace_X_}"   y="{$bcSplit_Y_}"  xlink:href="#{@BUSSTD}_busconn_{$splitBifType_}"/>
2417                                         
2418                         
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>
2427                                         
2428         
2429 </xsl:template> 
2430         
2431         
2432 <xsl:template name="Define_BusLaneSpace"> 
2433         
2434         <xsl:param name="iStackToEast"  select="'NONE'"/>
2435         <xsl:param name="iStackToWest"  select="'NONE'"/>
2436         
2437 <!--    
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>
2440 -->
2441         
2442         <xsl:variable name="stackToEast_">
2443                 <xsl:choose>
2444                         <xsl:when test="not($iStackToEast = 'NONE')"><xsl:value-of select="$iStackToEast"/></xsl:when>
2445                         <xsl:otherwise>NONE</xsl:otherwise>
2446                 </xsl:choose>
2447         </xsl:variable> 
2448         
2449         <xsl:variable name="stackToWest_">
2450                 <xsl:choose>
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>
2454                 </xsl:choose>
2455         </xsl:variable> 
2456         
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>
2462         </xsl:variable> 
2463         
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>
2469         </xsl:variable> 
2470         
2471         
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>            
2478         </xsl:variable>
2479         
2480         <xsl:variable name="spaceSharedBus_Y_" select="$spaceAbvSbs_H_ + $BLKD_PROC2SBS_GAP"/>
2481         
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>            
2487         </xsl:variable>
2488         
2489         <xsl:variable name = "stackToWest_W_">
2490                 <xsl:choose>
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>
2496                         </xsl:when>
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>
2501                         </xsl:when>
2502                         <xsl:otherwise>0</xsl:otherwise>
2503                 </xsl:choose>
2504         </xsl:variable>
2505         
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>
2510         </xsl:variable>
2511         
2512         <xsl:variable name ="extSpaceWest_W_" select="ceiling($stackToWest_W_ div 2)"/>
2513         <xsl:variable name ="extSpaceEast_W_" select="ceiling($stackToEast_W_ div 2)"/>
2514         
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]">
2517                                 
2518                                 <xsl:variable name="busStd_"          select="@BUSSTD"/>
2519                                 <xsl:variable name="busName_"         select="@BUSNAME"/>
2520                                 <xsl:variable name="lane_X_"          select="@BUSLANE_X"/>
2521
2522                                 <xsl:variable name="eastBusLane_X_">
2523                                         <xsl:choose>
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>
2526                                         </xsl:choose>
2527                                 </xsl:variable>
2528                                 
2529                                 <xsl:variable name="laneInSpace_X_">
2530                                         <xsl:choose>
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)"/>
2533                                            </xsl:when>
2534                                            <xsl:otherwise><xsl:value-of select="($extSpaceWest_W_ + (@BUSLANE_X * $BLKD_BUS_LANE_W))"/></xsl:otherwise>
2535                                         </xsl:choose>
2536                                 </xsl:variable> 
2537                                                 
2538                          
2539                                 <xsl:variable name="busColor_">
2540                                         <xsl:call-template name="F_BusStd2RGB">
2541                                                 <xsl:with-param name="iBusStd" select="@BUSSTD"/>
2542                                         </xsl:call-template>    
2543                                 </xsl:variable>
2544                                 
2545                                 <xsl:choose>
2546 <!-- 
2547                  ===========================================================
2548                         Handle Bucket connections to the shared busses.
2549                  ===========================================================
2550 -->
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>    
2563                                         </xsl:when>
2564                                         
2565 <!--
2566                  ===========================================================
2567                         Handle Processor's Shared bus connections.
2568                  ===========================================================
2569 -->
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>    
2582 <!--                                            
2583 -->     
2584                                         </xsl:when>     
2585                                         
2586 <!--
2587                  ===========================================================
2588                         Handle non Processor Shared Bus connections.
2589                  ===========================================================
2590 -->
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>    
2603 <!--                                            
2604 -->     
2605                                         </xsl:when>                                     
2606                                         
2607 <!-- 
2608                  ===========================================================
2609                         Handle connections from processors to Memory UNITs
2610                  ===========================================================
2611 -->                     
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>    
2623 <!--                                            
2624 -->     
2625                                         </xsl:when>                             
2626                                 
2627                                         
2628 <!-- 
2629                  ===========================================================
2630                         Handle generic Point to Point connections
2631                  ===========================================================
2632 -->
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>    
2644 <!--                                            
2645 -->     
2646                                         </xsl:when>                             
2647                                         
2648 <!-- 
2649                  ===========================================================
2650                         Handle MultiStack Point to Point connections
2651                  ===========================================================
2652 -->
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>    
2664                                         </xsl:when>                             
2665                                         
2666 <!-- 
2667                  ===========================================================
2668                         Handle Processor to processor connections
2669                  ===========================================================
2670 -->
2671 <!--                                    
2672 -->     
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>    
2684                                 </xsl:when>
2685                                         
2686 <!-- 
2687                  ===========================================================
2688                         Handle connections to the StandAlone MPMC
2689                  ===========================================================
2690 -->
2691                         <xsl:when test="@BUSLANE_X and (@IS_MPMCCONN) and not(@IS_SBSCONN) and BUSCONN[(@BIF_Y and @INSTANCE and @BUSINTERFACE)]">
2692 <!--                            
2693 -->                             
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>    
2704                         </xsl:when>
2705                                         
2706 <!-- 
2707                  ===========================================================
2708                         Handle Split connections, (connections that go between non adjacent stacks)
2709                  ===========================================================
2710 -->
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>    
2722 <!--                            
2723 -->     
2724                         </xsl:when>
2725                                         
2726                 </xsl:choose>
2727                                                                 
2728         </xsl:for-each>
2729         </g>
2730                         
2731 </xsl:template> 
2732         
2733 <xsl:template name="Define_BusLaneSpaces"> 
2734         
2735         <xsl:variable name="lastStack_" select="(/EDKSYSTEM/BLKDIAGRAM/@STACK_HORIZ_WIDTH) - 1"/>
2736         
2737         <xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/BCLANESPACES/BCLANESPACE[@EAST]">
2738                 <xsl:sort select="@EAST" data-type="number"/>
2739                         
2740                 <xsl:call-template name="Define_BusLaneSpace">
2741                         <xsl:with-param name="iStackToEast"  select="@EAST"/>
2742                 </xsl:call-template>
2743         </xsl:for-each> 
2744         
2745 <!--    
2746         <xsl:message>Last Stack <xsl:value-of select="$lastStack_"/></xsl:message>
2747 -->     
2748         
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>
2753         </xsl:for-each> 
2754                         
2755 </xsl:template>
2756                 
2757 </xsl:stylesheet>