⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mdtsvgblkd_calculations.xsl

📁 microblaze下ucos移植源码
💻 XSL
📖 第 1 页 / 共 3 页
字号:
	<xsl:param name="iBusName" select="'_busname_'"/>		<!-- Store the heights in a variable -->		<xsl:variable name="busConnYs_">				<xsl:if test="not(/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE/BUSCONNS/BUSCONNLANE/BUSCONN)">			<BUSCONNY HEIGHT="0"/>		</xsl:if>				<xsl:for-each select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE/BUSCONNS/BUSCONNLANE[(@BUSNAME = $iBusName)]/BUSCONN">						<xsl:variable name="peri_cstk_y_">				<xsl:call-template name="_calc_CStackShapesAbv_Height">					<xsl:with-param name="iCStackIndex"  select="../@CSTACK_INDEX"/>					<xsl:with-param name="iCStackModY"   select="@CSTACK_MODS_Y"/>				</xsl:call-template>				</xsl:variable>									<xsl:variable name="peri_bif_dy_">					<xsl:value-of select="(($BLKD_BIF_H + $BLKD_BIF_GAP_H)  * @BIF_Y)"/>				</xsl:variable>								<xsl:variable name="peri_bc_y_">					<xsl:value-of select="($BLKD_MOD_LANE_H + $BLKD_MOD_LABEL_H + $BLKD_BIF_GAP_H + $peri_bif_dy_ + ceiling($BLKD_BIF_H div 2)) - ceiling($BLKD_BIFC_H div 2)"/>				</xsl:variable>			<!--						<xsl:message>Found a busconn lane</xsl:message>-->						<BUSCONNY HEIGHT="{$peri_cstk_y_ + $peri_bc_y_}"/>		</xsl:for-each>			</xsl:variable>		<!-- Return the min of them -->		<xsl:value-of select="math:min(exsl:node-set($busConnYs_)/BUSCONNY/@HEIGHT)"/>	</xsl:template>	<xsl:template name="_calc_Stack_Height">	<xsl:param name="iStackIdx"  select="100"/>		<xsl:variable name="stack_height_">		<!-- if this is called with no vert index of a shape 			 it defaults to the total height of the stack -->		<xsl:call-template name="_calc_Stack_Shape_Y">			<xsl:with-param name="iHorizIdx"  select="$iStackIdx"/>		</xsl:call-template>	</xsl:variable>		<xsl:value-of select="$stack_height_"/></xsl:template>	<!--	-->			<xsl:template name="_calc_Stack_Width">	<xsl:param name="iStackIdx"  select="100"/>	<!--		<xsl:message>=============Stack Idx <xsl:value-of select="$iStackIdx"/>====</xsl:message>			-->		<xsl:variable name="shape_widths_">					<xsl:if test="not(/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[@STACK_HORIZ_INDEX = $iStackIdx])">			<SHAPE WIDTH="0"/>		</xsl:if>					<xsl:if test="not(/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[@STACK_HORIZ_INDEX = $iStackIdx])">			<SHAPE WIDTH="0"/>		</xsl:if>					<xsl:for-each select="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@STACK_HORIZ_INDEX = $iStackIdx)]"><!--						<xsl:variable name="proc_w_">				<xsl:value-of select="$BLKD_MOD_W"/>			</xsl:variable>			<xsl:message>Found processor of width <xsl:value-of select="$proc_w_"/></xsl:message>-->				<SHAPE WIDTH="{$BLKD_MOD_W}"/>		</xsl:for-each>					<xsl:for-each select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(@STACK_HORIZ_INDEX = $iStackIdx)]">							<xsl:variable name="shpClass_" select="@MODCLASS"/> 			<xsl:variable name="shape_w_">				<xsl:choose>												<xsl:when test="$shpClass_ = 'PERIPHERAL'">							<xsl:value-of select="$BLKD_MOD_W"/>						</xsl:when>												<xsl:when test="$shpClass_ = 'MEMORY_UNIT'">							<xsl:value-of select="($BLKD_MOD_W * @MODS_W)"/>						</xsl:when>												<xsl:otherwise>0</xsl:otherwise>											</xsl:choose>				</xsl:variable>				<!--					<xsl:message>Found shape width <xsl:value-of select="$shape_w_"/></xsl:message>-->											<SHAPE WIDTH="{$shape_w_}"/>		</xsl:for-each>					<xsl:for-each select="/EDKSYSTEM/BLKDSHAPES/SBSBUCKETS/SBSBUCKET[(@STACK_HORIZ_INDEX = $iStackIdx)]">			<xsl:variable name="bucket_w_">				  <xsl:value-of select="(($BLKD_MOD_BKTLANE_W * 2) + (($BLKD_MOD_W * @MODS_W) + ($BLKD_MOD_BUCKET_G * (@MODS_W - 1))))"/>			</xsl:variable>			<!--							<xsl:message>Found bucket of width <xsl:value-of select="$bucket_w_"/></xsl:message>-->							<SHAPE WIDTH="{$bucket_w_}"/>		</xsl:for-each>				</xsl:variable>		<xsl:value-of select="math:max(exsl:node-set($shape_widths_)/SHAPE/@WIDTH)"/></xsl:template>		<xsl:template name="_calc_Stack_X">	<xsl:param name="iStackIdx"  select="0"/><!--		<xsl:message>Looking for stack indexes less than <xsl:value-of select="$iStackIdx"/></xsl:message>-->			<!-- Store the stack widths in a variable -->		<xsl:variable name="stackspace_widths_">				<xsl:if test="not(/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES[(@STACK_HORIZ_INDEX &lt; $iStackIdx)])">			<STACKSPACE WIDTH="0"/>		</xsl:if>				<xsl:if test="not(/EDKSYSTEM/BLKDSHAPES/PROCSHAPES[(@STACK_HORIZ_INDEX &lt; $iStackIdx)])">			<STACKSPACE WIDTH="0"/>		</xsl:if>				<xsl:if test="not(/EDKSYSTEM/SBSBUCKETS/SBSBUCKET[(@STACK_HORIZ_INDEX &lt; $iStackIdx)])">			<STACKSPACE WIDTH="0"/>		</xsl:if>				<xsl:for-each select="/EDKSYSTEM/BLKDSHAPES/BCLANESPACES/BCLANESPACE[(@EAST &lt;= $iStackIdx)]">			<!--					<xsl:message>==============================</xsl:message>			<xsl:message>Found a space of index <xsl:value-of select="@EAST"/></xsl:message>			<xsl:message>Bus lane space width <xsl:value-of select="@BUSLANES_W"/></xsl:message>			<xsl:message>Bus lane space is <xsl:value-of select="$space_width_"/></xsl:message>			<xsl:variable name="space_width_" select="($BLKD_BUS_LANE_W * @BUSLANES_W)"/>-->				<xsl:variable name="East_">				<xsl:choose>					<xsl:when test="@EAST"><xsl:value-of select="@EAST"/></xsl:when>					<xsl:otherwise>'NONE'</xsl:otherwise>				</xsl:choose>			</xsl:variable>						<xsl:variable name="West_">				<xsl:choose>					<xsl:when test="@WEST"><xsl:value-of select="@WEST"/></xsl:when>					<xsl:otherwise>NONE</xsl:otherwise>				</xsl:choose>			</xsl:variable>			<!--			<xsl:message>1 - West_ <xsl:value-of select="$West_"/></xsl:message>			<xsl:message>1 - East_ <xsl:value-of select="$East_"/></xsl:message>-->						<xsl:variable name="space_width_">				<xsl:call-template name="_calc_Space_Width">					<xsl:with-param name="iStackToWest" select="$West_"/>					<xsl:with-param name="iStackToEast" select="$East_"/>				</xsl:call-template>			</xsl:variable>						<xsl:variable name="stack_width_">				<xsl:if test="not(@EAST = $iStackIdx)">					<xsl:call-template name="_calc_Stack_Width">						<xsl:with-param name="iStackIdx"  select="@EAST"/>					</xsl:call-template>				</xsl:if>				<xsl:if test="(@EAST = $iStackIdx)">0</xsl:if>			</xsl:variable>			<!--						<xsl:message>Found stack of width <xsl:value-of select="$stack_width_"/></xsl:message>			<xsl:message>==============================</xsl:message>-->									<STACKSPACE WIDTH="{$stack_width_ + $space_width_}"/>					</xsl:for-each>				<xsl:for-each select="/EDKSYSTEM/BLKDSHAPES/BCLANESPACES/BCLANESPACE[(not(@EAST) and (@WEST = ($iStackIdx -1)))]">			<xsl:variable name="space_width_" select="($BLKD_BUS_LANE_W * @BUSLANES_W)"/>			<!--						<xsl:message>Found end space of <xsl:value-of select="$space_width_"/></xsl:message>-->						<STACKSPACE WIDTH="{$space_width_}"/>		</xsl:for-each>					</xsl:variable>		<xsl:value-of select="sum(exsl:node-set($stackspace_widths_)/STACKSPACE/@WIDTH)"/>	</xsl:template>		<xsl:template name="_calc_Space_Width">		<xsl:param name="iStackToWest"  select="'NONE'"/>	<xsl:param name="iStackToEast"  select="'NONE'"/>	<!--		<xsl:message>Stack to West <xsl:value-of select="$stackToWest"/></xsl:message>	<xsl:message>Stack to East <xsl:value-of select="$stackToEast"/></xsl:message>-->			<xsl:variable name="spaceWidth_">		<xsl:choose>			<xsl:when test="/EDKSYSTEM/BLKDSHAPES/BCLANESPACES/BCLANESPACE[((@EAST = $iStackToEast) or (not($iStackToWest = 'NONE') and (@WEST = $iStackToWest)))]">				<xsl:value-of select="((/EDKSYSTEM/BLKDSHAPES/BCLANESPACES/BCLANESPACE[((@EAST = $iStackToEast) or (not($iStackToWest = 'NONE') and (@WEST = $iStackToWest)))]/@BUSLANES_W + 1) * $BLKD_BUS_LANE_W)"/>			</xsl:when>				<xsl:otherwise>0</xsl:otherwise>			</xsl:choose>		</xsl:variable>		<!--		<xsl:message>Space width <xsl:value-of select="$spaceWidth_"/></xsl:message>-->			<xsl:value-of select="$spaceWidth_"/></xsl:template>		<xsl:template name="_calc_Space_X">		<xsl:param name="iStackToWest"  select="'NONE'"/>	<xsl:param name="iStackToEast"  select="'NONE'"/>	<!--		<xsl:message>Stack East <xsl:value-of select="$stackToEast"/></xsl:message>	<xsl:message>Stack West <xsl:value-of select="$stackToWest"/></xsl:message>-->			<!-- Store the stack widths in a variable -->		<!--		<xsl:message>Looking for stack indexes less than <xsl:value-of select="$stackIdx"/></xsl:message>-->			<xsl:variable name="stackspace_widths_">				<xsl:if test="not(/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES[(@STACK_HORIZ_INDEX &lt; $iStackToEast)])">			<STACKSPACE WIDTH="0"/>		</xsl:if>				<xsl:if test="not(/EDKSYSTEM/BLKDSHAPES/PROCSHAPES[(@STACK_HORIZ_INDEX &lt; $iStackToEast)])">			<STACKSPACE WIDTH="0"/>		</xsl:if>				<xsl:if test="not(/EDKSYSTEM/SBSBUCKETS/SBSBUCKET[(@STACK_HORIZ_INDEX &lt; $iStackToEast)])">			<STACKSPACE WIDTH="0"/>		</xsl:if>				<xsl:for-each select="/EDKSYSTEM/BLKDSHAPES/BCLANESPACES/BCLANESPACE[((@EAST &lt; $iStackToEast) or (not($iStackToWest = 'NONE') and (@EAST &lt;= $iStackToWest)))]">			<!--					<xsl:message>==============================</xsl:message>			<xsl:message>Found a space of index <xsl:value-of select="@EAST"/></xsl:message>			<xsl:variable name="space_width_" select="($BLKD_BUS_LANE_W * @BUSLANES_W)"/>-->				<xsl:variable name="East_">				<xsl:choose>					<xsl:when test="@EAST"><xsl:value-of select="@EAST"/></xsl:when>					<xsl:otherwise>'NONE'</xsl:otherwise>				</xsl:choose>			</xsl:variable>						<xsl:variable name="West_">				<xsl:choose>					<xsl:when test="@WEST"><xsl:value-of select="@WEST"/></xsl:when>					<xsl:otherwise>NONE</xsl:otherwise>				</xsl:choose>			</xsl:variable>			<!--			<xsl:message>1 - West_ <xsl:value-of select="$West_"/></xsl:message>			<xsl:message>1 - East_ <xsl:value-of select="$East_"/></xsl:message>-->						<xsl:variable name="space_width_">				<xsl:call-template name="_calc_Space_Width">					<xsl:with-param name="iStackToWest" select="$West_"/>					<xsl:with-param name="iStackToEast" select="$East_"/>				</xsl:call-template>			</xsl:variable>						<!--						<xsl:message>Bus lane space width <xsl:value-of select="@BUSLANES_W"/></xsl:message>			<xsl:message>Bus lane space is <xsl:value-of select="$space_width_"/></xsl:message>-->					<xsl:variable name="stack_width_">					<xsl:call-template name="_calc_Stack_Width">						<xsl:with-param name="iStackIdx"  select="@EAST"/>					</xsl:call-template>				</xsl:variable>			<!--						<xsl:message>Found stack of width <xsl:value-of select="$stack_width_"/></xsl:message>			<xsl:message>==============================</xsl:message>-->									<STACKSPACE WIDTH="{$stack_width_ + $space_width_}"/>		</xsl:for-each>	</xsl:variable>		<xsl:variable name = "stackToWest_W_">		<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_Width">					<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_Width">					<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 = "stackToEast_W_">		<xsl:call-template name="_calc_Stack_Width">			<xsl:with-param name="stackIdx"  select="$stackToEast"/>		</xsl:call-template>	</xsl:variable>	<xsl:variable name ="extSpaceEast_W_" select="ceiling($stackToEast_W_ div 2)"/>-->			<xsl:variable name ="extSpaceWest_W_" select="ceiling($stackToWest_W_ div 2)"/>	 	<xsl:value-of select="sum(exsl:node-set($stackspace_widths_)/STACKSPACE/@WIDTH) - $extSpaceWest_W_"/></xsl:template>	</xsl:stylesheet>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -