📄 mdtsvgblkd_main.xsl
字号:
<xsl:variable name="brdgPosition_" select="@POSITION"/> <xsl:variable name="brdgInstance_" select="@INSTANCE"/> <xsl:variable name="min_bus_idx_" select="math:min(exsl:node-set($bridgeShapes_)/BRIDGECONN[(@POSITION = $brdgPosition_)]/@BUSINDEX)"/><!-- <xsl:variable name="max_bus_idx_" select="math:max(exsl:node-set($bridgeShapes_)/BRIDGECONN[(@POSITION = $brdgPosition_)]/@BUSINDEX)"/> <xsl:message>Maximum index <xsl:value-of select="$max_bus_idx_"/></xsl:message> <xsl:message>Minimum index <xsl:value-of select="$min_bus_idx_"/></xsl:message>--> <xsl:variable name="brdg_X_" select="($BLKD_INNER_X + $BLKD_BRIDGE_GAP + $BLKD_BUS_LANE_W + (@POSITION * ($BLKD_MOD_W + ($BLKD_BUS_LANE_W * 2))))"/> <xsl:variable name="brdg_Y_" select="($G_SharedBus_Y + ($min_bus_idx_ * $BLKD_SBS_LANE_H) + ceiling($BLKD_SBS_LANE_H div 2) - ceiling($BLKD_MOD_H div 2))"/> <use x="{$brdg_X_}" y="{$brdg_Y_}" xlink:href="#symbol_{$brdgInstance_}"/> </xsl:for-each> <!-- <xsl:message>Found <xsl:value-of select="count(exsl:node-set($bridgeShapes_)/BRIDGECONN)"/> busconns </xsl:message> <xsl:message>Drawing connection for bridge <xsl:value-of select="$brdgInstance_"/> at <xsl:value-of select="@POSITION"/> </xsl:message>--> <xsl:for-each select="exsl:node-set($bridgeShapes_)/BRIDGECONN"> <xsl:sort select="@POSITION" data-type="number"/> <xsl:variable name="brdgInstance_" select="@INSTANCE"/> <xsl:variable name="brdgPosition_" select="@POSITION"/> <xsl:variable name="busColor_"> <xsl:call-template name="BusType2Color"> <xsl:with-param name="iBusType" select="@BUSSTD"/> </xsl:call-template> </xsl:variable> <xsl:variable name="min_bus_idx_" select="math:min(exsl:node-set($bridgeShapes_)/BRIDGECONN[(@POSITION = $brdgPosition_)]/@BUSINDEX)"/> <xsl:variable name="brdg_Y1_" select="($G_SharedBus_Y + ($min_bus_idx_ * $BLKD_SBS_LANE_H) + ceiling($BLKD_SBS_LANE_H div 2) - ceiling($BLKD_MOD_H div 2))"/> <xsl:variable name="brdg_X_" select="($BLKD_INNER_X + $BLKD_BRIDGE_GAP + $BLKD_BUS_LANE_W + (@POSITION * ($BLKD_MOD_W + ($BLKD_BUS_LANE_W * 2))))"/> <xsl:variable name="bc_Y_" select="$brdg_Y1_ + $BLKD_MOD_LANE_H + $BLKD_MOD_LABEL_H + $BLKD_BIF_GAP_V + ceiling($BLKD_BIF_H div 2) - ceiling($BLKD_BIFC_H div 2)"/> <xsl:variable name="bc_X_"> <xsl:choose> <xsl:when test="@ORIENTED='WEST'"> <xsl:value-of select="($brdg_X_ - $BLKD_BIFC_W)"/> </xsl:when> <xsl:when test="@ORIENTED='EAST'"> <xsl:value-of select="($brdg_X_ + $BLKD_MOD_W)"/> </xsl:when> </xsl:choose> </xsl:variable> <!-- Layout the bus conn --> <use x="{$bc_X_}" y="{$bc_Y_}" xlink:href="#{@BUSSTD}_busconn_{@BIFRANK}"/> <!-- Figure out the positions of the lines --> <!-- <xsl:variable name="vert_line_x_" select="$bc_X_ + ceiling($BLKD_BIFC_W div 2)"/> <xsl:message>vert line x <xsl:value-of select="$vert_line_x_"/></xsl:message> <xsl:message>bus index <xsl:value-of select="@BUSINDEX"/></xsl:message>--> <xsl:variable name="vert_line_x_"> <xsl:choose> <xsl:when test="@ORIENTED='WEST'"> <xsl:value-of select="($bc_X_ - ($BLKD_BUS_LANE_W - $BLKD_BIFC_W))"/> </xsl:when> <xsl:when test="@ORIENTED='EAST'"> <xsl:value-of select="($bc_X_ + ($BLKD_BUS_LANE_W - $BLKD_P2P_BUS_W))"/> </xsl:when> </xsl:choose> </xsl:variable> <!-- At least one of the points is going to be the bus --><!-- <xsl:variable name="vert_line_y1_" select="($G_SharedBus_Y + $BLKD_PROC2SBS_GAP + (@BUSINDEX * $BLKD_SBS_LANE_H))"/>--> <xsl:variable name="vert_line_y1_" select="($G_SharedBus_Y + (@BUSINDEX * $BLKD_SBS_LANE_H))"/> <xsl:variable name="vert_line_y2_" select="$bc_Y_ + ceiling($BLKD_BIFC_H div 2)"/> <xsl:variable name="v_bus_ul_y_"> <xsl:choose> <xsl:when test="$vert_line_y1_ > $vert_line_y2_"> <xsl:value-of select="$vert_line_y2_"/> </xsl:when> <xsl:when test="$vert_line_y2_ > $vert_line_y1_"> <xsl:value-of select="$vert_line_y1_"/> </xsl:when> </xsl:choose> </xsl:variable> <!-- <xsl:variable name="v_bus_ul_x_" select="$vert_line_x_"/>--> <xsl:variable name="v_bus_ul_x_"> <xsl:choose> <xsl:when test="@ORIENTED='WEST'"> <xsl:value-of select="($vert_line_x_ + $BLKD_BIF_GAP_H)"/> </xsl:when> <xsl:when test="@ORIENTED='EAST'"> <xsl:value-of select="($vert_line_x_ - $BLKD_BIF_GAP_H)"/> </xsl:when> </xsl:choose> </xsl:variable> <xsl:variable name="v_bus_width_" select="$BLKD_P2P_BUS_W"/> <xsl:variable name="v_bus_height_"> <xsl:choose> <xsl:when test="$vert_line_y1_ > $vert_line_y2_"> <xsl:value-of select="($vert_line_y1_ - $vert_line_y2_)"/> </xsl:when> <xsl:when test="$vert_line_y2_ > $vert_line_y1_"> <xsl:value-of select="($vert_line_y2_ - $vert_line_y1_)"/> </xsl:when> </xsl:choose> </xsl:variable> <xsl:variable name="h_bus_ul_x_"> <xsl:choose> <xsl:when test="@ORIENTED='WEST'"> <xsl:value-of select="($bc_X_ - ($BLKD_BUS_LANE_W - $BLKD_BIFC_W) + $BLKD_BIF_GAP_H)"/> </xsl:when> <xsl:when test="@ORIENTED='EAST'"> <xsl:value-of select="($bc_X_ + $BLKD_BIFC_W - ceiling(($BLKD_BIFC_W - $BLKD_BIFC_Wi) div 2))"/> </xsl:when> </xsl:choose> </xsl:variable> <xsl:variable name="h_bus_ul_y_" select="$bc_Y_ + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_P2P_BUS_W div 2)"/> <xsl:variable name="h_bus_height_" select="$BLKD_P2P_BUS_W"/> <xsl:variable name="h_bus_width_"> <xsl:choose> <xsl:when test="@ORIENTED='WEST'"> <xsl:value-of select="(($bc_X_ + ceiling(($BLKD_BIFC_W - $BLKD_BIFC_Wi) div 2)) - $h_bus_ul_x_ + 1)"/> </xsl:when> <xsl:when test="@ORIENTED='EAST'"> <xsl:value-of select="(($v_bus_ul_x_ + $BLKD_P2P_BUS_W) - $h_bus_ul_x_)"/> </xsl:when> </xsl:choose> </xsl:variable> <!-- <xsl:message>vert line y1 <xsl:value-of select="$vert_line_y1_"/></xsl:message>--> <rect x="{$v_bus_ul_x_}" y="{$v_bus_ul_y_ + 2}" width= "{$v_bus_width_}" height="{$v_bus_height_}" style="stroke:none; fill:{$busColor_}"/> <rect x="{$h_bus_ul_x_}" y="{$h_bus_ul_y_}" width= "{$h_bus_width_}" height="{$h_bus_height_}" style="stroke:none; fill:{$busColor_}"/> </xsl:for-each> </xsl:template> <!-- =========================================================================== --><!-- FUNCTION TEMPLATE --><!-- --><!-- Draw the IP Bucket --><!-- =========================================================================== --><xsl:template name="Draw_BlkDiagram_IPBucket"> <!-- Draw IP Bucket --> <xsl:for-each select="/EDKSYSTEM/BLKDSHAPES/IPBUCKET"> <xsl:variable name="bucket_w_" select="(($BLKD_MOD_BKTLANE_W * 2) + (($BLKD_MOD_W * @MODS_W) + ($BLKD_MOD_BUCKET_G * (@MODS_W - 1))))"/> <xsl:variable name="bucket_h_" select="(($BLKD_MOD_BKTLANE_H * 2) + (($BLKD_MOD_H * @MODS_H) + ($BLKD_MOD_BUCKET_G * (@MODS_H - 1))))"/> <xsl:variable name="bucket_x_" select="(ceiling($G_total_blkd_W div 2) - ceiling($bucket_w_ div 2))"/> <xsl:variable name="bucket_y_" select="($G_SharedBus_Y + $G_total_SharedBus_H + $G_max_Stack_BlwSbs_H + $BLKD_SBS2IP_GAP)"/> <text class="ipclass" x="{$bucket_x_}" y="{$bucket_y_ - 4}">IP</text> <use x="{$bucket_x_}" y="{$bucket_y_}" xlink:href="#ipbucket"/> </xsl:for-each> </xsl:template> <xsl:template name="Draw_BlkDiagram_Key"> <use x="{ceiling($G_total_blkd_W div 2) - ceiling($BLKD_KEY_W div 2)}" y="0" xlink:href="#BlkDiagram_Key"/> </xsl:template><xsl:template name="Define_BlkDiagram_Key"> <xsl:variable name="key_col_"> <xsl:call-template name="BusType2Color"> <xsl:with-param name="iBusType" select="'KEY'"/> </xsl:call-template> </xsl:variable> <xsl:variable name="key_lt_col_"> <xsl:call-template name="BusType2LightColor"> <xsl:with-param name="iBusType" select="'KEY'"/> </xsl:call-template> </xsl:variable> <symbol id="KEY_IntrCntrl"> <rect x="0" y="0" rx="3" ry="3" width= "{ceiling($BLKD_INTR_W div 2)}" height="{$BLKD_INTR_H}" style="fill:{$key_lt_col_}; stroke:none; stroke-width:1"/> <line x1="0" y1="{ceiling($BLKD_INTR_H div 4)}" x2="{ceiling($BLKD_INTR_W div 2)}" y2="{ceiling($BLKD_INTR_H div 4)}" style="stroke:{$COL_BLACK};stroke-width:2"/> <text class="intrsymbol" x="1.5" y="{7 + ceiling($BLKD_INTR_H div 2)}">x</text> </symbol> <symbol id="KEY_IntrdProc"> <rect x="0" y="0" rx="3" ry="3" width= "{ceiling($BLKD_INTR_W div 2)}" height="{$BLKD_INTR_H}" style="fill:{$key_lt_col_}; stroke:none; stroke-width:1"/> <line x1="0" y1="{ceiling($BLKD_INTR_H div 4) - 2}" x2="{ceiling($BLKD_INTR_W div 2)}" y2="{ceiling($BLKD_INTR_H div 4) - 2}" style="stroke:{$COL_BLACK};stroke-width:1"/> <line x1="0" y1="{ceiling($BLKD_INTR_H div 4) + 2}" x2="{ceiling($BLKD_INTR_W div 2)}" y2="{ceiling($BLKD_INTR_H div 4) + 2}" style="stroke:{$COL_BLACK};stroke-width:1"/> <text class="intrsymbol" x="1.5" y="{7 + ceiling($BLKD_INTR_H div 2)}">x</text> </symbol> <symbol id="KEY_IntrSrc"> <rect x="0" y="0" rx="3" ry="3" width= "{$BLKD_INTR_W}" height="{ceiling($BLKD_INTR_H div 2)}" style="fill:{$key_lt_col_}; stroke:none; stroke-width:1"/> <line x1="{ceiling($BLKD_INTR_W div 2)}" y1="0" x2="{ceiling($BLKD_INTR_W div 2)}" y2="{ceiling($BLKD_INTR_H div 2)}" style="stroke:{$COL_BLACK};stroke-width:1"/> <text class="intrsymbol" x="2" y="7">y</text> <text class="intrsymbol" x="{2 + ceiling($BLKD_INTR_W div 2)}" y="7">x</text> </symbol> <symbol id="BlkDiagram_Key"> <rect x="0" y="0" width= "{$BLKD_KEY_W}" height="{$BLKD_KEY_H}" style="fill:{$COL_BG}; stroke:none;"/> <rect x="0" y="0" width= "{$BLKD_KEY_W}" height="16" style="fill:{$COL_BG}; stroke:none;"/> <text class="keytitle" x="{ceiling($BLKD_KEY_W div 2)} " y="14">KEY</text> <rect x="0" y="16" width= "{$BLKD_KEY_W}" height="16" style="fill:{$COL_BG_LT}; stroke:none;"/> <text class="keyheader" x="{ceiling($BLKD_KEY_W div 2)} " y="30">SYMBOLS</text> <use x="32" y="47" xlink:href="#KEY_Bif" transform="scale(0.75)"/> <text class="keylabel" x="12" y="60">bus interface</text> <use x="20" y="68" xlink:href="#KEY_SharedBus"/> <text class="keylabel" x="12" y="85">shared bus</text> <text class="keylblul" x="110" y="47">Bus connections</text> <use x="110" y="58" xlink:href="#KEY_busconn_MASTER"/> <text class="keylabel" x="140" y="72">master or initiator</text> <use x="110" y="{58 + (($BLKD_BIFC_H + 4) * 1)}" xlink:href="#KEY_busconn_SLAVE"/> <text class="keylabel" x="140" y="{72 + (($BLKD_BIFC_H + 4) * 1)}">slave or target</text> <use x="110" y="{58 + (($BLKD_BIFC_H + 4) * 2)}" xlink:href="#KEY_busconn_MASTER_SLAVE"/> <text class="keylabel" x="140" y="{72 + (($BLKD_BIFC_H + 4) * 2)}">master slave</text> <use x="110" y="{58 + (($BLKD_BIFC_H + 4) * 3)}" xlink:href="#KEY_busconn_MONITOR"/> <text class="keylabel" x="140"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -