?? mdtsvgblkd_calculations.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:exsl="http://exslt.org/common" xmlns:math="http://exslt.org/math" 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:template name="_calc_Proc_Height"> <xsl:param name="iProcInst" select="_processor_"/> <xsl:variable name="tot_bifs_h_"> <xsl:if test="not(/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $iProcInst)]/@BIFS_H)">0</xsl:if> <xsl:if test="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $iProcInst)]/@BIFS_H"> <xsl:variable name="bifs_h_" select="(/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $iProcInst)]/@BIFS_H)"/> <xsl:value-of select="(($BLKD_BIF_H + $BLKD_BIF_GAP_H) * $bifs_h_)"/> </xsl:if> </xsl:variable> <xsl:value-of select="(($BLKD_MOD_LANE_H * 2) + $tot_bifs_h_ + ($BLKD_MOD_LABEL_H + $BLKD_BIF_GAP_H))"/> </xsl:template><xsl:template name="_calc_Max_Proc_Height"> <!-- Store the heights in a variable --> <xsl:variable name="proc_heights_"> <xsl:if test="not(/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE)"> <PROC HEIGHT="0"/> </xsl:if> <xsl:for-each select="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE"> <xsl:variable name="procInst_" select="@INSTANCE"/> <xsl:variable name="proc_height_"> <xsl:call-template name="_calc_Proc_Height"> <xsl:with-param name="iProcInst" select="$procInst_"/> </xsl:call-template> </xsl:variable> <!-- <xsl:message>Found Proc height as <xsl:value-of select="$proc_height_"/></xsl:message>--> <PROC HEIGHT="{$proc_height_}"/> </xsl:for-each> </xsl:variable> <!-- Return the max of them --> <!-- <xsl:message>Found Proc ax as <xsl:value-of select="math:max(exsl:node-set($proc_heights_)/PROC/@HEIGHT)"/></xsl:message>--> <xsl:value-of select="math:max(exsl:node-set($proc_heights_)/PROC/@HEIGHT)"/></xsl:template><xsl:template name="_calc_Proc_MemoryUnits_Height"> <xsl:param name="iProcInst" select="_processor_"/> <xsl:if test="not(/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[((@PROCESSOR = $iProcInst) and (@MODCLASS = 'MEMORY_UNIT'))])">0</xsl:if> <xsl:if test="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[((@PROCESSOR = $iProcInst) and (@MODCLASS='MEMORY_UNIT'))]"> <xsl:variable name="peri_gap_"> <xsl:choose> <xsl:when test="not(@CSTACK_INDEX)"> <xsl:value-of select="$BLKD_BIF_H"/> </xsl:when> <xsl:otherwise>0</xsl:otherwise> </xsl:choose> </xsl:variable> <!-- Store the all memory unit heights in a variable --> <xsl:variable name="memU_heights_"> <xsl:for-each select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[((@PROCESSOR = $iProcInst) and (@MODCLASS='MEMORY_UNIT'))]"><!-- <xsl:variable name="unitId_" select="@PSTACK_MODS_Y"/>--> <xsl:variable name="unitHeight_"> <xsl:call-template name="_calc_MemoryUnit_Height"> <xsl:with-param name="iShapeId" select="@SHAPE_ID"/> </xsl:call-template> </xsl:variable> <MEM_UNIT HEIGHT="{$unitHeight_ + $peri_gap_}"/> </xsl:for-each> </xsl:variable> <xsl:value-of select="sum(exsl:node-set($memU_heights_)/MEM_UNIT/@HEIGHT)"/> </xsl:if></xsl:template> <xsl:template name="_calc_Proc_Peripherals_Height"> <xsl:param name="iProcInst" select="_processor_"/> <xsl:if test="not(/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[((@PROCESSOR = $iProcInst) and not(@MODCLASS = 'MEMORY_UNIT'))])">0</xsl:if> <xsl:if test="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[((@PROCESSOR = $iProcInst) and not(@MODCLASS='MEMORY_UNIT'))]"> <xsl:variable name="peri_gap_"> <xsl:if test="@CSTACK_INDEX"> <xsl:value-of select="$BLKD_BIF_H"/> </xsl:if> <xsl:if test="not(@IS_CSTACK)">0</xsl:if> </xsl:variable> <!-- Store the all peripheral heights in a variable --> <xsl:variable name="peri_heights_"> <xsl:for-each select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[((@PROCESSOR = $iProcInst) and not(@MODCLASS='MEMORY_UNIT'))]"> <xsl:for-each select="MODULE"><!-- <xsl:message><xsl:value-of select="@INSTANCE"/></xsl:message> --> <xsl:variable name="peri_height_"> <xsl:call-template name="_calc_PeriShape_Height"> <xsl:with-param name="iShapeInst" select="@INSTANCE"/> </xsl:call-template> </xsl:variable> <PERI HEIGHT="{$peri_height_ + $peri_gap_}"/> </xsl:for-each> </xsl:for-each> </xsl:variable> <xsl:value-of select="sum(exsl:node-set($peri_heights_)/PERI/@HEIGHT)"/> </xsl:if></xsl:template> <xsl:template name="_calc_Space_AbvSbs_Height"> <xsl:param name="iStackToEast" select="'NONE'"/> <xsl:param name="iStackToWest" select="'NONE'"/> <xsl:variable name = "stackAbvSbs_West_H_"> <xsl:choose> <xsl:when test="(($iStackToEast = '0') and ($iStackToWest = 'NONE'))">0</xsl:when> <xsl:when test="(($iStackToEast = 'NONE') and not($iStackToWest = 'NONE'))"> <xsl:call-template name="_calc_Stack_AbvSbs_Height"> <xsl:with-param name="iStackIdx" select="$iStackToWest"/> </xsl:call-template> </xsl:when> <xsl:when test="(not($iStackToEast = '0') and ($iStackToWest = 'NONE'))"> <xsl:call-template name="_calc_Stack_AbvSbs_Height"> <xsl:with-param name="iStackIdx" select="($iStackToEast - 1)"/> </xsl:call-template> </xsl:when> <xsl:otherwise>0</xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:variable name = "stackAbvSbs_East_H_"> <xsl:call-template name="_calc_Stack_AbvSbs_Height"> <xsl:with-param name="iStackIdx" select="$iStackToEast"/> </xsl:call-template> </xsl:variable> <xsl:variable name="stackAbvSbs_heights_"> <STACK HEIGHT="{$stackAbvSbs_East_H_}"/> <STACK HEIGHT="{$stackAbvSbs_West_H_}"/> </xsl:variable> <xsl:value-of select="math:max(exsl:node-set($stackAbvSbs_heights_)/STACK/@HEIGHT)"/></xsl:template> <xsl:template name="_calc_Space_BlwSbs_Height"> <xsl:param name="iStackToEast" select="'NONE'"/> <xsl:param name="iStackToWest" select="'NONE'"/> <xsl:variable name = "stackBlwSbs_West_H_"> <xsl:choose> <xsl:when test="(($iStackToEast = '0') and ($iStackToWest = 'NONE'))">0</xsl:when> <xsl:when test="(($iStackToEast = 'NONE') and not($iStackToWest = 'NONE'))"> <xsl:call-template name="_calc_Stack_BlwSbs_Height"> <xsl:with-param name="iStackIdx" select="$iStackToWest"/> </xsl:call-template> </xsl:when> <xsl:when test="(not($iStackToEast = '0') and ($iStackToWest = 'NONE'))"> <xsl:call-template name="_calc_Stack_BlwSbs_Height"> <xsl:with-param name="iStackIdx" select="($iStackToEast - 1)"/> </xsl:call-template> </xsl:when> </xsl:choose> </xsl:variable> <xsl:variable name = "stackBlwSbs_East_H_"> <xsl:call-template name="_calc_Stack_BlwSbs_Height"> <xsl:with-param name="iStackIdx" select="$iStackToEast"/> </xsl:call-template> </xsl:variable> <xsl:variable name="stackBlwSbs_heights_"> <STACK HEIGHT="{$stackBlwSbs_East_H_}"/> <STACK HEIGHT="{$stackBlwSbs_West_H_}"/> </xsl:variable> <xsl:value-of select="math:max(exsl:node-set($stackBlwSbs_heights_)/STACK/@HEIGHT)"/></xsl:template> <xsl:template name="_calc_Stack_AbvSbs_Height"> <xsl:param name="iStackIdx" select="100"/><!-- <xsl:message>^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^</xsl:message>--> <xsl:if test="(not(/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[((@STACK_HORIZ_INDEX = $iStackIdx) and (@IS_ABVSBS))]) and not(/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@STACK_HORIZ_INDEX = $iStackIdx)]))"><xsl:value-of select="$BLKD_PROC2SBS_GAP"/></xsl:if> <xsl:if test="((/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[((@STACK_HORIZ_INDEX = $iStackIdx) and (@IS_ABVSBS))]) or (/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[ (@STACK_HORIZ_INDEX = $iStackIdx)]))"> <!-- <xsl:message>The gap is <xsl:value-of select="$peri_gap_"/></xsl:message> <xsl:message>The gap is <xsl:value-of select="$peri_gap_"/></xsl:message> <xsl:message>================================</xsl:message> <xsl:message>================================</xsl:message> <xsl:message>This is above <xsl:value-of select="@INSTANCE"/></xsl:message> <xsl:message><xsl:value-of select="@INSTANCE"/> : <xsl:value-of select="$peri_height_"/></xsl:message>--> <!-- Store the all peripheral heights in a variable --> <xsl:variable name="peri_heights_"> <xsl:for-each select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[((@STACK_HORIZ_INDEX = $iStackIdx) and not(@MODCLASS = 'MEMORY_UNIT') and (@IS_ABVSBS))]"> <xsl:for-each select="MODULE"><!-- <xsl:message>This is above <xsl:value-of select="@INSTANCE"/></xsl:message>--> <xsl:variable name="peri_height_"><!-- <xsl:call-template name="_calc_Shape_Height"> <xsl:with-param name="shapeId" select="@SHAPE_ID"/> </xsl:call-template> --> <xsl:call-template name="_calc_PeriShape_Height"> <xsl:with-param name="iShapeInst" select="@INSTANCE"/> </xsl:call-template> </xsl:variable> <PERI HEIGHT="{$peri_height_ + $BLKD_BIF_H}"/> </xsl:for-each> </xsl:for-each> <xsl:for-each select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[((@STACK_HORIZ_INDEX = $iStackIdx) and (@MODCLASS = 'MEMORY_UNIT') and (@IS_ABVSBS))]"> <xsl:variable name="memu_height_"> <xsl:call-template name="_calc_MemoryUnit_Height"> <xsl:with-param name="iShapeId" select="@SHAPE_ID"/> </xsl:call-template> </xsl:variable> <!-- <xsl:message>Mem_Unit : <xsl:value-of select="@SHAPE_ID"/> : <xsl:value-of select="$memu_height_ + $peri_gap_"/></xsl:message> <xsl:message>This is above <xsl:value-of select="@INSTANCE"/></xsl:message> <xsl:message>===================================</xsl:message>--> <PERI HEIGHT="{$memu_height_ + $BLKD_BIF_H}"/> </xsl:for-each> <xsl:for-each select="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[((@STACK_HORIZ_INDEX = $iStackIdx) and (@IS_ABVSBS))]"> <xsl:variable name="proc_height_"> <xsl:call-template name="_calc_PeriShape_Height"> <xsl:with-param name="iShapeInst" select="@INSTANCE"/> </xsl:call-template> </xsl:variable> <!-- <xsl:message>Processor : <xsl:value-of select="@INSTANCE"/> : <xsl:value-of select="$peri_height_ + $peri_gap_"/></xsl:message> <PERI HEIGHT="{$proc_height_ + $BLKD_PROC2SBS_GAP }"/>--> <PERI HEIGHT="{$proc_height_ + $BLKD_BIF_H}"/> </xsl:for-each> </xsl:variable> <!-- <xsl:message><xsl:value-of select="@INSTANCE"/> : <xsl:value-of select="$peri_height_ + $peri_gap_"/></xsl:message> <xsl:message>================================</xsl:message>--> <!-- <xsl:message>^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^</xsl:message>--> <xsl:value-of select="sum(exsl:node-set($peri_heights_)/PERI/@HEIGHT)"/> </xsl:if> </xsl:template> <xsl:template name="_calc_Stack_BlwSbs_Height"> <xsl:param name="iStackIdx" select="100"/> <!-- Store the all peripheral heights in a variable --> <xsl:variable name="stack_heights_"> <xsl:if test="not(/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[((@STACK_HORIZ_INDEX = $iStackIdx) and (@IS_BLWSBS))])"> <STACKSHAPE HEIGHT="0"/> </xsl:if> <xsl:if test="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[((@STACK_HORIZ_INDEX = $iStackIdx) and (@IS_BLWSBS))]"> <xsl:variable name="peri_gap_"> <xsl:choose> <xsl:when test="(@SHAPE_VERTI_INDEX)"> <xsl:value-of select="$BLKD_BIF_H"/> </xsl:when> <xsl:otherwise>0</xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:for-each select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[((@STACK_HORIZ_INDEX = $iStackIdx) and not(@MODCLASS = 'MEMORY_UNIT') and (@IS_BLWSBS))]"> <xsl:for-each select="MODULE"><!-- <xsl:message>This is below <xsl:value-of select="@INSTANCE"/></xsl:message>--> <xsl:variable name="peri_height_"> <xsl:call-template name="_calc_PeriShape_Height"> <xsl:with-param name="iShapeInst" select="@INSTANCE"/> </xsl:call-template> </xsl:variable> <!-- <xsl:message><xsl:value-of select="@INSTANCE"/> : <xsl:value-of select="$peri_height_"/></xsl:message>--> <STACKSHAPE HEIGHT="{$peri_height_ + $peri_gap_}"/> </xsl:for-each> </xsl:for-each> <xsl:for-each select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[((@STACK_HORIZ_INDEX = $iStackIdx) and (@MODCLASS = 'MEMORY_UNIT') and (@IS_BLWSBS))]"> <xsl:variable name="memu_height_"> <xsl:call-template name="_calc_MemoryUnit_Height"> <xsl:with-param name="iShapeId" select="@SHAPE_ID"/> </xsl:call-template> </xsl:variable> <STACKSHAPE HEIGHT="{$memu_height_ + $peri_gap_}"/> <!-- <xsl:message>Mem_Unit : <xsl:value-of select="@SHAPE_ID"/> : <xsl:value-of select="$memu_height_ + $peri_gap_"/></xsl:message>--> </xsl:for-each>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -