]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/PPC405_Xilinx_Virtex4_GCC/__xps/.dswkshop/MdtSvgBLKD_BusLaneSpaces.xsl
Add FreeRTOS-Plus directory.
[freertos] / FreeRTOS / Demo / PPC405_Xilinx_Virtex4_GCC / __xps / .dswkshop / MdtSvgBLKD_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:exsl="http://exslt.org/common"
7            xmlns:xlink="http://www.w3.org/1999/xlink">
8                 
9 <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"
10                doctype-public="-//W3C//DTD SVG 1.0//EN"
11                    doctype-system="http://www.w3.org/TR/SVG/DTD/svg10.dtd"/>
12         
13         
14 <!-- 
15                  ===========================================================
16                         Handle Bucket connections to the shared busses.
17                  ===========================================================
18 -->             
19         
20 <xsl:template name="BCLaneSpace_BucketToSharedBus">     
21         
22         <xsl:param name="iBusStd"           select="'NONE'"/>   
23         <xsl:param name="iBusName"          select="'NONE'"/>   
24         <xsl:param name="iBifRank"          select="'NONE'"/>   
25         <xsl:param name="iStackToEast"      select="'NONE'"/>   
26         <xsl:param name="iStackToWest"      select="'NONE'"/>   
27         <xsl:param name="iStackToEast_W"    select="0"/>        
28         <xsl:param name="iStackToWest_W"    select="0"/>        
29         <xsl:param name="iLaneInSpace_X"    select="0"/>        
30         <xsl:param name="iSpaceSharedBus_Y" select="0"/>        
31         
32 <!--    
33         <xsl:message>Stack To East <xsl:value-of select="$iStackToEast"/></xsl:message>
34         <xsl:message>Stack to West <xsl:value-of select="$iStackToWest"/></xsl:message>
35         <xsl:message>Stack to East Width <xsl:value-of select="$iStackToEast_W"/></xsl:message>
36         <xsl:message>Stack to West Width <xsl:value-of select="$iStackToWest_W"/></xsl:message>
37         <xsl:message>Shared Bus Y <xsl:value-of select="$iSpaceSharedBus_Y"/></xsl:message>
38         <xsl:message>Lane in space X <xsl:value-of select="$iLaneInSpace_X"/></xsl:message>
39 -->     
40         
41         <xsl:variable name="busColor_">
42                 <xsl:call-template name="BusType2Color">
43                         <xsl:with-param name="iBusType" select="$iBusStd"/>
44                 </xsl:call-template>    
45         </xsl:variable>
46         
47         <xsl:variable name="sbs_idx_"  select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE= $iBusName)]/@BUSINDEX"/>
48         <xsl:variable name="sbs_name_" select="/EDKSYSTEM/BLKDSHAPES/SBSBUCKETS/SBSBUCKET[(@BUSINDEX = $sbs_idx_)]/@BUSNAME"/>
49                                         
50         <xsl:variable name="sbs_bc_y_" select="($iSpaceSharedBus_Y + ($sbs_idx_ * $BLKD_SBS_LANE_H))"/>
51                                         
52         <xsl:variable name="bktshp_hori_idx_" select="/EDKSYSTEM/BLKDSHAPES/SBSBUCKETS/SBSBUCKET[(@BUSINDEX = $sbs_idx_)]/@STACK_HORIZ_INDEX"/>
53         <xsl:variable name="bktshp_vert_idx_" select="/EDKSYSTEM/BLKDSHAPES/SBSBUCKETS/SBSBUCKET[(@BUSINDEX = $sbs_idx_)]/@SHAPE_VERTI_INDEX"/>
54         
55         <xsl:variable name="space_W_">
56                 <xsl:call-template name="_calc_Space_Width"> 
57                         <xsl:with-param name="iStackToEast"  select="$iStackToEast"/>
58                         <xsl:with-param name="iStackToWest"  select="$iStackToWest"/>
59                 </xsl:call-template>            
60         </xsl:variable>
61         
62         <xsl:variable name ="extSpaceWest_W_" select="ceiling($iStackToWest_W div 2)"/>
63         <xsl:variable name ="extSpaceEast_W_" select="ceiling($iStackToEast_W div 2)"/>
64         
65 <!--    
66         <xsl:message>Ext Shape to West <xsl:value-of select="$extSpaceWest_W_"/></xsl:message>
67         <xsl:message>Ext Shape to East <xsl:value-of select="$extSpaceEast_W_"/></xsl:message>
68 -->     
69         <xsl:variable name="bktshp_Y_">
70                 <xsl:call-template name="_calc_Stack_Shape_Y">
71                         <xsl:with-param name="iHorizIdx"  select="$bktshp_hori_idx_"/>
72                         <xsl:with-param name="iVertiIdx"  select="$bktshp_vert_idx_"/>
73                 </xsl:call-template>
74         </xsl:variable>
75                                                 
76         <xsl:variable name="sbsStack_H_diff_">
77                 <xsl:choose>
78                         <xsl:when test="   (($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">0</xsl:when>
79                         <xsl:when test="not(($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">
80                                 
81                                 <xsl:variable name="stackToWest_AbvSbs_H_">
82                                         <xsl:call-template name="_calc_Stack_AbvSbs_Height">
83                                                 <xsl:with-param name="iStackIdx"  select="$iStackToWest"/>
84                                         </xsl:call-template>
85                                 </xsl:variable>
86                                 
87                                 <xsl:variable name="stackToEast_AbvSbs_H_">
88                                         <xsl:call-template name="_calc_Stack_AbvSbs_Height">
89                                                 <xsl:with-param name="iStackIdx"  select="$iStackToEast"/>
90                                         </xsl:call-template>
91                                 </xsl:variable>
92                                 
93 <!--                            
94                                 <xsl:message>stack to west H <xsl:value-of select="$stackToWest_AbvSbs_H_"/></xsl:message>
95                                 <xsl:message>stack to east H <xsl:value-of select="$stackToEast_AbvSbs_H_"/></xsl:message>
96 -->                             
97                                 <xsl:if test="($stackToWest_AbvSbs_H_ &gt; $stackToEast_AbvSbs_H_)">
98                                         <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
99                                 </xsl:if>       
100                                 
101                                 <xsl:if test="not($stackToWest_AbvSbs_H_ &gt; $stackToEast_AbvSbs_H_)">0</xsl:if>       
102                         </xsl:when>
103                 </xsl:choose>
104         </xsl:variable>
105         
106         <xsl:variable name="vert_line_x_"   select="($iLaneInSpace_X  +  ceiling($BLKD_BIFC_W div 2))"/>
107         <xsl:variable name="vert_line_y1_"  select="($iSpaceSharedBus_Y   + ($sbs_idx_ * $BLKD_SBS_LANE_H) + ceiling($BLKD_BIFC_W div 2))"/>
108         <xsl:variable name="vert_line_y2_"  select="($bktshp_Y_ + ceiling($BLKD_MOD_W div 2) + $sbsStack_H_diff_)"/>
109         <xsl:variable name="bcInSpace_X_"   select="($iLaneInSpace_X  +  ceiling($BLKD_BIFC_W div 2) - ceiling($BLKD_BUS_ARROW_W div 2))"/>
110         
111         
112 <!--    
113         <xsl:message>Shared Bus Y <xsl:value-of select="$G_SharedBus_Y"/></xsl:message>
114         <xsl:message>Vert Bus Y <xsl:value-of select="$vert_line_y1_"/></xsl:message>
115         <xsl:message>vert y1 <xsl:value-of select="$vert_line_y1_"/></xsl:message>
116         <xsl:message>vert y2 <xsl:value-of select="$vert_line_y2_"/></xsl:message>
117 -->     
118         
119         <xsl:variable name="horz_line_y_"   select="$vert_line_y2_"/>
120         <xsl:variable name="horz_line_x1_"  select="$vert_line_x_"/>
121         <xsl:variable name="horz_line_x2_"  select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_)"/>
122         
123         <xsl:variable name="v_bus_ul_x_"   select="$vert_line_x_"/>
124         <xsl:variable name="v_bus_ul_y_"   select="$vert_line_y1_"/>
125         <xsl:variable name="v_bus_width_"  select="$BLKD_P2P_BUS_W"/>
126                 
127         <xsl:variable name="v_bus_height_" select="(($vert_line_y2_ - $vert_line_y1_) - ceiling($BLKD_BIFC_H div 2))"/>
128         
129         <xsl:variable name="h_bus_ul_x_"   select="$v_bus_ul_x_"/>
130         <xsl:variable name="h_bus_ul_y_"   select="$vert_line_y2_   - $BLKD_BIFC_H + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_P2P_BUS_W div 2)"/>
131         <xsl:variable name="h_bus_width_"  select="ceiling($space_W_ div 2) + $extSpaceEast_W_"/>
132         <xsl:variable name="h_bus_height_" select="$BLKD_P2P_BUS_W"/>
133         
134 <!--    
135         <xsl:variable name="h_bus_width_"  select="($space_W_ + ceiling(($extSpaceWest_W_ + $extSpaceEast_W_) div 2) - $BLKD_BIFC_W)"/>
136         <xsl:message>v bus x <xsl:value-of select="$v_bus_ul_x_"/></xsl:message>
137         <xsl:message>v bus y <xsl:value-of select="$v_bus_ul_y_"/></xsl:message>
138         <xsl:message>v bus w <xsl:value-of select="$v_bus_width_"/></xsl:message>
139         <xsl:message>v bus y1 <xsl:value-of select="$vert_line_y1_"/></xsl:message>
140         <xsl:message>v bus y2 <xsl:value-of select="$vert_line_y2_"/></xsl:message>
141         <xsl:message>v bus h <xsl:value-of select="$v_bus_height_"/></xsl:message>
142         <xsl:message>h bus w <xsl:value-of select="$h_bus_width_"/></xsl:message>
143 -->     
144         
145         
146         <!-- Draw rectangular parts of the bus -->
147         <rect x="{$v_bus_ul_x_}" 
148                   y="{$v_bus_ul_y_ - 2}"  
149                   width= "{$v_bus_width_}" 
150                   height="{$v_bus_height_}" 
151                   style="stroke:none; fill:{$busColor_}"/>
152         
153         <rect x="{$h_bus_ul_x_}" 
154                   y="{$h_bus_ul_y_ - 5}"  
155                   width= "{$h_bus_width_}" 
156                   height="{$h_bus_height_}" 
157                   style="stroke:none; fill:{$busColor_}"/>
158 <!--    
159 -->
160                 
161 </xsl:template>                                 
162         
163 <!--
164                  ===========================================================
165                         Handle Processor's Shared bus connections.
166                  ===========================================================
167 -->
168         
169 <xsl:template name="BCLaneSpace_ProcBifToSharedBus">    
170         
171         <xsl:param name="iBusStd"           select="'NONE'"/>   
172         <xsl:param name="iBusName"          select="'NONE'"/>   
173         <xsl:param name="iBifRank"          select="'NONE'"/>   
174         <xsl:param name="iStackToEast"      select="'NONE'"/>   
175         <xsl:param name="iStackToWest"      select="'NONE'"/>   
176         <xsl:param name="iStackToEast_W"    select="0"/>        
177         <xsl:param name="iStackToWest_W"    select="0"/>        
178         <xsl:param name="iLaneInSpace_X"    select="0"/>        
179         <xsl:param name="iSpaceSharedBus_Y" select="0"/>        
180         
181 <!--                                            
182         <xsl:message>Proc diff  <xsl:value-of select="$procStack_H_diff_"/></xsl:message>
183         <xsl:message>Proc inst  <xsl:value-of select="$procInst_"/></xsl:message>
184         <xsl:message>Proc Bif Name <xsl:value-of select="$procBifName_"/></xsl:message>
185         <xsl:message>Proc Bif Rank <xsl:value-of select="$procBifRank_"/></xsl:message>
186 -->
187         
188         <xsl:variable name="busColor_">
189                 <xsl:call-template name="BusType2Color">
190                         <xsl:with-param name="iBusType" select="$iBusStd"/>
191                 </xsl:call-template>    
192         </xsl:variable>
193         
194         <xsl:variable name="sbs_idx_"  select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE= $iBusName)]/@BUSINDEX"/>
195         <xsl:variable name="sbs_bc_y_" select="($iSpaceSharedBus_Y + ($sbs_idx_ * $BLKD_SBS_LANE_H))"/>
196         <xsl:variable name="procInst_" select="BUSCONN/@INSTANCE"/>
197         
198         
199 <!--    
200         <xsl:message>Shared Bus Idx <xsl:value-of select="$sbs_idx_"/></xsl:message>
201         <xsl:message>Proc inst  <xsl:value-of select="$procInst_"/></xsl:message>
202 -->                                             
203         
204         <xsl:variable name="procBif_Y_"    select="((($BLKD_BIF_H + $BLKD_MOD_BIF_GAP_V) * BUSCONN/@BIF_Y) + ($BLKD_MOD_LANE_H + $BLKD_MOD_LABEL_H + $BLKD_MOD_BIF_GAP_V))"/>
205         <xsl:variable name="procBifName_"  select="BUSCONN/@BUSINTERFACE"/>
206         <xsl:variable name="procBifSide_"  select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $procInst_)]/BUSINTERFACE[(@NAME = $procBifName_)]/@BIF_X"/>
207         <xsl:variable name="procBifRank_"  select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $procInst_)]/BUSINTERFACE[(@NAME = $procBifName_)]/@BIFRANK"/>
208                                                 
209         <xsl:variable name="procshp_hori_idx_" select="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $procInst_)]/@STACK_HORIZ_INDEX"/>
210         <xsl:variable name="procshp_vert_idx_" select="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $procInst_)]/@SHAPE_VERTI_INDEX"/>
211         
212         <xsl:variable name="space_W_">
213                 <xsl:call-template name="_calc_Space_Width"> 
214                         <xsl:with-param name="iStackToEast"  select="$iStackToEast"/>
215                         <xsl:with-param name="iStackToWest"  select="$iStackToWest"/>
216                 </xsl:call-template>            
217         </xsl:variable>
218         
219         <xsl:variable name ="extSpaceWest_W_" select="ceiling($iStackToWest_W div 2)"/>
220         <xsl:variable name ="extSpaceEast_W_" select="ceiling($iStackToEast_W div 2)"/>
221         
222                                                 
223 <!--                                            
224         <xsl:message>Stack horiz  <xsl:value-of select="$procshp_hori_idx_"/></xsl:message>
225         <xsl:message>Stack verti  <xsl:value-of select="$procshp_vert_idx_"/></xsl:message>
226         <xsl:message>Proc Bif Y   <xsl:value-of select="$procBif_Y_"/></xsl:message>
227 -->                                             
228                                                 
229         <xsl:variable name="procshp_Y_">
230                 <xsl:call-template name="_calc_Stack_Shape_Y">
231                         <xsl:with-param name="iHorizIdx"  select="$procshp_hori_idx_"/>
232                         <xsl:with-param name="iVertiIdx"  select="$procshp_vert_idx_"/>
233                 </xsl:call-template>
234         </xsl:variable>
235                                                 
236         
237         <xsl:variable name="procStack_H_diff_">
238                 <xsl:choose>
239                         <xsl:when test="   (($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">0</xsl:when>
240                         <xsl:when test="not(($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">
241                 
242                                 <xsl:variable name="stackToWest_AbvSbs_H_">
243                                         <xsl:call-template name="_calc_Stack_AbvSbs_Height">
244                                                 <xsl:with-param name="iStackIdx"  select="$iStackToWest"/>
245                                         </xsl:call-template>
246                                 </xsl:variable>
247                                 
248                                 <xsl:variable name="stackToEast_AbvSbs_H_">
249                                         <xsl:call-template name="_calc_Stack_AbvSbs_Height">
250                                                 <xsl:with-param name="iStackIdx"  select="$iStackToEast"/>
251                                         </xsl:call-template>
252                                 </xsl:variable>
253                                 
254 <!--                            
255                                 <xsl:message>stack to west H <xsl:value-of select="$stackToWest_AbvSbs_H_"/></xsl:message>
256                                 <xsl:message>stack to east H <xsl:value-of select="$stackToEast_AbvSbs_H_"/></xsl:message>
257 -->                             
258                                 <xsl:choose>
259                                         <xsl:when test="(($procshp_hori_idx_ = $iStackToEast) and ($stackToWest_AbvSbs_H_ &gt; $stackToEast_AbvSbs_H_))">
260                                                 <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
261                                         </xsl:when>     
262                                         <xsl:when test="(($procshp_hori_idx_ = $iStackToWest) and ($stackToEast_AbvSbs_H_ &gt; $stackToWest_AbvSbs_H_))">
263                                                 <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
264                                         </xsl:when>     
265                                         <xsl:otherwise>0</xsl:otherwise>        
266                                 </xsl:choose>   
267                         </xsl:when>
268                 </xsl:choose>
269         </xsl:variable>
270         
271         <xsl:variable name="bc_Y_"  select="($procshp_Y_ + $procBif_Y_ + ceiling($BIF_H div 2) + $procStack_H_diff_) - ceiling($BLKD_BIFC_H div 2)"/>
272 <!--    
273         <xsl:variable name="bc_x_"  select="($laneInSpace_X +  ceiling($BLKD_BIFC_W div 2))"/>
274         <xsl:variable name="bc_x_"  select="0"/>
275 -->     
276         <xsl:variable name="bc_X_">
277                 <xsl:choose>
278                         <xsl:when test="$procBifSide_ = '0'">
279                                 <xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_ - (ceiling($BLKD_MOD_W div 2) + $BLKD_BIFC_W))"/>
280 <!--                            
281                                 <xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_ - ceiling($BLKD_MOD_W div 2))"/>
282                                 <xsl:value-of select="($space_W_ -  ceiling($BLKD_MOD_W div 2))"/>
283 -->                             
284                         </xsl:when>
285                         <xsl:when test="$procBifSide_ = '1'">
286                                 <xsl:value-of select="ceiling($BLKD_MOD_W div 2)"/>
287                         </xsl:when>
288                         <xsl:otherwise>0</xsl:otherwise>
289                 </xsl:choose>
290         </xsl:variable>
291                                                 
292         <!-- Place the bus connection -->
293         <use   x="{$bc_X_}"   y="{$bc_Y_}"  xlink:href="#{$iBusStd}_busconn_{$procBifRank_}"/>
294                                                 
295         
296         <xsl:variable name="vert_line_x_"   select="($iLaneInSpace_X +  ceiling($BLKD_BIFC_W div 2))"/>
297         <xsl:variable name="vert_line_y1_"  select="($procshp_Y_ + $procBif_Y_ + ceiling($BLKD_BIF_H div 2) + $procStack_H_diff_)"/>
298         <xsl:variable name="vert_line_y2_"  select="($iSpaceSharedBus_Y + ($sbs_idx_ * $BLKD_SBS_LANE_H) + ceiling($BLKD_BIFC_W div 2))"/>
299         
300 <!--    
301         <xsl:message>Vert line Y1 <xsl:value-of select="$vert_line_y1_"/></xsl:message>
302         <xsl:message>Vert line Y2 <xsl:value-of select="$vert_line_y2_"/></xsl:message>
303 -->             
304         
305         <xsl:variable name="v_bus_ul_y_">
306                 <xsl:choose>
307                         <xsl:when test="$vert_line_y1_ &gt; $vert_line_y2_">
308                                 <xsl:value-of select="$vert_line_y2_"/>
309                         </xsl:when>
310                         <xsl:when test="$vert_line_y2_ &gt; $vert_line_y1_">
311                                 <xsl:value-of select="$vert_line_y1_"/>
312                         </xsl:when>
313                 </xsl:choose>
314         </xsl:variable> 
315         
316         <xsl:variable name="v_bus_ul_x_">
317                 <xsl:choose>
318                         <xsl:when test="@ORIENTED='WEST'">
319                                 <xsl:value-of select="($vert_line_x_ + $BLKD_MOD_BIF_GAP_H)"/>
320                         </xsl:when>
321                         <xsl:when test="@ORIENTED='EAST'">
322                                 <xsl:value-of select="($vert_line_x_ - $BLKD_MOD_BIF_GAP_H)"/>
323                         </xsl:when>
324                 </xsl:choose>
325         </xsl:variable> 
326                 
327                 
328         <xsl:variable name="v_bus_width_" select="$BLKD_P2P_BUS_W"/>
329         <xsl:variable name="v_bus_height_">
330                 <xsl:choose>
331                         <xsl:when test="$vert_line_y1_ &gt; $vert_line_y2_">
332                                 <xsl:value-of select="($vert_line_y1_ - $vert_line_y2_) - $BLKD_P2P_BUS_W"/>
333                         </xsl:when>
334                         <xsl:when test="$vert_line_y2_ &gt; $vert_line_y1_">
335                                 <xsl:value-of select="($vert_line_y2_ - $vert_line_y1_) - $BLKD_P2P_BUS_W"/>
336                         </xsl:when>
337                 </xsl:choose>
338         </xsl:variable> 
339                 
340         <xsl:variable name="h_bus_ul_x_">
341                 <xsl:choose>
342                         <xsl:when test="@ORIENTED='WEST'">
343                                 <xsl:value-of select="($bc_X_ + $BLKD_BIFC_W - ceiling(($BLKD_BIFC_W - $BLKD_BIFC_Wi) div 2))"/>
344 <!--                            
345                                 <xsl:value-of select="$v_bus_ul_x_"/>
346 -->     
347                         </xsl:when>
348                         <xsl:when test="@ORIENTED='EAST'">
349                                 <xsl:value-of select="$v_bus_ul_x_"/>
350                         </xsl:when>
351                 </xsl:choose>
352         </xsl:variable> 
353                 
354                 <xsl:variable name="h_bus_ul_y_">
355                         <xsl:choose>
356                                 <xsl:when test="$vert_line_y1_ &gt; $vert_line_y2_">
357                                         <xsl:value-of select="$vert_line_y2_ - ceiling($BLKD_P2P_BUS_W div 2)"/>
358                                 </xsl:when>
359                                 <xsl:when test="$vert_line_y2_ &gt; $vert_line_y1_">
360                                         <xsl:value-of select="$vert_line_y1_ - ceiling($BLKD_P2P_BUS_W div 2)"/>
361                                 </xsl:when>
362                         </xsl:choose>
363                 </xsl:variable> 
364         
365         
366                 <xsl:variable name="h_bus_height_" select="$BLKD_P2P_BUS_W"/>
367                 <xsl:variable name="h_bus_width_">
368                         <xsl:choose>
369                                 <xsl:when test="@ORIENTED='WEST'">
370                                         <xsl:value-of select="$v_bus_ul_x_ - $h_bus_ul_x_ + $BLKD_P2P_BUS_W"/>
371                                 </xsl:when>
372                                 <xsl:when test="@ORIENTED='EAST'">
373                                         <xsl:value-of select="($bc_X_ - $v_bus_ul_x_) + ceiling(($BLKD_BIFC_W - $BLKD_BIFC_Wi) div 2) + 1"/>
374                                 </xsl:when>
375                         </xsl:choose>
376                 </xsl:variable> 
377                         
378 <!--                    
379                 <xsl:if test="(@ORIENTED = 'WEST')">
380                 </xsl:if>
381                         
382                 <xsl:message>bc_X_  <xsl:value-of select="$bc_X_"/></xsl:message>
383                 <xsl:message>v_bus_ul_x  <xsl:value-of select="$v_bus_ul_x_"/></xsl:message>
384                 <xsl:message>h_bus_width <xsl:value-of select="$h_bus_width_"/></xsl:message>
385                 <xsl:message>h_bus_ul_y  <xsl:value-of select="$h_bus_ul_y_"/></xsl:message>
386 -->     
387                         
388                 <rect x="{$v_bus_ul_x_}" 
389                           y="{$v_bus_ul_y_ + 2}"  
390                           width= "{$v_bus_width_}" 
391                           height="{$v_bus_height_}" 
392                           style="stroke:none; fill:{$busColor_}"/>
393                 
394                 <rect x="{$h_bus_ul_x_}" 
395                           y="{$h_bus_ul_y_}"  
396                           width= "{$h_bus_width_}" 
397                           height="{$h_bus_height_}" 
398                           style="stroke:none; fill:{$busColor_}"/>
399                 
400 <!--                                            
401                 <xsl:message>Proc diff  <xsl:value-of select="$procStack_H_diff_"/></xsl:message>
402                 <xsl:message>Proc inst  <xsl:value-of select="$procInst_"/></xsl:message>
403                 <xsl:message>Proc Bif Name <xsl:value-of select="$procBifName_"/></xsl:message>
404                 <xsl:message>Proc Bif Rank <xsl:value-of select="$procBifRank_"/></xsl:message>
405 -->
406         
407 </xsl:template>                                 
408         
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="iBusName"          select="'NONE'"/>   
420         <xsl:param name="iBifRank"          select="'NONE'"/>   
421         <xsl:param name="iStackToEast"      select="'NONE'"/>   
422         <xsl:param name="iStackToWest"      select="'NONE'"/>   
423         <xsl:param name="iStackToEast_W"    select="0"/>        
424         <xsl:param name="iStackToWest_W"    select="0"/>        
425         <xsl:param name="iLaneInSpace_X"    select="0"/>        
426         <xsl:param name="iSpaceSharedBus_Y" select="0"/>        
427         
428                                                 
429         <xsl:variable name="sbs_idx_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE= $iBusName)]/@BUSINDEX"/>
430         <xsl:variable name="sbs_bc_y_" select="($iSpaceSharedBus_Y + ($sbs_idx_ * $BLKD_SBS_LANE_H))"/>
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="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $cmplxInst_)]/BUSINTERFACE[(@NAME = $cmplxBifName_)]/@BIF_X"/>
440         <xsl:variable name="cmplxBifRank_"  select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $cmplxInst_)]/BUSINTERFACE[(@NAME = $cmplxBifName_)]/@BIFRANK"/>
441                                                 
442         <xsl:variable name="cmplxshp_hori_idx_" select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $cmplxInst_)])]/@STACK_HORIZ_INDEX"/>
443         <xsl:variable name="cmplxshp_vert_idx_" select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $cmplxInst_)])]/@SHAPE_VERTI_INDEX"/>
444                                                 
445         <xsl:variable name="is_abvSbs_" select="(/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[MODULE[(@INSTANCE = $cmplxInst_)]]/@IS_ABVSBS)"/>
446         <xsl:variable name="is_blwSbs_" select="(/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[MODULE[(@INSTANCE = $cmplxInst_)]]/@IS_BLWSBS)"/>
447         
448         
449 <!--                                            
450         <xsl:message>iStackToEast <xsl:value-of select="$iStackToEast"/></xsl:message>
451         <xsl:message>iStackToWest <xsl:value-of select="$iStackToWest"/></xsl:message>
452         <xsl:message><xsl:value-of select="$cmplxInst_"/> : <xsl:value-of select="$is_blwSbs_"/></xsl:message>
453         <xsl:message><xsl:value-of select="$cmplxInst_"/> : <xsl:value-of select="$is_abvSbs_"/></xsl:message>
454         <xsl:message><xsl:value-of select="$cmplxInst_"/> : <xsl:value-of select="$is_blwSbs_"/></xsl:message>
455         <xsl:message><xsl:value-of select="$cmplxInst_"/> : <xsl:value-of select="$is_abvSbs_"/></xsl:message>
456         <xsl:message>Stack horiz  <xsl:value-of select="$cmplxshp_hori_idx_"/></xsl:message>
457         <xsl:message>Stack verti  <xsl:value-of select="$cmplxshp_vert_idx_"/></xsl:message>
458         <xsl:message>Proc Bif Y   <xsl:value-of select="$procBif_Y_"/></xsl:message>
459 -->                                             
460         
461         
462         <xsl:variable name="busColor_">
463                 <xsl:call-template name="BusType2Color">
464                         <xsl:with-param name="iBusType" select="$iBusStd"/>
465                 </xsl:call-template>    
466         </xsl:variable> 
467         
468         <xsl:variable name="space_W_">
469                 <xsl:call-template name="_calc_Space_Width"> 
470                         <xsl:with-param name="iStackToEast"  select="$iStackToEast"/>
471                         <xsl:with-param name="iStackToWest"  select="$iStackToWest"/>
472                 </xsl:call-template>            
473         </xsl:variable>
474         
475         <xsl:variable name ="extSpaceWest_W_" select="ceiling($iStackToWest_W div 2)"/>
476         <xsl:variable name ="extSpaceEast_W_" select="ceiling($iStackToEast_W div 2)"/>                                         
477         
478         <xsl:variable name="cmplxshp_Y_">
479                 <xsl:call-template name="_calc_Stack_Shape_Y">
480                         <xsl:with-param name="iHorizIdx"  select="$cmplxshp_hori_idx_"/>
481                         <xsl:with-param name="iVertiIdx"  select="$cmplxshp_vert_idx_"/>
482                 </xsl:call-template>
483         </xsl:variable>
484         
485 <!--    
486         <xsl:message>Complex shape Y <xsl:value-of select="$cmplxshp_Y_"/></xsl:message>
487 -->     
488         
489         <xsl:variable name="stackToEast_">
490                 <xsl:choose>
491                         <xsl:when test="not($iStackToEast = 'NONE')"><xsl:value-of select="$iStackToEast"/></xsl:when>
492                         <xsl:otherwise>NONE</xsl:otherwise>
493                 </xsl:choose>
494         </xsl:variable> 
495         
496         <xsl:variable name="stackToWest_">
497                 <xsl:choose>
498                         <xsl:when test=" not($iStackToWest = 'NONE')"><xsl:value-of select="$iStackToWest"/></xsl:when>
499                         <xsl:when test="(not($iStackToEast = 'NONE') and not($iStackToEast = '0'))"><xsl:value-of select="($iStackToEast - 1)"/></xsl:when>
500                         <xsl:otherwise>NONE</xsl:otherwise>
501                 </xsl:choose>
502         </xsl:variable> 
503         
504                                                 
505         <xsl:variable name="cmplxStack_H_diff_">
506                 <xsl:choose>
507                         <xsl:when test="   (($stackToEast_ = 'NONE') or ($stackToWest_ = 'NONE'))">0</xsl:when>
508                         <xsl:when test="not(($stackToEast_ = 'NONE') or ($stackToWest_ = 'NONE'))">
509                                 
510                                 <xsl:variable name="stackToWest_AbvSbs_H_">
511                                         <xsl:call-template name="_calc_Stack_AbvSbs_Height">
512                                                 <xsl:with-param name="iStackIdx"  select="$stackToWest_"/>
513                                         </xsl:call-template>
514                                 </xsl:variable>
515                                 
516                                 <xsl:variable name="stackToEast_AbvSbs_H_">
517                                         <xsl:call-template name="_calc_Stack_AbvSbs_Height">
518                                                 <xsl:with-param name="iStackIdx"  select="$stackToEast_"/>
519                                         </xsl:call-template>
520                                 </xsl:variable>
521                                 
522 <!--                            
523                                 <xsl:message>stack to west H <xsl:value-of select="$stackToWest_AbvSbs_H_"/></xsl:message>
524                                 <xsl:message>stack to east H <xsl:value-of select="$stackToEast_AbvSbs_H_"/></xsl:message>
525 -->                             
526                                 <xsl:choose>
527                                         <xsl:when test="(($cmplxshp_hori_idx_ = $stackToEast_) and ($stackToWest_AbvSbs_H_ &gt; $stackToEast_AbvSbs_H_))">
528                                                 <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
529                                         </xsl:when>     
530                                         <xsl:when test="(($cmplxshp_hori_idx_ = $stackToWest_) and ($stackToEast_AbvSbs_H_ &gt; $stackToWest_AbvSbs_H_))">
531                                                 <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
532                                         </xsl:when>     
533                                         <xsl:otherwise>0</xsl:otherwise>        
534                                 </xsl:choose>   
535                                                                         
536                         </xsl:when>
537                 </xsl:choose>
538         </xsl:variable>
539         
540         
541         <xsl:variable name="bc_Y_"  select="($cmplxshp_Y_ + $cmplxBif_Y_ + ceiling($BIF_H div 2) + $cmplxStack_H_diff_) - ceiling($BLKD_BIFC_H div 2)"/>
542         
543         
544 <!--    
545         <xsl:message>Sstack H Diff  <xsl:value-of select="$cmplxStack_H_diff_"/></xsl:message>
546         <xsl:message>BC Y <xsl:value-of select="$bc_Y_"/></xsl:message>
547         <xsl:variable name="bc_x_"  select="($laneInSpace_X +  ceiling($BLKD_BIFC_W div 2))"/>
548         <xsl:variable name="bc_x_"  select="0"/>
549 -->     
550         <xsl:variable name="bc_X_">
551                 <xsl:choose>
552                         <xsl:when test="$cmplxBifSide_ = '0'">
553                                 <xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_ - (ceiling($BLKD_MOD_W div 2) + $BLKD_BIFC_W))"/>
554                         </xsl:when>
555                         <xsl:when test="$cmplxBifSide_ = '1'">
556                                 <xsl:value-of select="ceiling($BLKD_MOD_W div 2)"/>
557                         </xsl:when>
558                         <xsl:otherwise>0</xsl:otherwise>
559                 </xsl:choose>
560         </xsl:variable> 
561         
562         <use   x="{$bc_X_}"   y="{$bc_Y_}"  xlink:href="#{$iBusStd}_busconn_{$cmplxBifRank_}"/>
563         
564 <!--    
565         <xsl:message>Bif Rank <xsl:value-of select="$cmplxBifRank_"/></xsl:message>
566 -->     
567         <xsl:variable name="vert_line_x_"  select="($iLaneInSpace_X +  ceiling($BLKD_BIFC_W div 2))"/>
568         <xsl:variable name="vert_line_y1_" select="($cmplxshp_Y_ + $cmplxBif_Y_ + ceiling($BLKD_BIF_H div 2) + $cmplxStack_H_diff_)"/>
569         <xsl:variable name="vert_line_y2_"  select="($iSpaceSharedBus_Y  + ($sbs_idx_ * $BLKD_SBS_LANE_H) + ceiling($BLKD_BIFC_W div 2))"/>
570 <!--    
571         <xsl:variable name="vert_line_y2_"  select="($G_SharedBus_Y  + ($sbs_idx_ * $BLKD_SBS_LANE_H) + ceiling($BLKD_BIFC_W div 2))"/>
572 -->     
573         
574         <xsl:variable name="v_bus_ul_y_">
575                 <xsl:choose>
576                         <xsl:when test="$vert_line_y1_ &gt; $vert_line_y2_">
577                                 <xsl:value-of select="$vert_line_y2_"/>
578                         </xsl:when>
579                         <xsl:when test="$vert_line_y2_ &gt; $vert_line_y1_">
580                                 <xsl:value-of select="$vert_line_y1_"/>
581                         </xsl:when>
582                 </xsl:choose>
583         </xsl:variable> 
584         
585         <xsl:variable name="v_bus_ul_x_">
586                 <xsl:choose>
587                         <xsl:when test="@ORIENTED='WEST'">
588                                 <xsl:value-of select="($vert_line_x_ + $BLKD_MOD_BIF_GAP_H)"/>
589                         </xsl:when>
590                         <xsl:when test="@ORIENTED='EAST'">
591                                 <xsl:value-of select="($vert_line_x_ - $BLKD_MOD_BIF_GAP_H)"/>
592                         </xsl:when>
593                 </xsl:choose>
594         </xsl:variable> 
595                 
596         <xsl:variable name="v_bus_width_" select="$BLKD_P2P_BUS_W"/>
597         <xsl:variable name="v_bus_height_">
598                 <xsl:choose>
599                         <xsl:when test="$vert_line_y1_ &gt; $vert_line_y2_">
600                                 <xsl:value-of select="($vert_line_y1_ - $vert_line_y2_) - $BLKD_P2P_BUS_W + 8"/>
601                         </xsl:when>
602                         <xsl:when test="$vert_line_y2_ &gt; $vert_line_y1_">
603                                 <xsl:value-of select="($vert_line_y2_ - $vert_line_y1_) - $BLKD_P2P_BUS_W + 8"/>
604                         </xsl:when>
605                 </xsl:choose>
606         </xsl:variable> 
607                 
608         <xsl:variable name="h_bus_ul_x_">
609                 <xsl:choose>
610                         <xsl:when test="@ORIENTED='WEST'">
611                                 <xsl:value-of select="($bc_X_ + $BLKD_BIFC_W - ceiling(($BLKD_BIFC_W - $BLKD_BIFC_Wi) div 2))"/>
612                         </xsl:when>
613                         <xsl:when test="@ORIENTED='EAST'">
614                                 <xsl:value-of select="$v_bus_ul_x_"/>
615                         </xsl:when>
616                 </xsl:choose>
617         </xsl:variable> 
618                 
619         <xsl:variable name="h_bus_ul_y_">
620                 <xsl:choose>
621                         
622                         <xsl:when test="($is_blwSbs_ = 'TRUE') and ($vert_line_y1_ &gt; $vert_line_y2_)">
623                                 <xsl:value-of select="$vert_line_y1_ - ceiling($BLKD_P2P_BUS_W div 2)"/>
624                         </xsl:when>
625                         <xsl:when test="($is_blwSbs_ = 'TRUE') and ($vert_line_y2_ &gt; $vert_line_y1_)">
626                                 <xsl:value-of select="$vert_line_y2_ - ceiling($BLKD_P2P_BUS_W div 2)"/>
627                         </xsl:when>
628                         
629                         <xsl:when test="($is_abvSbs_ = 'TRUE') and ($vert_line_y1_ &gt; $vert_line_y2_)">
630                                 <xsl:value-of select="$vert_line_y2_ - ceiling($BLKD_P2P_BUS_W div 2)"/>
631                         </xsl:when>
632                         <xsl:when test="($is_abvSbs_ = 'TRUE') and ($vert_line_y2_ &gt; $vert_line_y1_)">
633                                 <xsl:value-of select="$vert_line_y1_ - ceiling($BLKD_P2P_BUS_W div 2)"/>
634                         </xsl:when>
635                         
636                 </xsl:choose>
637         </xsl:variable> 
638         
639         
640         <xsl:variable name="h_bus_height_" select="$BLKD_P2P_BUS_W"/>
641         <xsl:variable name="h_bus_width_">
642                 <xsl:choose>
643                         <xsl:when test="@ORIENTED='WEST'">
644                                 <xsl:value-of select="$v_bus_ul_x_ - $h_bus_ul_x_ + $BLKD_P2P_BUS_W"/>
645                         </xsl:when>
646                         <xsl:when test="@ORIENTED='EAST'">
647                                 <xsl:value-of select="($bc_X_ - $v_bus_ul_x_) + ceiling(($BLKD_BIFC_W - $BLKD_BIFC_Wi) div 2) + 1"/>
648                         </xsl:when>
649                 </xsl:choose>
650         </xsl:variable> 
651         
652                         
653         <rect x="{$v_bus_ul_x_}" 
654                   y="{$v_bus_ul_y_ - 2}"  
655                   width= "{$v_bus_width_}" 
656                   height="{$v_bus_height_}" 
657                   style="stroke:none; fill:{$busColor_}"/>
658                 
659         <rect x="{$h_bus_ul_x_}" 
660                   y="{$h_bus_ul_y_}"  
661                   width= "{$h_bus_width_}" 
662                   height="{$h_bus_height_}" 
663                   style="stroke:none; fill:{$busColor_}"/>
664                 
665 </xsl:template>                                 
666         
667 <!-- 
668                  ===========================================================
669                         Handle connections from processors to Memory UNITs
670                  ===========================================================
671 -->
672         
673 <xsl:template name="BCLaneSpace_ProcBifToMemoryUnit">   
674         
675         <xsl:param name="iBusStd"        select="'NONE'"/>      
676         <xsl:param name="iBusName"       select="'NONE'"/>      
677         <xsl:param name="iBifRank"       select="'NONE'"/>      
678         <xsl:param name="iStackToEast"   select="'NONE'"/>      
679         <xsl:param name="iStackToWest"   select="'NONE'"/>      
680         <xsl:param name="iStackToEast_W" select="0"/>   
681         <xsl:param name="iStackToWest_W" select="0"/>   
682         <xsl:param name="iLaneInSpace_X" select="0"/>   
683         
684                                                 
685 <!--    
686         <xsl:message>Stack To East <xsl:value-of select="$iStackToEast"/></xsl:message>
687         <xsl:message>Stack to West <xsl:value-of select="$iStackToWest"/></xsl:message>
688         <xsl:message>Stack to East Width <xsl:value-of select="$iStackToEast_W"/></xsl:message>
689         <xsl:message>Stack to West Width <xsl:value-of select="$iStackToWest_W"/></xsl:message>
690         <xsl:message>Shared Bus Y <xsl:value-of select="$iSpaceSharedBus_Y"/></xsl:message>
691         <xsl:message>Lane in space X <xsl:value-of select="$iLaneInSpace_X"/></xsl:message>
692         <xsl:variable name="bcInSpace_X_"  select="($laneInSpace_X +  ceiling($BLKD_BIFC_W div 2) - ceiling($BLKD_BUS_ARROW_W div 2))"/>
693         
694 -->     
695         
696         
697         <xsl:variable name="bcInSpace_X_"  select="$iLaneInSpace_X"/>
698         <xsl:variable name="procInstance_" select="BUSCONN[@IS_PROCCONN]/@INSTANCE"/>
699         <xsl:variable name="mem_procshp_hori_idx_" select="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $procInstance_)]/@STACK_HORIZ_INDEX"/>
700         <xsl:variable name="mem_procshp_vert_idx_" select="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $procInstance_)]/@SHAPE_VERTI_INDEX"/>
701                                                 
702         <xsl:variable name="mem_procshp_Y_">
703                 <xsl:call-template name="_calc_Stack_Shape_Y">
704                         <xsl:with-param name="iHorizIdx"  select="$mem_procshp_hori_idx_"/>
705                         <xsl:with-param name="iVertiIdx"  select="$mem_procshp_vert_idx_"/>
706                 </xsl:call-template>
707         </xsl:variable>
708         
709         <xsl:variable name="busColor_">
710                 <xsl:call-template name="BusType2Color">
711                         <xsl:with-param name="iBusType" select="$iBusStd"/>
712                 </xsl:call-template>    
713         </xsl:variable> 
714         
715         <xsl:variable name="space_W_">
716                 <xsl:call-template name="_calc_Space_Width"> 
717                         <xsl:with-param name="iStackToEast"  select="$iStackToEast"/>
718                         <xsl:with-param name="iStackToWest"  select="$iStackToWest"/>
719                 </xsl:call-template>            
720         </xsl:variable>
721         
722         <xsl:variable name ="extSpaceWest_W_" select="ceiling($iStackToWest_W div 2)"/>
723         <xsl:variable name ="extSpaceEast_W_" select="ceiling($iStackToEast_W div 2)"/>                                                 
724         
725         <xsl:variable name="cmplxStack_H_diff_">
726                 <xsl:choose>
727                         <xsl:when test="   (($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">0</xsl:when>
728                         <xsl:when test="not(($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">
729                                 
730                                 <xsl:variable name="stackToWest_AbvSbs_H_">
731                                         <xsl:call-template name="_calc_Stack_AbvSbs_Height">
732                                                 <xsl:with-param name="iStackIdx"  select="$iStackToWest"/>
733                                         </xsl:call-template>
734                                 </xsl:variable>
735                                 
736                                 <xsl:variable name="stackToEast_AbvSbs_H_">
737                                         <xsl:call-template name="_calc_Stack_AbvSbs_Height">
738                                                 <xsl:with-param name="iStackIdx"  select="$iStackToEast"/>
739                                         </xsl:call-template>
740                                 </xsl:variable>
741                                 
742 <!--                            
743                                 <xsl:message>stack to west H <xsl:value-of select="$stackToWest_AbvSbs_H_"/></xsl:message>
744                                 <xsl:message>stack to east H <xsl:value-of select="$stackToEast_AbvSbs_H_"/></xsl:message>
745 -->                             
746                                 <xsl:choose>
747                                         <xsl:when test="(($mem_procshp_hori_idx_ = $iStackToEast) and ($stackToWest_AbvSbs_H_ &gt; $stackToEast_AbvSbs_H_))">
748                                                 <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
749                                         </xsl:when>     
750                                         <xsl:when test="(($mem_procshp_hori_idx_ = $iStackToWest) and ($stackToEast_AbvSbs_H_ &gt; $stackToWest_AbvSbs_H_))">
751                                                 <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
752                                         </xsl:when>     
753                                         <xsl:otherwise>0</xsl:otherwise>        
754                                 </xsl:choose>   
755                                                                         
756                         </xsl:when>
757                 </xsl:choose>
758         </xsl:variable>
759                                                 
760         <xsl:variable name="mem_procStack_H_diff_">
761                 <xsl:choose>
762                         <xsl:when test="   (($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">0</xsl:when>
763                         <xsl:when test="not(($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">
764         
765                                 <xsl:variable name="stackToWest_AbvSbs_H_">
766                                         <xsl:call-template name="_calc_Stack_AbvSbs_Height">
767                                                 <xsl:with-param name="iStackIdx"  select="$iStackToWest"/>
768                                         </xsl:call-template>
769                                 </xsl:variable>
770                                 
771                                 <xsl:variable name="stackToEast_AbvSbs_H_">
772                                         <xsl:call-template name="_calc_Stack_AbvSbs_Height">
773                                                 <xsl:with-param name="iStackIdx"  select="$iStackToEast"/>
774                                         </xsl:call-template>
775                                 </xsl:variable>
776                                 
777 <!--                            
778                                 <xsl:message>stack to west H <xsl:value-of select="$stackToWest_AbvSbs_H_"/></xsl:message>
779                                 <xsl:message>stack to east H <xsl:value-of select="$stackToEast_AbvSbs_H_"/></xsl:message>
780 -->                             
781                         <xsl:choose>
782                                 <xsl:when test="(($mem_procshp_hori_idx_ = $iStackToEast) and ($stackToWest_AbvSbs_H_ &gt; $stackToEast_AbvSbs_H_))">
783                                         <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
784                                 </xsl:when>     
785                                 <xsl:when test="(($mem_procshp_hori_idx_ = $iStackToWest) and ($stackToEast_AbvSbs_H_ &gt; $stackToWest_AbvSbs_H_))">
786                                         <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
787                                 </xsl:when>     
788                                 <xsl:otherwise>0</xsl:otherwise>        
789                         </xsl:choose>   
790                                                                         
791                 </xsl:when>
792         </xsl:choose>
793   </xsl:variable>
794                                                 
795         <!-- Store the conns in a variable -->  
796         <xsl:variable name="memConn_heights_">
797
798                 <xsl:for-each select="BUSCONN">
799                                                                 
800                         <xsl:variable name="bifName_"       select="@BUSINTERFACE"/>
801                         
802                                                         
803                         <xsl:choose>
804                                 <xsl:when test="@IS_PROCCONN and @BIF_Y">
805                                                         
806                                         <xsl:variable name="procBif_Y_"    select="((($BLKD_BIF_H + $BLKD_MOD_BIF_GAP_V) * @BIF_Y) + ($BLKD_MOD_LANE_H + $BLKD_MOD_LABEL_H + $BLKD_MOD_BIF_GAP_V))"/>
807                                         <xsl:variable name="procBifRank_"  select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $procInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIFRANK"/>
808                                         <xsl:variable name="procBusName_"  select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $procInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BUSNAME"/>
809                                         <xsl:variable name="procBifSide_"  select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $procInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_X"/>
810                                         <xsl:variable name="bcProc_Y_"     select="($mem_procshp_Y_ + $procBif_Y_ + ceiling($BLKD_BIF_H div 2) - ceiling($BLKD_BIFC_H div 2) + $mem_procStack_H_diff_)"/>
811                                         <xsl:variable name="bcProc_X_">
812                                                 <xsl:choose>
813                                                         <xsl:when test="$procBifSide_ = '0'">
814                                                                 <xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_ - (ceiling($BLKD_MOD_W div 2) + $BLKD_BIFC_W))"/>
815                                                         </xsl:when>
816                                                         <xsl:when test="$procBifSide_ = '1'">
817                                                                 <xsl:value-of select="ceiling($BLKD_MOD_W div 2)"/>
818                                                         </xsl:when>
819                                                         <xsl:otherwise>0</xsl:otherwise>
820                                                 </xsl:choose>
821                                         </xsl:variable>
822                                                 
823                                         <MEMCONN X="{$bcProc_X_}" Y="{$bcProc_Y_}" BUSNAME="{$procBusName_}" BUSSTD="{$iBusStd}" BIFRANK="{$procBifRank_}" BIFSIDE="{$procBifSide_}"/>
824                                                                                 
825                                 </xsl:when>
826                                                                         
827                                 <xsl:otherwise>
828                                                                         
829                                         <xsl:variable name="memcInstance_"  select="@INSTANCE"/>
830                                         <xsl:variable name="memcshp_vert_idx_" select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[MODULE[(@INSTANCE = $memcInstance_)]]/@SHAPE_VERTI_INDEX"/>
831                                         <xsl:variable name="memcBifSide_"  select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $memcInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_X"/>
832                                         <xsl:variable name="memcBif_Y_"    select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $memcInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_Y"/>
833                                                                                 
834                                         <xsl:variable name="memshp_Y_">
835                                                 <xsl:call-template name="_calc_Stack_Shape_Y">
836                                                         <xsl:with-param name="iHorizIdx"  select="$mem_procshp_hori_idx_"/>
837                                                         <xsl:with-param name="iVertiIdx"  select="$memcshp_vert_idx_"/>
838                                                 </xsl:call-template>
839                                     </xsl:variable>
840                                         
841                                         <xsl:variable name="memcMOD_W_" select="((/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[MODULE[(@INSTANCE = $memcInstance_)]]/@MODS_W) * $BLKD_MOD_W)"/>
842                                                                                 
843                                         <xsl:variable name="procBif_Y_"   select="((($BLKD_BIF_H + $BLKD_MOD_BIF_GAP_V) * @BIF_Y) + ($BLKD_MOD_LANE_H + $BLKD_MOD_LABEL_H + $BLKD_MOD_BIF_GAP_V))"/>
844                                         
845                                         <xsl:variable name="memcConn_Y_">
846                                                 <xsl:choose>
847                                                         <xsl:when test="(/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[MODULE[(@INSTANCE = $memcInstance_)]]/@MODS_H = 1)">
848                                                                 <xsl:value-of  select="($memshp_Y_ + ($BLKD_MOD_LANE_H + $BLKD_MOD_LABEL_H + $BLKD_MOD_BIF_GAP_V) +  ($memcBif_Y_ * ($BLKD_BIF_H + $BLKD_MOD_BIF_GAP_V)) + ceiling($BIF_H div 2) - ceiling($BLKD_BIFC_H div 2) + $cmplxStack_H_diff_)"/>
849                                                         </xsl:when>
850                                                         <xsl:otherwise>
851                                                                 <xsl:value-of  select="($memshp_Y_ + $BLKD_MOD_H + $BLKD_MOD_LANE_H + ($memcBif_Y_ * ($BLKD_BIF_H + $BLKD_MOD_BIF_GAP_V)) + ceiling($BLKD_BIF_H div 2) - ceiling($BLKD_BIFC_H div 2) + $cmplxStack_H_diff_)"/>
852                                                         </xsl:otherwise>
853                                                 </xsl:choose>
854                                         </xsl:variable>
855                                         
856                                         <xsl:variable name="memcConn_X_">
857                                                 <xsl:choose>
858                                                         <xsl:when test="$memcBifSide_ = '0'">
859                                                                 <xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_ - (ceiling($memcMOD_W_ div 2) + $BLKD_BIFC_W))"/>
860                                                         </xsl:when>
861                                                         <xsl:when test="$memcBifSide_ = '1'">
862                                                                 <xsl:value-of select="ceiling($memcMOD_W_ div 2)"/>
863                                                         </xsl:when>
864                                                 </xsl:choose>
865                                         </xsl:variable>
866                                                 
867                                         <xsl:variable name="memcBifRank_"  select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $memcInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIFRANK"/>
868                                         <xsl:variable name="memcBusName_"  select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $memcInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BUSNAME"/>
869                                         
870                                         <MEMCONN X="{$memcConn_X_}" Y="{$memcConn_Y_}" BUSNAME="{$memcBusName_}" BUSSTD="{$iBusStd}" BIFRANK="{$memcBifRank_}" BIFSIDE="{$memcBifSide_}"/>
871 <!--                                    
872 -->                                     
873                                         
874                                 </xsl:otherwise>
875                         </xsl:choose>
876                 </xsl:for-each>
877         </xsl:variable>
878                                                 
879                                                 
880         <!-- Draw the busconnection and horizontal lines.-->                                            
881         <xsl:for-each select="exsl:node-set($memConn_heights_)/MEMCONN">
882                                                         
883                 <xsl:variable name="bus_x_" select="($bcInSpace_X_ + ceiling($BLKD_BIFC_W div 2))"/>
884                 <xsl:variable name="bus_y_" select="@Y + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_P2P_BUS_W div 2)"/>
885                 
886                 <xsl:variable name="h_bus_ul_x_">
887                         <xsl:choose>
888                                 <xsl:when test="@BIFSIDE='0'">
889                                         <xsl:value-of select="$bus_x_"/>
890                                 </xsl:when>
891                                 <xsl:when test="@BIFSIDE='1'">
892                                         <xsl:value-of select="(@X + $BLKD_BIFC_W + $BLKD_BUS_ARROW_W)"/>
893                                 </xsl:when>
894                         </xsl:choose>
895                 </xsl:variable> 
896                 
897                 <xsl:variable name="h_bus_ul_y_" select="$bus_y_"/>
898         
899                 <xsl:variable name="h_bus_height_" select="$BLKD_P2P_BUS_W"/>
900                 <xsl:variable name="h_bus_width_">
901                         <xsl:choose>
902                                 <xsl:when test="@BIFSIDE='0'">
903                                         <xsl:value-of select="(@X - $bus_x_ - $BLKD_BUS_ARROW_W)"/>
904                                 </xsl:when>
905                                 <xsl:when test="@BIFSIDE='1'">
906                                         <xsl:value-of select="$bus_x_ - $h_bus_ul_x_"/>
907                                 </xsl:when>
908                         </xsl:choose>
909                 </xsl:variable> 
910                 
911 <!--            
912                 <xsl:message>bc_X_       <xsl:value-of select="@X"/></xsl:message>
913                 <xsl:message>h_bus_ul_x  <xsl:value-of select="$h_bus_ul_x_"/></xsl:message>
914                 <xsl:message>h_bus_ul_y  <xsl:value-of select="$h_bus_ul_y_"/></xsl:message>
915                 <xsl:message>h_bus_width <xsl:value-of select="$h_bus_width_"/></xsl:message>
916 -->             
917                 
918                 <!-- Place the bus connection -->
919                 <use   x="{@X}"   y="{@Y}"  xlink:href="#{@BUSSTD}_busconn_{@BIFRANK}"/>
920                 
921                 <!-- Draw the arrow -->
922                 <xsl:choose>
923                         <xsl:when test="@BIFSIDE='0'">
924                                 <use   x="{@X - $BLKD_BUS_ARROW_W}"   y="{@Y + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_BUS_ARROW_H div 2)}"  xlink:href="#{@BUSSTD}_BusArrowEast"/>
925                         </xsl:when>
926                         <xsl:when test="@BIFSIDE='1'">
927                                 <use   x="{(@X + $BLKD_BIFC_W)}" y="{@Y + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_BUS_ARROW_H div 2)}"  xlink:href="#{@BUSSTD}_BusArrowWest"/>
928                         </xsl:when>
929                 </xsl:choose>
930                 
931                 
932                 <!-- Draw the horizontal part of the bus -->
933                 <rect x="{$h_bus_ul_x_}" 
934                           y="{$h_bus_ul_y_}"  
935                           width= "{$h_bus_width_}" 
936                           height="{$h_bus_height_}" 
937                           style="stroke:none; fill:{$busColor_}"/>
938 <!--            
939 -->     
940                 
941         </xsl:for-each>
942                                                 
943         <xsl:variable name="busTop_"  select="math:min(exsl:node-set($memConn_heights_)/MEMCONN/@Y)"/>
944         <xsl:variable name="busBot_"  select="math:max(exsl:node-set($memConn_heights_)/MEMCONN/@Y)"/>
945         <xsl:variable name="busName_" select="exsl:node-set($memConn_heights_)/MEMCONN/@BUSNAME"/>
946         
947         <xsl:variable name="v_bus_y_" select="$busTop_ + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_P2P_BUS_W div 2)"/>
948         
949         
950         <!-- Draw the vertical part of the bus -->      
951         <rect x="{$bcInSpace_X_ + $BLKD_P2P_BUS_W}" 
952                   y="{$v_bus_y_}"  
953                   width= "{$BLKD_P2P_BUS_W}" 
954                   height="{($busBot_ - $busTop_) + $BLKD_P2P_BUS_W}" 
955                   style="stroke:none; fill:{$busColor_}"/>
956 <!--    
957 -->     
958         <!-- Place the bus label.-->    
959         <text class="p2pbuslabel" 
960                           x="{$bcInSpace_X_   + $BLKD_BUS_ARROW_W + ceiling($BLKD_BUS_ARROW_W div 2) + ceiling($BLKD_BUS_ARROW_W div 4) + 6}"
961                           y="{$busTop_ + ($BLKD_BUS_ARROW_H * 3)}">
962                         <xsl:value-of select="$busName_"/>
963         </text> 
964         
965                                                 
966 </xsl:template>                                 
967         
968         
969 <!-- 
970                  ===========================================================
971                         Handle generic Point to Point connections
972                  ===========================================================
973 -->
974         
975 <xsl:template name="BCLaneSpace_PointToPoint">  
976         
977         <xsl:param name="iBusStd"        select="'NONE'"/>      
978         <xsl:param name="iBusName"       select="'NONE'"/>      
979         <xsl:param name="iBifRank"       select="'NONE'"/>      
980         <xsl:param name="iStackToEast"   select="'NONE'"/>      
981         <xsl:param name="iStackToWest"   select="'NONE'"/>      
982         <xsl:param name="iStackToEast_W" select="0"/>   
983         <xsl:param name="iStackToWest_W" select="0"/>   
984         <xsl:param name="iLaneInSpace_X" select="0"/>   
985         
986         <xsl:variable name="busColor_">
987                 <xsl:call-template name="BusType2Color">
988                         <xsl:with-param name="iBusType" select="$iBusStd"/>
989                 </xsl:call-template>    
990         </xsl:variable> 
991         
992         <xsl:variable name="busColor_lt_">
993                 <xsl:call-template name="BusType2LightColor">
994                         <xsl:with-param name="iBusType" select="$iBusStd"/>
995                 </xsl:call-template>    
996         </xsl:variable> 
997         
998         
999         <xsl:variable name="space_W_">
1000                 <xsl:call-template name="_calc_Space_Width"> 
1001                         <xsl:with-param name="iStackToEast"  select="$iStackToEast"/>
1002                         <xsl:with-param name="iStackToWest"  select="$iStackToWest"/>
1003                 </xsl:call-template>            
1004         </xsl:variable>
1005         
1006         <xsl:variable name ="extSpaceWest_W_" select="ceiling($iStackToWest_W div 2)"/>
1007         <xsl:variable name ="extSpaceEast_W_" select="ceiling($iStackToEast_W div 2)"/>                                                 
1008         
1009         <xsl:variable name="bcInSpace_X_"  select="($iLaneInSpace_X +  ceiling($BLKD_BIFC_W div 2) - ceiling($BLKD_BUS_ARROW_W div 2))"/>
1010         <xsl:variable name="p2pInstance_" select="BUSCONN[(@BIF_Y)]/@INSTANCE"/>
1011                                         
1012         <xsl:variable name="p2pshp_hori_idx_">
1013                 <xsl:choose>
1014                         <xsl:when test="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $p2pInstance_)]">
1015                                 <xsl:value-of select="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $p2pInstance_)]/@STACK_HORIZ_INDEX"/>
1016                         </xsl:when>
1017                         <xsl:otherwise>
1018                                 <xsl:value-of select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $p2pInstance_)])]/@STACK_HORIZ_INDEX"/>
1019                         </xsl:otherwise>
1020                 </xsl:choose>
1021         </xsl:variable>         
1022                                         
1023         <xsl:variable name="p2pshp_vert_idx_">
1024                 <xsl:choose>
1025                         <xsl:when test="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $p2pInstance_)]">
1026                                 <xsl:value-of select="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $p2pInstance_)]/@SHAPE_VERTI_INDEX"/>
1027                         </xsl:when>
1028                         <xsl:otherwise>
1029                                 <xsl:value-of select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $p2pInstance_)])]/@SHAPE_VERTI_INDEX"/>
1030                         </xsl:otherwise>
1031                 </xsl:choose>
1032         </xsl:variable>         
1033                                         
1034 <!--                                    
1035                                         <xsl:variable name="p2pshp_hori_idx_" select="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $procInstance_)]/@STACK_HORIZ_INDEX"/>
1036                                         <xsl:variable name="p2pshp_vert_idx_" select="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $procInstance_)]/@SHAPE_VERTI_INDEX"/>
1037 -->                                     
1038                                                 
1039         <xsl:variable name="p2pshp_Y_">
1040                 <xsl:call-template name="_calc_Stack_Shape_Y">
1041                         <xsl:with-param name="iHorizIdx"  select="$p2pshp_hori_idx_"/>
1042                         <xsl:with-param name="iVertiIdx"  select="$p2pshp_vert_idx_"/>
1043                 </xsl:call-template>
1044         </xsl:variable>
1045                         
1046         <xsl:variable name="cmplxStack_H_diff_">
1047                 <xsl:choose>
1048                         <xsl:when test="   (($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">0</xsl:when>
1049                         <xsl:when test="not(($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">
1050                                 
1051                                 <xsl:variable name="stackToWest_AbvSbs_H_">
1052                                         <xsl:call-template name="_calc_Stack_AbvSbs_Height">
1053                                                 <xsl:with-param name="iStackIdx"  select="$iStackToWest"/>
1054                                         </xsl:call-template>
1055                                 </xsl:variable>
1056                                 
1057                                 <xsl:variable name="stackToEast_AbvSbs_H_">
1058                                         <xsl:call-template name="_calc_Stack_AbvSbs_Height">
1059                                                 <xsl:with-param name="iStackIdx"  select="$iStackToEast"/>
1060                                         </xsl:call-template>
1061                                 </xsl:variable>
1062                                 
1063 <!--                            
1064                                 <xsl:message>stack to west H <xsl:value-of select="$stackToWest_AbvSbs_H_"/></xsl:message>
1065                                 <xsl:message>stack to east H <xsl:value-of select="$stackToEast_AbvSbs_H_"/></xsl:message>
1066 -->                             
1067                                 <xsl:choose>
1068                                         <xsl:when test="(($p2pshp_hori_idx_ = $iStackToEast) and ($stackToWest_AbvSbs_H_ &gt; $stackToEast_AbvSbs_H_))">
1069                                                 <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
1070                                         </xsl:when>     
1071                                         <xsl:when test="(($p2pshp_hori_idx_ = $iStackToWest) and ($stackToEast_AbvSbs_H_ &gt; $stackToWest_AbvSbs_H_))">
1072                                                 <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
1073                                         </xsl:when>     
1074                                         <xsl:otherwise>0</xsl:otherwise>        
1075                                 </xsl:choose>   
1076                                                                         
1077                         </xsl:when>
1078                 </xsl:choose>
1079         </xsl:variable>
1080                                                 
1081                                                                                                                                                                 
1082         <xsl:variable name="procStack_H_diff_">
1083                 <xsl:choose>
1084                         <xsl:when test="   (($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">0</xsl:when>
1085                         <xsl:when test="not(($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">
1086                         
1087                                 <xsl:variable name="stackToWest_AbvSbs_H_">
1088                                         <xsl:call-template name="_calc_Stack_AbvSbs_Height">
1089                                                 <xsl:with-param name="iStackIdx"  select="$iStackToWest"/>
1090                                         </xsl:call-template>
1091                                 </xsl:variable>
1092                                 
1093                                 <xsl:variable name="stackToEast_AbvSbs_H_">
1094                                         <xsl:call-template name="_calc_Stack_AbvSbs_Height">
1095                                                 <xsl:with-param name="iStackIdx"  select="$iStackToEast"/>
1096                                         </xsl:call-template>
1097                                 </xsl:variable>
1098                                 
1099 <!--                            
1100                                 <xsl:message>stack to west H <xsl:value-of select="$stackToWest_AbvSbs_H_"/></xsl:message>
1101                                 <xsl:message>stack to east H <xsl:value-of select="$stackToEast_AbvSbs_H_"/></xsl:message>
1102 -->                             
1103                                 <xsl:choose>
1104                                         <xsl:when test="(($p2pshp_hori_idx_ = $iStackToEast) and ($stackToWest_AbvSbs_H_ &gt; $stackToEast_AbvSbs_H_))">
1105                                                 <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
1106                                         </xsl:when>     
1107                                         <xsl:when test="(($p2pshp_hori_idx_ = $iStackToWest) and ($stackToEast_AbvSbs_H_ &gt; $stackToWest_AbvSbs_H_))">
1108                                                 <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
1109                                         </xsl:when>     
1110                                         <xsl:otherwise>0</xsl:otherwise>        
1111                                 </xsl:choose>   
1112                                                                         
1113                         </xsl:when>
1114                 </xsl:choose>
1115         </xsl:variable>
1116                                                 
1117         
1118         
1119         <!-- Store the conns in a variable -->  
1120         <xsl:variable name="p2pConn_heights_">
1121         
1122                 <xsl:for-each select="BUSCONN">
1123                                                                         
1124                         <xsl:variable name="bifName_" select="@BUSINTERFACE"/>
1125                                                         
1126                                 <xsl:choose>
1127                                         <xsl:when test="@IS_PROCCONN and @BIF_Y">
1128                                                                                 
1129 <!--                                                                            
1130                                                                                 <xsl:message>Proc <xsl:value-of select="$procInstance_"/></xsl:message>
1131 -->                                                                             
1132                                                 <xsl:variable name="procBif_Y_"   select="((($BLKD_BIF_H + $BLKD_MOD_BIF_GAP_V) * @BIF_Y) + ($BLKD_MOD_LANE_H + $BLKD_MOD_LABEL_H + $BLKD_MOD_BIF_GAP_V))"/>
1133                                                 <xsl:variable name="procBifRank_"  select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $p2pInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIFRANK"/>
1134                                                 <xsl:variable name="procBusName_"  select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $p2pInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BUSNAME"/>
1135                                                 <xsl:variable name="procBifSide_"  select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $p2pInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_X"/>
1136                                                                                 
1137                                                 <xsl:variable name="bcProc_Y_"     select="($p2pshp_Y_ + $procBif_Y_ + ceiling($BIF_H div 2) - ceiling($BLKD_BIFC_H div 2) + $procStack_H_diff_)"/>
1138                                                 <xsl:variable name="bcProc_X_">
1139                                                         <xsl:choose>
1140                                                                 <xsl:when test="$procBifSide_ = '0'">
1141                                                                         <xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_ - (ceiling($BLKD_MOD_W div 2) + $BLKD_BIFC_W))"/>
1142                                                                 </xsl:when>
1143                                                                 <xsl:when test="$procBifSide_ = '1'">
1144                                                                         <xsl:value-of select="ceiling($BLKD_MOD_W div 2)"/>
1145                                                                 </xsl:when>
1146                                                                 <xsl:otherwise>0</xsl:otherwise>
1147                                                         </xsl:choose>
1148                                                 </xsl:variable>
1149                                                 
1150                                                 <P2PCONN X="{$bcProc_X_}" Y="{$bcProc_Y_}" BUSNAME= "{$procBusName_}" BUSSTD="{$iBusStd}" BIFRANK="{$procBifRank_}" BIFSIDE="{$procBifSide_}"/>
1151                                                                                 
1152 <!--                                            
1153                                                 <xsl:message>bcProc_X_ <xsl:value-of select="$bcProc_X_"/></xsl:message>
1154                                                 <xsl:message>bcProc_Y_ <xsl:value-of select="$bcProc_Y_"/></xsl:message>
1155                                                 <P2PCONN X="{$bcInSpace_X_}" Y="{$bcProc_Y_}" BUSSTD="{$busStd}" BIFRANK="{$procBifRank_}" BIFSIDE="{$procBifSide_}" STACK_ID=""/>
1156 -->                                             
1157                                         </xsl:when>
1158                                                                         
1159                                         <xsl:otherwise>
1160                                                                                 
1161                                                 <xsl:variable name="modInstance_"     select="@INSTANCE"/>
1162                                                 <xsl:variable name="modshp_vert_idx_" select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[MODULE[(@INSTANCE = $modInstance_)]]/@SHAPE_VERTI_INDEX"/>
1163                                                 <xsl:variable name="modBifSide_"      select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $modInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_X"/>
1164                                                 <xsl:variable name="modBif_Y_"        select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $modInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_Y"/>
1165                                                 <xsl:variable name="modBc_Y_"         select="((($BLKD_BIF_H + $BLKD_MOD_BIF_GAP_V) * $modBif_Y_) + ($BLKD_MOD_LANE_H + $BLKD_MOD_LABEL_H + $BLKD_MOD_BIF_GAP_V))"/>
1166                                                                                 
1167 <!--                                                                            
1168                                                 <xsl:message>Memory Instance <xsl:value-of select="$procInstance_"/></xsl:message>
1169 -->                                                                             
1170                                                 
1171                                                 <xsl:variable name="modshp_Y_">
1172                                                         <xsl:call-template name="_calc_Stack_Shape_Y">
1173                                                                 <xsl:with-param name="iHorizIdx"  select="$p2pshp_hori_idx_"/>
1174                                                                 <xsl:with-param name="iVertiIdx"  select="$modshp_vert_idx_"/>
1175                                                         </xsl:call-template>
1176                                                 </xsl:variable>
1177                                                                                 
1178                                                 <xsl:variable name="modBifRank_"  select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $modInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIFRANK"/>
1179                                                 <xsl:variable name="modBusName_"  select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $modInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BUSNAME"/>
1180                                                 <xsl:variable name="bcMod_Y_"     select="($modshp_Y_ + $modBc_Y_ + ceiling($BLKD_BIF_H div 2) - ceiling($BLKD_BIFC_H div 2) + $cmplxStack_H_diff_)"/>
1181                                                 <xsl:variable name="bcMod_X_">
1182                                                         <xsl:choose>
1183                                                                 <xsl:when test="$modBifSide_ = '0'">
1184                                                                         <xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_ - (ceiling($BLKD_MOD_W div 2) + $BLKD_BIFC_W))"/>
1185                                                                 </xsl:when>
1186                                                                 <xsl:when test="$modBifSide_ = '1'">
1187                                                                         <xsl:value-of select="ceiling($BLKD_MOD_W div 2)"/>
1188                                                                 </xsl:when>
1189                                                                 <xsl:otherwise>0</xsl:otherwise>
1190                                                         </xsl:choose>
1191                                                 </xsl:variable>
1192                                                 
1193 <!--                                                                            
1194                                                 <xsl:message>Bc Bif Y <xsl:value-of select="$modBif_Y_"/></xsl:message> 
1195                                                 <xsl:message>Bc Mod Y <xsl:value-of select="$modBc_Y_"/></xsl:message>  
1196                                                 <xsl:message>Bc Mod X <xsl:value-of select="$bcMod_X_"/></xsl:message>  
1197                                                 <P2PCONN X="{$bcInSpace_X_}" Y="{$bcMod_Y_}" BUSSTD="{$busStd}" BIFRANK="{$modBifRank_}" BIFSIDE="{$modBifSide_}"/>
1198 -->                                                                             
1199                                                 <P2PCONN X="{$bcMod_X_}" Y="{$bcMod_Y_}" BUSNAME="{$modBusName_}" BUSSTD="{$iBusStd}" BIFRANK="{$modBifRank_}" BIFSIDE="{$modBifSide_}"/>
1200                                                 
1201                                         </xsl:otherwise>
1202                                                                         
1203                                 </xsl:choose>
1204                         </xsl:for-each>
1205                 </xsl:variable>
1206         
1207         
1208         <xsl:variable name="busTop_"  select="math:min(exsl:node-set($p2pConn_heights_)/P2PCONN/@Y)"/>
1209         <xsl:variable name="busBot_"  select="math:max(exsl:node-set($p2pConn_heights_)/P2PCONN/@Y)"/>
1210         <xsl:variable name="v_bus_y_" select="$busTop_ + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_P2P_BUS_W div 2)"/>
1211         <xsl:variable name="busName_" select="exsl:node-set($p2pConn_heights_)/P2PCONN/@BUSNAME"/>
1212         <xsl:variable name="busStd_"  select="exsl:node-set($p2pConn_heights_)/P2PCONN/@BUSSTD"/>
1213 <!--    
1214 -->     
1215         <!-- Draw the vertical part of the bus -->      
1216         
1217         <xsl:if test="$busStd_ = 'PLBV46_P2P'">
1218         <rect x="{$bcInSpace_X_ + $BLKD_P2P_BUS_W}" 
1219                   y="{$v_bus_y_}"  
1220                   width= "{$BLKD_P2P_BUS_W}" 
1221                   height="{($busBot_ - $busTop_) + $BLKD_P2P_BUS_W}" 
1222                   style="stroke:{$COL_WHITE};stroke-width:1.5;fill:{$busColor_}"/>
1223         </xsl:if>
1224         
1225         <xsl:if test="not($busStd_ = 'PLBV46_P2P')">
1226         <rect x="{$bcInSpace_X_ + $BLKD_P2P_BUS_W}" 
1227                   y="{$v_bus_y_}"  
1228                   width= "{$BLKD_P2P_BUS_W}" 
1229                   height="{($busBot_ - $busTop_) + $BLKD_P2P_BUS_W}" 
1230                   style="stroke:none;fill:{$busColor_}"/>
1231         </xsl:if>
1232         
1233 <!--    
1234 -->     
1235         
1236 <!--    
1237                   style="stroke:{$busColor_lt_};stroke-width:1;stroke-opacity:0.9;fill-opacity:2.0;fill:{$busColor_}"/>
1238 -->     
1239         <!-- Place the bus label.-->    
1240         <text class="p2pbuslabel" 
1241                           x="{$bcInSpace_X_   + $BLKD_BUS_ARROW_W + ceiling($BLKD_BUS_ARROW_W div 2) + ceiling($BLKD_BUS_ARROW_W div 4) + 6}"
1242                           y="{$busTop_ + ($BLKD_BUS_ARROW_H * 3)}">
1243                         <xsl:value-of select="$busName_"/>
1244         </text> 
1245                                                 
1246                 <!-- Draw the busconnection and horizontal lines.-->                                            
1247                 <xsl:for-each select="exsl:node-set($p2pConn_heights_)/P2PCONN">
1248                                                         
1249                         <xsl:variable name="bus_x_" select="($bcInSpace_X_ + ceiling($BLKD_BIFC_W div 2))"/>
1250                         <xsl:variable name="bus_y_" select="@Y + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_P2P_BUS_W div 2)"/>
1251                 
1252                         <xsl:variable name="h_bus_ul_x_">
1253                                 <xsl:choose>
1254                                         <xsl:when test="@BIFSIDE='0'">
1255                                                 <xsl:value-of select="$bus_x_"/>
1256                                         </xsl:when>
1257                                         <xsl:when test="@BIFSIDE='1'">
1258                                                 <xsl:value-of select="(@X + $BLKD_BIFC_W + $BLKD_BUS_ARROW_W) - 1"/>
1259                                         </xsl:when>
1260                                 </xsl:choose>
1261                         </xsl:variable> 
1262                 
1263                         <xsl:variable name="h_bus_ul_y_" select="$bus_y_"/>
1264         
1265                         <xsl:variable name="h_bus_height_" select="$BLKD_P2P_BUS_W"/>
1266                         <xsl:variable name="h_bus_width_">
1267 <!--                            
1268                                 <xsl:message>BIFSIDE <xsl:value-of select="@BIFSIDE"/></xsl:message>
1269                                 <xsl:message>BUSSTD  <xsl:value-of select="@BUSSTD"/></xsl:message>
1270                                 <xsl:message>BIFRANK <xsl:value-of select="@BIFRANK"/></xsl:message>
1271 -->                             
1272                                 <xsl:choose>
1273                                         <xsl:when test="@BIFSIDE='0'">
1274                                                 <xsl:value-of select="(@X - $bus_x_ - $BLKD_BUS_ARROW_W)"/>
1275                                         </xsl:when>
1276                                         <xsl:when test="@BIFSIDE='1'">
1277                                                 <xsl:value-of select="$bus_x_ - $h_bus_ul_x_ + 1"/>
1278                                         </xsl:when>
1279                                         
1280                                 </xsl:choose>
1281                         </xsl:variable> 
1282                         
1283                         <!-- Draw Bus connection-->
1284                         <use   x="{@X}"   y="{@Y}"  xlink:href="#{@BUSSTD}_busconn_{@BIFRANK}"/>
1285                         
1286                         <!-- Draw the arrow -->
1287                         <xsl:choose>
1288                                 <xsl:when test="((@BIFSIDE='0') and not((@BUSSTD = 'FSL') and ((@BIFRANK = 'INITIATOR') or (@BIFRANK = 'MASTER'))))">
1289                                         <use   x="{@X - $BLKD_BUS_ARROW_W}"   y="{@Y + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_BUS_ARROW_H div 2)}"  xlink:href="#{@BUSSTD}_BusArrowEast"/>
1290                                 </xsl:when>
1291                                 <xsl:when test="((@BIFSIDE='1') and not((@BUSSTD = 'FSL') and ((@BIFRANK = 'INITIATOR') or (@BIFRANK = 'MASTER'))))">
1292                                         <use   x="{(@X + $BLKD_BIFC_W)}" y="{@Y + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_BUS_ARROW_H div 2)}"  xlink:href="#{@BUSSTD}_BusArrowWest"/>
1293                                 </xsl:when>
1294                                 
1295                                 <xsl:when test="((@BIFSIDE='0') and ((@BUSSTD = 'FSL') and ((@BIFRANK = 'INITIATOR') or (@BIFRANK = 'MASTER'))))">
1296                                         <use   x="{@X - $BLKD_BUS_ARROW_W}"   y="{@Y + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_BUS_ARROW_H div 2)}"  xlink:href="#{@BUSSTD}_BusArrowHInitiator"/>
1297                                 </xsl:when>
1298                                 
1299                                 <xsl:when test="((@BIFSIDE='1') and ((@BUSSTD = 'FSL') and ((@BIFRANK = 'INITIATOR') or (@BIFRANK = 'MASTER'))))">
1300                                         <use   x="{(@X + $BLKD_BIFC_W)}" y="{@Y + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_BUS_ARROW_H div 2)}"  xlink:href="#{@BUSSTD}_BusArrowHInitiator"/>
1301                                 </xsl:when>
1302                                         
1303                         </xsl:choose>
1304                 
1305                         <!-- Draw the horizontal part of the bus -->
1306                         <rect x="{$h_bus_ul_x_}" 
1307                                   y="{$h_bus_ul_y_}"  
1308                                   width= "{$h_bus_width_}" 
1309                                   height="{$h_bus_height_}" 
1310                               style="stroke:none; fill:{$busColor_}"/>
1311                 
1312         </xsl:for-each>
1313                                                 
1314 <!--    
1315         <xsl:variable name="busTop_" select="math:min(exsl:node-set($p2pConn_heights_)/P2PCONN/@Y)"/>
1316         <xsl:variable name="busBot_" select="math:max(exsl:node-set($p2pConn_heights_)/P2PCONN/@Y)"/>
1317         <xsl:variable name="v_bus_y_" select="$busTop_ + ceiling($BLKD_BIFC_H div 2) - ceiling($P2P_BUS_W div 2)"/>
1318         <xsl:variable name="busName_" select="exsl:node-set($p2pConn_heights_)/P2PCONN/@BUSNAME"/>
1319 -->     
1320         <!-- Draw the vertical part of the bus -->      
1321 <!--    
1322         <rect x="{$bcInSpace_X_ + $P2P_BUS_W}" 
1323                   y="{$v_bus_y_}"  
1324                   width= "{$P2P_BUS_W}" 
1325                   height="{($busBot_ - $busTop_) + $P2P_BUS_W}" 
1326                   style="stroke:{$COL_WHITE};stroke-width:1;stroke-opacity:0.9;fill-opacity:2.0;fill:{$busColor_}"/>
1327 -->     
1328         
1329 <!--    
1330                   style="stroke:{$busColor_lt_};stroke-width:1;stroke-opacity:0.9;fill-opacity:2.0;fill:{$busColor_}"/>
1331 -->     
1332         <!-- Place the bus label.-->    
1333 <!--    
1334         <text class="p2pbuslabel" 
1335                           x="{$bcInSpace_X_   + $BLKD_BUS_ARROW_W + ceiling($BLKD_BUS_ARROW_W div 2) + ceiling($BLKD_BUS_ARROW_W div 4) + 6}"
1336                           y="{$busTop_ + ($BLKD_BUS_ARROW_H * 3)}">
1337                         <xsl:value-of select="$busName_"/>
1338         </text> 
1339 -->     
1340         
1341                                                 
1342 </xsl:template> 
1343         
1344         
1345                                         
1346 <!-- 
1347                  ===========================================================
1348                         Handle MultiStack Point to Point connections
1349                  ===========================================================
1350 -->
1351                                         
1352 <xsl:template name="BCLaneSpace_MultiStack_PointToPoint">       
1353         
1354         <xsl:param name="iBusStd"          select="'NONE'"/>    
1355         <xsl:param name="iBusName"         select="'NONE'"/>    
1356         <xsl:param name="iBifRank"         select="'NONE'"/>    
1357         <xsl:param name="iStackToEast"     select="'NONE'"/>    
1358         <xsl:param name="iStackToWest"     select="'NONE'"/>    
1359         <xsl:param name="iStackToEast_W"   select="0"/> 
1360         <xsl:param name="iStackToWest_W"   select="0"/> 
1361         <xsl:param name="iLaneInSpace_X"   select="0"/> 
1362         
1363         <xsl:variable name="busColor_">
1364                 <xsl:call-template name="BusType2Color">
1365                         <xsl:with-param name="iBusType" select="$iBusStd"/>
1366                 </xsl:call-template>    
1367         </xsl:variable> 
1368         
1369         <xsl:variable name="space_W_">
1370                 <xsl:call-template name="_calc_Space_Width"> 
1371                         <xsl:with-param name="iStackToEast"  select="$iStackToEast"/>
1372                         <xsl:with-param name="iStackToWest"  select="$iStackToWest"/>
1373                 </xsl:call-template>            
1374         </xsl:variable>
1375         
1376         <xsl:variable name ="extSpaceWest_W_" select="ceiling($iStackToWest_W div 2)"/>
1377         <xsl:variable name ="extSpaceEast_W_" select="ceiling($iStackToEast_W div 2)"/>                                                 
1378         
1379         <!-- Store the connections in a variable -->
1380         <xsl:variable name="bcInSpace_X_"  select="($iLaneInSpace_X +  ceiling($BLKD_BIFC_W div 2) - ceiling($BLKD_BUS_ARROW_W div 2))"/>
1381                                         
1382         <xsl:variable name="multiConns_">
1383                                                 
1384                 <xsl:for-each select="BUSCONN">
1385                                                         
1386                         <xsl:variable name="bifName_"      select="@BUSINTERFACE"/>
1387                         <xsl:variable name="multiInstance_" select="@INSTANCE"/>
1388                         <xsl:variable name="mulshp_hori_idx_">
1389                                 <xsl:choose>
1390                                         <xsl:when test="@IS_PROCCONN">
1391                                                 <xsl:value-of select="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $multiInstance_)]/@STACK_HORIZ_INDEX"/>
1392                                         </xsl:when>
1393                                         <xsl:otherwise>
1394                                                 <xsl:value-of select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $multiInstance_)])]/@STACK_HORIZ_INDEX"/>
1395                                         </xsl:otherwise>
1396                                 </xsl:choose>
1397                         </xsl:variable> 
1398                                                         
1399                         <xsl:variable name="mulshp_vert_idx_">
1400                                 <xsl:choose>
1401                                         <xsl:when test="@IS_PROCCONN">
1402                                                 <xsl:value-of select="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $multiInstance_)]/@SHAPE_VERTI_INDEX"/>
1403                                         </xsl:when>
1404                                         <xsl:otherwise>
1405                                                 <xsl:value-of select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $multiInstance_)])]/@SHAPE_VERTI_INDEX"/>
1406                                         </xsl:otherwise>
1407                                 </xsl:choose>
1408                         </xsl:variable> 
1409                                 
1410 <!--                                                    
1411                         <xsl:message>Shape Horiz <xsl:value-of select="$mulshp_hori_idx_"/></xsl:message>
1412                         <xsl:message>Shape Verti <xsl:value-of select="$mulshp_vert_idx_"/></xsl:message>
1413 -->     
1414                                                         
1415                         <xsl:variable name="mulshp_Y_">
1416                                 <xsl:call-template name="_calc_Stack_Shape_Y">
1417                                         <xsl:with-param name="iHorizIdx"  select="$mulshp_hori_idx_"/>
1418                                         <xsl:with-param name="iVertiIdx"  select="$mulshp_vert_idx_"/>
1419                                 </xsl:call-template>
1420                         </xsl:variable>
1421                                                 
1422                         <xsl:variable name="cmplxStack_H_diff_">
1423                                 <xsl:choose>
1424                                         <xsl:when test="   (($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">0</xsl:when>
1425                                         <xsl:when test="not(($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">
1426                                                 
1427                                                 <xsl:variable name="stackToWest_AbvSbs_H_">
1428                                                         <xsl:call-template name="_calc_Stack_AbvSbs_Height">
1429                                                                 <xsl:with-param name="iStackIdx"  select="$iStackToWest"/>
1430                                                         </xsl:call-template>
1431                                                 </xsl:variable>
1432                         
1433                                                 <xsl:variable name="stackToEast_AbvSbs_H_">
1434                                                         <xsl:call-template name="_calc_Stack_AbvSbs_Height">
1435                                                                 <xsl:with-param name="iStackIdx"  select="$iStackToEast"/>
1436                                                         </xsl:call-template>
1437                                                 </xsl:variable>
1438                                 
1439 <!--                            
1440                                 <xsl:message>stack to west H <xsl:value-of select="$stackToWest_AbvSbs_H_"/></xsl:message>
1441                                 <xsl:message>stack to east H <xsl:value-of select="$stackToEast_AbvSbs_H_"/></xsl:message>
1442 -->                             
1443                                                 <xsl:choose>
1444                                                         <xsl:when test="(($mulshp_hori_idx_ = $iStackToEast) and ($stackToWest_AbvSbs_H_ &gt; $stackToEast_AbvSbs_H_))">
1445                                                                         <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
1446                                                         </xsl:when>     
1447                                                         <xsl:when test="(($mulshp_hori_idx_ = $iStackToWest) and ($stackToEast_AbvSbs_H_ &gt; $stackToWest_AbvSbs_H_))">
1448                                                                 <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
1449                                                         </xsl:when>     
1450                                                         <xsl:otherwise>0</xsl:otherwise>        
1451                                                 </xsl:choose>   
1452                                                                         
1453                                         </xsl:when>
1454                                 </xsl:choose>
1455                         </xsl:variable>
1456                                                 
1457                                                                                                                                                                 
1458                         <xsl:variable name="procStack_H_diff_">
1459                                 <xsl:choose>
1460                                         <xsl:when test="   (($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">0</xsl:when>
1461                                         <xsl:when test="not(($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">
1462                         
1463                                                 <xsl:variable name="stackToWest_AbvSbs_H_">
1464                                                         <xsl:call-template name="_calc_Stack_AbvSbs_Height">
1465                                                                 <xsl:with-param name="iStackIdx"  select="$iStackToWest"/>
1466                                                         </xsl:call-template>
1467                                                 </xsl:variable>
1468                                 
1469                                                 <xsl:variable name="stackToEast_AbvSbs_H_">
1470                                                         <xsl:call-template name="_calc_Stack_AbvSbs_Height">
1471                                                                 <xsl:with-param name="iStackIdx"  select="$iStackToEast"/>
1472                                                         </xsl:call-template>
1473                                                 </xsl:variable>
1474                                 
1475 <!--                            
1476                                 <xsl:message>stack to west H <xsl:value-of select="$stackToWest_AbvSbs_H_"/></xsl:message>
1477                                 <xsl:message>stack to east H <xsl:value-of select="$stackToEast_AbvSbs_H_"/></xsl:message>
1478 -->                             
1479                                                 <xsl:choose>
1480                                                         <xsl:when test="(($mulshp_hori_idx_ = $iStackToEast) and ($stackToWest_AbvSbs_H_ &gt; $stackToEast_AbvSbs_H_))">
1481                                                                 <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
1482                                                         </xsl:when>     
1483                                                         <xsl:when test="(($mulshp_hori_idx_ = $iStackToWest) and ($stackToEast_AbvSbs_H_ &gt; $stackToWest_AbvSbs_H_))">
1484                                                                 <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
1485                                                         </xsl:when>     
1486                                                         <xsl:otherwise>0</xsl:otherwise>        
1487                                                 </xsl:choose>   
1488                                                                         
1489                                         </xsl:when>
1490                                 </xsl:choose>
1491                         </xsl:variable>
1492                                                         
1493                         <xsl:choose>
1494                                                         
1495                                 <xsl:when test="@IS_PROCCONN and @BIF_Y">
1496                                                                                 
1497                                         <xsl:variable name="procBif_Y_"   select="((($BLKD_BIF_H + $BLKD_MOD_BIF_GAP_V) * @BIF_Y) + ($BLKD_MOD_LANE_H + $BLKD_MOD_LABEL_H + $BLKD_MOD_BIF_GAP_V))"/>
1498                                                                                 
1499                                         <xsl:variable name="procBifRank_"  select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $multiInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIFRANK"/>
1500                                         <xsl:variable name="procBusName_"  select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $multiInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BUSNAME"/>
1501                                         <xsl:variable name="procBifSide_"  select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $multiInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_X"/>
1502                                                                                 
1503                                         <xsl:variable name="bcProc_Y_"     select="($mulshp_Y_ + $procBif_Y_ + ceiling($BLKD_BIF_H div 2) - ceiling($BLKD_BIFC_H div 2) + $procStack_H_diff_)"/>
1504                                         
1505                                         <xsl:variable name="bcProc_X_">
1506                                                 <xsl:choose>
1507                                                         <xsl:when test="$procBifSide_ = '0'">
1508                                                                 <xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_ - (ceiling($BLKD_MOD_W div 2) + $BLKD_BIFC_W))"/>
1509                                                         </xsl:when>
1510                                                         <xsl:when test="$procBifSide_ = '1'">
1511                                                                 <xsl:value-of select="ceiling($BLKD_MOD_W div 2)"/>
1512                                                         </xsl:when>
1513                                                         <xsl:otherwise>0</xsl:otherwise>
1514                                                 </xsl:choose>
1515                                         </xsl:variable>
1516                                                 
1517                                         <MULTICONN X="{$bcProc_X_}" Y="{$bcProc_Y_}" BUSNAME="{$procBusName_}" BUSSTD="{$iBusStd}" BIFRANK="{$procBifRank_}" BIFSIDE="{$procBifSide_}"/>
1518                                 </xsl:when>
1519                                                                         
1520                                 <xsl:otherwise>
1521                                                                                         
1522                                         <xsl:variable name="modType_"     select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $multiInstance_)]/@MODCLASS"/>
1523                                         <xsl:variable name="modBif_Y_"    select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $multiInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_Y"/>
1524                                         <xsl:variable name="modBifSide_"  select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $multiInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_X"/>
1525                                         <xsl:variable name="modBusStd_"   select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $multiInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BUSSTD"/>
1526                                         <xsl:variable name="memcMOD_W_"   select="((/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[MODULE[(@INSTANCE = $multiInstance_)]]/@MODS_W) * $BLKD_MOD_W)"/>
1527                                                                 
1528                                         <xsl:variable name="modBc_Y_">
1529                                                 <xsl:choose>
1530                                                         <xsl:when test="($modType_ = 'MEMORY_CNTLR') and (($modBusStd_ = 'LMB') or ($modBusStd_= 'OCM'))">
1531                                                         <xsl:value-of select="$BLKD_MOD_H + $BLKD_MOD_LANE_H + ((($BLKD_BIF_H + $BLKD_MOD_BIF_GAP_V) * $modBif_Y_))"/>
1532                                                         </xsl:when>
1533                                                         <xsl:otherwise>
1534                                                         <xsl:value-of select="((($BLKD_BIF_H + $BLKD_MOD_BIF_GAP_V) * $modBif_Y_) + ($BLKD_MOD_LANE_H + $BLKD_MOD_LABEL_H + $BLKD_MOD_BIF_GAP_V))"/>
1535                                                         </xsl:otherwise>
1536                                                 </xsl:choose>
1537                                         </xsl:variable>   
1538 <!--                                    
1539                                         <xsl:message><xsl:value-of select="$multiInstance_"/>.<xsl:value-of select="$bifName_"/>:Y = <xsl:value-of select="$modBif_Y_"/></xsl:message>
1540                                         <xsl:message><xsl:value-of select="$multiInstance_"/>.<xsl:value-of select="$bifName_"/>:BcY = <xsl:value-of select="$modBc_Y_"/></xsl:message>
1541                                         <xsl:message><xsl:value-of select="$multiInstance_"/>.<xsl:value-of select="$bifName_"/>:TcY = <xsl:value-of select="($BLKD_MOD_LANE_H + $BLKD_MOD_LABEL_H + $BLKD_MOD_BIF_GAP_V)"/></xsl:message>
1542 -->     
1543                                         
1544                                         <xsl:variable name="modBifRank_"  select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $multiInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIFRANK"/>
1545                                         <xsl:variable name="modBusName_"  select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $multiInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BUSNAME"/>
1546                                         
1547 <!--                                    
1548                                         <xsl:variable name="bcMod_Y_"     select="($mulshp_Y_ + $modBc_Y_ + ceiling($BLKD_BIF_H div 2) - ceiling($BLKD_BIFC_H div 2))"/>
1549 -->                                     
1550                                         <xsl:variable name="bcMod_Y_"     select="($mulshp_Y_ + $modBc_Y_ + ceiling($BLKD_BIF_H div 2) - ceiling($BLKD_BIFC_H div 2) + $cmplxStack_H_diff_)"/>
1551                                         
1552                                         <xsl:variable name="bcMod_X_">
1553                                                 <xsl:choose>
1554                                                         <xsl:when test="$modBifSide_ = '0'">
1555                                                                 <xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_ - (ceiling($memcMOD_W_ div 2) + $BLKD_BIFC_W))"/>
1556                                                         </xsl:when>
1557                                                         <xsl:when test="$modBifSide_ = '1'">
1558                                                                 <xsl:value-of select="ceiling($memcMOD_W_ div 2)"/>
1559                                                         </xsl:when>
1560                                                         <xsl:otherwise>0</xsl:otherwise>
1561                                                 </xsl:choose>
1562                                         </xsl:variable>
1563                                                 
1564                                         
1565                                         <MULTICONN X="{$bcMod_X_}" Y="{$bcMod_Y_}" BUSNAME="{$modBusName_}" BUSSTD="{$iBusStd}" BIFRANK="{$modBifRank_}" BIFSIDE="{$modBifSide_}"/>
1566 <!--                                    
1567                                         <MULTICONN X="{$bcInSpace_X_}" Y="{$bcMod_Y_}" BUSSTD="{$busStd}" BIFRANK="{$modBifRank_}" BIFSIDE="{$modBifSide_}"/>
1568 -->                                     
1569                                                 
1570                                         </xsl:otherwise>
1571                                 </xsl:choose>   
1572                         </xsl:for-each>
1573                 </xsl:variable>
1574                                         
1575                 <!-- Draw the busconnection and horizontal lines.-->                                            
1576                 <xsl:for-each select="exsl:node-set($multiConns_)/MULTICONN">
1577                                                         
1578                         <xsl:variable name="bus_x_" select="($bcInSpace_X_ + ceiling($BLKD_BIFC_W div 2))"/>
1579                         <xsl:variable name="bus_y_" select="@Y + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_P2P_BUS_W div 2)"/>
1580                 
1581                         <xsl:variable name="h_bus_ul_x_">
1582                                 <xsl:choose>
1583                                         <xsl:when test="@BIFSIDE='0'">
1584                                                 <xsl:value-of select="$bus_x_"/>
1585                                         </xsl:when>
1586                                         <xsl:when test="@BIFSIDE='1'">
1587                                                 <xsl:value-of select="(@X + $BLKD_BIFC_W + $BLKD_BUS_ARROW_W)"/>
1588                                         </xsl:when>
1589                                 </xsl:choose>
1590                         </xsl:variable> 
1591                 
1592                         <xsl:variable name="h_bus_ul_y_" select="$bus_y_"/>
1593         
1594                         <xsl:variable name="h_bus_height_" select="$BLKD_P2P_BUS_W"/>
1595                         <xsl:variable name="h_bus_width_">
1596 <!--                            
1597                                 <xsl:message>BUSSTD  <xsl:value-of select="@BUSSTD"/></xsl:message>
1598                                 <xsl:message>BIFSIDE <xsl:value-of select="@BIFSIDE"/></xsl:message>
1599                                 <xsl:message>BIFRANK <xsl:value-of select="@BIFRANK"/></xsl:message>
1600 -->                             
1601                                 <xsl:choose>
1602                                         <xsl:when test="@BIFSIDE='0'">
1603                                                 <xsl:value-of select="(@X - $bus_x_ - $BLKD_BUS_ARROW_W)"/>
1604                                         </xsl:when>
1605                                         <xsl:when test="@BIFSIDE='1'">
1606                                                 <xsl:value-of select="$bus_x_ - $h_bus_ul_x_"/>
1607                                         </xsl:when>
1608                                 </xsl:choose>
1609                         </xsl:variable>         
1610                         
1611                         
1612                         <!-- Draw the horizontal part of the bus -->
1613                         <rect x="{$h_bus_ul_x_}" 
1614                                   y="{$h_bus_ul_y_}"  
1615                                   width= "{$h_bus_width_}" 
1616                                   height="{$h_bus_height_}" 
1617                               style="stroke:none; fill:{$busColor_}"/>
1618                 
1619                         
1620                         <!-- Draw the arrow -->
1621                         <xsl:choose>
1622                                 <xsl:when test="((@BIFSIDE='0') and not((@BUSSTD = 'FSL') and ((@BIFRANK = 'INITIATOR') or (@BIFRANK = 'MASTER'))))">
1623                                         <use   x="{@X - $BLKD_BUS_ARROW_W}"   y="{@Y + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_BUS_ARROW_H div 2)}"  xlink:href="#{@BUSSTD}_BusArrowEast"/>
1624                                 </xsl:when>
1625                                 <xsl:when test="((@BIFSIDE='1') and not((@BUSSTD = 'FSL') and ((@BIFRANK = 'INITIATOR') or (@BIFRANK = 'MASTER'))))">
1626                                         <use   x="{(@X + $BLKD_BIFC_W)}" y="{@Y + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_BUS_ARROW_H div 2)}"  xlink:href="#{@BUSSTD}_BusArrowWest"/>
1627                                 </xsl:when>
1628                                 
1629                                 <xsl:when test="((@BIFSIDE='0') and ((@BUSSTD = 'FSL') and ((@BIFRANK = 'INITIATOR') or (@BIFRANK = 'MASTER'))))">
1630                                         <use   x="{@X - $BLKD_BUS_ARROW_W}"   y="{@Y + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_BUS_ARROW_H div 2)}"  xlink:href="#{@BUSSTD}_BusArrowHInitiator"/>
1631                                 </xsl:when>
1632                                 
1633                                 <xsl:when test="((@BIFSIDE='1') and ((@BUSSTD = 'FSL') and ((@BIFRANK = 'INITIATOR') or (@BIFRANK = 'MASTER'))))">
1634                                         <use   x="{(@X + $BLKD_BIFC_W)}" y="{@Y + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_BUS_ARROW_H div 2)}"  xlink:href="#{@BUSSTD}_BusArrowHInitiator"/>
1635                                 </xsl:when>
1636                                         
1637                         </xsl:choose>
1638                 
1639                         <use   x="{@X}"   y="{@Y}"  xlink:href="#{@BUSSTD}_busconn_{@BIFRANK}"/>
1640                         
1641                                                         
1642                 </xsl:for-each>
1643                                                 
1644                 <xsl:variable name="busTop_" select="math:min(exsl:node-set($multiConns_)/MULTICONN/@Y)"/>
1645                 <xsl:variable name="busBot_" select="math:max(exsl:node-set($multiConns_)/MULTICONN/@Y)"/>
1646 <!--    
1647                 <xsl:variable name="topRnk_" select="(exsl:node-set($multiConns_)/MULTICONN[(@Y = $busTop_)]/@BIFRANK)"/>
1648                 <xsl:variable name="botRnk_" select="(exsl:node-set($multiConns_)/MULTICONN[(@Y = $busBot_)]/@BIFRANK)"/>
1649 -->     
1650         
1651                 <xsl:variable name="v_bus_y_" select="$busTop_ + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_P2P_BUS_W div 2)"/>
1652                 <xsl:variable name="busName_" select="exsl:node-set($multiConns_)/MULTICONN/@BUSNAME"/>
1653         
1654                 <!-- Draw the vertical part of the bus -->      
1655                 <rect x="{$bcInSpace_X_ + $BLKD_P2P_BUS_W}" 
1656                           y="{$v_bus_y_}"  
1657                       width= "{$BLKD_P2P_BUS_W}" 
1658                       height="{($busBot_ - $busTop_) + $BLKD_P2P_BUS_W}" 
1659                       style="stroke:none; fill:{$busColor_}"/>
1660                                                 
1661         <!-- Place the bus label.-->    
1662                 <text class="p2pbuslabel" 
1663                           x="{$bcInSpace_X_   + $BLKD_BUS_ARROW_W + ceiling($BLKD_BUS_ARROW_W div 2) + ceiling($BLKD_BUS_ARROW_W div 4) + 6}"
1664                           y="{$busTop_ + ($BLKD_BUS_ARROW_H * 3)}">
1665                         <xsl:value-of select="$busName_"/>
1666                 </text> 
1667         
1668 <!--                                            
1669                 <xsl:message>Bot Rank  <xsl:value-of select="$botRnk_"/></xsl:message>  
1670 -->                                             
1671                                                 
1672 <!--    
1673                 <xsl:call-template name="Draw_P2PBus">
1674                         <xsl:with-param name="busX"    select="$bcInSpace_X_"/>
1675                         <xsl:with-param name="busTop"  select="$busTop_"/>
1676                         <xsl:with-param name="busBot"  select="$busBot_"/>
1677                         <xsl:with-param name="topRnk"  select="$topRnk_"/>
1678                         <xsl:with-param name="botRnk"  select="$botRnk_"/>
1679                         <xsl:with-param name="busStd"  select="$busStd"/>
1680                         <xsl:with-param name="busName" select="$busName"/>
1681                 </xsl:call-template>
1682 -->     
1683                                         
1684 </xsl:template> 
1685         
1686         
1687 <!-- 
1688                  ===========================================================
1689                         Handle Processor to processor connections
1690                  ===========================================================
1691 -->
1692 <xsl:template name="BCLaneSpace_ProcToProc">    
1693         
1694         <xsl:param name="iBusStd"         select="'NONE'"/>     
1695         <xsl:param name="iBusName"        select="'NONE'"/>     
1696         <xsl:param name="iBifRank"        select="'NONE'"/>     
1697         <xsl:param name="iStackToEast"    select="'NONE'"/>     
1698         <xsl:param name="iStackToWest"    select="'NONE'"/>     
1699         <xsl:param name="iStackToEast_W"  select="0"/>  
1700         <xsl:param name="iStackToWest_W"  select="0"/>  
1701         <xsl:param name="iLaneInSpace_X"  select="0"/>  
1702         
1703         <xsl:variable name="busColor_">
1704                 <xsl:call-template name="BusType2Color">
1705                         <xsl:with-param name="iBusType" select="$iBusStd"/>
1706                 </xsl:call-template>    
1707         </xsl:variable> 
1708         
1709         <xsl:variable name="space_W_">
1710                 <xsl:call-template name="_calc_Space_Width"> 
1711                         <xsl:with-param name="iStackToEast"  select="$iStackToEast"/>
1712                         <xsl:with-param name="iStackToWest"  select="$iStackToWest"/>
1713                 </xsl:call-template>            
1714         </xsl:variable>
1715         
1716         <xsl:variable name ="extSpaceWest_W_" select="ceiling($iStackToWest_W div 2)"/>
1717         <xsl:variable name ="extSpaceEast_W_" select="ceiling($iStackToEast_W div 2)"/>                                                 
1718                 
1719         <xsl:variable name="pr2pr_StackToWest_"   select="math:min(BUSCONN/@STACK_HORIZ_INDEX)"/>
1720         <xsl:variable name="pr2pr_StackToEast_"   select="math:max(BUSCONN/@STACK_HORIZ_INDEX)"/>
1721         <xsl:variable name="proc2procConn_heights_">
1722         
1723         <xsl:for-each select="BUSCONN">
1724                                         
1725                 <xsl:variable name="procInstance_" select="@INSTANCE"/>
1726                 <xsl:variable name="bifName_"      select="@BUSINTERFACE"/>
1727                 <xsl:variable name="procshp_hori_idx_" select="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $procInstance_)]/@STACK_HORIZ_INDEX"/>
1728                 <xsl:variable name="procshp_vert_idx_" select="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $procInstance_)]/@SHAPE_VERTI_INDEX"/>
1729                 <xsl:variable name="procshp_Y_">
1730                         <xsl:call-template name="_calc_Stack_Shape_Y">
1731                                 <xsl:with-param name="iHorizIdx"  select="$procshp_hori_idx_"/>
1732                                 <xsl:with-param name="iVertiIdx"  select="$procshp_vert_idx_"/>
1733                         </xsl:call-template>
1734                 </xsl:variable>
1735                                                 
1736                 <xsl:variable name="procStack_H_diff_">
1737                         <xsl:choose>
1738                                 <xsl:when test="   (($pr2pr_StackToEast_ = 'NONE') or ($pr2pr_StackToWest_ = 'NONE'))">0</xsl:when>
1739                                 <xsl:when test="not(($pr2pr_StackToEast_ = 'NONE') or ($pr2pr_StackToWest_ = 'NONE'))">
1740                         
1741                                         <xsl:variable name="stackToWest_AbvSbs_H_">
1742                                                 <xsl:call-template name="_calc_Stack_AbvSbs_Height">
1743                                                         <xsl:with-param name="iStackIdx"  select="$pr2pr_StackToWest_"/>
1744                                                 </xsl:call-template>
1745                                         </xsl:variable>
1746                                 
1747                                         <xsl:variable name="stackToEast_AbvSbs_H_">
1748                                                 <xsl:call-template name="_calc_Stack_AbvSbs_Height">
1749                                                         <xsl:with-param name="iStackIdx"  select="$pr2pr_StackToEast_"/>
1750                                                 </xsl:call-template>
1751                                         </xsl:variable>
1752 <!--                            
1753                                 <xsl:message>stack to west H <xsl:value-of select="$stackToWest_AbvSbs_H_"/></xsl:message>
1754                                 <xsl:message>stack to east H <xsl:value-of select="$stackToEast_AbvSbs_H_"/></xsl:message>
1755 -->                             
1756                                         <xsl:choose>
1757                                                 <xsl:when test="(($procshp_hori_idx_ = $pr2pr_StackToEast_) and ($stackToWest_AbvSbs_H_ &gt; $stackToEast_AbvSbs_H_))">
1758                                                         <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
1759                                                 </xsl:when>     
1760                                                 <xsl:when test="(($procshp_hori_idx_ = $pr2pr_StackToWest_) and ($stackToEast_AbvSbs_H_ &gt; $stackToWest_AbvSbs_H_))">
1761                                                         <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
1762                                                 </xsl:when>     
1763                                                 <xsl:otherwise>0</xsl:otherwise>        
1764                                         </xsl:choose>   
1765                                                                                 
1766                                 </xsl:when>
1767                         </xsl:choose>
1768                 </xsl:variable>
1769                                                 
1770                 <!-- Store the conns in a variable -->  
1771                 <xsl:variable name="procBif_Y_"   select="((($BLKD_BIF_H + $BLKD_MOD_BIF_GAP_V) * @BIF_Y) + ($BLKD_MOD_LANE_H + $BLKD_MOD_LABEL_H + $BLKD_MOD_BIF_GAP_V))"/>
1772                                                                                         
1773                 <xsl:variable name="procBifRank_"  select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $procInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIFRANK"/>
1774                 <xsl:variable name="procBifSide_"  select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $procInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_X"/>
1775                                                                         
1776                 <xsl:variable name="bcInSpace_X_">
1777                         <xsl:choose>
1778                                 <xsl:when test="$procBifSide_ = '1'"><xsl:value-of select="ceiling($BLKD_MOD_W div 2)"/></xsl:when>
1779                                 <xsl:when test="$procBifSide_ = '0'"><xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_ - ceiling($BLKD_MOD_W div 2) - $BLKD_BIFC_W)"/></xsl:when>
1780                         </xsl:choose>
1781                 </xsl:variable> 
1782                                                         
1783                 <xsl:variable name="bcProc_Y_"     select="($procshp_Y_ + $procBif_Y_ + ceiling($BLKD_BIF_H div 2) - ceiling($BLKD_BIFC_H div 2) + $procStack_H_diff_)"/>
1784 <!--                                                    
1785                 <xsl:message>Conn X <xsl:value-of select="$bcInSpace_X_"/></xsl:message>
1786                 <xsl:message>Conn Y <xsl:value-of select="$bcProc_Y_"/></xsl:message>
1787 -->                                                     
1788                                                                                 
1789                                 <PR2PRCONN X="{$bcInSpace_X_}" Y="{$bcProc_Y_}" BUSSTD="{$iBusStd}" BIFRANK="{$procBifRank_}" BIFSIDE="{$procBifSide_}" SHAPE_ID="{$procshp_hori_idx_}"/>
1790                         </xsl:for-each>
1791                 </xsl:variable>
1792                                         
1793                 <xsl:variable name="pr2prLeft_"   select="math:min(exsl:node-set($proc2procConn_heights_)/PR2PRCONN/@SHAPE_ID)"/>
1794                 <xsl:variable name="pr2prRght_"   select="math:max(exsl:node-set($proc2procConn_heights_)/PR2PRCONN/@SHAPE_ID)"/>
1795                                 
1796                 <xsl:variable name="pr2pr_stack_Left_X_">
1797                         <xsl:call-template name="_calc_Stack_X"> 
1798                                 <xsl:with-param name="iStackIdx"  select="$pr2prLeft_"/>
1799                         </xsl:call-template>            
1800                 </xsl:variable> 
1801                                         
1802                 <xsl:variable name="pr2pr_stack_Rght_X_">
1803                         <xsl:call-template name="_calc_Stack_X"> 
1804                                 <xsl:with-param name="iStackIdx"  select="$pr2prRght_"/>
1805                         </xsl:call-template>            
1806                 </xsl:variable> 
1807                                         
1808 <!--                                    
1809                                         <xsl:message>Left stack X <xsl:value-of select="$pr2pr_stack_Left_X_"/></xsl:message>
1810                                         <xsl:message>Rght stack X <xsl:value-of select="$pr2pr_stack_Rght_X_"/></xsl:message>
1811 -->                                     
1812                 <xsl:variable name="pr2pr_space_W_" select="($pr2pr_stack_Rght_X_ - $pr2pr_stack_Left_X_)"/>
1813                                                 
1814                                         
1815                 <xsl:variable name="pr2pr_extStackEast_W_">
1816                         <xsl:call-template name="_calc_Stack_Width">
1817                                 <xsl:with-param name="iStackIdx"  select="$pr2prRght_"/>
1818                         </xsl:call-template>
1819                 </xsl:variable>
1820                                         
1821                 <xsl:variable name="pr2pr_extStackWest_W_">
1822                         <xsl:call-template name="_calc_Stack_Width">
1823                                 <xsl:with-param name="iStackIdx"  select="$pr2prLeft_"/>
1824                         </xsl:call-template>
1825                 </xsl:variable>
1826                                         
1827 <!--                                    
1828                                         <xsl:message>Space W <xsl:value-of select="$pr2pr_space_W_"/></xsl:message>
1829                                         <xsl:message>Rght stack <xsl:value-of select="$pr2pr_extStackEast_W_"/></xsl:message>
1830                                         <xsl:message>Left stack <xsl:value-of select="$pr2pr_extStackWest_W_"/></xsl:message>
1831 -->                                     
1832         
1833                 <xsl:variable name="connLeft_X_" select="ceiling($BLKD_MOD_W div 2)"/>
1834                 <xsl:variable name="connRght_X_" select="($pr2pr_space_W_ - ceiling($pr2pr_extStackWest_W_ div 2) + ceiling($pr2pr_extStackEast_W_ div 2) - ceiling($BLKD_MOD_W div 2) - $BLKD_BIFC_W)"/>
1835                                         
1836                                         <!-- Draw the busconnections .-->                                               
1837                 <xsl:for-each select="exsl:node-set($proc2procConn_heights_)/PR2PRCONN">
1838                         <xsl:variable name="conn_X_">
1839                                 <xsl:choose>
1840                                         <xsl:when test="@BIFSIDE = '1'"><xsl:value-of select="ceiling($BLKD_MOD_W div 2)"/></xsl:when>
1841                                         <xsl:when test="@BIFSIDE = '0'"><xsl:value-of select="($pr2pr_space_W_ - ceiling($pr2pr_extStackWest_W_ div 2) + ceiling($pr2pr_extStackEast_W_ div 2) - ceiling($BLKD_MOD_W div 2) - $BLKD_BIFC_W)"/></xsl:when>
1842 <!--                                                                    
1843                                                                         <xsl:when test="@BIFSIDE = '0'"><xsl:value-of select="($pr2pr_space_W_ + $pr2pr_extStackWest_W_ + $pr2pr_extStackEast_W_ - ceiling($BLKD_MOD_W div 2) - $BLKD_BIFC_W)"/></xsl:when>
1844 -->     
1845                                 </xsl:choose>
1846                         </xsl:variable> 
1847                                                         
1848                                                 
1849                         <use   x="{$conn_X_}"   y="{@Y}"  xlink:href="#{@BUSSTD}_busconn_{@BIFRANK}"/>
1850                 </xsl:for-each>
1851                                         
1852                 <xsl:variable name="bc_Y_"     select="math:min(exsl:node-set($proc2procConn_heights_)/PR2PRCONN/@Y)"/>
1853                 <xsl:variable name="bcLeft_"   select="math:min(exsl:node-set($proc2procConn_heights_)/PR2PRCONN/@X)"/>
1854                 <xsl:variable name="bcRght_"   select="math:max(exsl:node-set($proc2procConn_heights_)/PR2PRCONN/@X)"/>
1855                                         
1856                 <xsl:variable name="leftRnk_"  select="(exsl:node-set($proc2procConn_heights_)/PR2PRCONN[(@X = $bcLeft_)]/@BIFRANK)"/>
1857                 <xsl:variable name="rghtRnk_"  select="(exsl:node-set($proc2procConn_heights_)/PR2PRCONN[(@X = $bcRght_)]/@BIFRANK)"/>
1858                                                 
1859                 <xsl:call-template name="Draw_Proc2ProcBus">
1860                         <xsl:with-param name="iBc_Y"     select="$bc_Y_"/>
1861                         <xsl:with-param name="iBusStd"   select="$iBusStd"/>
1862                         <xsl:with-param name="iBusName"  select="$iBusName"/>
1863                         <xsl:with-param name="iLeftRnk"  select="$leftRnk_"/>
1864                         <xsl:with-param name="iRghtRnk"  select="$rghtRnk_"/>
1865                         <xsl:with-param name="iBcLeft_X" select="$connLeft_X_ + $BLKD_BIFC_W"/>
1866                         <xsl:with-param name="iBcRght_X" select="$connRght_X_"/>
1867                 </xsl:call-template>
1868                                 
1869 </xsl:template> 
1870         
1871 <!-- 
1872                  ===========================================================
1873                         Handle connections to the MPMC
1874                  ===========================================================
1875 -->
1876 <xsl:template name="BCLaneSpace_ToStandAloneMPMC">      
1877         
1878         <xsl:param name="iBusStd"        select="'NONE'"/>      
1879         <xsl:param name="iBusName"       select="'NONE'"/>      
1880         <xsl:param name="iBifRank"       select="'NONE'"/>      
1881         <xsl:param name="iStackToEast"   select="'NONE'"/>      
1882         <xsl:param name="iStackToWest"   select="'NONE'"/>      
1883         <xsl:param name="iStackToEast_W" select="0"/>   
1884         <xsl:param name="iStackToWest_W" select="0"/>   
1885         <xsl:param name="iLaneInSpace_X" select="0"/>   
1886         
1887         <xsl:variable name="busColor_">
1888                 <xsl:call-template name="BusType2Color">
1889                         <xsl:with-param name="iBusType" select="$iBusStd"/>
1890                 </xsl:call-template>    
1891         </xsl:variable> 
1892         
1893         <xsl:variable name="busColor_lt_">
1894                 <xsl:call-template name="BusType2LightColor">
1895                         <xsl:with-param name="iBusType" select="$iBusStd"/>
1896                 </xsl:call-template>    
1897         </xsl:variable> 
1898         
1899         <xsl:variable name="space_W_">
1900                 <xsl:call-template name="_calc_Space_Width"> 
1901                         <xsl:with-param name="iStackToEast"  select="$iStackToEast"/>
1902                         <xsl:with-param name="iStackToWest"  select="$iStackToWest"/>
1903                 </xsl:call-template>            
1904         </xsl:variable>
1905         
1906         <xsl:variable name ="extSpaceWest_W_" select="ceiling($iStackToWest_W div 2)"/>
1907         <xsl:variable name ="extSpaceEast_W_" select="ceiling($iStackToEast_W div 2)"/>                                                 
1908         
1909         <xsl:variable name="bcInSpace_X_"  select="($iLaneInSpace_X +  ceiling($BLKD_BIFC_W div 2) - ceiling($BLKD_BUS_ARROW_W div 2))"/>
1910         <xsl:variable name="p2pInstance_" select="BUSCONN[(@BIF_Y)]/@INSTANCE"/>
1911                                         
1912         <xsl:variable name="p2pshp_hori_idx_">
1913                 <xsl:choose>
1914                         <xsl:when test="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $p2pInstance_)]">
1915                                 <xsl:value-of select="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $p2pInstance_)]/@STACK_HORIZ_INDEX"/>
1916                         </xsl:when>
1917                         <xsl:otherwise>
1918                                 <xsl:value-of select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $p2pInstance_)])]/@STACK_HORIZ_INDEX"/>
1919                         </xsl:otherwise>
1920                 </xsl:choose>
1921         </xsl:variable>         
1922                                         
1923         <xsl:variable name="p2pshp_vert_idx_">
1924                 <xsl:choose>
1925                         <xsl:when test="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $p2pInstance_)]">
1926                                 <xsl:value-of select="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $p2pInstance_)]/@SHAPE_VERTI_INDEX"/>
1927                         </xsl:when>
1928                         <xsl:otherwise>
1929                                 <xsl:value-of select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $p2pInstance_)])]/@SHAPE_VERTI_INDEX"/>
1930                         </xsl:otherwise>
1931                 </xsl:choose>
1932         </xsl:variable>         
1933                                         
1934         <xsl:variable name="p2pshp_Y_">
1935                 <xsl:call-template name="_calc_Stack_Shape_Y">
1936                         <xsl:with-param name="iHorizIdx"  select="$p2pshp_hori_idx_"/>
1937                         <xsl:with-param name="iVertiIdx"  select="$p2pshp_vert_idx_"/>
1938                 </xsl:call-template>
1939         </xsl:variable>
1940                         
1941         <xsl:variable name="cmplxStack_H_diff_">
1942                 <xsl:choose>
1943                         <xsl:when test="   (($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">0</xsl:when>
1944                         <xsl:when test="not(($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">
1945                                 
1946                                 <xsl:variable name="stackToWest_AbvSbs_H_">
1947                                         <xsl:call-template name="_calc_Stack_AbvSbs_Height">
1948                                                 <xsl:with-param name="iStackIdx"  select="$iStackToWest"/>
1949                                         </xsl:call-template>
1950                                 </xsl:variable>
1951                                 
1952                                 <xsl:variable name="stackToEast_AbvSbs_H_">
1953                                         <xsl:call-template name="_calc_Stack_AbvSbs_Height">
1954                                                 <xsl:with-param name="iStackIdx"  select="$iStackToEast"/>
1955                                         </xsl:call-template>
1956                                 </xsl:variable>
1957                                 
1958 <!--                            
1959                                 <xsl:message>stack to west H <xsl:value-of select="$stackToWest_AbvSbs_H_"/></xsl:message>
1960                                 <xsl:message>stack to east H <xsl:value-of select="$stackToEast_AbvSbs_H_"/></xsl:message>
1961 -->                             
1962                                 
1963                                 <xsl:choose>
1964                                         <xsl:when test="(($p2pshp_hori_idx_ = $iStackToEast) and ($stackToWest_AbvSbs_H_ &gt; $stackToEast_AbvSbs_H_))">
1965                                                 <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
1966                                         </xsl:when>     
1967                                         <xsl:when test="(($p2pshp_hori_idx_ = $iStackToWest) and ($stackToEast_AbvSbs_H_ &gt; $stackToWest_AbvSbs_H_))">
1968                                                 <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
1969                                         </xsl:when>     
1970                                         <xsl:otherwise>0</xsl:otherwise>        
1971                                 </xsl:choose>   
1972                                                                         
1973                         </xsl:when>
1974                 </xsl:choose>
1975         </xsl:variable>
1976                                                 
1977         <xsl:variable name="procStack_H_diff_">
1978                 <xsl:choose>
1979                         <xsl:when test="   (($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">0</xsl:when>
1980                         <xsl:when test="not(($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">
1981                         
1982                                 <xsl:variable name="stackToWest_AbvSbs_H_">
1983                                         <xsl:call-template name="_calc_Stack_AbvSbs_Height">
1984                                                 <xsl:with-param name="iStackIdx"  select="$iStackToWest"/>
1985                                         </xsl:call-template>
1986                                 </xsl:variable>
1987                                 
1988                                 <xsl:variable name="stackToEast_AbvSbs_H_">
1989                                         <xsl:call-template name="_calc_Stack_AbvSbs_Height">
1990                                                 <xsl:with-param name="iStackIdx"  select="$iStackToEast"/>
1991                                         </xsl:call-template>
1992                                 </xsl:variable>
1993                                 
1994 <!--                            
1995                                 <xsl:message>stack to west H <xsl:value-of select="$stackToWest_AbvSbs_H_"/></xsl:message>
1996                                 <xsl:message>stack to east H <xsl:value-of select="$stackToEast_AbvSbs_H_"/></xsl:message>
1997 -->                             
1998                                 <xsl:choose>
1999                                         <xsl:when test="(($p2pshp_hori_idx_ = $iStackToEast) and ($stackToWest_AbvSbs_H_ &gt; $stackToEast_AbvSbs_H_))">
2000                                                 <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
2001                                         </xsl:when>     
2002                                         <xsl:when test="(($p2pshp_hori_idx_ = $iStackToWest) and ($stackToEast_AbvSbs_H_ &gt; $stackToWest_AbvSbs_H_))">
2003                                                 <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
2004                                         </xsl:when>     
2005                                         <xsl:otherwise>0</xsl:otherwise>        
2006                                 </xsl:choose>   
2007                                                                         
2008                         </xsl:when>
2009                 </xsl:choose>
2010         </xsl:variable>
2011                                                 
2012         
2013         
2014         <!-- Store the conns in a variable -->  
2015         <xsl:variable name="p2pConn_heights_">
2016         
2017                 <xsl:for-each select="BUSCONN">
2018                                                                         
2019                         <xsl:variable name="bifName_" select="@BUSINTERFACE"/>
2020                                                         
2021                                 <xsl:choose>
2022                                         <xsl:when test="@IS_PROCCONN and @BIF_Y">
2023                                                                                 
2024 <!--                                                                            
2025                                                                                 <xsl:message>Proc <xsl:value-of select="$procInstance_"/></xsl:message>
2026 -->                                                                             
2027                                                 <xsl:variable name="procBif_Y_"   select="((($BLKD_BIF_H + $BLKD_MOD_BIF_GAP_V) * @BIF_Y) + ($BLKD_MOD_LANE_H + $BLKD_MOD_LABEL_H + $BLKD_MOD_BIF_GAP_V))"/>
2028                                                 <xsl:variable name="procBifRank_"  select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $p2pInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIFRANK"/>
2029                                                 <xsl:variable name="procBusName_"  select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $p2pInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BUSNAME"/>
2030                                                 <xsl:variable name="procBifSide_"  select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $p2pInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_X"/>
2031                                                                                 
2032                                                 <xsl:variable name="bcProc_Y_"     select="($p2pshp_Y_ + $procBif_Y_ + ceiling($BIF_H div 2) - ceiling($BLKD_BIFC_H div 2) + $procStack_H_diff_)"/>
2033                                                 <xsl:variable name="bcProc_X_">
2034                                                         <xsl:choose>
2035                                                                 <xsl:when test="$procBifSide_ = '0'">
2036                                                                         <xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_ - (ceiling($BLKD_MOD_W div 2) + $BLKD_BIFC_W))"/>
2037                                                                 </xsl:when>
2038                                                                 <xsl:when test="$procBifSide_ = '1'">
2039                                                                         <xsl:value-of select="ceiling($BLKD_MOD_W div 2)"/>
2040                                                                 </xsl:when>
2041                                                                 <xsl:otherwise>0</xsl:otherwise>
2042                                                         </xsl:choose>
2043                                                 </xsl:variable>
2044                                                 
2045                                                 <P2PCONN X="{$bcProc_X_}" Y="{$bcProc_Y_}" BUSNAME= "{$procBusName_}" BUSSTD="{$iBusStd}" BIFRANK="{$procBifRank_}" BIFSIDE="{$procBifSide_}"/>
2046                                                                                 
2047                                         </xsl:when>
2048                                                                         
2049                                         <xsl:otherwise>
2050                                                                                 
2051                                                 <xsl:variable name="modInstance_"     select="@INSTANCE"/>
2052                                                 <xsl:variable name="modshp_vert_idx_" select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[MODULE[(@INSTANCE = $modInstance_)]]/@SHAPE_VERTI_INDEX"/>
2053                                                 <xsl:variable name="modBifSide_"      select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $modInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_X"/>
2054                                                 <xsl:variable name="modBif_Y_"        select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $modInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_Y"/>
2055                                                 <xsl:variable name="modBc_Y_"         select="((($BLKD_BIF_H + $BLKD_MOD_BIF_GAP_V) * $modBif_Y_) + ($BLKD_MOD_LANE_H + $BLKD_MOD_LABEL_H + $BLKD_MOD_BIF_GAP_V))"/>
2056                                                                                 
2057 <!--                                                                            
2058                                                 <xsl:message>Memory Instance <xsl:value-of select="$procInstance_"/></xsl:message>
2059 -->                                                                             
2060                                                 
2061                                                 <xsl:variable name="modshp_Y_">
2062                                                         <xsl:call-template name="_calc_Stack_Shape_Y">
2063                                                                 <xsl:with-param name="iHorizIdx"  select="$p2pshp_hori_idx_"/>
2064                                                                 <xsl:with-param name="iVertiIdx"  select="$modshp_vert_idx_"/>
2065                                                         </xsl:call-template>
2066                                                 </xsl:variable>
2067                                                                                 
2068                                                 <xsl:variable name="modBifRank_"  select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $modInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIFRANK"/>
2069                                                 <xsl:variable name="modBusName_"  select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $modInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BUSNAME"/>
2070                                                 <xsl:variable name="bcMod_Y_"     select="($modshp_Y_ + $modBc_Y_ + ceiling($BLKD_BIF_H div 2) - ceiling($BLKD_BIFC_H div 2) + $cmplxStack_H_diff_)"/>
2071                                                 <xsl:variable name="bcMod_X_">
2072                                                         <xsl:choose>
2073                                                                 <xsl:when test="$modBifSide_ = '0'">
2074                                                                         <xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_ - (ceiling($BLKD_MOD_W div 2) + $BLKD_BIFC_W))"/>
2075                                                                 </xsl:when>
2076                                                                 <xsl:when test="$modBifSide_ = '1'">
2077                                                                         <xsl:value-of select="ceiling($BLKD_MOD_W div 2)"/>
2078                                                                 </xsl:when>
2079                                                                 <xsl:otherwise>0</xsl:otherwise>
2080                                                         </xsl:choose>
2081                                                 </xsl:variable>
2082                                                 
2083                                                 <P2PCONN X="{$bcMod_X_}" Y="{$bcMod_Y_}" BUSNAME="{$modBusName_}" BUSSTD="{$iBusStd}" BIFRANK="{$modBifRank_}" BIFSIDE="{$modBifSide_}"/>
2084                                                 
2085                                         </xsl:otherwise>
2086                                                                         
2087                                 </xsl:choose>
2088                         </xsl:for-each>
2089                 </xsl:variable>
2090         
2091         
2092         <xsl:variable name="busTop_"  select="math:min(exsl:node-set($p2pConn_heights_)/P2PCONN/@Y)"/>
2093         <xsl:variable name="busBot_"  select="math:max(exsl:node-set($p2pConn_heights_)/P2PCONN/@Y)"/>
2094         <xsl:variable name="v_bus_y_" select="$busTop_ + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_P2P_BUS_W div 2)"/>
2095         
2096         <xsl:variable name="busName_" select="exsl:node-set($p2pConn_heights_)/P2PCONN/@BUSNAME"/>
2097         <xsl:variable name="busStd_"  select="exsl:node-set($p2pConn_heights_)/P2PCONN/@BUSSTD"/>
2098         
2099 <!--    
2100         <xsl:message>BUS TOP <xsl:value-of select="$busTop_"/></xsl:message>
2101         <xsl:message>BUS BOT <xsl:value-of select="$busBot_"/></xsl:message>
2102 -->
2103         
2104         <!-- Draw the vertical part of the bus -->      
2105 <!--    
2106         <rect x="{$bcInSpace_X_ + $BLKD_P2P_BUS_W}" 
2107                   y="0"  
2108                   width= "{$BLKD_P2P_BUS_W}" 
2109                   height="{200 + $BLKD_P2P_BUS_W}" 
2110                   style="stroke:none;fill:{$busColor_}"/>
2111 -->     
2112         
2113         <!-- Place the bus label.-->    
2114 <!--    
2115         <text class="p2pbuslabel" 
2116                           x="{$bcInSpace_X_   + $BLKD_BUS_ARROW_W + ceiling($BLKD_BUS_ARROW_W div 2) + ceiling($BLKD_BUS_ARROW_W div 4) + 6}"
2117                           y="{$busTop_ + ($BLKD_BUS_ARROW_H * 3)}">
2118                         <xsl:value-of select="$busName_"/>
2119         </text> 
2120 -->     
2121                                                 
2122                 <!-- Draw the busconnection and horizontal lines.-->                                            
2123                 <xsl:for-each select="exsl:node-set($p2pConn_heights_)/P2PCONN">
2124                                                         
2125                         <xsl:variable name="bus_x_" select="($bcInSpace_X_ + ceiling($BLKD_BIFC_W div 2))"/>
2126                         <xsl:variable name="bus_y_" select="@Y + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_P2P_BUS_W div 2)"/>
2127                 
2128                         <xsl:variable name="h_bus_ul_x_">
2129                                 <xsl:choose>
2130                                         <xsl:when test="@BIFSIDE='0'">
2131                                                 <xsl:value-of select="$bus_x_"/>
2132                                         </xsl:when>
2133                                         <xsl:when test="@BIFSIDE='1'">
2134                                                 <xsl:value-of select="(@X + $BLKD_BIFC_W + $BLKD_BUS_ARROW_W) - 1"/>
2135                                         </xsl:when>
2136                                 </xsl:choose>
2137                         </xsl:variable> 
2138                 
2139                         <xsl:variable name="h_bus_ul_y_" select="$bus_y_"/>
2140         
2141                         <xsl:variable name="h_bus_height_" select="$BLKD_P2P_BUS_W"/>
2142                         <xsl:variable name="h_bus_width_">
2143 <!--                            
2144                                 <xsl:message>BIFSIDE <xsl:value-of select="@BIFSIDE"/></xsl:message>
2145                                 <xsl:message>BUSSTD  <xsl:value-of select="@BUSSTD"/></xsl:message>
2146                                 <xsl:message>BIFRANK <xsl:value-of select="@BIFRANK"/></xsl:message>
2147 -->                             
2148                                 <xsl:choose>
2149                                         <xsl:when test="@BIFSIDE='0'">
2150                                                 <xsl:value-of select="(@X - $bus_x_ - $BLKD_BUS_ARROW_W)"/>
2151                                         </xsl:when>
2152                                         <xsl:when test="@BIFSIDE='1'">
2153                                                 <xsl:value-of select="$bus_x_ - $h_bus_ul_x_ + 1"/>
2154                                         </xsl:when>
2155                                         
2156                                 </xsl:choose>
2157                         </xsl:variable> 
2158                         
2159                         <!-- Draw Bus connection-->
2160                         <use   x="{@X}"   y="{@Y}"  xlink:href="#{@BUSSTD}_busconn_{@BIFRANK}"/>
2161                         
2162                         <!-- Draw the arrow -->
2163                         <xsl:choose>
2164                                 <xsl:when test="((@BIFSIDE='0') and not((@BUSSTD = 'FSL') and ((@BIFRANK = 'INITIATOR') or (@BIFRANK = 'MASTER'))))">
2165                                         <use   x="{@X - $BLKD_BUS_ARROW_W}"   y="{@Y + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_BUS_ARROW_H div 2)}"  xlink:href="#{@BUSSTD}_BusArrowEast"/>
2166                                 </xsl:when>
2167                                 <xsl:when test="((@BIFSIDE='1') and not((@BUSSTD = 'FSL') and ((@BIFRANK = 'INITIATOR') or (@BIFRANK = 'MASTER'))))">
2168                                         <use   x="{(@X + $BLKD_BIFC_W)}" y="{@Y + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_BUS_ARROW_H div 2)}"  xlink:href="#{@BUSSTD}_BusArrowWest"/>
2169                                 </xsl:when>
2170                                 
2171                                 <xsl:when test="((@BIFSIDE='0') and ((@BUSSTD = 'FSL') and ((@BIFRANK = 'INITIATOR') or (@BIFRANK = 'MASTER'))))">
2172                                         <use   x="{@X - $BLKD_BUS_ARROW_W}"   y="{@Y + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_BUS_ARROW_H div 2)}"  xlink:href="#{@BUSSTD}_BusArrowHInitiator"/>
2173                                 </xsl:when>
2174                                 
2175                                 <xsl:when test="((@BIFSIDE='1') and ((@BUSSTD = 'FSL') and ((@BIFRANK = 'INITIATOR') or (@BIFRANK = 'MASTER'))))">
2176                                         <use   x="{(@X + $BLKD_BIFC_W)}" y="{@Y + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_BUS_ARROW_H div 2)}"  xlink:href="#{@BUSSTD}_BusArrowHInitiator"/>
2177                                 </xsl:when>
2178                                         
2179                         </xsl:choose>
2180                 
2181                         <!-- Draw the horizontal part of the bus -->
2182                         <rect x="{$h_bus_ul_x_}" 
2183                                   y="{$h_bus_ul_y_}"  
2184                                   width= "{$h_bus_width_}" 
2185                                   height="{$h_bus_height_}" 
2186                                 
2187                               style="stroke:none; fill:{$busColor_}"/>
2188                         
2189                         <!-- 
2190                                 Draw the vertical part of the bus. The MPMC BIF and the top arrow will
2191                                 be added later when the main drawing happens.
2192                         -->
2193                         <xsl:variable name="v_bus_ul_x_">
2194                                 <xsl:choose>
2195                                         <xsl:when test="@BIFSIDE='0'"><xsl:value-of select="($h_bus_ul_x_)"/></xsl:when>
2196                                         <xsl:when test="@BIFSIDE='1'"><xsl:value-of select="($h_bus_ul_x_ + $h_bus_width_ - $BLKD_P2P_BUS_W)"/></xsl:when>
2197                                 </xsl:choose>
2198                         </xsl:variable>
2199                         
2200                         <rect x="{$v_bus_ul_x_}" 
2201                                   y="0"  
2202                                   width= "{$BLKD_P2P_BUS_W}" 
2203                                   height="{$h_bus_ul_y_}"  
2204                               style="stroke:none; fill:{$busColor_}"/>
2205                         
2206 <!--                    
2207                         <text class="p2pbuslabel" 
2208                                   x="{$v_bus_ul_x_   + $BLKD_BUS_ARROW_W + ceiling($BLKD_BUS_ARROW_W div 2) + ceiling($BLKD_BUS_ARROW_W div 4)}"
2209                                   y="{($BLKD_BUS_ARROW_H * 3)}"><xsl:value-of select="$busName_"/></text>       
2210 -->     
2211                 
2212         </xsl:for-each>
2213                                                 
2214                                                 
2215 </xsl:template> 
2216         
2217         
2218                                 
2219 <!-- 
2220          ======================================================================
2221      Handle Split connections, (connections that go between adjacent stacks)
2222          ======================================================================
2223 -->
2224         
2225 <xsl:template name="BCLaneSpace_SplitConn">     
2226         
2227         <xsl:param name="iBusStd"          select="'NONE'"/>    
2228         <xsl:param name="iBusName"         select="'NONE'"/>    
2229         <xsl:param name="iBifRank"         select="'NONE'"/>    
2230         <xsl:param name="iStackToEast"     select="'NONE'"/>    
2231         <xsl:param name="iStackToWest"     select="'NONE'"/>    
2232         <xsl:param name="iStackToEast_W"   select="0"/> 
2233         <xsl:param name="iStackToWest_W"   select="0"/> 
2234         <xsl:param name="iLaneInSpace_X"   select="0"/> 
2235         
2236         <xsl:variable name="busColor_">
2237                 <xsl:call-template name="BusType2Color">
2238                         <xsl:with-param name="iBusType" select="$iBusStd"/>
2239                 </xsl:call-template>    
2240         </xsl:variable> 
2241         
2242         <xsl:variable name="space_W_">
2243                 <xsl:call-template name="_calc_Space_Width"> 
2244                         <xsl:with-param name="iStackToEast"  select="$iStackToEast"/>
2245                         <xsl:with-param name="iStackToWest"  select="$iStackToWest"/>
2246                 </xsl:call-template>            
2247         </xsl:variable>
2248         
2249         <xsl:variable name ="extSpaceWest_W_" select="ceiling($iStackToWest_W div 2)"/>
2250         <xsl:variable name ="extSpaceEast_W_" select="ceiling($iStackToEast_W div 2)"/>                                                 
2251                         
2252                                         
2253         <xsl:variable name="bifName_"      select="BUSCONN/@BUSINTERFACE"/>
2254         <xsl:variable name="shpInstance_"  select="BUSCONN/@INSTANCE"/>
2255                                         
2256 <!--                                    
2257                         <xsl:message>Found a split connection on <xsl:value-of select="$shpInstance_"/></xsl:message>   
2258 -->                                     
2259                                                 
2260                                         
2261                 <xsl:variable name="shp_hori_idx_">
2262                                                 
2263                         <xsl:choose>
2264                                 <xsl:when  test="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $shpInstance_)]">
2265                                         <xsl:value-of select="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $shpInstance_)]/@STACK_HORIZ_INDEX"/>
2266                                 </xsl:when>
2267                                                         
2268                                 <xsl:when  test="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $shpInstance_)])]">
2269                                         <xsl:value-of select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $shpInstance_)])]/@STACK_HORIZ_INDEX"/>
2270                                 </xsl:when>
2271                                 <xsl:otherwise>_unknown_</xsl:otherwise>
2272                         </xsl:choose>           
2273                                                 
2274                 </xsl:variable> 
2275                                         
2276                 <xsl:variable name="shp_vert_idx_">
2277                                                 
2278                         <xsl:choose>
2279                                 <xsl:when  test="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $shpInstance_)]">
2280                                         <xsl:value-of select="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $shpInstance_)]/@SHAPE_VERTI_INDEX"/>
2281                                 </xsl:when>
2282                                                         
2283                                 <xsl:when  test="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $shpInstance_)])]">
2284                                         <xsl:value-of select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $shpInstance_)])]/@SHAPE_VERTI_INDEX"/>
2285                                 </xsl:when>
2286                                 <xsl:otherwise>_unknown_</xsl:otherwise>
2287                         </xsl:choose>           
2288                                                 
2289                 </xsl:variable> 
2290                                         
2291                 <xsl:variable name="splitshp_Width_">
2292                                                 
2293                         <xsl:choose>
2294                                 <xsl:when  test="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $shpInstance_)]">
2295                                         <xsl:value-of select="$BLKD_MOD_W"/>
2296                                 </xsl:when>
2297                                                 
2298                                 <xsl:when  test="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $shpInstance_)])]/@MODS_W">
2299 <!--                                                            
2300                                                                 <xsl:message>Using mods width on <xsl:value-of select="$shpInstance_"/></xsl:message>
2301 -->                                                             
2302                                         <xsl:value-of select="(/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $shpInstance_)])]/@MODS_W * $BLKD_MOD_W)"/>
2303                                 </xsl:when>
2304                                 <xsl:otherwise>
2305                                         <xsl:value-of select="$BLKD_MOD_W"/>
2306                                 </xsl:otherwise>
2307                         </xsl:choose>           
2308                                                 
2309                 </xsl:variable> 
2310                                         
2311 <!--                                    
2312                                         <xsl:message>Found width of <xsl:value-of select="$splitshp_Width_"/></xsl:message>
2313 -->                                     
2314         
2315                                         
2316                 <xsl:variable name="splitshp_Y_">
2317                         <xsl:call-template name="_calc_Stack_Shape_Y">
2318                                 <xsl:with-param name="iHorizIdx"  select="$shp_hori_idx_"/>
2319                                 <xsl:with-param name="iVertiIdx"  select="$shp_vert_idx_"/>
2320                         </xsl:call-template>
2321                 </xsl:variable>
2322                                         
2323                                                 
2324                 <xsl:variable name="splitStack_H_diff_">
2325                         <xsl:choose>
2326                                 <xsl:when test="   (($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">0</xsl:when>
2327                                 <xsl:when test="not(($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">
2328         
2329                                         <xsl:variable name="stackToWest_AbvSbs_H_">
2330                                                 <xsl:call-template name="_calc_Stack_AbvSbs_Height">
2331                                                         <xsl:with-param name="iStackIdx"  select="$iStackToWest"/>
2332                                                 </xsl:call-template>
2333                                         </xsl:variable>
2334                                 
2335                                         <xsl:variable name="stackToEast_AbvSbs_H_">
2336                                                 <xsl:call-template name="_calc_Stack_AbvSbs_Height">
2337                                                         <xsl:with-param name="iStackIdx"  select="$iStackToEast"/>
2338                                                 </xsl:call-template>
2339                                         </xsl:variable>
2340                                 
2341 <!--                            
2342                                 <xsl:message>stack to west H <xsl:value-of select="$stackToWest_AbvSbs_H_"/></xsl:message>
2343                                 <xsl:message>stack to east H <xsl:value-of select="$stackToEast_AbvSbs_H_"/></xsl:message>
2344 -->                             
2345                                         <xsl:choose>
2346                                                 <xsl:when test="(($shp_hori_idx_ = $iStackToEast) and ($stackToWest_AbvSbs_H_ &gt; $stackToEast_AbvSbs_H_))">
2347                                                         <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
2348                                                 </xsl:when>     
2349                                                 <xsl:when test="(($shp_hori_idx_ = $iStackToWest) and ($stackToEast_AbvSbs_H_ &gt; $stackToWest_AbvSbs_H_))">
2350                                                         <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
2351                                                 </xsl:when>     
2352                                                 <xsl:otherwise>0</xsl:otherwise>        
2353                                         </xsl:choose>   
2354                                                                                 
2355                                 </xsl:when>
2356                         </xsl:choose>
2357                 </xsl:variable>
2358                                                 
2359                                         
2360                 <xsl:variable name="splitBif_Y_"    select="((($BLKD_BIF_H + $BLKD_MOD_BIF_GAP_V) * BUSCONN/@BIF_Y) + ($BLKD_MOD_LANE_H + $BLKD_MOD_LABEL_H + $BLKD_MOD_BIF_GAP_V))"/>
2361                 <xsl:variable name="splitBusStd_"   select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $shpInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BUSSTD"/>
2362                 <xsl:variable name="splitBifRank_"  select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $shpInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIFRANK"/>
2363                 <xsl:variable name="splitBifSide_"  select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $shpInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_X"/>
2364                                                                         
2365                 <xsl:variable name="bcInSpace_X_">
2366                         <xsl:choose>
2367                                 <xsl:when test="$splitBifSide_ = '1'"><xsl:value-of select="ceiling($splitshp_Width_ div 2)"/></xsl:when>
2368                                 <xsl:when test="$splitBifSide_ = '0'"><xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_ - ceiling($splitshp_Width_ div 2) - $BLKD_BIFC_W)"/></xsl:when>
2369                         </xsl:choose>
2370                                                                 
2371                 </xsl:variable> 
2372                                         
2373                 <xsl:variable name="bcBus_X_">
2374                         <xsl:choose>
2375                                 <xsl:when test="$splitBifSide_ = '1'"><xsl:value-of select="$bcInSpace_X_"/></xsl:when>
2376                                 <xsl:when test="$splitBifSide_ = '0'"><xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_ - ceiling($BLKD_MOD_W div 2) - $BLKD_BIFC_W)"/></xsl:when>
2377                         </xsl:choose>
2378                 </xsl:variable> 
2379                                                         
2380                 <xsl:variable name="bcSplit_Y_">
2381                         <xsl:choose>
2382                                 <xsl:when test="(BUSCONN/@IS_MEMCONN) and (($splitBusStd_ = 'LMB') or ($splitBusStd_ = 'OCM'))">
2383 <!--                                                            
2384                                         <xsl:message>Found memory conn split connection on <xsl:value-of select="$shpInstance_"/> </xsl:message>
2385 -->     
2386                                         <xsl:value-of select="($splitshp_Y_ + $BLKD_MOD_H + $BLKD_MOD_BIF_GAP_V + (BUSCONN/@BIF_Y * ($BLKD_BIF_H + $BLKD_MOD_BIF_GAP_V)) + ceiling($BLKD_BIF_H div 2) - ceiling($BLKD_BIFC_H div 2) + $splitStack_H_diff_)"/>
2387                                 </xsl:when>     
2388                                 <xsl:otherwise>
2389                                         <xsl:value-of select="($splitshp_Y_ + $splitBif_Y_ + ceiling($BLKD_BIF_H div 2) - ceiling($BLKD_BIFC_H div 2) + $splitStack_H_diff_)"/>
2390                                 </xsl:otherwise>
2391                         </xsl:choose>
2392                 </xsl:variable>    
2393 <!--                                                            
2394                                                                 <xsl:value-of select="($splitshp_Y_ + $splitBif_Y_ + ceiling($BIF_H div 2) - ceiling($BLKD_BIFC_H div 2) + $splitStack_H_diff_)"/>
2395 -->                                                             
2396 <!--                                    
2397                                         <xsl:message>VERTI INDEX <xsl:value-of select="$shp_vert_idx_"/></xsl:message>  
2398                                         <xsl:message>BIF Y <xsl:value-of select="$splitBif_Y_"/></xsl:message>  
2399                                         <xsl:message>HORIZ INDEX <xsl:value-of select="$shp_hori_idx_"/></xsl:message>  
2400 -->                                     
2401                                         
2402         <use   x="{$bcInSpace_X_}"   y="{$bcSplit_Y_}"  xlink:href="#{@BUSSTD}_busconn_{$splitBifRank_}"/>
2403                                         
2404                         
2405         <xsl:call-template name="Draw_SplitConnBus">
2406                 <xsl:with-param name="iBc_Y"    select="$bcSplit_Y_"/>
2407                 <xsl:with-param name="iBc_X"    select="$bcInSpace_X_"/>
2408                 <xsl:with-param name="iBc_Rnk"  select="$splitBifRank_"/>
2409                 <xsl:with-param name="iBc_Side" select="$splitBifSide_"/>
2410                 <xsl:with-param name="iBusStd"  select="$iBusStd"/>
2411                 <xsl:with-param name="iBusName" select="$iBusName"/>
2412         </xsl:call-template>
2413                                         
2414         
2415 </xsl:template> 
2416         
2417         
2418 <xsl:template name="Define_BusLaneSpace"> 
2419         
2420         <xsl:param name="iStackToEast"  select="'NONE'"/>
2421         <xsl:param name="iStackToWest"  select="'NONE'"/>
2422         
2423 <!--    
2424         <xsl:message>Input Stack to West <xsl:value-of select="$iStackToWest"/></xsl:message>
2425         <xsl:message>Input Stack to East <xsl:value-of select="$iStackToEast"/></xsl:message>
2426 -->
2427         
2428         <xsl:variable name="stackToEast_">
2429                 <xsl:choose>
2430                         <xsl:when test="not($iStackToEast = 'NONE')"><xsl:value-of select="$iStackToEast"/></xsl:when>
2431                         <xsl:otherwise>NONE</xsl:otherwise>
2432                 </xsl:choose>
2433         </xsl:variable> 
2434         
2435         <xsl:variable name="stackToWest_">
2436                 <xsl:choose>
2437                         <xsl:when test=" not($iStackToWest = 'NONE')"><xsl:value-of select="$iStackToWest"/></xsl:when>
2438                         <xsl:when test="(not($iStackToEast = 'NONE') and not($iStackToEast = '0'))"><xsl:value-of select="($iStackToEast - 1)"/></xsl:when>
2439                         <xsl:otherwise>NONE</xsl:otherwise>
2440                 </xsl:choose>
2441         </xsl:variable> 
2442         
2443 <!--    
2444         <xsl:message>Stack to West <xsl:value-of select="$stackToWest_"/></xsl:message>
2445         <xsl:message>Stack to East <xsl:value-of select="$stackToEast_"/></xsl:message>
2446         <xsl:message>Stack abv diff  <xsl:value-of select="$stack_H_diff_"/></xsl:message>
2447 -->     
2448         
2449         <xsl:variable name="spaceAbvSbs_H_">
2450                 <xsl:call-template name="_calc_Space_AbvSbs_Height">
2451                         <xsl:with-param name="iStackToEast"  select="$iStackToEast"/>
2452                         <xsl:with-param name="iStackToWest"  select="$iStackToWest"/>
2453                 </xsl:call-template>
2454         </xsl:variable> 
2455         
2456         <xsl:variable name="spaceBlwSbs_H_">
2457                 <xsl:call-template name="_calc_Space_BlwSbs_Height">
2458                         <xsl:with-param name="iStackToEast"  select="$iStackToEast"/>
2459                         <xsl:with-param name="iStackToWest"  select="$iStackToWest"/>
2460                 </xsl:call-template>
2461         </xsl:variable> 
2462         
2463         
2464         <xsl:variable name="space_H_" select="($spaceAbvSbs_H_ + $BLKD_PROC2SBS_GAP + $G_total_SharedBus_H + $spaceBlwSbs_H_)"/>
2465         <xsl:variable name="space_W_">
2466                 <xsl:call-template name="_calc_Space_Width"> 
2467                         <xsl:with-param name="iStackToEast"  select="$iStackToEast"/>
2468                         <xsl:with-param name="iStackToWest"  select="$iStackToWest"/>
2469                 </xsl:call-template>            
2470         </xsl:variable>
2471         
2472         <xsl:variable name="spaceSharedBus_Y_" select="$spaceAbvSbs_H_ + $BLKD_PROC2SBS_GAP"/>
2473         
2474         <xsl:variable name="space_name_">
2475                 <xsl:call-template name="_gen_Space_Name"> 
2476                         <xsl:with-param name="iStackToEast"  select="$stackToEast_"/>
2477                         <xsl:with-param name="iStackToWest"  select="$stackToWest_"/>
2478                 </xsl:call-template>            
2479         </xsl:variable>
2480         
2481 <!--    
2482         <xsl:message>Stack Width <xsl:value-of select="$space_W_"/></xsl:message>
2483         <xsl:message>Space Name <xsl:value-of select="$space_name_"/></xsl:message>
2484         <xsl:message>Stack Abv <xsl:value-of select="$spaceAbvSbs_H_"/></xsl:message>
2485         <xsl:message>Stack Blw <xsl:value-of select="$spaceBlwSbs_H_"/></xsl:message>
2486         <xsl:message>Total Sbs <xsl:value-of select="$totalSbs_H_"/></xsl:message>
2487 -->     
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="_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="_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="_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 <!--    
2516         <xsl:message>Stack To West <xsl:value-of select="$stackToWest_W_"/></xsl:message>
2517         <xsl:message>Stack To East <xsl:value-of select="$stackToEast_W_"/></xsl:message>
2518 -->     
2519         
2520         <symbol id="{$space_name_}">
2521
2522 <!--    
2523                 <rect x="0" 
2524                           y="0"  
2525                           width= "100" 
2526                           height="200" 
2527                           style="stroke:none; fill:{$COL_WHITE}"/>
2528 -->             
2529                 
2530                  <xsl:for-each select="/EDKSYSTEM/BLKDSHAPES/BCLANESPACES/BCLANESPACE[((@EAST = $iStackToEast) or (($iStackToEast = 'NONE') and (@WEST = $iStackToWest)))]/BUSCONNLANE[@BUSSTD and @BUSNAME]">
2531                                 
2532                                 <xsl:variable name="busStd_"          select="@BUSSTD"/>
2533                                 <xsl:variable name="busName_"         select="@BUSNAME"/>
2534                                 <xsl:variable name="lane_X_"          select="@BUSLANE_X"/>
2535 <!--                     
2536                                 <xsl:variable name="laneInSpace_X_"   select="($extSpaceWest_W_ + (@BUSLANE_X * $BLKD_BUS_LANE_W))"/>
2537                                 <xsl:message>Oriented <xsl:value-of select="@ORIENTED"/></xsl:message>
2538                                 <xsl:message>laneInSpace_XY <xsl:value-of select="($extSpaceWest_W_ + (@BUSLANE_X * $BLKD_BUS_LANE_W))"/></xsl:message>
2539                                 <xsl:message>Lane in space X <xsl:value-of select="$laneInSpace_X_"/></xsl:message>
2540 -->     
2541                          
2542                                 <xsl:variable name="laneInSpace_X_">
2543                                         <xsl:choose>
2544                                            <xsl:when test="(@ORIENTED = 'EAST')">
2545                                                    <xsl:value-of select="($extSpaceWest_W_ + (@BUSLANE_X * $BLKD_BUS_LANE_W) - $BLKD_BUS_ARROW_W - $BLKD_P2P_BUS_W)"/>
2546                                            </xsl:when>
2547                                            <xsl:otherwise><xsl:value-of select="($extSpaceWest_W_ + (@BUSLANE_X * $BLKD_BUS_LANE_W))"/></xsl:otherwise>
2548                                         </xsl:choose>
2549                                 </xsl:variable> 
2550                                                 
2551                          
2552                                 <xsl:variable name="busColor_">
2553                                         <xsl:call-template name="BusType2Color">
2554                                                 <xsl:with-param name="iBusType" select="@BUSSTD"/>
2555                                         </xsl:call-template>    
2556                                 </xsl:variable>
2557                                 
2558                                 <xsl:choose>
2559 <!-- 
2560                  ===========================================================
2561                         Handle Bucket connections to the shared busses.
2562                  ===========================================================
2563 -->
2564                                         <xsl:when test="@BUSLANE_X and @IS_BKTCONN and BUSCONN[@BIFRANK] and /EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $busName_)]/@BUSINDEX">
2565                                                 <xsl:call-template name="BCLaneSpace_BucketToSharedBus">
2566                                                         <xsl:with-param name="iBusName"           select="$busName_"/>
2567                                                         <xsl:with-param name="iBusStd"            select="$busStd_"/>
2568                                                         <xsl:with-param name="iBifRank"           select="BUSCONN/@BIFRANK"/>
2569                                                         <xsl:with-param name="iStackToEast"       select="$stackToEast_"/>
2570                                                         <xsl:with-param name="iStackToWest"       select="$stackToWest_"/>
2571                                                         <xsl:with-param name="iStackToEast_W"     select="$stackToEast_W_"/>
2572                                                         <xsl:with-param name="iStackToWest_W"     select="$stackToWest_W_"/>
2573                                                         <xsl:with-param name="iLaneInSpace_X"     select="$laneInSpace_X_"/>
2574                                                         <xsl:with-param name="iSpaceSharedBus_Y"  select="$spaceSharedBus_Y_"/>
2575                                                 </xsl:call-template>    
2576 <!--                                            
2577 -->                                             
2578                                         </xsl:when>
2579                                         
2580 <!--
2581                  ===========================================================
2582                         Handle Processor's Shared bus connections.
2583                  ===========================================================
2584 -->
2585                                         <xsl:when test="@BUSLANE_X and @IS_SBSCONN and not(@IS_MPMCCONN) and BUSCONN[@BIF_Y and @IS_PROCCONN and @INSTANCE and @BUSINTERFACE] and /EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $busName_)]/@BUSINDEX">
2586                                                 <xsl:call-template name="BCLaneSpace_ProcBifToSharedBus">
2587                                                         <xsl:with-param name="iBusStd"            select="$busStd_"/>
2588                                                         <xsl:with-param name="iBusName"           select="$busName_"/>
2589                                                         <xsl:with-param name="iBifRank"           select="BUSCONN/@BIFRANK"/>
2590                                                         <xsl:with-param name="iStackToEast"       select="$stackToEast_"/>
2591                                                         <xsl:with-param name="iStackToWest"       select="$stackToWest_"/>
2592                                                         <xsl:with-param name="iStackToEast_W"     select="$stackToEast_W_"/>
2593                                                         <xsl:with-param name="iStackToWest_W"     select="$stackToWest_W_"/>
2594                                                         <xsl:with-param name="iLaneInSpace_X"     select="$laneInSpace_X_"/>
2595                                                         <xsl:with-param name="iSpaceSharedBus_Y"  select="$spaceSharedBus_Y_"/>
2596                                                 </xsl:call-template>    
2597 <!--                                            
2598 -->     
2599                                         </xsl:when>     
2600                                         
2601 <!--
2602                  ===========================================================
2603                         Handle non Processor Shared Bus connections.
2604                  ===========================================================
2605 -->
2606                                         <xsl:when test="@BUSLANE_X and @IS_SBSCONN and not(@IS_MPMCCONN) and BUSCONN[@BIF_Y and not(@IS_PROCCONN) and @INSTANCE and @BUSINTERFACE] and /EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $busName_)]/@BUSINDEX">
2607                                                 <xsl:call-template name="BCLaneSpace_NonProcBifToSharedBus">
2608                                                         <xsl:with-param name="iBusStd"            select="$busStd_"/>
2609                                                         <xsl:with-param name="iBusName"           select="$busName_"/>
2610                                                         <xsl:with-param name="iBifRank"           select="BUSCONN/@BIFRANK"/>
2611                                                         <xsl:with-param name="iStackToEast"       select="$stackToEast_"/>
2612                                                         <xsl:with-param name="iStackToWest"       select="$stackToWest_"/>
2613                                                         <xsl:with-param name="iStackToEast_W"     select="$stackToEast_W_"/>
2614                                                         <xsl:with-param name="iStackToWest_W"     select="$stackToWest_W_"/>
2615                                                         <xsl:with-param name="iLaneInSpace_X"     select="$laneInSpace_X_"/>
2616                                                         <xsl:with-param name="iSpaceSharedBus_Y"  select="$spaceSharedBus_Y_"/>
2617                                                 </xsl:call-template>    
2618 <!--                                            
2619 -->     
2620                                         </xsl:when>                                     
2621                                         
2622 <!-- 
2623                  ===========================================================
2624                         Handle connections from processors to Memory UNITs
2625                  ===========================================================
2626 -->                     
2627                                         <xsl:when test="@BUSLANE_X and @IS_MEMCONN and not(@IS_MULTISTK) and BUSCONN[@BIF_Y and @IS_PROCCONN and not(@IS_SPLITCONN) and @INSTANCE and @BUSINTERFACE]">
2628                                                 <xsl:call-template name="BCLaneSpace_ProcBifToMemoryUnit">
2629                                                         <xsl:with-param name="iBusStd"         select="$busStd_"/>
2630                                                         <xsl:with-param name="iBusName"        select="$busName_"/>
2631                                                         <xsl:with-param name="iBifRank"        select="BUSCONN/@BIFRANK"/>
2632                                                         <xsl:with-param name="iStackToEast"    select="$stackToEast_"/>
2633                                                         <xsl:with-param name="iStackToWest"    select="$stackToWest_"/>
2634                                                         <xsl:with-param name="iStackToEast_W"  select="$stackToEast_W_"/>
2635                                                         <xsl:with-param name="iStackToWest_W"  select="$stackToWest_W_"/>
2636                                                         <xsl:with-param name="iLaneInSpace_X"  select="$laneInSpace_X_"/>
2637                                                 </xsl:call-template>    
2638 <!--                                            
2639 -->     
2640                                         </xsl:when>                             
2641                                 
2642                                         
2643 <!-- 
2644                  ===========================================================
2645                         Handle generic Point to Point connections
2646                  ===========================================================
2647 -->
2648                                         <xsl:when test="@BUSLANE_X and not(@IS_MULTISTK) and not(@IS_MPMCCONN) and not(@IS_MEMCONN) and not(@IS_SBSCONN) and BUSCONN[@BIF_Y and @INSTANCE and @BUSINTERFACE and not(@IS_SPLITCONN)]">
2649                                                 <xsl:call-template name="BCLaneSpace_PointToPoint">
2650                                                         <xsl:with-param name="iBusStd"         select="$busStd_"/>
2651                                                         <xsl:with-param name="iBusName"        select="$busName_"/>
2652                                                         <xsl:with-param name="iBifRank"        select="BUSCONN/@BIFRANK"/>
2653                                                         <xsl:with-param name="iStackToEast"    select="$stackToEast_"/>
2654                                                         <xsl:with-param name="iStackToWest"    select="$stackToWest_"/>
2655                                                         <xsl:with-param name="iStackToEast_W"  select="$stackToEast_W_"/>
2656                                                         <xsl:with-param name="iStackToWest_W"  select="$stackToWest_W_"/>
2657                                                         <xsl:with-param name="iLaneInSpace_X"  select="$laneInSpace_X_"/>
2658                                                 </xsl:call-template>    
2659 <!--                                            
2660 -->     
2661                                         </xsl:when>                             
2662                                         
2663 <!-- 
2664                  ===========================================================
2665                         Handle MultiStack Point to Point connections
2666                  ===========================================================
2667 -->
2668                                         <xsl:when test="@BUSLANE_X and (@IS_MULTISTK) and not(@IS_SBSCONN) and BUSCONN[@BIF_Y and @IS_PROCCONN and @INSTANCE and @BUSINTERFACE]">
2669                                                 <xsl:call-template name="BCLaneSpace_MultiStack_PointToPoint">
2670                                                         <xsl:with-param name="iBusStd"         select="$busStd_"/>
2671                                                         <xsl:with-param name="iBusName"        select="$busName_"/>
2672                                                         <xsl:with-param name="iBifRank"        select="BUSCONN/@BIFRANK"/>
2673                                                         <xsl:with-param name="iStackToEast"    select="$stackToEast_"/>
2674                                                         <xsl:with-param name="iStackToWest"    select="$stackToWest_"/>
2675                                                         <xsl:with-param name="iStackToEast_W"  select="$stackToEast_W_"/>
2676                                                         <xsl:with-param name="iStackToWest_W"  select="$stackToWest_W_"/>
2677                                                         <xsl:with-param name="iLaneInSpace_X"  select="$laneInSpace_X_"/>
2678                                                 </xsl:call-template>    
2679                                         </xsl:when>                             
2680                                                 
2681                                         
2682 <!-- 
2683                  ===========================================================
2684                         Handle Processor to processor connections
2685                  ===========================================================
2686 -->
2687 <!--                                    
2688 -->     
2689                                 <xsl:when test="(@IS_PROC2PROC and (count(BUSCONN[@BIF_Y and @INSTANCE and @BUSINTERFACE]) = 2))">
2690                                         <xsl:call-template name="BCLaneSpace_ProcToProc">
2691                                                 <xsl:with-param name="iBusStd"         select="$busStd_"/>
2692                                                 <xsl:with-param name="iBusName"        select="$busName_"/>
2693                                                 <xsl:with-param name="iBifRank"        select="BUSCONN/@BIFRANK"/>
2694                                                 <xsl:with-param name="iStackToEast"    select="$stackToEast_"/>
2695                                                 <xsl:with-param name="iStackToWest"    select="$stackToWest_"/>
2696                                                 <xsl:with-param name="iStackToEast_W"  select="$stackToEast_W_"/>
2697                                                 <xsl:with-param name="iStackToWest_W"  select="$stackToWest_W_"/>
2698                                                 <xsl:with-param name="iLaneInSpace_X"  select="$laneInSpace_X_"/>
2699                                         </xsl:call-template>    
2700                                 </xsl:when>
2701                                         
2702 <!-- 
2703                  ===========================================================
2704                         Handle connections to the StandAlone MPMC
2705                  ===========================================================
2706 -->
2707                         <xsl:when test="@BUSLANE_X and (@IS_MPMCCONN) and not(@IS_SBSCONN) and BUSCONN[(@BIF_Y and @INSTANCE and @BUSINTERFACE)]">
2708 <!--                            
2709 -->                             
2710                                         <xsl:call-template name="BCLaneSpace_ToStandAloneMPMC">
2711                                                 <xsl:with-param name="iBusStd"         select="$busStd_"/>
2712                                                 <xsl:with-param name="iBusName"        select="$busName_"/>
2713                                                 <xsl:with-param name="iBifRank"        select="BUSCONN/@BIFRANK"/>
2714                                                 <xsl:with-param name="iStackToEast"    select="$stackToEast_"/>
2715                                                 <xsl:with-param name="iStackToWest"    select="$stackToWest_"/>
2716                                                 <xsl:with-param name="iStackToEast_W"  select="$stackToEast_W_"/>
2717                                                 <xsl:with-param name="iStackToWest_W"  select="$stackToWest_W_"/>
2718                                                 <xsl:with-param name="iLaneInSpace_X"  select="$laneInSpace_X_"/>
2719                                         </xsl:call-template>    
2720                         </xsl:when>
2721                                         
2722 <!-- 
2723                  ===========================================================
2724                         Handle Split connections, (connections that go between non adjacent stacks)
2725                  ===========================================================
2726 -->
2727                         <xsl:when test="(BUSCONN[@BIF_Y and @INSTANCE and @BUSINTERFACE and @IS_SPLITCONN])">
2728                                 <xsl:call-template name="BCLaneSpace_SplitConn">
2729                                         <xsl:with-param name="iBusStd"         select="$busStd_"/>
2730                                         <xsl:with-param name="iBusName"        select="$busName_"/>
2731                                         <xsl:with-param name="iBifRank"        select="BUSCONN/@BIFRANK"/>
2732                                         <xsl:with-param name="iStackToEast"    select="$stackToEast_"/>
2733                                         <xsl:with-param name="iStackToWest"    select="$stackToWest_"/>
2734                                         <xsl:with-param name="iStackToEast_W"  select="$stackToEast_W_"/>
2735                                         <xsl:with-param name="iStackToWest_W"  select="$stackToWest_W_"/>
2736                                         <xsl:with-param name="iLaneInSpace_X"  select="$laneInSpace_X_"/>
2737                                 </xsl:call-template>    
2738 <!--                            
2739 -->     
2740                         </xsl:when>
2741                                         
2742                 </xsl:choose>
2743                                                                 
2744         </xsl:for-each>
2745                 
2746         </symbol>
2747                         
2748 </xsl:template> 
2749         
2750 <xsl:template name="Define_BusLaneSpaces"> 
2751         
2752         <xsl:variable name="lastStack_" select="(/EDKSYSTEM/BLKDSHAPES/@STACK_HORIZ_WIDTH) - 1"/>
2753         
2754         <xsl:for-each select="/EDKSYSTEM/BLKDSHAPES/BCLANESPACES/BCLANESPACE[@EAST]">
2755                 <xsl:sort select="@EAST" data-type="number"/>
2756                         
2757                 <xsl:call-template name="Define_BusLaneSpace">
2758                         <xsl:with-param name="iStackToEast"  select="@EAST"/>
2759                 </xsl:call-template>
2760         </xsl:for-each> 
2761         
2762 <!--    
2763         <xsl:message>Last Stack <xsl:value-of select="$lastStack_"/></xsl:message>
2764 -->     
2765         
2766         <xsl:for-each select="/EDKSYSTEM/BLKDSHAPES/BCLANESPACES/BCLANESPACE[(@WEST = $lastStack_)]">
2767                 <xsl:call-template name="Define_BusLaneSpace">
2768                         <xsl:with-param name="iStackToWest"  select="$lastStack_"/>
2769                 </xsl:call-template>
2770         </xsl:for-each> 
2771                         
2772 </xsl:template>
2773                 
2774 </xsl:stylesheet>