1 <?xml version="1.0" standalone="no"?>
2 <xsl:stylesheet version="1.0"
3 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
4 xmlns:exsl="http://exslt.org/common"
5 xmlns:dyn="http://exslt.org/dynamic"
6 xmlns:math="http://exslt.org/math"
7 xmlns:xlink="http://www.w3.org/1999/xlink"
8 extension-element-prefixes="math dyn exsl xlink">
11 <xsl:output method="xml"
15 doctype-public="-//W3C//DTD SVG 1.0//EN"
16 doctype-system="http://www.w3.org/TR/SVG/DTD/svg10.dtd"/>
19 <xsl:template name="Define_Busses">
21 <xsl:param name="drawarea_w" select="500"/>
22 <xsl:param name="drawarea_h" select="500"/>
25 <xsl:for-each select="exsl:node-set($COL_BUSSTDS)/BUSCOLOR">
27 <xsl:call-template name="Define_BusArrowsEastWest">
28 <xsl:with-param name="iBusStd" select="@BUSSTD"/>
31 <xsl:call-template name="Define_BusArrowsNorthSouth">
32 <xsl:with-param name="iBusStd" select="@BUSSTD"/>
35 <xsl:call-template name="Define_SplitBusses">
36 <xsl:with-param name="iBusStd" select="@BUSSTD"/>
41 <xsl:call-template name="Define_SharedBus">
42 <xsl:with-param name="iBusStd" select="'AXI'"/>
45 <xsl:call-template name="Define_SharedBus">
46 <xsl:with-param name="iBusStd" select="'OPB'"/>
49 <xsl:call-template name="Define_SharedBus">
50 <xsl:with-param name="iBusStd" select="'PLB'"/>
53 <xsl:call-template name="Define_SharedBus">
54 <xsl:with-param name="iBusStd" select="'PLBV46'"/>
57 <xsl:call-template name="Define_SharedBus_Group"/>
61 <xsl:template name="Define_BusArrowsEastWest">
62 <xsl:param name="iBusStd" select="'PLB'"/>
64 <xsl:variable name="busStdColor_">
65 <xsl:call-template name="F_BusStd2RGB">
66 <xsl:with-param name="iBusStd" select="$iBusStd"/>
70 <xsl:variable name="busStdColor_lt_">
71 <xsl:call-template name="F_BusStd2RGB_LT">
72 <xsl:with-param name="iBusStd" select="$iBusStd"/>
76 <g id="{$iBusStd}_BusArrowEast">
79 L {$BLKD_BUS_ARROW_W}, {ceiling($BLKD_BUS_ARROW_H div 2)}
80 L 0,{$BLKD_BUS_ARROW_H},
81 Z" style="stroke:none; fill:{$busStdColor_}"/>
84 <g id="{$iBusStd}_BusArrowWest">
85 <use x="0" y="0" xlink:href="#{$iBusStd}_BusArrowEast" transform="scale(-1,1) translate({$BLKD_BUS_ARROW_W * -1},0)"/>
88 <g id="{$iBusStd}_BusArrowHInitiator">
90 y="{$BLKD_BUS_ARROW_G}"
91 width= "{$BLKD_BUS_ARROW_W}"
92 height="{$BLKD_P2P_BUS_W}"
93 style="stroke:none; fill:{$busStdColor_}"/>
99 <xsl:param name="bus_col" select="'OPB'"/>
102 <xsl:template name="Define_BusArrowsNorthSouth">
103 <xsl:param name="iBusStd" select="'PLB'"/>
105 <xsl:variable name="busStdColor_">
106 <xsl:call-template name="F_BusStd2RGB">
107 <xsl:with-param name="iBusStd" select="$iBusStd"/>
111 <xsl:variable name="busStdColor_lt_">
112 <xsl:call-template name="F_BusStd2RGB_LT">
113 <xsl:with-param name="iBusStd" select="$iBusStd"/>
117 <g id="{$iBusStd}_BusArrowSouth">
120 L {$BLKD_BUS_ARROW_H},0
121 L {ceiling($BLKD_BUS_ARROW_H div 2)}, {$BLKD_BUS_ARROW_W}
122 Z" style="stroke:none; fill:{$busStdColor_}"/>
125 <g id="{$iBusStd}_BusArrowNorth">
126 <use x="0" y="0" xlink:href="#{$iBusStd}_BusArrowSouth" transform="scale(1,-1) translate(0,{$BLKD_BUS_ARROW_H * -1})"/>
129 <g id="{$iBusStd}_BusArrowInitiator">
130 <rect x="{$BLKD_BUS_ARROW_G}"
132 width= "{$BLKD_BUS_ARROW_W - ($BLKD_BUS_ARROW_G * 2)}"
133 height="{$BLKD_BUS_ARROW_H}"
134 style="stroke:none; fill:{$busStdColor_}"/>
140 <xsl:template name="Draw_P2PBus">
142 <xsl:param name="iBusX" select="0"/>
143 <xsl:param name="iBusTop" select="0"/>
144 <xsl:param name="iBusBot" select="0"/>
145 <xsl:param name="iBusStd" select="'_bstd_'"/>
146 <xsl:param name="iBusName" select="'_p2pbus_'"/>
147 <xsl:param name="iBotBifType" select="'_unk_'"/>
148 <xsl:param name="iTopBifType" select="'_unk_'"/>
150 <xsl:variable name="busStdColor_">
153 <xsl:when test="@BUSSTD">
154 <xsl:call-template name="F_BusStd2RGB">
155 <xsl:with-param name="iBusStd" select="@BUSSTD"/>
159 <xsl:when test="not($iBusStd = '_bstd_')">
160 <xsl:call-template name="F_BusStd2RGB">
161 <xsl:with-param name="iBusStd" select="$iBusStd"/>
166 <xsl:call-template name="F_BusStd2RGB">
167 <xsl:with-param name="iBusStd" select="'TRS'"/>
174 <xsl:variable name="p2pH_" select="($iBusBot - $iBusTop) - ($BLKD_BUS_ARROW_H * 2)"/>
176 <xsl:variable name="botArrow_">
178 <xsl:when test="((($iBotBifType = 'INITIATOR') or ($iBotBifType = 'MASTER')) and ($iBusStd = 'FSL'))">BusArrowInitiator</xsl:when>
179 <xsl:otherwise>BusArrowSouth</xsl:otherwise>
183 <xsl:variable name="topArrow_">
185 <xsl:when test="((($iTopBifType = 'INITIATOR') or ($iTopBifType = 'MASTER')) and ($iBusStd = 'FSL'))">BusArrowInitiator</xsl:when>
186 <xsl:otherwise>BusArrowNorth</xsl:otherwise>
190 <xsl:if test="@BUSSTD">
191 <use x="{($iBusX + ceiling($BLKD_BIFC_W div 2)) - ceiling($BLKD_BUS_ARROW_W div 2)}"
192 y="{$iBusTop + ($BLKD_BIFC_H - $BLKD_BUS_ARROW_H) + $BLKD_BUS_ARROW_H}"
193 xlink:href="#{@BUSSTD}_{$topArrow_}"/>
195 <use x="{($iBusX + ceiling($BLKD_BIFC_W div 2)) - ceiling($BLKD_BUS_ARROW_W div 2)}"
196 y="{$iBusBot - $BLKD_BUS_ARROW_H}"
197 xlink:href="#{@BUSSTD}_{$botArrow_}"/>
200 <xsl:if test="(not(@BUSSTD) and not($iBusStd = '_bstd_'))">
201 <use x="{($iBusX + ceiling($BLKD_BIFC_W div 2)) - ceiling($BLKD_BUS_ARROW_W div 2)}"
202 y="{$iBusTop + ($BLKD_BIFC_H - $BLKD_BUS_ARROW_H) + $BLKD_BUS_ARROW_H}"
203 xlink:href="#{$iBusStd}_{$topArrow_}"/>
205 <use x="{($iBusX + ceiling($BLKD_BIFC_W div 2)) - ceiling($BLKD_BUS_ARROW_W div 2)}"
206 y="{$iBusBot - $BLKD_BUS_ARROW_H}"
207 xlink:href="#{$iBusStd}_{$botArrow_}"/>
211 <rect x="{($iBusX + ceiling($BLKD_BIFC_W div 2)) - ceiling($BLKD_BUS_ARROW_W div 2) + $BLKD_BUS_ARROW_G}"
212 y="{$iBusTop + $BLKD_BIFC_H + $BLKD_BUS_ARROW_H}"
213 height= "{$p2pH_ - ($BLKD_BUS_ARROW_H * 2)}"
214 width="{$BLKD_BUS_ARROW_W - ($BLKD_BUS_ARROW_G * 2)}"
215 style="stroke:none; fill:{$busStdColor_}"/>
218 <text class="p2pbuslabel"
219 x="{$iBusX + $BLKD_BUS_ARROW_W + ceiling($BLKD_BUS_ARROW_W div 2) + ceiling($BLKD_BUS_ARROW_W div 4) + 4}"
220 y="{$iBusTop + ($BLKD_BUS_ARROW_H * 3)}">
221 <xsl:value-of select="$iBusName"/>
225 <xsl:call-template name="F_WriteText">
226 <xsl:with-param name="iX" select="($iBusX + $BLKD_BUS_ARROW_W + ceiling($BLKD_BUS_ARROW_W div 2) + ceiling($BLKD_BUS_ARROW_W div 4) + 4)"/>
227 <xsl:with-param name="iY" select="($iBusTop + ($BLKD_BUS_ARROW_H * 3))"/>
228 <xsl:with-param name="iText" select="$iBusName"/>
229 <xsl:with-param name="iClass" select="'p2pbus_label'"/>
232 <xsl:if test="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $iBusName)]/@GROUP">
234 <text class="ioplblgrp"
235 x="{$iBusX + $BLKD_BUS_ARROW_W + ceiling($BLKD_BUS_ARROW_W div 2) + ceiling($BLKD_BUS_ARROW_W div 4) + 6}"
236 y="{$iBusTop + ($BLKD_BUS_ARROW_H * 10)}">
237 <xsl:value-of select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $iBusName)]/@GROUP"/>
240 <xsl:call-template name="F_WriteText">
241 <xsl:with-param name="iX" select="(iBusX + $BLKD_BUS_ARROW_W + ceiling($BLKD_BUS_ARROW_W div 2) + ceiling($BLKD_BUS_ARROW_W div 4) + 6)"/>
242 <xsl:with-param name="iY" select="($iBusTop + ($BLKD_BUS_ARROW_H * 10))"/>
243 <xsl:with-param name="iText" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $iBusName)]/@GROUP"/>
244 <xsl:with-param name="iClass" select="'iogrp_label'"/>
252 <xsl:template name="Draw_Proc2ProcBus">
254 <xsl:param name="iBc_Y" select="0"/>
255 <xsl:param name="iBusStd" select="'_bstd_'"/>
256 <xsl:param name="iBusName" select="'_p2pbus_'"/>
257 <xsl:param name="iBcLeft_X" select="0"/>
258 <xsl:param name="iBcRght_X" select="0"/>
259 <xsl:param name="iLeftBifType" select="'_unk_'"/>
260 <xsl:param name="iRghtBifType" select="'_unk_'"/>
262 <xsl:variable name="busStdColor_">
263 <xsl:call-template name="F_BusStd2RGB">
264 <xsl:with-param name="iBusStd" select="$iBusStd"/>
268 <xsl:variable name="pr2pr_W_" select="($iBcRght_X - $iBcLeft_X)"/>
270 <xsl:variable name="leftArrow_">
272 <xsl:when test="((($iLeftBifType = 'INITIATOR') or ($iLeftBifType = 'MASTER')) and ($iBusStd = 'FSL'))">BusArrowHInitiator</xsl:when>
273 <xsl:otherwise>BusArrowWest</xsl:otherwise>
277 <xsl:variable name="rghtArrow_">
279 <xsl:when test="((($iRghtBifType = 'INITIATOR') or ($iRghtBifType = 'MASTER')) and ($iBusStd = 'FSL'))">BusArrowHInitiator</xsl:when>
280 <xsl:otherwise>BusArrowEast</xsl:otherwise>
285 <xsl:variable name="bus_Y_" select="($iBc_Y + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_BUS_ARROW_H div 2))"/>
287 <use x="{$iBcLeft_X}" y="{$bus_Y_}" xlink:href="#{$iBusStd}_{$leftArrow_}"/>
288 <use x="{$iBcRght_X - $BLKD_BUS_ARROW_W}" y="{$bus_Y_}" xlink:href="#{$iBusStd}_{$rghtArrow_}"/>
290 <rect x="{$iBcLeft_X + $BLKD_BUS_ARROW_W}"
291 y="{$bus_Y_ + $BLKD_BUS_ARROW_G}"
292 width= "{$pr2pr_W_ - (2 * $BLKD_BUS_ARROW_W)}"
293 height="{$BLKD_BUS_ARROW_H - (2 * $BLKD_BUS_ARROW_G)}" style="stroke:none; fill:{$busStdColor_}"/>
296 <text class="horizp2pbuslabel"
297 x="{$iBcLeft_X + $BLKD_BUS_ARROW_W + ceiling($BLKD_BUS_ARROW_W div 2) + ceiling($BLKD_BUS_ARROW_W div 4) + 4}"
298 y="{($bus_Y_)}"><xsl:value-of select="$iBusName"/></text>
300 <text class="horizp2pbuslabel"
301 x="{$iBcRght_X - (string-length($iBusName) * 8)}"
302 y="{($bus_Y_)}"><xsl:value-of select="$iBusName"/></text>
305 <xsl:call-template name="F_WriteText">
306 <xsl:with-param name="iX" select="($iBcLeft_X + $BLKD_BUS_ARROW_W + ceiling($BLKD_BUS_ARROW_W div 2) + ceiling($BLKD_BUS_ARROW_W div 4) + 4)"/>
307 <xsl:with-param name="iY" select="$bus_Y_"/>
308 <xsl:with-param name="iText" select="$iBusName"/>
309 <xsl:with-param name="iClass" select="'p2pbus_label'"/>
313 <xsl:call-template name="F_WriteText">
314 <xsl:with-param name="iX" select="(iBcRght_X - (string-length($iBusName) * 8))"/>
315 <xsl:with-param name="iY" select="$bus_Y_"/>
316 <xsl:with-param name="iText" select="$iBusName"/>
317 <xsl:with-param name="iClass" select="'p2pbus_label'"/>
325 <xsl:template name="Draw_SplitConnBus">
327 <xsl:param name="iBc_X" select="0"/>
328 <xsl:param name="iBc_Y" select="0"/>
329 <xsl:param name="iBc_Type" select="'_unk_'"/>
330 <xsl:param name="iBc_Side" select="'_unk_'"/>
331 <xsl:param name="iBusStd" select="'_bstd_'"/>
332 <xsl:param name="iBusName" select="'_p2pbus_'"/>
334 <xsl:variable name="busStdColor_">
335 <xsl:call-template name="F_BusStd2RGB">
336 <xsl:with-param name="iBusStd" select="$iBusStd"/>
340 <xsl:variable name="connArrow_">
342 <xsl:when test="((($iBc_Type = 'INITIATOR') or ($iBc_Type = 'MASTER')) and ($iBusStd = 'FSL'))">BusArrowHInitiator</xsl:when>
343 <xsl:otherwise>BusArrowEast</xsl:otherwise>
347 <xsl:variable name="arrow_Y_" select="($iBc_Y + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_BUS_ARROW_H div 2))"/>
349 <xsl:variable name="bus_X_">
351 <xsl:when test="$iBc_Side = '0'"><xsl:value-of select="($iBc_X - ($BLKD_BUS_ARROW_W * 2))"/></xsl:when>
352 <xsl:when test="$iBc_Side = '1'"><xsl:value-of select="($iBc_X + $BLKD_BIFC_W + $BLKD_BUS_ARROW_W)"/></xsl:when>
357 <use x="{$bus_X_}" y="{$arrow_Y_}" xlink:href="#{$busStd}_BusArrowHInitiator"/>
360 <xsl:variable name="arrow_X_">
362 <xsl:when test="$iBc_Side = '0'"><xsl:value-of select="($iBc_X - $BLKD_BUS_ARROW_W)"/></xsl:when>
363 <xsl:when test="$iBc_Side = '1'"><xsl:value-of select="($iBc_X + $BLKD_BIFC_W)"/></xsl:when>
367 <xsl:when test="(($iBusStd = 'FSL') and (($iBc_Type = 'MASTER') or ($iBc_Type = 'INITIATOR')))">
368 <use x="{$arrow_X_}" y="{$arrow_Y_}" xlink:href="#{$iBusStd}_{$connArrow_}"/>
369 <use x="{$bus_X_}" y="{$arrow_Y_}" xlink:href="#{$iBusStd}_BusArrowHInitiator"/>
371 <xsl:when test="(($iBc_Side = '1') and not($iBusStd = 'FSL') and (($iBc_Type = 'MASTER') or ($iBc_Type = 'INITIATOR')))">
372 <use x="{$arrow_X_ - $BLKD_BIFC_W}" y="{$arrow_Y_}" xlink:href="#{$iBusStd}_SplitBus_WEST"/>
374 <xsl:when test="(($iBc_Side = '1') and (($iBc_Type = 'SLAVE') or ($iBc_Type = 'TARGET') or ($iBc_Type = 'USER')))">
375 <use x="{$arrow_X_}" y="{$arrow_Y_}" xlink:href="#{$iBusStd}_SplitBus_EAST"/>
378 <use x="{$arrow_X_}" y="{$arrow_Y_}" xlink:href="#{$iBusStd}_{$connArrow_}"/>
379 <use x="{$bus_X_}" y="{$arrow_Y_}" xlink:href="#{$iBusStd}_BusArrowHInitiator"/>
383 <xsl:variable name="text_X_">
385 <xsl:when test="$iBc_Side = '0'"><xsl:value-of select="($bus_X_ - $BLKD_BUS_ARROW_W - (string-length($iBusName) * 5))"/></xsl:when>
386 <xsl:when test="$iBc_Side = '1'"><xsl:value-of select="($bus_X_ + $BLKD_BUS_ARROW_W)"/></xsl:when>
392 <text class="horizp2pbuslabel"
395 <xsl:value-of select="$iBusName"/>
398 <xsl:call-template name="F_WriteText">
399 <xsl:with-param name="iX" select="$text_X_"/>
400 <xsl:with-param name="iY" select="$arrow_Y_"/>
401 <xsl:with-param name="iText" select="$iBusName"/>
402 <xsl:with-param name="iClass" select="'p2pbus_label'"/>
408 <xsl:template name="Define_SharedBus">
410 <xsl:param name="iBusStd" select="'PLB46'"/>
412 <xsl:variable name="sharedbus_w_" select="($G_Total_DrawArea_W - ($BLKD_INNER_GAP * 2))"/>
414 <xsl:variable name="busStdColor_">
415 <xsl:call-template name="F_BusStd2RGB">
416 <xsl:with-param name="iBusStd" select="$iBusStd"/>
420 <xsl:variable name="busStdColor_lt_">
421 <xsl:call-template name="F_BusStd2RGB_LT">
422 <xsl:with-param name="iBusStd" select="$iBusStd"/>
426 <g id="{$iBusStd}_SharedBus">
427 <use x="0" y="0" xlink:href="#{$iBusStd}_BusArrowWest"/>
428 <use x="{$sharedbus_w_ - $BLKD_BUS_ARROW_W}" y="0" xlink:href="#{$iBusStd}_BusArrowEast"/>
430 <rect x="{$BLKD_BUS_ARROW_W}"
431 y="{$BLKD_BUS_ARROW_G}"
432 width= "{$sharedbus_w_ - ($BLKD_BUS_ARROW_W * 2)}"
433 height="{$BLKD_BUS_ARROW_H - (2 * $BLKD_BUS_ARROW_G)}" style="stroke:none; fill:{$busStdColor_}"/>
438 <xsl:template name="Define_SplitBusses">
440 <xsl:param name="iBusStd" select="'FSL'"/>
442 <xsl:variable name="busStdColor_">
443 <xsl:call-template name="F_BusStd2RGB">
444 <xsl:with-param name="iBusStd" select="$iBusStd"/>
448 <xsl:variable name="bifc_r_" select="ceiling($BLKD_BIFC_W div 3)"/>
450 <g id="{$iBusStd}_SplitBus_EAST">
451 <use x="0" y="0" xlink:href="#{$iBusStd}_BusArrowWest"/>
453 <rect x="{$BLKD_BUS_ARROW_W}"
454 y="{$BLKD_BUS_ARROW_G}"
455 width= "{$BLKD_BIFC_W}"
456 height="{$BLKD_BUS_ARROW_H - (2 * $BLKD_BUS_ARROW_G)}" style="stroke:none; fill:{$busStdColor_}"/>
460 <xsl:variable name="splbus_w_" select="($BLKD_BUS_ARROW_W + $BLKD_BIFC_W + $BLKD_BIFC_Wi)"/>
462 <g id="{$iBusStd}_SplitBus_WEST">
463 <use x="0" y="0" xlink:href="#{$iBusStd}_SplitBus_EAST" transform="scale(-1,1) translate({$splbus_w_ * -1},0)"/>
466 <g id="{$iBusStd}_SplitBus_OneWay">
469 y="{$BLKD_BUS_ARROW_G}"
470 width= "{($BLKD_BUS_ARROW_W * 2)}"
471 height="{$BLKD_BUS_ARROW_H - (2 * $BLKD_BUS_ARROW_G)}" style="stroke:none; fill:{$busStdColor_}"/>
473 <rect x="{($BLKD_BUS_ARROW_W * 2)}"
475 width= "{$BLKD_BUS_ARROW_H}"
476 height="{$BLKD_BUS_ARROW_H}" style="stroke:none; fill:{$busStdColor_}"/>
482 <xsl:template name="Define_SharedBus_Group">
484 <!-- The Bridges go into the shared bus shape -->
485 <xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/BRIDGESHAPES/MODULE">
487 <xsl:variable name="modInst_" select="@INSTANCE"/>
488 <xsl:variable name="modType_" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $modInst_)]/@MODTYPE"/>
490 <xsl:call-template name="Define_Peripheral">
491 <xsl:with-param name="iModVori" select="'normal'"/>
492 <xsl:with-param name="iModInst" select="$modInst_"/>
493 <xsl:with-param name="iModType" select="$modType_"/>
498 <g id="group_sharedBusses">
500 <!-- Draw the shared bus shapes first -->
501 <xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/SBSSHAPES/MODULE">
502 <xsl:variable name="instance_" select="@INSTANCE"/>
504 <xsl:variable name="busStd_" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $instance_)]/@BUSSTD"/>
505 <xsl:variable name="busIndex_" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $instance_)]/@BUS_INDEX"/>
507 <xsl:variable name="busY_" select="($busIndex_ * $BLKD_SBS_LANE_H)"/>
509 <use x="0" y="{$busY_}" xlink:href="#{$busStd_}_SharedBus"/>
512 <text class="sharedbuslabel"
514 y="{$busY_ + $BLKD_BUS_ARROW_H + 10}">
515 <xsl:value-of select="$instance_"/>
518 <xsl:call-template name="F_WriteText">
519 <xsl:with-param name="iX" select="'8'"/>
520 <xsl:with-param name="iY" select="($busY_ + $BLKD_BUS_ARROW_H + 10)"/>
521 <xsl:with-param name="iText" select="$instance_"/>
522 <xsl:with-param name="iClass" select="'sharedbus_label'"/>
528 <g 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="F_BusStd2RGB">
534 <xsl:with-param name="iBusStd" select="'KEY'"/>
538 <rect x="{$BLKD_BUS_ARROW_W}"
539 y="{$BLKD_BUS_ARROW_G}"
540 width= "{30 - $BLKD_BUS_ARROW_W}"
541 height="{$BLKD_BUS_ARROW_H - (2 * $BLKD_BUS_ARROW_G)}" style="stroke:none; fill:{$key_col_}"/>