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

📄 mdtsvgblkd_main.xsl

📁 microblaze下ucos移植源码
💻 XSL
📖 第 1 页 / 共 4 页
字号:
		</xsl:variable>				<xsl:variable name="bridges_w_"    select="(($G_NumOfBridges * ($BLKD_MOD_W + ($BLKD_BUS_LANE_W * 2))) + $BLKD_BRIDGE_GAP)"/>				<xsl:variable name="stack_y_" select="($G_SharedBus_Y - $stack_abv_sbs_ - $BLKD_PROC2SBS_GAP)"/>		<xsl:variable name="stack_x_" select="($BLKD_INNER_X + $stack_line_x_ + $bridges_w_)"/>				<xsl:variable name="stack_name_">			<xsl:call-template name="_gen_Stack_Name"> 				<xsl:with-param name="iHorizIdx" select="@EAST"/>			</xsl:call-template>				</xsl:variable>					<use   x="{$stack_x_}"    y="{$stack_y_}"  xlink:href="#{$stack_name_}"/> 		</xsl:for-each>				</xsl:template>	<xsl:template name="Draw_BlkDiagram_StandAloneMpmcConnections">		<xsl:variable name="mpmcInst_" select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/MPMCSHAPE/@INSTANCE"/>	<xsl:variable name="lastStack_" select="(/EDKSYSTEM/BLKDSHAPES/@STACK_HORIZ_WIDTH) - 1"/>			<xsl:for-each select="/EDKSYSTEM/BLKDSHAPES/BCLANESPACES/BCLANESPACE">		<xsl:variable name="currentLane_" select="position()"/><!--				<xsl:message>Looking in space <xsl:value-of select="$currentLane_"/></xsl:message>-->			<xsl:variable name="stackToEast_">			<xsl:choose>				<xsl:when test="not(@WEST = $lastStack_)"><xsl:value-of select="@EAST"/></xsl:when>				<xsl:when test="   (@WEST = $lastStack_)"><xsl:value-of select="'NONE'"/></xsl:when>			</xsl:choose>		</xsl:variable>				<xsl:variable name="stackToWest_">			<xsl:choose>				<xsl:when test="not(@WEST = $lastStack_)"><xsl:value-of select="'NONE'"/></xsl:when>				<xsl:when test="   (@WEST = $lastStack_)"><xsl:value-of select="@WEST"/></xsl:when>			</xsl:choose>		</xsl:variable>				<xsl:variable name="spaceAbvSbs_H_">			<xsl:call-template name="_calc_Space_AbvSbs_Height">				<xsl:with-param name="iStackToEast"  select="$stackToEast_"/>				<xsl:with-param name="iStackToWest"  select="$stackToWest_"/>			</xsl:call-template>		</xsl:variable>					<xsl:variable name="space_y_"   select="($G_SharedBus_Y - $spaceAbvSbs_H_ - $BLKD_PROC2SBS_GAP)"/>	<!--				<xsl:message>Stack To East <xsl:value-of select="$stackToEast_"/></xsl:message>		<xsl:message>Stack To West <xsl:value-of select="$stackToWest_"/></xsl:message>		<xsl:variable name="space_X_">			<xsl:call-template name="_calc_Space_X"> 				<xsl:with-param name="iStackToEast" select="$stackToEast_"/>				<xsl:with-param name="iStackToWest" select="$stackToWest_"/>			</xsl:call-template>				</xsl:variable>		<xsl:variable name="space_y_"   select="($G_SharedBus_Y - $spaceAbvSbs_H_ - $BLKD_PROC2SBS_GAP)"/>		<xsl:variable name="space_x_"   select="($BLKD_INNER_X + $G_total_Bridges_W + $space_line_x_)"/>-->							<xsl:for-each select="BUSCONNLANE[@IS_MPMCCONN]">			<!--						<xsl:variable name="bifSide_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = BUSCONN/@INSTANCE)]/BUSINTERFACE[(@BUSNAME = @BUSNAME)]/@BIF_X"/>-->				<xsl:variable name="bifInst_"     select="BUSCONN/@INSTANCE"/>			<xsl:variable name="busName_"     select="@BUSNAME"/>			<xsl:variable name="bifSide_"     select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $bifInst_)]/BUSINTERFACE[(@BUSNAME = $busName_)]/@BIF_X"/>						<xsl:variable name="mpmcBifName_">				<xsl:choose>					<xsl:when test="   (@IS_SBSCONN)"><xsl:value-of select="BUSCONN/@BUSINTERFACE"/></xsl:when>					<xsl:when test="not(@IS_SBSCONN)"><xsl:value-of select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $mpmcInst_)]/BUSINTERFACE[(@BUSNAME = $busName_)]/@NAME"/></xsl:when>					<xsl:otherwise><xsl:value-of select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $mpmcInst_)]/BUSINTERFACE[(@BUSNAME = $busName_)]/@NAME"/></xsl:otherwise>				</xsl:choose>			</xsl:variable><!--						<xsl:message>MPMC Bif Name <xsl:value-of select="$mpmcBifName_"/></xsl:message>			<xsl:message>Bif Side <xsl:value-of select="$bifSide_"/></xsl:message>			<xsl:message>Bus Name <xsl:value-of select="@BUSNAME"/></xsl:message>			<xsl:message>Instance <xsl:value-of select="$bifInst_"/></xsl:message>-->							<xsl:variable name="space_line_X_">				<xsl:call-template name="_calc_Space_X">					<xsl:with-param name="iStackToEast"  select="$stackToEast_"/>					<xsl:with-param name="iStackToWest"  select="$stackToWest_"/>				</xsl:call-template>			</xsl:variable>						<xsl:variable name="space_X_"   select="($BLKD_INNER_X + $G_total_Bridges_W + $space_line_X_)"/>						<xsl:variable name = "stackToWest_W_">				<xsl:choose>					<xsl:when test="(($stackToEast_ = '0')   and     ($stackToWest_ = 'NONE'))">0</xsl:when>					<xsl:when test="(($stackToEast_ = 'NONE') and not($stackToWest_ = 'NONE'))">						<xsl:call-template name="_calc_Stack_Width">							<xsl:with-param name="iStackIdx"  select="$stackToWest_"/>						</xsl:call-template>					</xsl:when>					<xsl:when test="(not($stackToEast_ = '0') and not($stackToEast_ = 'NONE') and ($stackToWest_ = 'NONE'))">						<xsl:call-template name="_calc_Stack_Width">							<xsl:with-param name="iStackIdx"  select="($stackToEast_ - 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="iStackIdx"  select="$stackToEast_"/>				</xsl:call-template>			</xsl:variable>				<xsl:variable name ="extSpaceWest_W_" select="ceiling($stackToWest_W_ div 2)"/>			<xsl:variable name ="extSpaceEast_W_" select="ceiling($stackToEast_W_ div 2)"/><!--						<xsl:message>extSpaceWest_W_ <xsl:value-of select="$extSpaceWest_W_"/></xsl:message>			<xsl:message>extSpaceEast_W_ <xsl:value-of select="$extSpaceEast_W_"/></xsl:message>			<xsl:message>Found a MPMC lane in space <xsl:value-of select="$currentLane_"/> at X <xsl:value-of select="$lane_X_"/></xsl:message>			<xsl:message>mpmcBifRank <xsl:value-of select="$mpmcBifRank_"/></xsl:message>-->						<!--						<xsl:variable name="laneInSpace_X_" select="($extSpaceWest_W_ + (@BUSLANE_X * $BLKD_BUS_LANE_W))"/>-->						<xsl:variable name="laneInSpace_X_">				<xsl:choose>				   <xsl:when test="(@ORIENTED = 'EAST')">					   <xsl:value-of select="($extSpaceWest_W_ + (@BUSLANE_X * $BLKD_BUS_LANE_W) - $BLKD_BUS_ARROW_W - $BLKD_P2P_BUS_W)"/>				   </xsl:when>				   <xsl:otherwise><xsl:value-of select="($extSpaceWest_W_ + (@BUSLANE_X * $BLKD_BUS_LANE_W))"/></xsl:otherwise>				</xsl:choose>			</xsl:variable> 															<xsl:variable name="lane_X_"        select="($space_X_ + $laneInSpace_X_)"/>						<xsl:variable name="mpmcBifRank_" select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $mpmcInst_)]/BUSINTERFACE[(@BUSNAME = @BUSNAME)]/@BIFRANK"/>					<!--				<xsl:variable name="bc_X_" select="($lane_X_ +  ceiling($BLKD_BIFC_W div 2) - ceiling($BLKD_BUS_ARROW_W div 2))"/>			<xsl:variable name="bc_X_" select="($lane_X_ +  ceiling($BLKD_BIFC_W div 2) - ceiling($BLKD_BUS_ARROW_W div 2))"/>			<xsl:variable name="bc_X_" select="($lane_X_ + ceiling($BLKD_BIFC_W div 2))"/>		-->							<xsl:variable name="bc_Y_" select="($BLKD_INNER_Y + $BLKD_MPMC_MOD_H)"/>			<xsl:variable name="bc_X_" >				<xsl:choose>					<xsl:when test="($bifSide_ = '0')"><xsl:value-of select="($lane_X_ + ceiling($BLKD_BIFC_W div 2))"/></xsl:when>					<xsl:when test="($bifSide_ = '1')"><xsl:value-of select="($lane_X_ + $BLKD_BIFC_dx)"/></xsl:when>					<xsl:otherwise>                    <xsl:value-of select="($lane_X_ + ceiling($BLKD_BIFC_W div 2))"/></xsl:otherwise>				</xsl:choose>			</xsl:variable>						<xsl:variable name="busColor_">				<xsl:call-template name="BusType2Color">					<xsl:with-param name="iBusType" select="@BUSSTD"/>				</xsl:call-template>				</xsl:variable>					<!-- Place the MPMC bif label -->			<xsl:variable name="bcl_X_" select="($bc_X_ + ceiling($BLKD_BIFC_W div 2) - ceiling($BLKD_BIF_W div 2))"/>			<xsl:variable name="bcl_Y_" select="($bc_Y_ - $BLKD_BIF_H - $BLKD_BIF_GAP_H)"/>			<use  x="{$bcl_X_}"   y="{$bcl_Y_}"  xlink:href="#{@BUSSTD}_Bif"/>			<text class="mpmcbiflabel" 				  x="{$bcl_X_ + ceiling($BLKD_BIF_W div 2)}"				  y="{$bcl_Y_ + ceiling($BLKD_BIF_H div 2) + 3}"><xsl:value-of select="$mpmcBifName_"/></text>						<!-- Place the MPMC bif -->			<use   x="{$bc_X_}"   y="{$bc_Y_}"  xlink:href="#{@BUSSTD}_busconn_{$mpmcBifRank_}"/>						<xsl:variable name="bcArrow_X_" select="($bc_X_ +  ceiling($BLKD_BIFC_W div 2) - ceiling($BLKD_BUS_ARROW_H div 2))"/>			<xsl:variable name="bcArrow_Y_" select="($bc_Y_ + $BLKD_BIFC_H - 3)"/>						<!-- Place the MPMC Arrow -->			<use   x="{$bcArrow_X_}"   y="{$bcArrow_Y_}"  xlink:href="#{@BUSSTD}_BusArrowNorth"/>						<!-- 				Place a block to cover the gap btw MPMC and top of Bus Lane Space, or to the correct SBS 				For non SBS connections a vertical block will already have been drawn to the top of the				space.			-->						<xsl:variable name="sbsDy_">				<xsl:choose>					<xsl:when test="@IS_SBSCONN"><xsl:value-of select="2 + (/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $busName_)]/@BUSINDEX * $BLKD_SBS_LANE_H)"/></xsl:when>					<xsl:when test="not(@IS_SBSCONN)">0</xsl:when>					<xsl:otherwise>0></xsl:otherwise>				</xsl:choose>			</xsl:variable>						<xsl:variable name="mpmcBusHeight_">				<xsl:choose>					<xsl:when    test="(@IS_SBSCONN)"><xsl:value-of select="($G_SharedBus_Y - ($bcArrow_Y_ + $BLKD_BUS_ARROW_W + 4) + $sbsDy_)"/></xsl:when>					<xsl:when test="not(@IS_SBSCONN)">						<xsl:choose>							<xsl:when test="($space_y_ &gt;= ($bcArrow_Y_ + $BLKD_BUS_ARROW_W + 4 + $sbsDy_))">								<xsl:value-of select="($space_y_ - ($bcArrow_Y_ + $BLKD_BUS_ARROW_W + 4 + $sbsDy_))"/>							</xsl:when>							<xsl:when test="($space_y_ &lt; ($bcArrow_Y_ + $BLKD_BUS_ARROW_W + 4 + $sbsDy_))">								<xsl:value-of select="(($bcArrow_Y_ + $BLKD_BUS_ARROW_W + 4 + $sbsDy_) - $space_y_)"/>							</xsl:when>						</xsl:choose>					</xsl:when>					<xsl:otherwise><xsl:value-of select="$BLKD_BIFC_H"/></xsl:otherwise>				</xsl:choose>			</xsl:variable>						<rect x="{$bcArrow_X_ + $BLKD_BUS_ARROW_G}" 		  	  	  y="{$bcArrow_Y_ + $BLKD_BUS_ARROW_W + 4}"  		 	  	  width= "{$BLKD_P2P_BUS_W}" 		  	  	  height="{$mpmcBusHeight_}"  		 	      style="stroke:none; fill:{$busColor_}"/>							<!-- place the bus label here -->			<text class="p2pbuslabel" 				  x="{$bcArrow_X_ + $BLKD_BUS_ARROW_W + 6}"				  y="{$bcArrow_Y_ + ceiling($mpmcBusHeight_ div 2) + 6}"><xsl:value-of select="$busName_"/></text>									</xsl:for-each>    				</xsl:for-each>		</xsl:template>		<!-- ======================================================================= --><!--                         FUNCTION TEMPLATE                               --><!--																		 --><!--  Draw bus lane spaces on the Block Diagram								 --><!-- ======================================================================= --><xsl:template name="Draw_BlkDiagram_BusLaneSpaces">		<xsl:variable name="lastStack_" select="(/EDKSYSTEM/BLKDSHAPES/@STACK_HORIZ_WIDTH) - 1"/>		<xsl:for-each select="/EDKSYSTEM/BLKDSHAPES/BCLANESPACES/BCLANESPACE[@EAST]">		<xsl:sort select="@EAST" data-type="number"/>					<xsl:call-template name="Draw_BlkDiagram_BusLaneSpace">			<xsl:with-param name="iStackToEast"  select="@EAST"/>		</xsl:call-template>	</xsl:for-each>			<xsl:for-each select="/EDKSYSTEM/BLKDSHAPES/BCLANESPACES/BCLANESPACE[(@WEST = $lastStack_)]">		<xsl:call-template name="Draw_BlkDiagram_BusLaneSpace">			<xsl:with-param name="iStackToWest"  select="$lastStack_"/>		</xsl:call-template>	</xsl:for-each>				</xsl:template>	<xsl:template name="Draw_BlkDiagram_BusLaneSpace">		<xsl:param name="iStackToEast" select="'NONE'"/>	<xsl:param name="iStackToWest" select="'NONE'"/>		<xsl:variable name="spaceAbvSbs_H_">		<xsl:call-template name="_calc_Space_AbvSbs_Height">			<xsl:with-param name="iStackToEast"  select="$iStackToEast"/>			<xsl:with-param name="iStackToWest"  select="$iStackToWest"/>		</xsl:call-template>	</xsl:variable>			<xsl:variable name="spaceBlwSbs_H_">		<xsl:call-template name="_calc_Space_BlwSbs_Height">			<xsl:with-param name="iStackToEast"  select="$iStackToEast"/>			<xsl:with-param name="iStackToWest"  select="$iStackToWest"/>		</xsl:call-template>	</xsl:variable>			<xsl:variable name="space_line_x_">		<xsl:call-template name="_calc_Space_X">			<xsl:with-param name="iStackToEast"  select="$iStackToEast"/>			<xsl:with-param name="iStackToWest"  select="$iStackToWest"/>		</xsl:call-template>	</xsl:variable>		<xsl:variable name="space_y_"   select="($G_SharedBus_Y - $spaceAbvSbs_H_ - $BLKD_PROC2SBS_GAP)"/>	<xsl:variable name="space_x_"   select="($BLKD_INNER_X + $G_total_Bridges_W + $space_line_x_)"/>		<xsl:variable name="stackToEast_">		<xsl:choose>			<xsl:when test="not($iStackToEast = 'NONE')"><xsl:value-of select="$iStackToEast"/></xsl:when>			<xsl:otherwise>NONE</xsl:otherwise>		</xsl:choose>	</xsl:variable>			<xsl:variable name="stackToWest_">		<xsl:choose>			<xsl:when test=" not($iStackToWest = 'NONE')"><xsl:value-of select="$iStackToWest"/></xsl:when>			<xsl:when test="(not($iStackToEast = 'NONE') and not($iStackToEast = '0'))"><xsl:value-of select="($iStackToEast - 1)"/></xsl:when>			<xsl:otherwise>NONE</xsl:otherwise>		</xsl:choose>	</xsl:variable>					<xsl:variable name="space_Name_">		<xsl:call-template name="_gen_Space_Name"> 			<xsl:with-param name="iStackToEast" select="$stackToEast_"/>			<xsl:with-param name="iStackToWest" select="$stackToWest_"/>		</xsl:call-template>			</xsl:variable>		<!--		<xsl:message>StackToEast is <xsl:value-of select="$iStackToEast"/></xsl:message>	<xsl:message>StackToWest is <xsl:value-of select="$iStackToWest"/></xsl:message>	<xsl:message>SpaceName is <xsl:value-of select="$space_Name_"/></xsl:message>-->				<use   x="{$space_x_}"    y="{$space_y_}"  xlink:href="#{$space_Name_}"/> 	</xsl:template>		<!-- =========================================================================== --><!--                          FUNCTION TEMPLATE                                  --><!--																			 --><!--  Draw Bridges on the Block Diagram											 --><!-- =========================================================================== --><xsl:template name="Draw_BlkDiagram_Bridges">		<!-- First save all the bridge indexs in a variable	 -->	<xsl:variable name="bridgeShapes_">		<xsl:for-each select="/EDKSYSTEM/BLKDSHAPES/BRIDGESHAPES/MODULE/BUSCONNS[(@ORIENTED = 'WEST')]/BUSCONN">				<BRIDGE BUSINDEX="{@BUSINDEX}" INSTANCE="{../../@INSTANCE}" POSITION="{(position() -1)}"/>			<BRIDGECONN BUSINDEX="{@BUSINDEX}" INSTANCE="{../../@INSTANCE}" ORIENTED="{../@ORIENTED}" POSITION="{(position()  - 1)}" BUSSTD="{@BUSSTD}" BIFRANK="{@BIFRANK}"/>			<!-- So both bus conns have same position.... -->			<xsl:if test="../../BUSCONNS[(@ORIENTED = 'EAST')]">				<BRIDGECONN BUSINDEX="{../../BUSCONNS[(@ORIENTED ='EAST')]/BUSCONN/@BUSINDEX}" INSTANCE="{../../@INSTANCE}" ORIENTED="EAST" POSITION="{(position()  - 1)}"   BUSSTD="{../../BUSCONNS[(@ORIENTED = 'EAST')]/BUSCONN/@BUSSTD}" BIFRANK="{../../BUSCONNS[(@ORIENTED = 'EAST')]/BUSCONN/@BIFRANK}"/>			</xsl:if>		</xsl:for-each>	</xsl:variable><!--							<xsl:message>Found an east connection on <xsl:value-of select="../../@INSTANCE"/></xsl:message>-->					<!-- Now layout the bridge shapes between the shared busses	 -->	<xsl:for-each select="exsl:node-set($bridgeShapes_)/BRIDGE">		<xsl:sort select="@POSITION" data-type="number"/>

⌨️ 快捷键说明

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