1 <?xml version="1.0" standalone="no"?>
2 <xsl:stylesheet version="1.0"
3 xmlns:svg="http://www.w3.org/2000/svg"
4 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
5 xmlns:exsl="http://exslt.org/common"
6 xmlns:xlink="http://www.w3.org/1999/xlink">
8 <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"
9 doctype-public="-//W3C//DTD SVG 1.0//EN"
10 doctype-system="http://www.w3.org/TR/SVG/DTD/svg10.dtd"/>
14 <xsl:template name="Define_Busses">
15 <xsl:param name="drawarea_w" select="500"/>
16 <xsl:param name="drawarea_h" select="500"/>
18 <xsl:for-each select="exsl:node-set($COL_BUSSTDS)/BUSCOLOR">
20 <xsl:call-template name="Define_BusArrowsEastWest">
21 <xsl:with-param name="bus_type" select="@BUSSTD"/>
24 <xsl:call-template name="Define_BusArrowsNorthSouth">
25 <xsl:with-param name="bus_type" select="@BUSSTD"/>
28 <xsl:call-template name="Define_SplitBusses">
29 <xsl:with-param name="bus_type" select="@BUSSTD"/>
34 <xsl:call-template name="Define_SharedBus">
35 <xsl:with-param name="bus_type" select="'PLB'"/>
36 <xsl:with-param name="drawarea_w" select="$drawarea_w"/>
39 <xsl:call-template name="Define_SharedBus">
40 <xsl:with-param name="bus_type" select="'PLBV46'"/>
41 <xsl:with-param name="drawarea_w" select="$drawarea_w"/>
44 <xsl:call-template name="Define_SharedBus">
45 <xsl:with-param name="bus_type" select="'OPB'"/>
46 <xsl:with-param name="drawarea_w" select="$drawarea_w"/>
49 <xsl:call-template name="Define_SharedBus_Group"/>
52 <xsl:call-template name="Define_SharedBus">
53 <xsl:with-param name="bus_type" select="'PLB'"/>
54 <xsl:with-param name="drawarea_w" select="$drawarea_w"/>
60 <xsl:template name="Define_BusArrowsEastWest">
61 <xsl:param name="bus_type" select="'OPB'"/>
63 <xsl:variable name="bus_col_">
64 <xsl:call-template name="BusType2Color">
65 <xsl:with-param name="busType" select="$bus_type"/>
69 <xsl:variable name="bus_col_lt_">
70 <xsl:call-template name="BusType2LightColor">
71 <xsl:with-param name="busType" select="$bus_type"/>
75 <symbol id="{$bus_type}_BusArrowEast">
78 L {$BUS_ARROW_W}, {ceiling($BUS_ARROW_H div 2)}
80 Z" style="stroke:none; fill:{$bus_col_}"/>
83 <symbol id="{$bus_type}_BusArrowWest">
84 <use x="0" y="0" xlink:href="#{$bus_type}_BusArrowEast" transform="scale(-1,1) translate({$BUS_ARROW_W * -1},0)"/>
88 <symbol id="{$bus_type}_BusArrowHInitiator">
91 width= "{$BUS_ARROW_W}"
92 height="{$BUS_ARROW_W - ($BUS_ARROW_G * 2)}"
93 style="stroke:none; fill:{$bus_col_}"/>
96 <symbol id="{$bus_type}_BusArrowHInitiator">
99 width= "{$BUS_ARROW_W}"
100 height="{$P2P_BUS_W}"
101 style="stroke:none; fill:{$bus_col_}"/>
107 <xsl:param name="bus_col" select="'OPB'"/>
110 <xsl:template name="Define_BusArrowsNorthSouth">
111 <xsl:param name="bus_type" select="'OPB'"/>
113 <xsl:variable name="bus_col_">
114 <xsl:call-template name="BusType2Color">
115 <xsl:with-param name="busType" select="$bus_type"/>
119 <xsl:variable name="bus_col_lt_">
120 <xsl:call-template name="BusType2LightColor">
121 <xsl:with-param name="busType" select="$bus_type"/>
125 <symbol id="{$bus_type}_BusArrowSouth">
129 L {ceiling($BUS_ARROW_W div 2)}, {$BUS_ARROW_H}
130 Z" style="stroke:none; fill:{$bus_col_}"/>
133 <symbol id="{$bus_type}_BusArrowNorth">
134 <use x="0" y="0" xlink:href="#{$bus_type}_BusArrowSouth" transform="scale(1,-1) translate(0,{$BUS_ARROW_H * -1})"/>
137 <symbol id="{$bus_type}_BusArrowInitiator">
138 <rect x="{$BUS_ARROW_G}"
140 width= "{$BUS_ARROW_W - ($BUS_ARROW_G * 2)}"
141 height="{$BUS_ARROW_H}"
142 style="stroke:none; fill:{$bus_col_}"/>
148 <xsl:template name="Draw_P2PBus">
150 <xsl:param name="busX" select="0"/>
151 <xsl:param name="busTop" select="0"/>
152 <xsl:param name="busBot" select="0"/>
153 <xsl:param name="botRnk" select="'_unk_'"/>
154 <xsl:param name="topRnk" select="'_unk_'"/>
155 <xsl:param name="busStd" select="'_bstd_'"/>
156 <xsl:param name="busName" select="'_p2pbus_'"/>
158 <xsl:variable name="busCol_">
161 <xsl:when test="@BUSSTD">
162 <xsl:call-template name="BusType2Color">
163 <xsl:with-param name="busType" select="@BUSSTD"/>
167 <xsl:when test="not($busStd = '_bstd_')">
168 <xsl:call-template name="BusType2Color">
169 <xsl:with-param name="busType" select="$busStd"/>
174 <xsl:value-of select="$COL_OPBBUS"/>
180 <xsl:variable name="p2pH_" select="($busBot - $busTop) - ($BUS_ARROW_H * 2)"/>
182 <xsl:variable name="botArrow_">
184 <xsl:when test="((($botRnk = 'INITIATOR') or ($botRnk = 'MASTER')) and ($busStd = 'FSL'))">BusArrowInitiator</xsl:when>
185 <xsl:otherwise>BusArrowSouth</xsl:otherwise>
189 <xsl:variable name="topArrow_">
191 <xsl:when test="((($topRnk = 'INITIATOR') or ($topRnk = 'MASTER')) and ($busStd = 'FSL'))">BusArrowInitiator</xsl:when>
192 <xsl:otherwise>BusArrowNorth</xsl:otherwise>
196 <xsl:if test="@BUSSTD">
197 <use x="{($busX + ceiling($BIFC_W div 2)) - ceiling($BUS_ARROW_W div 2)}"
198 y="{$busTop + ($BIFC_H - $BUS_ARROW_H) + $BUS_ARROW_H}"
199 xlink:href="#{@BUSSTD}_{$topArrow_}"/>
201 <use x="{($busX + ceiling($BIFC_W div 2)) - ceiling($BUS_ARROW_W div 2)}"
202 y="{$busBot - $BUS_ARROW_H}"
203 xlink:href="#{@BUSSTD}_{$botArrow_}"/>
206 <xsl:if test="(not(@BUSSTD) and not($busStd = '_bstd_'))">
207 <use x="{($busX + ceiling($BIFC_W div 2)) - ceiling($BUS_ARROW_W div 2)}"
208 y="{$busTop + ($BIFC_H - $BUS_ARROW_H) + $BUS_ARROW_H}"
209 xlink:href="#{$busStd}_{$topArrow_}"/>
211 <use x="{($busX + ceiling($BIFC_W div 2)) - ceiling($BUS_ARROW_W div 2)}"
212 y="{$busBot - $BUS_ARROW_H}"
213 xlink:href="#{$busStd}_{$botArrow_}"/>
217 <rect x="{($busX + ceiling($BIFC_W div 2)) - ceiling($BUS_ARROW_W div 2) + $BUS_ARROW_G}"
218 y="{$busTop + $BIFC_H + $BUS_ARROW_H}"
219 height= "{$p2pH_ - ($BUS_ARROW_H * 2)}"
220 width="{$BUS_ARROW_W - ($BUS_ARROW_G * 2)}"
221 style="stroke:none; fill:{$busCol_}"/>
223 <text class="p2pbuslabel"
224 x="{$busX + $BUS_ARROW_W + ceiling($BUS_ARROW_W div 2) + ceiling($BUS_ARROW_W div 4) + 4}"
225 y="{$busTop + ($BUS_ARROW_H * 3)}">
226 <xsl:value-of select="$busName"/>
229 <xsl:if test="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $busName)]/@GROUP">
231 <text class="ioplblgrp"
232 x="{$busX + $BUS_ARROW_W + ceiling($BUS_ARROW_W div 2) + ceiling($BUS_ARROW_W div 4) + 6}"
233 y="{$busTop + ($BUS_ARROW_H * 10)}">
234 <xsl:value-of select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE=$busName)]/@GROUP"/>
242 <xsl:template name="Draw_Proc2ProcBus">
244 <xsl:param name="bc_Y" select="0"/>
245 <xsl:param name="bcLeft_X" select="0"/>
246 <xsl:param name="bcRght_X" select="0"/>
248 <xsl:param name="leftRnk" select="'_unk_'"/>
249 <xsl:param name="rghtRnk" select="'_unk_'"/>
251 <xsl:param name="busStd" select="'_bstd_'"/>
252 <xsl:param name="busName" select="'_p2pbus_'"/>
254 <xsl:variable name="busCol_">
255 <xsl:call-template name="BusType2Color">
256 <xsl:with-param name="busType" select="$busStd"/>
260 <xsl:variable name="pr2pr_W_" select="($bcRght_X - $bcLeft_X)"/>
262 <xsl:variable name="leftArrow_">
264 <xsl:when test="((($leftRnk = 'INITIATOR') or ($leftRnk = 'MASTER')) and ($busStd = 'FSL'))">BusArrowHInitiator</xsl:when>
265 <xsl:otherwise>BusArrowWest</xsl:otherwise>
269 <xsl:variable name="rghtArrow_">
271 <xsl:when test="((($rghtRnk = 'INITIATOR') or ($rghtRnk = 'MASTER')) and ($busStd = 'FSL'))">BusArrowHInitiator</xsl:when>
272 <xsl:otherwise>BusArrowEast</xsl:otherwise>
277 <xsl:variable name="bus_Y_" select="($bc_Y + ceiling($BIFC_H div 2) - ceiling($BUS_ARROW_H div 2))"/>
279 <use x="{$bcLeft_X}" y="{$bus_Y_}" xlink:href="#{$busStd}_{$leftArrow_}"/>
280 <use x="{$bcRght_X - $BUS_ARROW_W}" y="{$bus_Y_}" xlink:href="#{$busStd}_{$rghtArrow_}"/>
282 <rect x="{$bcLeft_X + $BUS_ARROW_W}"
283 y="{$bus_Y_ + $BUS_ARROW_G}"
284 width= "{$pr2pr_W_ - (2 * $BUS_ARROW_W)}"
285 height="{$BUS_ARROW_H - (2 * $BUS_ARROW_G)}" style="stroke:none; fill:{$busCol_}"/>
287 <text class="horizp2pbuslabel"
288 x="{$bcLeft_X + $BUS_ARROW_W + ceiling($BUS_ARROW_W div 2) + ceiling($BUS_ARROW_W div 4) + 4}"
290 <xsl:value-of select="$busName"/>
293 <text class="horizp2pbuslabel"
294 x="{$bcRght_X - (string-length($busName) * 8)}"
296 <xsl:value-of select="$busName"/>
302 <xsl:template name="Draw_SplitConnBus">
304 <xsl:param name="bc_X" select="0"/>
305 <xsl:param name="bc_Y" select="0"/>
306 <xsl:param name="bc_Rnk" select="'_unk_'"/>
307 <xsl:param name="bc_Side" select="'_unk_'"/>
309 <xsl:param name="busStd" select="'_bstd_'"/>
310 <xsl:param name="busName" select="'_p2pbus_'"/>
312 <xsl:variable name="busCol_">
313 <xsl:call-template name="BusType2Color">
314 <xsl:with-param name="busType" select="$busStd"/>
318 <xsl:variable name="connArrow_">
320 <xsl:when test="((($bc_Rnk = 'INITIATOR') or ($bc_Rnk = 'MASTER')) and ($busStd = 'FSL'))">BusArrowHInitiator</xsl:when>
321 <xsl:otherwise>BusArrowEast</xsl:otherwise>
325 <xsl:variable name="arrow_Y_" select="($bc_Y + ceiling($BIFC_H div 2) - ceiling($BUS_ARROW_H div 2))"/>
327 <xsl:variable name="bus_X_">
329 <xsl:when test="$bc_Side = '0'"><xsl:value-of select="($bc_X - ($BUS_ARROW_W * 2))"/></xsl:when>
330 <xsl:when test="$bc_Side = '1'"><xsl:value-of select="($bc_X + $BIFC_W + $BUS_ARROW_W)"/></xsl:when>
335 <use x="{$bus_X_}" y="{$arrow_Y_}" xlink:href="#{$busStd}_BusArrowHInitiator"/>
338 <xsl:variable name="arrow_X_">
340 <xsl:when test="$bc_Side = '0'"><xsl:value-of select="($bc_X - $BUS_ARROW_W)"/></xsl:when>
341 <xsl:when test="$bc_Side = '1'"><xsl:value-of select="($bc_X + $BIFC_W)"/></xsl:when>
346 <xsl:message>The bus name is <xsl:value-of select="$busName"/></xsl:message>
347 <xsl:message>The bif side is <xsl:value-of select="$bc_Side"/></xsl:message>
348 <xsl:message>The bif rank is <xsl:value-of select="$bc_Rnk"/></xsl:message>
351 <xsl:when test="(($busStd = 'FSL') and (($bc_Rnk = 'MASTER') or ($bc_Rnk = 'INITIATOR')))">
352 <use x="{$arrow_X_}" y="{$arrow_Y_}" xlink:href="#{$busStd}_{$connArrow_}"/>
353 <use x="{$bus_X_}" y="{$arrow_Y_}" xlink:href="#{$busStd}_BusArrowHInitiator"/>
355 <xsl:when test="(($bc_Side = '1') and not(@busStd = 'FSL') and (($bc_Rnk = 'MASTER') or ($bc_Rnk = 'INITIATOR')))">
356 <use x="{$arrow_X_ - $BIFC_W}" y="{$arrow_Y_}" xlink:href="#{$busStd}_SplitBus_WEST"/>
358 <xsl:when test="(($bc_Side = '1') and (($bc_Rnk = 'SLAVE') or ($bc_Rnk = 'TARGET') or ($bc_Rnk = 'TRANSPARENT')))">
359 <use x="{$arrow_X_}" y="{$arrow_Y_}" xlink:href="#{$busStd}_SplitBus_EAST"/>
362 <use x="{$arrow_X_}" y="{$arrow_Y_}" xlink:href="#{$busStd}_{$connArrow_}"/>
363 <use x="{$bus_X_}" y="{$arrow_Y_}" xlink:href="#{$busStd}_BusArrowHInitiator"/>
367 <xsl:variable name="text_X_">
369 <xsl:when test="$bc_Side = '0'"><xsl:value-of select="($bus_X_ - $BUS_ARROW_W - (string-length($busName) * 5))"/></xsl:when>
370 <xsl:when test="$bc_Side = '1'"><xsl:value-of select="($bus_X_ + $BUS_ARROW_W)"/></xsl:when>
375 <text class="horizp2pbuslabel"
378 <xsl:value-of select="$busName"/>
384 <xsl:template name="Define_SharedBus">
386 <xsl:param name="bus_type" select="'OPB'"/>
387 <xsl:param name="drawarea_w" select="500"/>
389 <xsl:variable name="sharedbus_w_" select="($drawarea_w - ($BLKD_INNER_GAP * 2))"/>
391 <xsl:variable name="bus_col_">
392 <xsl:call-template name="BusType2Color">
393 <xsl:with-param name="busType" select="$bus_type"/>
397 <xsl:variable name="bus_col_lt_">
398 <xsl:call-template name="BusType2LightColor">
399 <xsl:with-param name="busType" select="$bus_type"/>
403 <symbol id="{$bus_type}_SharedBus">
404 <use x="0" y="0" xlink:href="#{$bus_type}_BusArrowWest"/>
405 <use x="{$sharedbus_w_ - $BUS_ARROW_W}" y="0" xlink:href="#{$bus_type}_BusArrowEast"/>
407 <rect x="{$BUS_ARROW_W}"
409 width= "{$sharedbus_w_ - ($BUS_ARROW_W * 2)}"
410 height="{$BUS_ARROW_H - (2 * $BUS_ARROW_G)}" style="stroke:none; fill:{$bus_col_}"/>
415 <xsl:template name="Define_SplitBusses">
417 <xsl:param name="bus_type" sselect="'FSL'"/>
419 <xsl:variable name="bus_col_">
420 <xsl:call-template name="BusType2Color">
421 <xsl:with-param name="busType" select="$bus_type"/>
425 <xsl:variable name="bifc_r_" select="ceiling($BIFC_W div 3)"/>
427 <symbol id="{$bus_type}_SplitBus_EAST">
428 <use x="0" y="0" xlink:href="#{$bus_type}_BusArrowWest"/>
430 <rect x="{$BUS_ARROW_W}"
433 height="{$BUS_ARROW_H - (2 * $BUS_ARROW_G)}" style="stroke:none; fill:{$bus_col_}"/>
436 <rect x="{$BUS_ARROW_W + $BIFC_W}"
439 height="{$BUS_ARROW_H}" style="stroke:none; fill:{$bus_col_}"/>
443 cx="{$BUS_ARROW_W + $BIFC_W}"
444 cy="{ceiling($BIFC_Wi div 2)}"
445 r="{ceiling($BIFC_Wi div 2)}"
446 style="fill:{$bus_col_}; stroke:none;"/>
450 <xsl:variable name="splbus_w_" select="($BUS_ARROW_W + $BIFC_W + $BIFC_Wi)"/>
452 <symbol id="{$bus_type}_SplitBus_WEST">
453 <use x="0" y="0" xlink:href="#{$bus_type}_SplitBus_EAST" transform="scale(-1,1) translate({$splbus_w_ * -1},0)"/>
457 <symbol id="{$bus_type}_SplitBus_OneWay">
460 <use x="0" y="0" xlink:href="#{$bus_type}_BusArrowWest"/>
464 width= "{($BUS_ARROW_W * 2)}"
465 height="{$BUS_ARROW_H - (2 * $BUS_ARROW_G)}" style="stroke:none; fill:{$bus_col_}"/>
467 <rect x="{($BUS_ARROW_W * 2)}"
469 width= "{$BUS_ARROW_H}"
470 height="{$BUS_ARROW_H}" style="stroke:none; fill:{$bus_col_}"/>
474 <rect x="{$BUS_ARROW_W}"
476 width= "{$BUS_ARROW_W}"
477 height="{$BUS_ARROW_H}" style="stroke:none; fill:{$bus_col_}"/>
479 cx="{$BUS_ARROW_W + $BIFC_W}"
480 cy="{ceiling($BIFC_Wi div 2)}"
481 r="{ceiling($BIFC_Wi div 2)}"
482 style="fill:{$bus_col_}; stroke:none;"/>
490 <xsl:template name="Define_SharedBus_Group">
492 <!-- The Bridges go into the shared bus shape -->
493 <xsl:for-each select="/EDKSYSTEM/BLKDSHAPES/BRIDGESHAPES/MODULE">
495 <xsl:variable name="modInst_" select="@INSTANCE"/>
496 <xsl:variable name="modType_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE=$modInst_)]/@MODTYPE"/>
498 <xsl:call-template name="Define_Peripheral">
499 <xsl:with-param name="modVori" select="'normal'"/>
500 <xsl:with-param name="modInst" select="$modInst_"/>
501 <xsl:with-param name="modType" select="$modType_"/>
506 <symbol id="group_sharedBusses">
508 <!-- Draw the shared bus shapes first -->
509 <xsl:for-each select="BLKDSHAPES/SBSSHAPES/MODULE">
510 <xsl:variable name="instance_" select="@INSTANCE"/>
512 <xsl:variable name="busStd_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE=$instance_)]/@BUSSTD"/>
513 <xsl:variable name="busIndex_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE=$instance_)]/@BUSINDEX"/>
515 <xsl:variable name="busY_" select="($busIndex_ * $SBS_LANE_H)"/>
517 <use x="0" y="{$busY_}" xlink:href="#{$busStd_}_SharedBus"/>
519 <text class="sharedbuslabel"
521 y="{$busY_ + $BUS_ARROW_H + 10}">
522 <xsl:value-of select="$instance_"/>
528 <symbol id="KEY_SharedBus">
529 <use x="0" y="0" xlink:href="#KEY_BusArrowWest"/>
530 <use x="30" y="0" xlink:href="#KEY_BusArrowEast"/>
532 <xsl:variable name="key_col_">
533 <xsl:call-template name="BusType2Color">
534 <xsl:with-param name="busType" select="'KEY'"/>
538 <rect x="{$BUS_ARROW_W}"
540 width= "{30 - $BUS_ARROW_W}"
541 height="{$BUS_ARROW_H - (2 * $BUS_ARROW_G)}" style="stroke:none; fill:{$key_col_}"/>