📄 mdtsvgblkd_buslanespaces.xsl
字号:
<xsl:otherwise> <xsl:variable name="modInstance_" select="@INSTANCE"/> <xsl:variable name="modshp_vert_idx_" select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[MODULE[(@INSTANCE = $modInstance_)]]/@SHAPE_VERTI_INDEX"/> <xsl:variable name="modBifSide_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $modInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_X"/> <xsl:variable name="modBif_Y_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $modInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_Y"/> <xsl:variable name="modBc_Y_" select="((($BLKD_BIF_H + $BLKD_BIF_GAP_V) * $modBif_Y_) + ($BLKD_MOD_LANE_H + $BLKD_MOD_LABEL_H + $BLKD_BIF_GAP_V))"/> <!-- <xsl:message>Memory Instance <xsl:value-of select="$procInstance_"/></xsl:message>--> <xsl:variable name="modshp_Y_"> <xsl:call-template name="_calc_Stack_Shape_Y"> <xsl:with-param name="iHorizIdx" select="$p2pshp_hori_idx_"/> <xsl:with-param name="iVertiIdx" select="$modshp_vert_idx_"/> </xsl:call-template> </xsl:variable> <xsl:variable name="modBifRank_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $modInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIFRANK"/> <xsl:variable name="modBusName_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $modInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BUSNAME"/> <xsl:variable name="bcMod_Y_" select="($modshp_Y_ + $modBc_Y_ + ceiling($BLKD_BIF_H div 2) - ceiling($BLKD_BIFC_H div 2) + $cmplxStack_H_diff_)"/> <xsl:variable name="bcMod_X_"> <xsl:choose> <xsl:when test="$modBifSide_ = '0'"> <xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_ - (ceiling($BLKD_MOD_W div 2) + $BLKD_BIFC_W))"/> </xsl:when> <xsl:when test="$modBifSide_ = '1'"> <xsl:value-of select="ceiling($BLKD_MOD_W div 2)"/> </xsl:when> <xsl:otherwise>0</xsl:otherwise> </xsl:choose> </xsl:variable> <!-- <xsl:message>Bc Bif Y <xsl:value-of select="$modBif_Y_"/></xsl:message> <xsl:message>Bc Mod Y <xsl:value-of select="$modBc_Y_"/></xsl:message> <xsl:message>Bc Mod X <xsl:value-of select="$bcMod_X_"/></xsl:message> <P2PCONN X="{$bcInSpace_X_}" Y="{$bcMod_Y_}" BUSSTD="{$busStd}" BIFRANK="{$modBifRank_}" BIFSIDE="{$modBifSide_}"/>--> <P2PCONN X="{$bcMod_X_}" Y="{$bcMod_Y_}" BUSNAME="{$modBusName_}" BUSSTD="{$iBusStd}" BIFRANK="{$modBifRank_}" BIFSIDE="{$modBifSide_}"/> </xsl:otherwise> </xsl:choose> </xsl:for-each> </xsl:variable> <xsl:variable name="busTop_" select="math:min(exsl:node-set($p2pConn_heights_)/P2PCONN/@Y)"/> <xsl:variable name="busBot_" select="math:max(exsl:node-set($p2pConn_heights_)/P2PCONN/@Y)"/> <xsl:variable name="v_bus_y_" select="$busTop_ + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_P2P_BUS_W div 2)"/> <xsl:variable name="busName_" select="exsl:node-set($p2pConn_heights_)/P2PCONN/@BUSNAME"/> <xsl:variable name="busStd_" select="exsl:node-set($p2pConn_heights_)/P2PCONN/@BUSSTD"/><!-- --> <!-- Draw the vertical part of the bus --> <xsl:if test="$busStd_ = 'PLBV46_P2P'"> <rect x="{$bcInSpace_X_ + $BLKD_P2P_BUS_W}" y="{$v_bus_y_}" width= "{$BLKD_P2P_BUS_W}" height="{($busBot_ - $busTop_) + $BLKD_P2P_BUS_W}" style="stroke:{$COL_WHITE};stroke-width:1.5;fill:{$busColor_}"/> </xsl:if> <xsl:if test="not($busStd_ = 'PLBV46_P2P')"> <rect x="{$bcInSpace_X_ + $BLKD_P2P_BUS_W}" y="{$v_bus_y_}" width= "{$BLKD_P2P_BUS_W}" height="{($busBot_ - $busTop_) + $BLKD_P2P_BUS_W}" style="stroke:none;fill:{$busColor_}"/> </xsl:if> <!-- --> <!-- style="stroke:{$busColor_lt_};stroke-width:1;stroke-opacity:0.9;fill-opacity:2.0;fill:{$busColor_}"/>--> <!-- Place the bus label.--> <text class="p2pbuslabel" x="{$bcInSpace_X_ + $BLKD_BUS_ARROW_W + ceiling($BLKD_BUS_ARROW_W div 2) + ceiling($BLKD_BUS_ARROW_W div 4) + 6}" y="{$busTop_ + ($BLKD_BUS_ARROW_H * 3)}"> <xsl:value-of select="$busName_"/> </text> <!-- Draw the busconnection and horizontal lines.--> <xsl:for-each select="exsl:node-set($p2pConn_heights_)/P2PCONN"> <xsl:variable name="bus_x_" select="($bcInSpace_X_ + ceiling($BLKD_BIFC_W div 2))"/> <xsl:variable name="bus_y_" select="@Y + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_P2P_BUS_W div 2)"/> <xsl:variable name="h_bus_ul_x_"> <xsl:choose> <xsl:when test="@BIFSIDE='0'"> <xsl:value-of select="$bus_x_"/> </xsl:when> <xsl:when test="@BIFSIDE='1'"> <xsl:value-of select="(@X + $BLKD_BIFC_W + $BLKD_BUS_ARROW_W) - 1"/> </xsl:when> </xsl:choose> </xsl:variable> <xsl:variable name="h_bus_ul_y_" select="$bus_y_"/> <xsl:variable name="h_bus_height_" select="$BLKD_P2P_BUS_W"/> <xsl:variable name="h_bus_width_"><!-- <xsl:message>BIFSIDE <xsl:value-of select="@BIFSIDE"/></xsl:message> <xsl:message>BUSSTD <xsl:value-of select="@BUSSTD"/></xsl:message> <xsl:message>BIFRANK <xsl:value-of select="@BIFRANK"/></xsl:message>--> <xsl:choose> <xsl:when test="@BIFSIDE='0'"> <xsl:value-of select="(@X - $bus_x_ - $BLKD_BUS_ARROW_W)"/> </xsl:when> <xsl:when test="@BIFSIDE='1'"> <xsl:value-of select="$bus_x_ - $h_bus_ul_x_ + 1"/> </xsl:when> </xsl:choose> </xsl:variable> <!-- Draw Bus connection--> <use x="{@X}" y="{@Y}" xlink:href="#{@BUSSTD}_busconn_{@BIFRANK}"/> <!-- Draw the arrow --> <xsl:choose> <xsl:when test="((@BIFSIDE='0') and not((@BUSSTD = 'FSL') and ((@BIFRANK = 'INITIATOR') or (@BIFRANK = 'MASTER'))))"> <use x="{@X - $BLKD_BUS_ARROW_W}" y="{@Y + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_BUS_ARROW_H div 2)}" xlink:href="#{@BUSSTD}_BusArrowEast"/> </xsl:when> <xsl:when test="((@BIFSIDE='1') and not((@BUSSTD = 'FSL') and ((@BIFRANK = 'INITIATOR') or (@BIFRANK = 'MASTER'))))"> <use x="{(@X + $BLKD_BIFC_W)}" y="{@Y + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_BUS_ARROW_H div 2)}" xlink:href="#{@BUSSTD}_BusArrowWest"/> </xsl:when> <xsl:when test="((@BIFSIDE='0') and ((@BUSSTD = 'FSL') and ((@BIFRANK = 'INITIATOR') or (@BIFRANK = 'MASTER'))))"> <use x="{@X - $BLKD_BUS_ARROW_W}" y="{@Y + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_BUS_ARROW_H div 2)}" xlink:href="#{@BUSSTD}_BusArrowHInitiator"/> </xsl:when> <xsl:when test="((@BIFSIDE='1') and ((@BUSSTD = 'FSL') and ((@BIFRANK = 'INITIATOR') or (@BIFRANK = 'MASTER'))))"> <use x="{(@X + $BLKD_BIFC_W)}" y="{@Y + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_BUS_ARROW_H div 2)}" xlink:href="#{@BUSSTD}_BusArrowHInitiator"/> </xsl:when> </xsl:choose> <!-- Draw the horizontal part of the bus --> <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:variable name="busTop_" select="math:min(exsl:node-set($p2pConn_heights_)/P2PCONN/@Y)"/> <xsl:variable name="busBot_" select="math:max(exsl:node-set($p2pConn_heights_)/P2PCONN/@Y)"/> <xsl:variable name="v_bus_y_" select="$busTop_ + ceiling($BLKD_BIFC_H div 2) - ceiling($P2P_BUS_W div 2)"/> <xsl:variable name="busName_" select="exsl:node-set($p2pConn_heights_)/P2PCONN/@BUSNAME"/>--> <!-- Draw the vertical part of the bus --> <!-- <rect x="{$bcInSpace_X_ + $P2P_BUS_W}" y="{$v_bus_y_}" width= "{$P2P_BUS_W}" height="{($busBot_ - $busTop_) + $P2P_BUS_W}" style="stroke:{$COL_WHITE};stroke-width:1;stroke-opacity:0.9;fill-opacity:2.0;fill:{$busColor_}"/>--> <!-- style="stroke:{$busColor_lt_};stroke-width:1;stroke-opacity:0.9;fill-opacity:2.0;fill:{$busColor_}"/>--> <!-- Place the bus label.--> <!-- <text class="p2pbuslabel" x="{$bcInSpace_X_ + $BLKD_BUS_ARROW_W + ceiling($BLKD_BUS_ARROW_W div 2) + ceiling($BLKD_BUS_ARROW_W div 4) + 6}" y="{$busTop_ + ($BLKD_BUS_ARROW_H * 3)}"> <xsl:value-of select="$busName_"/> </text> --> </xsl:template> <!-- =========================================================== Handle MultiStack Point to Point connections ===========================================================--> <xsl:template name="BCLaneSpace_MultiStack_PointToPoint"> <xsl:param name="iBusStd" select="'NONE'"/> <xsl:param name="iBusName" select="'NONE'"/> <xsl:param name="iBifRank" select="'NONE'"/> <xsl:param name="iStackToEast" select="'NONE'"/> <xsl:param name="iStackToWest" select="'NONE'"/> <xsl:param name="iStackToEast_W" select="0"/> <xsl:param name="iStackToWest_W" select="0"/> <xsl:param name="iLaneInSpace_X" select="0"/> <xsl:variable name="busColor_"> <xsl:call-template name="BusType2Color"> <xsl:with-param name="iBusType" select="$iBusStd"/> </xsl:call-template> </xsl:variable> <xsl:variable name="space_W_"> <xsl:call-template name="_calc_Space_Width"> <xsl:with-param name="iStackToEast" select="$iStackToEast"/> <xsl:with-param name="iStackToWest" select="$iStackToWest"/> </xsl:call-template> </xsl:variable> <xsl:variable name ="extSpaceWest_W_" select="ceiling($iStackToWest_W div 2)"/> <xsl:variable name ="extSpaceEast_W_" select="ceiling($iStackToEast_W div 2)"/> <!-- Store the connections in a variable --> <xsl:variable name="bcInSpace_X_" select="($iLaneInSpace_X + ceiling($BLKD_BIFC_W div 2) - ceiling($BLKD_BUS_ARROW_W div 2))"/> <xsl:variable name="multiConns_"> <xsl:for-each select="BUSCONN"> <xsl:variable name="bifName_" select="@BUSINTERFACE"/> <xsl:variable name="multiInstance_" select="@INSTANCE"/> <xsl:variable name="mulshp_hori_idx_"> <xsl:choose> <xsl:when test="@IS_PROCCONN"> <xsl:value-of select="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $multiInstance_)]/@STACK_HORIZ_INDEX"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $multiInstance_)])]/@STACK_HORIZ_INDEX"/> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name="mulshp_vert_idx_"> <xsl:choose> <xsl:when test="@IS_PROCCONN"> <xsl:value-of select="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $multiInstance_)]/@SHAPE_VERTI_INDEX"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $multiInstance_)])]/@SHAPE_VERTI_INDEX"/> </xsl:otherwise> </xsl:choose> </xsl:variable> <!-- <xsl:message>Shape Horiz <xsl:value-of select="$mulshp_hori_idx_"/></xsl:message> <xsl:message>Shape Verti <xsl:value-of select="$mulshp_vert_idx_"/></xsl:message>--> <xsl:variable name="mulshp_Y_"> <xsl:call-template name="_calc_Stack_Shape_Y"> <xsl:with-param name="iHorizIdx" select="$mulshp_hori_idx_"/> <xsl:with-param name="iVertiIdx" select="$mulshp_vert_idx_"/> </xsl:call-template> </xsl:variable> <xsl:variable name="cmplxStack_H_diff_"> <xsl:choose> <xsl:when test=" (($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">0</xsl:when> <xsl:when test="not(($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))"> <xsl:variable name="stackToWest_AbvSbs_H_"> <xsl:call-template name="_calc_Stack_AbvSbs_Height"> <xsl:with-param name="iStackIdx" select="$iStackToWest"/> </xsl:call-template> </xsl:variable> <xsl:variable name="stackToEast_AbvSbs_H_"> <xsl:call-template name="_calc_Stack_AbvSbs_Height"> <xsl:with-param name="iStackIdx" select="$iStackToEast"/> </xsl:call-template> </xsl:variable> <!-- <xsl:message>stack to west H <xsl:value-of select="$stackToWest_AbvSbs_H_"/></xsl:message> <xsl:message>stack to east H <xsl:value-of select="$stackToEast_AbvSbs_H_"/></xsl:message>--> <xsl:choose> <xsl:when test="(($mulshp_hori_idx_ = $iStackToEast) and ($stackToWest_AbvSbs_H_ > $stackToEast_AbvSbs_H_))"> <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/> </xsl:when> <xsl:when test="(($mulshp_hori_idx_ = $iStackToWest) and ($stackToEast_AbvSbs_H_ > $stackToWest_AbvSbs_H_))"> <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/> </xsl:when> <xsl:otherwise>0</xsl:otherwise> </xsl:choose> </xsl:when> </xsl:choose> </xsl:variable> <xsl:variable name="procStack_H_diff_"> <xsl:choose> <xsl:when test=" (($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">0</xsl:when> <xsl:when test="not(($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))"> <xsl:variable name="stackToWest_AbvSbs_H_"> <xsl:call-template name="_calc_Stack_AbvSbs_Height"> <xsl:with-param name="iStackIdx" select="$iStackToWest"/> </xsl:call-template> </xsl:variab
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -