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