?? mdtsvgblkd_peripherals.xsl
字號:
</xsl:template> <xsl:template name="Define_StandAlone_MPMC"> <!-- <xsl:param name="drawarea_w" select="500"/> <xsl:param name="drawarea_h" select="500"/>--> <xsl:for-each select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/MPMCSHAPE"> <xsl:variable name="mpmcInst_" select="@INSTANCE"/> <xsl:variable name="mpmcType_" select="/EDKSYSTEM/MODULES/MODULE[@INSTANCE=$mpmcInst_]/@MODTYPE"/><!-- <xsl:message>Drawing instance <xsl:value-of select="$mpmcInst_"/></xsl:message>--> <xsl:variable name="mpmc_w_" select="($G_total_drawarea_W - ($BLKD_INNER_GAP * 2))"/> <xsl:variable name="label_y_" select="ceiling($BLKD_MPMC_MOD_H div 2) - ceiling($BLKD_MOD_LABEL_H div 2)"/> <symbol id="mpmcmodule_{$mpmcInst_}"> <rect x="0" y="0" width = "{$mpmc_w_}" height= "{$BLKD_MPMC_MOD_H}" style="fill:{$COL_MPMC_BG}; stroke:{$COL_BLACK}; stroke-width:2"/> <rect x="{$BLKD_MOD_LANE_H}" y="{$label_y_}" rx="3" ry="3" width= "{$BLKD_MOD_LABEL_W}" height="{$BLKD_MOD_LABEL_H}" style="fill:{$COL_WHITE}; stroke:none;"/> <text class="bciptype" x="{ceiling(($BLKD_MOD_LANE_H + $BLKD_MOD_LABEL_W) div 2)}" y="{$label_y_ + 8}"> <xsl:value-of select="$mpmcType_"/> </text> <text class="bciplabel" x="{ceiling(($BLKD_MOD_LANE_H + $BLKD_MOD_LABEL_W) div 2)}" y="{$label_y_ + 16}"> <xsl:value-of select="$mpmcInst_"/> </text> <text class="mpmctitle" x="{ceiling($mpmc_w_ div 2)}" y="{$label_y_ + 16}">MPMC Module Interface</text><!-- --> </symbol> </xsl:for-each> </xsl:template> <!-- ======================= END DEF FUNCTIONS ============================ --><!-- ======================= UTILITY FUNCTIONS ============================ --><xsl:template name="_draw_InterruptSource"> <xsl:param name="iIntr_X" select="0"/> <xsl:param name="iIntr_Y" select="0"/> <xsl:param name="iIntr_PRI" select="0"/> <xsl:param name="iIntr_IDX" select="0"/> <xsl:param name="iIntr_COL" select="$COL_INTR_0"/> <rect x="{$iIntr_X}" y="{$iIntr_Y}" rx="3" ry="3" width= "{$BLKD_INTR_W}" height="{ceiling($BLKD_INTR_H div 2)}" style="fill:{$iIntr_COL}; stroke:none; stroke-width:1"/> <line x1="{$iIntr_X + ceiling($BLKD_INTR_W div 2)}" y1="{$iIntr_Y}" x2="{$iIntr_X + ceiling($BLKD_INTR_W div 2)}" y2="{$iIntr_Y + ceiling($BLKD_INTR_H div 2)}" style="stroke:{$COL_BLACK};stroke-width:1"/> <xsl:variable name="txt_ofs_"> <xsl:if test="($iIntr_PRI > 9)">4.5</xsl:if> <xsl:if test="not($iIntr_PRI > 9)">0</xsl:if> </xsl:variable> <text class="intrsymbol" x="{$iIntr_X + 2 - $txt_ofs_}" y="{$iIntr_Y + 8}"> <xsl:value-of select="$iIntr_PRI"/> </text> <text class="intrsymbol" x="{$iIntr_X + 2 + ceiling($BLKD_INTR_W div 2)}" y="{$iIntr_Y + 8}"> <xsl:value-of select="$iIntr_IDX"/> </text> </xsl:template><xsl:template name="_draw_InterruptCntrl"> <xsl:param name="iIntr_X" select="0"/> <xsl:param name="iIntr_Y" select="0"/> <xsl:param name="iIntr_IDX" select="0"/> <xsl:param name="iIntr_COL" select="$COL_INTR_0"/> <rect x="{$iIntr_X}" y="{$iIntr_Y}" rx="3" ry="3" width= "{ceiling($BLKD_INTR_W div 2)}" height="{$BLKD_INTR_H}" style="fill:{$iIntr_COL}; stroke:none; stroke-width:1"/> <line x1="{$iIntr_X}" y1="{$iIntr_Y + ceiling($BLKD_INTR_H div 4)}" x2="{$iIntr_X + ceiling($BLKD_INTR_W div 2)}" y2="{$iIntr_Y + ceiling($BLKD_INTR_H div 4)}" style="stroke:{$COL_BLACK};stroke-width:2"/> <text class="intrsymbol" x="{$iIntr_X + 2}" y="{$iIntr_Y + 8 + ceiling($BLKD_INTR_H div 2)}"> <xsl:value-of select="$iIntr_IDX"/> </text> </xsl:template><xsl:template name="_draw_InterruptedProc"> <xsl:param name="iIntr_X" select="0"/> <xsl:param name="iIntr_Y" select="0"/> <xsl:param name="iIntr_IDX" select="0"/> <xsl:param name="iIntr_COL" select="$COL_INTR_0"/> <rect x="{$iIntr_X}" y="{$iIntr_Y}" rx="3" ry="3" width= "{ceiling($BLKD_INTR_W div 2)}" height="{$BLKD_INTR_H}" style="fill:{$iIntr_COL}; stroke:none; stroke-width:1"/> <line x1="{$iIntr_X}" y1="{$iIntr_Y + ceiling($BLKD_INTR_H div 4) - 2}" x2="{$iIntr_X + ceiling($BLKD_INTR_W div 2)}" y2="{$iIntr_Y + ceiling($BLKD_INTR_H div 4) - 2}" style="stroke:{$COL_BLACK};stroke-width:1"/> <line x1="{$iIntr_X}" y1="{$iIntr_Y + ceiling($BLKD_INTR_H div 4) + 2}" x2="{$iIntr_X + ceiling($BLKD_INTR_W div 2)}" y2="{$iIntr_Y + ceiling($BLKD_INTR_H div 4) + 2}" style="stroke:{$COL_BLACK};stroke-width:1"/> <text class="intrsymbol" x="{$iIntr_X + 2}" y="{$iIntr_Y + 8 + ceiling($BLKD_INTR_H div 2)}"> <xsl:value-of select="$iIntr_IDX"/> </text> </xsl:template><xsl:template name="_calc_CStackShapesAbv_Height"> <xsl:param name="iCStackIndex" select="100"/> <xsl:param name="iCStackMods_Y" select="1000"/> <!-- <xsl:message>Stack Index <xsl:value-of select="$cstackIndex"/></xsl:message> <xsl:message>Stack Y <xsl:value-of select="$cstackModY"/></xsl:message>--> <xsl:if test="not(/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(@CSTACK_INDEX = $iCStackIndex)])">0</xsl:if> <xsl:if test="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(@CSTACK_INDEX = $iCStackIndex)]"> <xsl:variable name="shapesAbv_Heights_"> <CSTACK_MOD HEIGHT="0"/> <!-- Store the heights of all the peripherals above this one heights in a variable --> <xsl:for-each select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[((@CSTACK_INDEX = $iCStackIndex) and (@CSTACK_MODS_Y < $iCStackMods_Y))]"> <xsl:variable name="shapeHeight_"> <xsl:choose> <xsl:when test="@MODCLASS = 'PERIPHERAL'"> <xsl:call-template name="_calc_PeriShape_Height"> <xsl:with-param name="iShapeInst" select="MODULE/@INSTANCE"/> </xsl:call-template> </xsl:when> <xsl:when test="@MODCLASS = 'MEMORY_UNIT'"> <xsl:call-template name="_calc_MemoryUnit_Height"> <xsl:with-param name="iShapeId" select="@SHAPE_ID"/> </xsl:call-template> </xsl:when> <xsl:otherwise>0</xsl:otherwise> </xsl:choose> </xsl:variable> <!-- <xsl:message>Calculated height of cstack shape of type <xsl:value-of select="@MODCLASS"/> as <xsl:value-of select="$shapeHeight_"/></xsl:message>--> <CSTACK_MOD HEIGHT="{$shapeHeight_ + $BLKD_BIF_H}"/> </xsl:for-each> </xsl:variable> <!-- <xsl:message>Calculated height of cstack as <xsl:value-of select="sum(exsl:node-set($shapesAbv_Heights_)/CSTACK_MOD/@HEIGHT)"/></xsl:message>--> <xsl:value-of select="sum(exsl:node-set($shapesAbv_Heights_)/CSTACK_MOD/@HEIGHT)"/> </xsl:if> </xsl:template><xsl:template name="_calc_PeriShape_Height"> <xsl:param name="iShapeInst" select="'_shape_'"/> <!-- <xsl:message>Calculating height of <xsl:value-of select="$shapeInst"/></xsl:message>--> <xsl:if test="not(/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE/MODULE[(@INSTANCE = $iShapeInst)]/@BIFS_H) and not(/EDKSYSTEM/BLKDSHAPES/BRIDGESHAPES/MODULE[(@INSTANCE = $iShapeInst)]/@BIFS_H)">0</xsl:if> <xsl:if test="(/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE/MODULE[(@INSTANCE = $iShapeInst)]/@BIFS_H)"> <xsl:variable name="bifs_h_" select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE/MODULE[(@INSTANCE = $iShapeInst)]/@BIFS_H"/> <xsl:value-of select="($BLKD_MOD_LABEL_H + ($BLKD_BIF_H * $bifs_h_) + ($BLKD_BIF_GAP_V * $bifs_h_) + ($BLKD_MOD_LANE_H * 2))"/> </xsl:if> <xsl:if test="(/EDKSYSTEM/BLKDSHAPES/BRIDGESHAPES/MODULE[(@INSTANCE = $iShapeInst)]/@BIFS_H)"> <xsl:variable name="bifs_h_" select="/EDKSYSTEM/BLKDSHAPES/BRIDGESHAPES/MODULE[(@INSTANCE = $iShapeInst)]/@BIFS_H"/> <xsl:value-of select="($BLKD_MOD_LABEL_H + ($BLKD_BIF_H * $bifs_h_) + ($BLKD_BIF_GAP_V * $bifs_h_) + ($BLKD_MOD_LANE_H * 2))"/> </xsl:if> <xsl:if test="(/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $iShapeInst)]/@BIFS_H)"> <xsl:variable name="bifs_h_" select="/EDKSYSTEM/BLKDSHAPES/PROCSHAPES/MODULE[(@INSTANCE = $iShapeInst)]/@BIFS_H"/> <xsl:value-of select="($BLKD_MOD_LABEL_H + ($BLKD_BIF_H * $bifs_h_) + ($BLKD_BIF_GAP_V * $bifs_h_) + ($BLKD_MOD_LANE_H * 2))"/> </xsl:if> </xsl:template> <xsl:template name="_calc_Shape_Height"> <xsl:param name="iShapeId" select="_shape_"/> <!-- <xsl:message>Calculating height of <xsl:value-of select="$shapeId"/></xsl:message>--> <xsl:if test="not(/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(@SHAPE_ID = $iShapeId)])">0</xsl:if> <xsl:if test="(/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(@SHAPE_ID = $iShapeId)]/MODULE/@BIFS_H)"> <xsl:variable name="bifs_h_" select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(@SHAPE_ID = $iShapeId)]/MODULE/@BIFS_H"/> <xsl:value-of select="($BLKD_MOD_LABEL_H + ($BIF_H * $bifs_h_) + ($BLKD_BIF_GAP_V * $bifs_h_) + ($BLKD_MOD_LANE_H * 2))"/> </xsl:if> </xsl:template><xsl:template name="_calc_MemoryUnit_Height"> <xsl:param name="iShapeId" select="1000"/> <xsl:if test="not(/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(@SHAPE_ID = $iShapeId)])">0</xsl:if> <xsl:if test="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(@SHAPE_ID = $iShapeId)]"> <!-- Store the memory controller heights in a variable --> <xsl:variable name="memC_heights_"> <xsl:if test="not(/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(@SHAPE_ID = $iShapeId)]/MODULE[(@MODCLASS = 'MEMORY_CNTLR')])"> <MEM_CNTLR INSTANCE="{@INSTANCE}" HEIGHT="0"/> </xsl:if> <xsl:if test="(/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(@SHAPE_ID = $iShapeId)]/MODULE[(@MODCLASS = 'MEMORY_CNTLR')])"> <xsl:for-each select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(@SHAPE_ID = $iShapeId)]/MODULE[(@MODCLASS = 'MEMORY_CNTLR')]"> <xsl:variable name="memC_height_"> <xsl:call-template name="_calc_PeriShape_Height"> <xsl:with-param name="iShapeInst" select="@INSTANCE"/> </xsl:call-template> </xsl:variable> <MEM_CNTLR INSTANCE="{@INSTANCE}" HEIGHT="{$memC_height_}"/> </xsl:for-each> </xsl:if> </xsl:variable> <!-- Store the bram heights in a variable --> <xsl:variable name="bram_heights_"> <xsl:if test="not(/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(@SHAPE_ID = $iShapeId)]/MODULE[not(@MODCLASS = 'MEMORY_CNTLR')])"> <BRAM INSTANCE="{@INSTANCE}" HEIGHT="0"/> </xsl:if> <xsl:if test="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(@SHAPE_ID = $iShapeId)]/MODULE[not(@MODCLASS = 'MEMORY_CNTLR')]"> <xsl:for-each select="/EDKSYSTEM/BLKDSHAPES/CMPLXSHAPES/CMPLXSHAPE[(@SHAPE_ID = $iShapeId)]/MODULE[not(@MODCLASS = 'MEMORY_CNTLR')]"> <xsl:variable name="bram_height_"> <xsl:call-template name="_calc_PeriShape_Height"> <xsl:with-param name="iShapeInst" select="@INSTANCE"/> </xsl:call-template> </xsl:variable> <BRAM INSTANCE="{@INSTANCE}" HEIGHT="{$bram_height_}"/> </xsl:for-each> </xsl:if> </xsl:variable> <!-- Select the maximum of them --> <xsl:variable name="max_bram_height_" select="math:max(exsl:node-set($bram_heights_)/BRAM/@HEIGHT)"/> <xsl:variable name="max_memC_height_" select="math:max(exsl:node-set($memC_heights_)/MEM_CNTLR/@HEIGHT)"/> <xsl:value-of select="$max_bram_height_ + $max_memC_height_"/> </xsl:if></xsl:template><xsl:template name="_calc_SbsBucket_Height"> <xsl:param name="iBucketId" select="100"/> <!-- <xsl:message>Looking of height of bucket <xsl:value-of select="$bucketId"/></xsl:message>--> <xsl:variable name="bkt_gap_" select="$BLKD_BIF_H"/> <xsl:if test="not(/EDKSYSTEM/BLKDSHAPES/SBSBUCKETS/SBSBUCKET[(@BUSINDEX = $iBucketId)])">0</xsl:if> <xsl:if test="/EDKSYSTEM/BLKDSHAPES/SBSBUCKETS/SBSBUCKET[(@BUSINDEX = $iBucketId)]"> <xsl:variable name="mods_h_" select="/EDKSYSTEM/BLKDSHAPES/SBSBUCKETS/SBSBUCKET[(@BUSINDEX = $iBucketId)]/@MODS_H"/> <xsl:value-of select="((($BLKD_MOD_BKTLANE_H * 2) + ((($BLKD_MOD_H + $BLKD_BIFC_H) * $mods_h_) + ($BLKD_MOD_BUCKET_G * ($mods_h_ - 1)))) + $bkt_gap_)"/> </xsl:if></xsl:template> <!-- =============================================== Symbol Naming Functions ===============================================--> <xsl:template name="_gen_Proc_StackName"><xsl:param name="iProcInst" select="'_unknown_'"/>symbol_STACK_<xsl:value-of select="$iProcInst"/></xsl:template> <xsl:template name="_gen_Proc_GroupName"><xsl:param name="iProcInst" select="'_unknown_'"/>symbol_GROUP_<xsl:value-of select="$iProcInst"/></xsl:template> <xsl:template name="_gen_Space_Name"><xsl:param name="iStackToEast" select="'NONE'"/><xsl:param name="iStackToWest" select="'NONE'"/>symbol_SPACE_WEST_<xsl:value-of select="$iStackToWest"/>_EAST_<xsl:value-of select="$iStackToEast"/></xsl:template><xsl:template name="_gen_Stack_Name"><xsl:param name="iHorizIdx" select="'_unknown_'"/>symbol_STACK_<xsl:value-of select="$iHorizIdx"/></xsl:template><xsl:template name="_gen_Stack_SymbolName"><xsl:param name="iHorizIdx" select="'_unknown_'"/><xsl:param name="iVertiIdx" select="'_unknown_'"/>symbol_STACK_<xsl:value-of select="$iHorizIdx"/>_SHAPE_<xsl:value-of select="$iVertiIdx"/></xsl:template> <!-- ======================= END UTILITY FUNCTIONS ======================= --></xsl:stylesheet>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -