?? mdtsvgblkd_peripherals.xsl
字號:
<?xml version="1.0" standalone="no"?> <xsl:stylesheet version="1.0" xmlns:svg="http://www.w3.org/2000/svg" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:math="http://exslt.org/math" xmlns:exsl="http://exslt.org/common" xmlns:xlink="http://www.w3.org/1999/xlink" extension-element-prefixes="math"> <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" doctype-public="-//W3C//DTD SVG 1.0//EN" doctype-system="http://www.w3.org/TR/SVG/DTD/svg10.dtd"/> <!-- <xsl:variable name="INF_H" select="$BIF_H + ceiling($BIF_H div 2)"/> <xsl:variable name="INF_W" select="($BIF_W * 2) + $BIF_GAP"/>--> <!-- ======================= DEF FUNCTIONS =================================== --><!-- <xsl:template name="Define_FreeCmplxModules"> <xsl:for-each select="BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(@IS_PROMOTED and not(@IS_PENALIZED) and not(@STACK_INDEX))]"> 120GG <xsl:variable name="cmplxId_" sele1200Gct="position()"/> <xsl:if test="@MODCLASS='MEMORY_UNIT'"> <xsl:call-template name="Define_PeripheralMemory"> <xsl:with-param name="iPeriId" select="$cmplxId_"/> </xsl:call-template> </xsl:if> <xsl:if test="((@MODCLASS='MASTER_SLAVE') or (@MODCLASS = 'MONITOR'))"> <xsl:variable name="modInst_" select="MODULE/@INSTANCE"/> <xsl:variable name="modType_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE=$modInst_)]/@MODTYPE"/> <xsl:call-template name="Define_Peripheral"> <xsl:with-param name="iModInst" select="$modInst_"/> <xsl:with-param name="iModType" select="$modType_"/> </xsl:call-template> </xsl:if> </xsl:for-each> </xsl:template> --><xsl:template name="Define_PenalizedModules"> <xsl:for-each select="BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(@IS_PROMOTED and @IS_PENALIZED)]"> <xsl:variable name="penalId_">unkmodule_<xsl:value-of select="@BKTROW"/>_<xsl:value-of select="@MODS_X"/></xsl:variable> <!-- <xsl:message>Drawing penalized module <xsl:value-of select="$penalId_"/></xsl:message> <xsl:if test="@MODCLASS='MEMORY_UNIT'"> <xsl:call-template name="Define_PeripheralMemory"> <xsl:with-param name="iPeriId" select="$penalId_"/> </xsl:call-template> </xsl:if>--> <!-- <xsl:if test="((@MODCLASS='MASTER_SLAVE') or (@MODCLASS = 'MONITOR'))"> <xsl:variable name="modInst_" select="MODULE/@INSTANCE"/> <xsl:variable name="modType_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $modInst_)]/@MODTYPE"/> <xsl:call-template name="Define_Peripheral"> <xsl:with-param name="iModInst" select="$modInst_"/> <xsl:with-param name="iModType" select="$modType_"/> <xsl:with-param name="iUnkInst" select="$penalId_"/> </xsl:call-template> </xsl:if>--> </xsl:for-each> </xsl:template> <xsl:template name="Define_IPBucket"> <xsl:for-each select="BLKDSHAPES/IPBUCKET"> <xsl:for-each select="MODULE"> <xsl:call-template name="Define_IPBucketModule"> <xsl:with-param name="iIPType" select="@MODTYPE"/> <xsl:with-param name="iIPName" select="@INSTANCE"/> </xsl:call-template> </xsl:for-each> <symbol id="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))))"/> <rect x="0" y="0" rx="4" ry="4" width= "{$bucket_w_}" height="{$bucket_h_}" style="stroke-width:2; stroke:{$COL_BLACK}; fill:{$COL_IORING_LT}"/> <xsl:variable name="bkt_mods_w_" select="@MODS_W"/> <xsl:for-each select="MODULE"> <xsl:variable name="clm_" select="(( position() - 1) mod $bkt_mods_w_)"/> <xsl:variable name="row_" select="floor((position() - 1) div $bkt_mods_w_)"/> <xsl:variable name="bk_x_" select="$BLKD_MOD_BKTLANE_W + ($clm_ * ($BLKD_MOD_W + $BLKD_MOD_BUCKET_G))"/> <xsl:variable name="bk_y_" select="$BLKD_MOD_BKTLANE_H + ($row_ * ($BLKD_MOD_H + $BLKD_MOD_BUCKET_G))"/> <use x="{$bk_x_}" y="{$bk_y_}" xlink:href="#ipbktmodule_{@INSTANCE}"/> </xsl:for-each> </symbol> </xsl:for-each> </xsl:template> <xsl:template name="Define_UNKBucket"> <xsl:for-each select="BLKDSHAPES/UNKBUCKET"> <symbol id="unkbucket"> <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))))"/> <rect x="0" y="0" rx="4" ry="4" width= "{$bucket_w_}" height="{$bucket_h_}" style="stroke-width:2; stroke:{$COL_BLACK}; fill:{$COL_BG_UNK}"/> <xsl:for-each select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(@IS_PROMOTED and @IS_PENALIZED)]"> <xsl:variable name="bkt_mods_w_" select="@MODS_W"/> <xsl:variable name="mod_row_" select="@BKTROW"/> <xsl:variable name="row_mods_h_" select="/EDKSYSTEM/BLKDSHAPES/UNKBUCKET/BKTROW[(@INDEX = $mod_row_)]/@MODS_H"/> <!-- <xsl:message>The row module is <xsl:value-of select="@BKTROW"/></xsl:message> <xsl:message>The height of the module is <xsl:value-of select="$row_mods_h_"/></xsl:message>--> <xsl:variable name="bk_x_" select="$BLKD_MOD_BKTLANE_W + (@MODS_X * ($BLKD_MOD_W + $BLKD_MOD_BUCKET_G))"/> <xsl:variable name="bk_y_" select="$BLKD_MOD_BKTLANE_H + ($row_mods_h_ * ($BLKD_MOD_H + $BLKD_MOD_BUCKET_G))"/> <use x="{$bk_x_}" y="{$bk_y_}" xlink:href="#symbol_unkmodule_{@BKTROW}_{@MODS_X}"/> <!-- --> </xsl:for-each> </symbol> </xsl:for-each> </xsl:template> <xsl:template name="Define_SBSBuckets"> <xsl:for-each select="/EDKSYSTEM/BLKDSHAPES/SBSBUCKETS/SBSBUCKET"> <xsl:variable name="bus_name_" select="@BUSNAME"/> <xsl:variable name="bus_std_" select="@BUSSTD"/><!-- <xsl:variable name="bus_std_" select="BUSCONNS/BUSCONN/@BUSSTD"/>--> <xsl:variable name="bus_conn_w_" select="BUSCONNS/@BUSLANE_W"/> <xsl:variable name="bucket_bg_col_"> <xsl:call-template name="BusType2LightColor"> <xsl:with-param name="iBusType" select="$bus_std_"/> </xsl:call-template> </xsl:variable> <xsl:variable name="bucket_col_"> <xsl:call-template name="BusType2Color"> <xsl:with-param name="iBusType" select="$bus_std_"/> </xsl:call-template> </xsl:variable> <xsl:for-each select="MODULE"> <xsl:sort data-type="text" select="@INSTANCE" order="ascending"/> <xsl:call-template name="Define_SBSBucketModule"> <xsl:with-param name="iBifType" select="$bus_std_"/> <xsl:with-param name="iIPType" select="@MODTYPE"/> <xsl:with-param name="iIPName" select="@INSTANCE"/> </xsl:call-template> </xsl:for-each> <symbol id="sbsbucket_{$bus_name_}"> <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 + $BLKD_BIFC_H) * @MODS_H) + ($BLKD_MOD_BUCKET_G * (@MODS_H - 1))))"/> <rect x="0" y="0" rx="4" ry="4" width= "{$bucket_w_}" height="{$bucket_h_}" style="stroke-width:2; stroke:{$bucket_col_}; fill:{$bucket_bg_col_}"/> <xsl:variable name="bkt_mods_w_" select="@MODS_W"/> <xsl:for-each select="MODULE"> <xsl:sort data-type="text" select="@INSTANCE" order="ascending"/> <xsl:variable name="clm_" select="(( position() - 1) mod $bkt_mods_w_)"/> <xsl:variable name="row_" select="floor((position() - 1) div $bkt_mods_w_)"/> <xsl:variable name="bk_x_" select="$BLKD_MOD_BKTLANE_W + ($clm_ * ($BLKD_MOD_W + $BLKD_MOD_BUCKET_G))"/> <xsl:variable name="bk_y_" select="$BLKD_MOD_BKTLANE_H + ($row_ * ($BLKD_MOD_H + $BLKD_BIFC_H + $BLKD_MOD_BUCKET_G))"/> <!-- Lay out the module in the bucket --> <use x="{$bk_x_}" y="{$bk_y_}" xlink:href="#sbsbktmodule_{@INSTANCE}"/> <!-- Add its connection to the piece shared bus --> <xsl:variable name="h_bus_y_" select="$bk_y_ + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_P2P_BUS_W div 2)"/> <!-- <xsl:variable name="h_bus_x_" select="$bk_x_ - ($BLKD_MOD_BUCKET_G + ceiling($BLKD_MOD_W div 2))"/>--> <xsl:variable name="h_bus_x_"> <xsl:choose> <xsl:when test="($clm_ = '0')">0</xsl:when> <xsl:when test="not($clm_ = '0')"> <xsl:value-of select="$bk_x_ - ($BLKD_MOD_BUCKET_G + ceiling($BLKD_MOD_W div 2))"/> </xsl:when> </xsl:choose> </xsl:variable> <!-- <xsl:variable name="h_bus_y_" select="$bk_y_ + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_P2P_BUS_W)"/> <xsl:message>h bus x <xsl:value-of select="$h_bus_x_"/></xsl:message> <xsl:message>h bus y <xsl:value-of select="$h_bus_y_"/></xsl:message>--> <xsl:variable name="h_bus_height_" select="$BLKD_P2P_BUS_W"/> <xsl:variable name="h_bus_width_" select="($bk_x_ - $h_bus_x_ + ceiling($BLKD_MOD_W div 2))"/> <rect x="{$h_bus_x_}" y="{$h_bus_y_}" width= "{$h_bus_width_}" height="{$BLKD_P2P_BUS_W}" style="fill:{$bucket_col_}"/> </xsl:for-each> <xsl:variable name="num_sbsbktmods_" select="count(MODULE)"/> <xsl:variable name="num_sbsbktrows_" select="ceiling($num_sbsbktmods_ div $BLKD_BKT_MODS_PER_ROW)"/> <!-- If there is more than one row, connect the rows with a vertical bar --> <xsl:if test="($num_sbsbktrows_ > 1)"> <xsl:variable name="v_bus_x_" select="$BLKD_MOD_BKTLANE_W + ($BLKD_MOD_W + $BLKD_MOD_BUCKET_G)"/> <xsl:variable name="bkt_top_" select="$BLKD_MOD_BKTLANE_H + (0 * ($BLKD_MOD_H + $BLKD_BIFC_H + $BLKD_MOD_BUCKET_G))"/> <xsl:variable name="bkt_bot_" select="$BLKD_MOD_BKTLANE_H + (($num_sbsbktrows_ - 1) * ($BLKD_MOD_H + $BLKD_BIFC_H + $BLKD_MOD_BUCKET_G))"/> <xsl:variable name="v_bus_y_top_" select="$bkt_top_ + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_P2P_BUS_W div 2)"/> <xsl:variable name="v_bus_y_bot_" select="$bkt_bot_ + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_P2P_BUS_W div 2)"/> <xsl:variable name="v_bus_width_" select="$BLKD_P2P_BUS_W"/> <xsl:variable name="v_bus_height_" select="($v_bus_y_bot_ - $v_bus_y_top_)"/> <rect x="0" y="{$v_bus_y_top_}" width= "{$v_bus_width_}" height="{$v_bus_height_}" style="fill:{$bucket_col_}"/> </xsl:if> </symbol> </xsl:for-each> </xsl:template> <xsl:template name="Define_SBSBucketModule"> <xsl:param name="iBifType" select="'OPB'"/> <xsl:param name="iIPName" select="'_ipType_'"/> <xsl:param name="iIPType" select="'_ipName_'"/> <!-- <xsl:message>The IPType is <xsl:value-of select="$iIPType"/> </xsl:message>--> <xsl:variable name="bif_y_"> <xsl:value-of select="$BLKD_MOD_LANE_H + $BLKD_BIFC_H"/> </xsl:variable> <xsl:variable name="label_y_"> <xsl:value-of select="$BLKD_MOD_LANE_H + $BLKD_BIF_H + $BLKD_BIFC_H + $BLKD_BIF_GAP_V"/> </xsl:variable> <xsl:variable name="modBg_Col_"> <xsl:choose> <xsl:when test="$iIPType = 'mpmc'"><xsl:value-of select="$COL_MPMC_BG"/></xsl:when> <xsl:otherwise><xsl:value-of select="$COL_BG"/></xsl:otherwise> </xsl:choose> </xsl:variable> <symbol id="sbsbktmodule_{$iIPName}"> <rect x="0" y="{$BLKD_BIFC_H}" rx="6" ry="6" width = "{$BLKD_MOD_W}" height= "{$BLKD_MOD_H}" style="fill:{$modBg_Col_}; stroke:{$COL_WHITE}; stroke-width:2"/> <rect x="{ceiling($BLKD_MOD_W div 2) - ceiling($BLKD_MOD_LABEL_W div 2)}" y="{$label_y_}" rx="3" ry="3" width= "{$BLKD_MOD_LABEL_W}" height="{$BLKD_MOD_LABEL_H}" style="fill:{$COL_WHITE}; stroke:none;"/> <xsl:if test="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE=$iIPName)]/@GROUP"> <rect x="{ceiling($BLKD_MOD_W div 2) - ceiling($BLKD_MOD_LABEL_W div 2)}" y="{$label_y_ + $BLKD_BIF_H + ceiling($BLKD_BIF_H div 3) - 2}" rx="3" ry="3" width= "{$BLKD_MOD_LABEL_W}" height="{$BLKD_BIF_H}" style="fill:{$COL_IORING_LT}; stroke:none;"/> <text class="ioplblgrp" x="{ceiling($BLKD_MOD_W div 2)}" y="{$label_y_ + $BLKD_BIF_H + ceiling($BLKD_BIF_H div 3) + 12}"> <xsl:value-of select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE=$iIPName)]/@GROUP"/> </text> </xsl:if> <text class="bciptype" x="{ceiling($BLKD_MOD_W div 2)}" y="{$label_y_ + 8}"> <xsl:value-of select="$iIPType"/> </text> <text class="bciplabel" x="{ceiling($BLKD_MOD_W div 2)}" y="{$label_y_ + 16}"> <xsl:value-of select="$iIPName"/> </text>
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -