901 lines
58 KiB
XML
901 lines
58 KiB
XML
<?xml version="1.0" standalone="no"?>
|
|
|
|
<!DOCTYPE stylesheet [
|
|
<!ENTITY UPPERCASE "ABCDEFGHIJKLMNOPQRSTUVWXYZ">
|
|
<!ENTITY LOWERCASE "abcdefghijklmnopqrstuvwxyz">
|
|
|
|
<!ENTITY UPPER2LOWER " '&UPPERCASE;' , '&LOWERCASE;' ">
|
|
<!ENTITY LOWER2UPPER " '&LOWERCASE;' , '&UPPERCASE;' ">
|
|
|
|
<!ENTITY ALPHALOWER "ABCDEFxX0123456789">
|
|
<!ENTITY HEXUPPER "ABCDEFxX0123456789">
|
|
<!ENTITY HEXLOWER "abcdefxX0123456789">
|
|
<!ENTITY HEXU2L " '&HEXLOWER;' , '&HEXUPPER;' ">
|
|
]>
|
|
|
|
<xsl:stylesheet version="1.0"
|
|
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
|
xmlns:exsl="http://exslt.org/common"
|
|
xmlns:dyn="http://exslt.org/dynamic"
|
|
xmlns:math="http://exslt.org/math"
|
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
|
extension-element-prefixes="exsl dyn math xlink">
|
|
|
|
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
|
|
|
|
<!--
|
|
================================================================================
|
|
Generate XTeller for ADDRESSES
|
|
================================================================================
|
|
-->
|
|
|
|
<xsl:template name="WRITE_VIEW_ADDRESS">
|
|
|
|
<xsl:for-each select="$G_SYS_MODS/MODULE[((@MODCLASS = 'PROCESSOR') and (MEMORYMAP/MEMRANGE[((not(@IS_VALID) or (@IS_VALID = 'TRUE')) and (ACCESSROUTE or (@IS_CONSTANT = 'TRUE')))]))]">
|
|
<xsl:sort data-type="number" select="@ROW_INDEX" order="ascending"/>
|
|
|
|
<xsl:variable name="procInst_" select="@INSTANCE"/>
|
|
<xsl:variable name="procMod_" select="self::node()"/>
|
|
<xsl:variable name="procModType" select="@MODTYPE"/>
|
|
<xsl:variable name="procModClass_" select="@MODCLASS"/>
|
|
<xsl:variable name="procInstHdrVal_"><xsl:value-of select="$procInst_"/>'s Address Map</xsl:variable>
|
|
<xsl:variable name="procInstRowIdx_" select="position() - 1"/>
|
|
|
|
<!-- <SET ID="{$procInst_}" CLASS="MODULE" ROW_INDEX="{$procInstRowIdx_}"> -->
|
|
|
|
<xsl:element name="SET">
|
|
<xsl:attribute name="ID"><xsl:value-of select="$procInst_"/></xsl:attribute>
|
|
<xsl:attribute name="CLASS">MODULE</xsl:attribute>
|
|
<xsl:attribute name="ROW_INDEX"><xsl:value-of select="$procInstRowIdx_"/></xsl:attribute>
|
|
|
|
<!-- <VARIABLE VIEWTYPE="STATIC" VIEWDISP="Instance" NAME="INSTANCE" VALUE="{$procInstHdrVal_}"/> -->
|
|
|
|
<xsl:element name="VARIABLE">
|
|
<xsl:attribute name="NAME">INSTANCE</xsl:attribute>
|
|
<xsl:attribute name="VALUE"><xsl:value-of select="$procInstHdrVal_"/></xsl:attribute>
|
|
<xsl:attribute name="VIEWDISP">Instance</xsl:attribute>
|
|
<xsl:attribute name="VIEWTYPE">STATIC</xsl:attribute>
|
|
</xsl:element>
|
|
|
|
<xsl:for-each select="$procMod_/MEMORYMAP/MEMRANGE[((not(@IS_VALID) or (@IS_VALID = 'TRUE')) and (ACCESSROUTE or (@MEMTYPE = 'BRIDGE') or (@IS_CONSTANT = 'TRUE')))]">
|
|
<xsl:sort data-type="number" select="@BASEDECIMAL" order="ascending"/>
|
|
|
|
<xsl:variable name="addr_id_"><xsl:value-of select="@BASENAME"/>:<xsl:value-of select="@HIGHNAME"/></xsl:variable>
|
|
<xsl:variable name="baseName_" select="@BASENAME"/>
|
|
<xsl:variable name="highName_" select="@HIGHNAME"/>
|
|
|
|
<!--
|
|
<xsl:if test="$G_DEBUG='TRUE'">
|
|
<xsl:message>ADDRESS ID <xsl:value-of select="$addr_id_"/></xsl:message>
|
|
</xsl:if>
|
|
-->
|
|
|
|
<xsl:variable name="set_id_">
|
|
<xsl:if test="(@INSTANCE)">
|
|
<xsl:value-of select="$procInst_"/>.<xsl:value-of select="@INSTANCE"/>:<xsl:value-of select="$addr_id_"/>
|
|
</xsl:if>
|
|
<xsl:if test="not(@INSTANCE)">
|
|
<xsl:value-of select="$procInst_"/>:<xsl:value-of select="$addr_id_"/>
|
|
</xsl:if>
|
|
</xsl:variable>
|
|
|
|
<xsl:variable name="procAddrRowIdx_" select="position() - 1"/>
|
|
<SET ID="{$set_id_}" CLASS="ADDRESS" ROW_INDEX="{$procAddrRowIdx_}">
|
|
|
|
<xsl:if test="(@INSTANCE)">
|
|
<xsl:variable name="periInst_" select="@INSTANCE"/>
|
|
<xsl:variable name="periMod_" select="key('G_MAP_MODULES', $periInst_)"/>
|
|
<!--
|
|
<xsl:variable name="subInstance_" select="$G_SYS_MODS/MODULE[(@INSTANCE = $instance_)]"/>
|
|
<xsl:message>Count memrange slaves <xsl:value-of select="count($modMemMapSlvs_)"/> </xsl:message>
|
|
<xsl:message>Count mod valid bifs <xsl:value-of select="count($modValidBifs_)"/> </xsl:message>
|
|
-->
|
|
|
|
|
|
<xsl:variable name="periModType_" select="$periMod_/@MODTYPE"/>
|
|
<xsl:variable name="periViewIcon_" select="$periMod_/LICENSEINFO/@ICON_NAME"/>
|
|
<xsl:variable name="periHwVersion_" select="$periMod_/@HWVERSION"/>
|
|
|
|
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Instance" NAME="INSTANCE" VALUE="{$periInst_}"/>
|
|
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="IP Type" NAME="MODTYPE" VALUE="{$periModType_}" VIEWICON="{$periViewIcon_}"/>
|
|
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="IP Version" NAME="HWVERSION" VALUE="{$periHwVersion_}"/>
|
|
</xsl:if>
|
|
|
|
<xsl:if test="not(@INSTANCE)">
|
|
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Instance" NAME="INSTANCE" VALUE="{$procInst_}"/>
|
|
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="IP Type" NAME="MODTYPE" VALUE="{$procModType}" VIEWICON="{$procMod_/LICENSEINFO/@ICON_NAME}"/>
|
|
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="IP Version" NAME="HWVERSION" VALUE="{$procHwVersion_}"/>
|
|
</xsl:if>
|
|
|
|
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Address Type" NAME="MEMTYPE" VALUE="{@MEMTYPE}"/>
|
|
|
|
<xsl:variable name="instName_">
|
|
<xsl:choose>
|
|
<xsl:when test="@INSTANCE"><xsl:value-of select="@INSTANCE"/></xsl:when>
|
|
<xsl:otherwise>Connected<xsl:value-of select="$procInst_"/></xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:variable>
|
|
<!--
|
|
<xsl:message>INST : <xsl:value-of select="$set_id_"/></xsl:message>
|
|
-->
|
|
|
|
<xsl:variable name="is_locked_">
|
|
<xsl:if test="@IS_LOCKED = 'TRUE'">TRUE</xsl:if>
|
|
<xsl:if test="not(@IS_LOCKED) or not(@IS_LOCKED = 'TRUE')">FALSE</xsl:if>
|
|
</xsl:variable>
|
|
|
|
<xsl:variable name="is_constant_">
|
|
<xsl:if test="@IS_CONSTANT = 'TRUE'">TRUE</xsl:if>
|
|
<xsl:if test="not(@IS_CONSTANT) or not(@IS_CONSTANT = 'TRUE')">FALSE</xsl:if>
|
|
</xsl:variable>
|
|
|
|
<xsl:variable name="baseAddrViewType_">
|
|
<xsl:choose>
|
|
<xsl:when test="$is_locked_='TRUE'">STATIC</xsl:when>
|
|
<xsl:otherwise>TEXTBOX</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:variable>
|
|
|
|
<xsl:if test="(@SIZEABRV and not(@SIZEABRV = 'U'))">
|
|
<xsl:variable name="baseAddr_"><xsl:value-of select="translate(@BASEVALUE,&HEXU2L;)"/></xsl:variable>
|
|
<xsl:variable name="highAddr_"><xsl:value-of select="translate(@HIGHVALUE,&HEXU2L;)"/></xsl:variable>
|
|
<VARIABLE VIEWTYPE="{$baseAddrViewType_}" VIEWDISP="Base Address" NAME="BASEVALUE" VALUE="{$baseAddr_}"/>
|
|
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="High Address" NAME="HIGHVALUE" VALUE="{$highAddr_}"/>
|
|
|
|
<xsl:if test="not(@MEMTYPE) or not(@MEMTYPE = 'BRIDGE')">
|
|
<VARIABLE VIEWTYPE="CHECKBOX" VIEWDISP="Lock" NAME="IS_LOCKED" VALUE="{$is_locked_}"/>
|
|
</xsl:if>
|
|
|
|
<xsl:if test="@MEMTYPE and (@MEMTYPE = 'BRIDGE') and not(@BRIDGE_TO)">
|
|
<VARIABLE VIEWTYPE="CHECKBOX" VIEWDISP="Lock" NAME="IS_LOCKED" VALUE="{$is_locked_}"/>
|
|
</xsl:if>
|
|
</xsl:if>
|
|
|
|
<xsl:if test="(@SIZEABRV and (@SIZEABRV = 'U'))">
|
|
<VARIABLE VIEWTYPE="TEXTBOX" VIEWDISP="Base Address" NAME="BASEVALUE" VALUE=""/>
|
|
</xsl:if>
|
|
|
|
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Base Name" NAME="BASENAME" VALUE="{@BASENAME}"/>
|
|
|
|
<xsl:variable name="sizeViewType_">
|
|
<xsl:choose>
|
|
<xsl:when test="(@SIZEABRV and (@SIZEABRV = 'U'))">DROPDOWN</xsl:when>
|
|
<xsl:when test="$is_locked_='TRUE'">STATIC</xsl:when>
|
|
<xsl:otherwise>DROPDOWN</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:variable>
|
|
|
|
<VARIABLE VIEWTYPE="{$sizeViewType_}" VIEWDISP="Size" NAME="SIZEABRV" VALUE="{@SIZEABRV}"/>
|
|
|
|
<xsl:variable name="periInst_" select="@INSTANCE"/>
|
|
<xsl:variable name="periMod_" select="key('G_MAP_MODULES', $periInst_)"/>
|
|
<xsl:variable name="periModClass_" select="$periMod_/@MODCLASS"/>
|
|
<xsl:variable name="periValidBifs_" select="key('G_MAP_ALL_BIFS', $periInst_)[not(@BUSNAME = '__NOC__')]"/>
|
|
<xsl:variable name="periMemMapSlvs_" select="$periMod_/MEMORYMAP/MEMRANGE[(@BASENAME = $baseName_) and (@HIGHNAME = $highName_)]/SLAVES/SLAVE"/>
|
|
<xsl:variable name="periMemMapBifs_">
|
|
<xsl:for-each select="$periMemMapSlvs_">
|
|
<xsl:variable name="periSlvBifName_" select="@BUSINTERFACE"/>
|
|
<xsl:if test="$periValidBifs_[(@NAME = $periSlvBifName_)]">
|
|
<xsl:variable name="periBif_" select="$periValidBifs_[(@NAME = $periSlvBifName_)]"/>
|
|
<xsl:variable name="periBifName_" select="$periBif_/@NAME"/>
|
|
<xsl:variable name="periBifBus_" select="$periBif_/@BUSNAME"/>
|
|
<!--
|
|
<xsl:message> Slv Bif <xsl:value-of select="$periBifName_"/> = <xsl:value-of select="$periBifBus_"/></xsl:message>
|
|
-->
|
|
<MMBIF NAME="{$periBifName_}" BUS="{$periBifBus_}"/>
|
|
</xsl:if>
|
|
</xsl:for-each>
|
|
</xsl:variable>
|
|
|
|
<xsl:variable name="num_of_periMemMapBifs_" select="count(exsl:node-set($periMemMapBifs_)/MMBIF)"/>
|
|
|
|
<!--
|
|
<xsl:message> Total num of slv bifs <xsl:value-of select="$num_of_periMemMapBifs_"/> </xsl:message>
|
|
<xsl:message> </xsl:message>
|
|
-->
|
|
|
|
<xsl:variable name="valid_bifNames_">
|
|
<xsl:for-each select="exsl:node-set($periMemMapBifs_)/MMBIF">
|
|
<xsl:variable name="bifName_" select="@NAME"/>
|
|
<xsl:if test="position() > 1">:</xsl:if><xsl:value-of select="$bifName_"/>
|
|
</xsl:for-each>
|
|
</xsl:variable>
|
|
|
|
<xsl:variable name="valid_busNames_">
|
|
<xsl:for-each select="exsl:node-set($periMemMapBifs_)/MMBIF">
|
|
<xsl:variable name="busName_" select="@BUS"/>
|
|
<xsl:if test="position() > 1">:</xsl:if><xsl:value-of select="$busName_"/>
|
|
</xsl:for-each>
|
|
</xsl:variable>
|
|
|
|
<!--
|
|
<xsl:message> Mod Bif <xsl:value-of select="$bifName_"/> : <xsl:value-of select="position()"/></xsl:message>
|
|
<xsl:message> Mod Bif <xsl:value-of select="$bifName_"/> : <xsl:value-of select="position()"/></xsl:message>
|
|
<xsl:message>Slv Bif <xsl:value-of select="$bifName_"/> : <xsl:value-of select="position()"/></xsl:message>
|
|
<xsl:variable name="modBifs_" select="$modInst_/BUSINTERFACES"/>
|
|
<xsl:if test="$periValidBifs_[(@NAME = $bifName_)]">
|
|
<xsl:variable name="busName_" select="$periValidBifs_[(@NAME = $bifName_)]/@BUSNAME"/>
|
|
<xsl:message>Mod Bif <xsl:value-of select="$bifName_"/> : <xsl:value-of select="position()"/></xsl:message>
|
|
<xsl:if test="position() > 1">:</xsl:if><xsl:value-of select="$bifName_"/>
|
|
</xsl:if>
|
|
-->
|
|
<!--
|
|
<xsl:message>Module Instances <xsl:value-of select="$instName_"/> </xsl:message>
|
|
<xsl:message>Base Name <xsl:value-of select="$baseName_"/> </xsl:message>
|
|
<xsl:message>High Name <xsl:value-of select="$highName_"/> </xsl:message>
|
|
<xsl:message>Valid bif names <xsl:value-of select="$valid_bifNames_"/> </xsl:message>
|
|
<xsl:message>Valid bif names <xsl:value-of select="$valid_bifNames_"/> </xsl:message>
|
|
<xsl:message>Valid bus names <xsl:value-of select="$valid_busNames_"/> </xsl:message>
|
|
-->
|
|
|
|
|
|
<xsl:variable name="var_bifNames_">
|
|
<xsl:choose>
|
|
<xsl:when test="string-length($valid_bifNames_) < 1">
|
|
<xsl:choose>
|
|
<xsl:when test="$periModClass_ = 'BUS'">Not Applicable</xsl:when>
|
|
<xsl:when test="$is_constant_ = 'TRUE'"></xsl:when>
|
|
<xsl:otherwise>Not Connected</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:when>
|
|
<xsl:otherwise><xsl:value-of select="$valid_bifNames_"/></xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:variable>
|
|
|
|
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Bus Interface(s)" NAME="BIFNAMES" VALUE="{$var_bifNames_}"/>
|
|
<xsl:if test="(($num_of_periMemMapBifs_ > 0) and (string-length($valid_busNames_) > 0))">
|
|
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Bus Name" NAME="BUSNAME" VALUE="{$valid_busNames_}"/>
|
|
</xsl:if>
|
|
</SET> <!-- End of one processor memory range row -->
|
|
</xsl:for-each> <!-- end of processor memory ranges loop -->
|
|
</xsl:element><!-- End of Processor memory map set -->
|
|
</xsl:for-each> <!-- end of processor module address space loop -->
|
|
|
|
<!--
|
|
Add branch for valid address that are not part of a processor's
|
|
memory map. Usually modules that have just been added, but have
|
|
not been connected to a bus yet.
|
|
-->
|
|
|
|
<xsl:variable name="nonProcAddresses_">
|
|
|
|
<!-- Add a dummy non proc as a place holder. Otherwise the exsl:node-set test
|
|
Below complains if the variable is completely empty
|
|
-->
|
|
<NONPROCADDRESS INSTANCE="__DUMMY__" BASENAME="__DUMMY__" HIGHNAME="__DUMMY__" BASEDECIMAL="__DUMMY__"/>
|
|
|
|
<xsl:for-each select="$G_SYS_MODS/MODULE[(not(@MODCLASS = 'PROCESSOR') and (MEMORYMAP/MEMRANGE[((not(@IS_VALID) or (@IS_VALID = 'TRUE')) and (ACCESSROUTE or (@IS_CONSTANT = 'TRUE')))]))]">
|
|
<xsl:variable name="nonProcInst_" select="@INSTANCE"/>
|
|
|
|
<xsl:for-each select="MEMORYMAP/MEMRANGE[(not(@IS_VALID) or (@IS_VALID = 'TRUE'))]">
|
|
|
|
<xsl:variable name="highName_" select="@HIGHNAME"/>
|
|
<xsl:variable name="baseName_" select="@BASENAME"/>
|
|
<xsl:variable name="baseDecimal_" select="@BASEDECIMAL"/>
|
|
|
|
<xsl:if test="not($G_SYS_MODS/MODULE[(@MODCLASS = 'PROCESSOR')]/MEMORYMAP/MEMRANGE[((@INSTANCE = $nonProcInst_) and (@BASENAME = $baseName_) and (@HIGHNAME = $highName_))])">
|
|
<NONPROCADDRESS INSTANCE="{$nonProcInst_}" BASENAME="{$baseName_}" HIGHNAME="{$highName_}" BASEDECIMAL="{$baseDecimal_}"/>
|
|
</xsl:if>
|
|
</xsl:for-each>
|
|
</xsl:for-each>
|
|
|
|
</xsl:variable>
|
|
|
|
<!-- Add unmapped addresses -->
|
|
<xsl:variable name="hasUnMappedAddress">
|
|
<xsl:for-each select="$G_SYS_MODS/MODULE[(not(@MODCLASS = 'PROCESSOR') and (MEMORYMAP/MEMRANGE[(not(@IS_VALID) or (@IS_VALID = 'TRUE'))]))]">
|
|
<xsl:variable name="nonProcInst_" select="@INSTANCE"/>
|
|
<xsl:for-each select="MEMORYMAP/MEMRANGE[(not(@IS_VALID) or (@IS_VALID = 'TRUE'))]">
|
|
<xsl:variable name="highName_" select="@HIGHNAME"/>
|
|
<xsl:variable name="baseName_" select="@BASENAME"/>
|
|
<xsl:variable name="baseDecimal_" select="@BASEDECIMAL"/>
|
|
<xsl:if test="not($G_SYS_MODS/MODULE[(@MODCLASS = 'PROCESSOR')]/MEMORYMAP/MEMRANGE[((@INSTANCE = $nonProcInst_) and (@BASENAME = $baseName_) and (@HIGHNAME = $highName_))])"><xsl:value-of select="$nonProcInst_"/></xsl:if>
|
|
</xsl:for-each>
|
|
</xsl:for-each>
|
|
</xsl:variable>
|
|
|
|
<xsl:if test="string-length($hasUnMappedAddress) > 1">
|
|
|
|
<SET ID="Unmapped Addresses" CLASS="MODULE" ROW_INDEX="{$G_NUM_OF_PROCS_W_ADDRS}">
|
|
|
|
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Instance" NAME="INSTANCE" VALUE="Unmapped Addresses"/>
|
|
|
|
<xsl:for-each select="$G_SYS_MODS/MODULE[(not(@MODCLASS = 'PROCESSOR') and (MEMORYMAP/MEMRANGE[(not(@IS_VALID) or (@IS_VALID = 'TRUE'))]))]/MEMORYMAP/MEMRANGE[(not(@IS_VALID) or (@IS_VALID = 'TRUE'))]">
|
|
|
|
<xsl:variable name="nonProcMod_" select="../.."/>
|
|
<xsl:variable name="nonProcMMap_" select="$nonProcMod_/MEMORYMAP"/>
|
|
<xsl:variable name="instance_" select="$nonProcMod_/@INSTANCE"/>
|
|
|
|
<xsl:variable name="row_index_" select="position()"/>
|
|
<xsl:variable name="instName_" select="$nonProcMod_/@INSTANCE"/>
|
|
<xsl:variable name="highName_" select="@HIGHNAME"/>
|
|
<xsl:variable name="baseName_" select="@BASENAME"/>
|
|
<xsl:variable name="baseDecimal_" select="@BASEDECIMAL"/>
|
|
|
|
<xsl:for-each select="$nonProcMMap_/MEMRANGE[((@BASENAME = $baseName_) and (@HIGHNAME = $highName_))]">
|
|
|
|
<xsl:if test="not($G_SYS_MODS/MODULE[(@MODCLASS = 'PROCESSOR')]/MEMORYMAP/MEMRANGE[((@INSTANCE = $instName_) and (@BASENAME = $baseName_) and (@HIGHNAME = $highName_))])">
|
|
|
|
<xsl:variable name="addr_id_"><xsl:value-of select="$baseName_"/>:<xsl:value-of select="$highName_"/></xsl:variable>
|
|
<xsl:variable name="set_id_"><xsl:value-of select="$instName_"/>:<xsl:value-of select="$addr_id_"/></xsl:variable>
|
|
|
|
<xsl:variable name="inst_modtype_" select="$nonProcMod_/@MODTYPE"/>
|
|
<xsl:variable name="inst_viewicon_" select="$nonProcMod_/LICENSEINFO/@ICON_NAME"/>
|
|
<xsl:variable name="inst_modclass_" select="$nonProcMod_/@MODCLASS"/>
|
|
<xsl:variable name="inst_hwversion_" select="$nonProcMod_/@HWVERSION"/>
|
|
|
|
<SET ID="{$set_id_}" CLASS="ADDRESS">
|
|
|
|
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Instance" NAME="INSTANCE" VALUE="{$instance_}"/>
|
|
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="IP Type" NAME="MODTYPE" VALUE="{$inst_modtype_}" VIEWICON="{$inst_viewicon_}"/>
|
|
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="IP Version" NAME="HWVERSION" VALUE="{$inst_hwversion_}"/>
|
|
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Address Type" NAME="MEMTYPE" VALUE="{@MEMTYPE}"/>
|
|
|
|
<xsl:variable name="is_locked_">
|
|
<xsl:if test="@IS_LOCKED = 'TRUE'">TRUE</xsl:if>
|
|
<xsl:if test="not(@IS_LOCKED) or not(@IS_LOCKED = 'TRUE')">FALSE</xsl:if>
|
|
</xsl:variable>
|
|
|
|
<xsl:variable name="baseAddrViewType_">
|
|
<xsl:choose>
|
|
<xsl:when test="$is_locked_='TRUE'">STATIC</xsl:when>
|
|
<xsl:otherwise>TEXTBOX</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:variable>
|
|
|
|
<xsl:if test="(@SIZEABRV and not(@SIZEABRV = 'U'))">
|
|
|
|
<xsl:variable name="baseAddr_"><xsl:value-of select="translate(@BASEVALUE,&HEXU2L;)"/></xsl:variable>
|
|
<xsl:variable name="highAddr_"><xsl:value-of select="translate(@HIGHVALUE,&HEXU2L;)"/></xsl:variable>
|
|
|
|
<VARIABLE VIEWTYPE="{$baseAddrViewType_}" VIEWDISP="Base Address" NAME="BASEVALUE" VALUE="{$baseAddr_}"/>
|
|
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="High Address" NAME="HIGHVALUE" VALUE="{$highAddr_}"/>
|
|
|
|
<xsl:if test="not(@MEMTYPE) or not(@MEMTYPE = 'BRIDGE')">
|
|
<VARIABLE VIEWTYPE="CHECKBOX" VIEWDISP="Lock" NAME="IS_LOCKED" VALUE="{$is_locked_}"/>
|
|
</xsl:if>
|
|
|
|
<xsl:if test="@MEMTYPE and (@MEMTYPE = 'BRIDGE') and not(@BRIDGE_TO)">
|
|
<VARIABLE VIEWTYPE="CHECKBOX" VIEWDISP="Lock" NAME="IS_LOCKED" VALUE="{$is_locked_}"/>
|
|
</xsl:if>
|
|
|
|
</xsl:if>
|
|
|
|
<xsl:if test="(@SIZEABRV and (@SIZEABRV = 'U'))">
|
|
<VARIABLE VIEWTYPE="TEXTBOX" VIEWDISP="Base Address" NAME="BASEVALUE" VALUE=""/>
|
|
</xsl:if>
|
|
|
|
|
|
<!--
|
|
Lock, DCache and ICache removed in 11.1
|
|
|
|
<xsl:if test="(@IS_CACHEABLE = 'TRUE')">
|
|
|
|
<xsl:variable name="is_dcached_">
|
|
<xsl:if test="(@IS_DCACHED = 'TRUE')">TRUE</xsl:if>
|
|
<xsl:if test="(not(@IS_DCACHED) or not(@IS_DCACHED = 'TRUE'))">FALSE</xsl:if>
|
|
</xsl:variable>
|
|
|
|
<xsl:variable name="is_icached_">
|
|
<xsl:if test="(@IS_ICACHED = 'TRUE')">TRUE</xsl:if>
|
|
<xsl:if test="(not(@IS_ICACHED) or not(@IS_ICACHED = 'TRUE'))">FALSE</xsl:if>
|
|
</xsl:variable>
|
|
|
|
<VARIABLE VIEWTYPE="CHECKBOX" VIEWDISP="DCache" NAME="IS_DCACHED" VALUE="{$is_dcached_}"/>
|
|
<VARIABLE VIEWTYPE="CHECKBOX" VIEWDISP="ICache" NAME="IS_ICACHED" VALUE="{$is_icached_}"/>
|
|
</xsl:if>
|
|
-->
|
|
|
|
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Base Name" NAME="BASENAME" VALUE="{@BASENAME}"/>
|
|
|
|
<xsl:variable name="sizeViewType_">
|
|
<xsl:choose>
|
|
<xsl:when test="(@SIZEABRV and (@SIZEABRV = 'U'))">DROPDOWN</xsl:when>
|
|
<xsl:when test="$is_locked_='TRUE'">STATIC</xsl:when>
|
|
<xsl:otherwise>DROPDOWN</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:variable>
|
|
|
|
<VARIABLE VIEWTYPE="{$sizeViewType_}" VIEWDISP="Size" NAME="SIZEABRV" VALUE="{@SIZEABRV}"/>
|
|
|
|
<xsl:variable name="valid_bifNames_">
|
|
<xsl:choose>
|
|
<xsl:when test="$nonProcMMap_/MEMRANGE[(@BASENAME = $baseName_) and (@HIGHNAME = $highName_)]/SLAVES">
|
|
<xsl:for-each select="$nonProcMMap_/MEMRANGE[(@BASENAME = $baseName_) and (@HIGHNAME = $highName_)]/SLAVES/SLAVE">
|
|
<xsl:variable name="bifName_" select="@BUSINTERFACE"/>
|
|
<!-- <xsl:message>Bif Name <xsl:value-of select="$bifName_"/> </xsl:message> -->
|
|
<xsl:variable name="modBifs_" select="$nonProcMod_/BUSINTERFACES"/>
|
|
<xsl:if test="$modBifs_/BUSINTERFACE[((@NAME = $bifName_) and not(@IS_VALID = 'FALSE') and not(@BUSNAME = '__NOC__'))]">
|
|
<xsl:variable name="busName_" select="$modBifs_/BUSINTERFACE[((@NAME = $bifName_) and not(@IS_VALID = 'FALSE') and not(@BUSNAME = '__NOC__'))]/@BUSNAME"/>
|
|
<xsl:if test="position() > 1">:</xsl:if><xsl:value-of select="@BUSINTERFACE"/>
|
|
</xsl:if>
|
|
</xsl:for-each>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:for-each select="$nonProcMMap_/MEMRANGE[(@BASENAME = $baseName_) and (@HIGHNAME = $highName_)]/SLVINTERFACES/BUSINTERFACE">
|
|
<xsl:variable name="bifName_" select="@NAME"/>
|
|
<xsl:variable name="modBifs_" select="$nonProcMod_"/>
|
|
<xsl:if test="$modBifs_/BUSINTERFACE[((@NAME = $bifName_) and not(@IS_VALID = 'FALSE') and not(@BUSNAME = '__NOC__'))]">
|
|
<xsl:variable name="busName_" select="$modBifs_/BUSINTERFACE[((@NAME = $bifName_) and not(@IS_VALID = 'FALSE') and not(@BUSNAME = '__NOC__'))]/@BUSNAME"/>
|
|
<xsl:if test="position() > 1">:</xsl:if><xsl:value-of select="@NAME"/>
|
|
</xsl:if>
|
|
</xsl:for-each>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:variable>
|
|
|
|
<xsl:variable name="def_bifNames_">
|
|
<xsl:choose>
|
|
<xsl:when test="(string-length($valid_bifNames_) < 1) or ((string-length($valid_bifNames_) = 1) and ($valid_bifNames_ = ':'))">Not Connected</xsl:when>
|
|
<xsl:when test="starts-with($valid_bifNames_,':')"><xsl:value-of select="substring-after($valid_bifNames_,':')"/></xsl:when>
|
|
<xsl:otherwise><xsl:value-of select="$valid_bifNames_"/></xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:variable>
|
|
|
|
|
|
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Bus Interface(s)" NAME="BIFNAMES" VALUE="{$def_bifNames_}"/>
|
|
|
|
<xsl:choose>
|
|
<xsl:when test="$nonProcMMap_/MEMRANGE[(@BASENAME = $baseName_) and (@HIGHNAME = $highName_)]/SLAVES">
|
|
<xsl:for-each select="$nonProcMMap_/MEMRANGE[(@BASENAME = $baseName_) and (@HIGHNAME = $highName_)]/SLAVES/SLAVE">
|
|
<xsl:variable name="slvBifName_" select="@BUSINTERFACE"/>
|
|
<xsl:variable name="modBifs_" select="$nonProcMod_/BUSINTERFACES"/>
|
|
<xsl:if test="count($modBifs_/BUSINTERFACE[((@NAME = $slvBifName_) and not(@IS_VALID = 'FALSE') and not(@BUSNAME = '__NOC__'))]) = 1">
|
|
<xsl:variable name="slvBusName_" select="$modBifs_/BUSINTERFACE[((@NAME = $slvBifName_) and not(@IS_VALID = 'FALSE') and not(@BUSNAME = '__NOC__'))]/@BUSNAME"/>
|
|
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Bus Name" NAME="BUSNAME" VALUE="{$slvBusName_}"/>
|
|
</xsl:if>
|
|
</xsl:for-each>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:for-each select="$nonProcMMap_/MEMRANGE[(@BASENAME = $baseName_) and (@HIGHNAME = $highName_)]/SLVINTERFACES/BUSINTERFACE">
|
|
<xsl:variable name="slvBifName_" select="@NAME"/>
|
|
<xsl:variable name="modBifs_" select="$nonProcMod_"/>
|
|
<xsl:if test="count($modBifs_/BUSINTERFACE[((@NAME = $slvBifName_) and not(@IS_VALID = 'FALSE') and not(@BUSNAME = '__NOC__'))]) = 1">
|
|
<xsl:variable name="slvBusName_" select="$modBifs_/BUSINTERFACE[((@NAME = $slvBifName_) and not(@IS_VALID = 'FALSE') and not(@BUSNAME = '__NOC__'))]/@BUSNAME"/>
|
|
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Bus Name" NAME="BUSNAME" VALUE="{$slvBusName_}"/>
|
|
</xsl:if>
|
|
</xsl:for-each>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
|
|
|
|
</SET> <!-- End of one non processor memory range row -->
|
|
</xsl:if>
|
|
|
|
</xsl:for-each> <!-- end of non processor memory ranges loop -->
|
|
|
|
</xsl:for-each> <!-- end of NONPROCADDRESS loop -->
|
|
|
|
</SET> <!-- End of non processor tree branch -->
|
|
|
|
</xsl:if> <!-- End of test to see if we have and non processor mapped address -->
|
|
|
|
</xsl:template>
|
|
|
|
|
|
<xsl:template name="__WRITE_VIEW_ADDRESS__">
|
|
|
|
<!--
|
|
-->
|
|
<xsl:for-each select="$G_SYS_MODS/MODULE[((@MODCLASS = 'PROCESSOR') and (MEMORYMAP/MEMRANGE[((not(@IS_VALID) or (@IS_VALID = 'TRUE')) and (ACCESSROUTE or (@IS_CONSTANT = 'TRUE')))]))]">
|
|
<xsl:sort data-type="number" select="@ROW_INDEX" order="ascending"/>
|
|
|
|
<xsl:variable name="procInst_" select="@INSTANCE"/>
|
|
<xsl:variable name="modClass_" select="@MODCLASS"/>
|
|
|
|
<xsl:variable name="procInstHdrVal_"><xsl:value-of select="$procInst_"/>'s Address Map</xsl:variable>
|
|
<xsl:variable name="procInstRowIdx_" select="position() - 1"/>
|
|
<xsl:variable name="modInstance_" select="self::node()"/>
|
|
|
|
<SET ID="{$procInst_}" CLASS="MODULE" ROW_INDEX="{$procInstRowIdx_}">
|
|
|
|
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Instance" NAME="INSTANCE" VALUE="{$procInstHdrVal_}"/>
|
|
|
|
<xsl:for-each select="$modInstance_/MEMORYMAP/MEMRANGE[((not(@IS_VALID) or (@IS_VALID = 'TRUE')) and (ACCESSROUTE or (@MEMTYPE = 'BRIDGE') or (@IS_CONSTANT = 'TRUE')))]">
|
|
<xsl:sort data-type="number" select="@BASEDECIMAL" order="ascending"/>
|
|
|
|
<xsl:variable name="addr_id_"><xsl:value-of select="@BASENAME"/>:<xsl:value-of select="@HIGHNAME"/></xsl:variable>
|
|
<xsl:variable name="baseName_" select="@BASENAME"/>
|
|
<xsl:variable name="highName_" select="@HIGHNAME"/>
|
|
|
|
<xsl:if test="$G_DEBUG='TRUE'">
|
|
<xsl:message>ADDRESS ID <xsl:value-of select="$addr_id_"/></xsl:message>
|
|
</xsl:if>
|
|
|
|
<xsl:variable name="set_id_">
|
|
<xsl:if test="(@INSTANCE)">
|
|
<xsl:value-of select="$procInst_"/>.<xsl:value-of select="@INSTANCE"/>:<xsl:value-of select="$addr_id_"/>
|
|
</xsl:if>
|
|
<xsl:if test="not(@INSTANCE)">
|
|
<xsl:value-of select="$procInst_"/>:<xsl:value-of select="$addr_id_"/>
|
|
</xsl:if>
|
|
</xsl:variable>
|
|
|
|
<xsl:variable name="procAddrRowIdx_" select="position() - 1"/>
|
|
<SET ID="{$set_id_}" CLASS="ADDRESS" ROW_INDEX="{$procAddrRowIdx_}">
|
|
|
|
<xsl:if test="(@INSTANCE)">
|
|
<xsl:variable name="instance_" select="@INSTANCE"/>
|
|
<xsl:variable name="subInstance_" select="$G_SYS_MODS/MODULE[(@INSTANCE = $instance_)]"/>
|
|
|
|
<xsl:variable name="inst_modtype_" select="$subInstance_/@MODTYPE"/>
|
|
<xsl:variable name="inst_viewicon_" select="$subInstance_/LICENSEINFO/@ICON_NAME"/>
|
|
<xsl:variable name="inst_hwversion_" select="$subInstance_/@HWVERSION"/>
|
|
|
|
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Instance" NAME="INSTANCE" VALUE="{$instance_}"/>
|
|
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="IP Type" NAME="MODTYPE" VALUE="{$inst_modtype_}" VIEWICON="{$inst_viewicon_}"/>
|
|
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="IP Version" NAME="HWVERSION" VALUE="{$inst_hwversion_}"/>
|
|
</xsl:if>
|
|
|
|
<xsl:if test="not(@INSTANCE)">
|
|
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Instance" NAME="INSTANCE" VALUE="{$modInstance_/@INSTANCE}"/>
|
|
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="IP Type" NAME="MODTYPE" VALUE="{$modInstance_/@MODTYPE}" VIEWICON="{$modInstance_/LICENSEINFO/@ICON_NAME}"/>
|
|
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="IP Version" NAME="HWVERSION" VALUE="{$modInstance_/@HWVERSION}"/>
|
|
</xsl:if>
|
|
|
|
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Address Type" NAME="MEMTYPE" VALUE="{@MEMTYPE}"/>
|
|
|
|
<xsl:variable name="instName_">
|
|
<xsl:choose>
|
|
<xsl:when test="@INSTANCE"><xsl:value-of select="@INSTANCE"/></xsl:when>
|
|
<xsl:otherwise>Connected<xsl:value-of select="$modInstance_/@INSTANCE"/></xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:variable>
|
|
<!--
|
|
<xsl:message>INST : <xsl:value-of select="$set_id_"/></xsl:message>
|
|
-->
|
|
|
|
<xsl:variable name="is_locked_">
|
|
<xsl:if test="@IS_LOCKED = 'TRUE'">TRUE</xsl:if>
|
|
<xsl:if test="not(@IS_LOCKED) or not(@IS_LOCKED = 'TRUE')">FALSE</xsl:if>
|
|
</xsl:variable>
|
|
|
|
<xsl:variable name="baseAddrViewType_">
|
|
<xsl:choose>
|
|
<xsl:when test="$is_locked_='TRUE'">STATIC</xsl:when>
|
|
<xsl:otherwise>TEXTBOX</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:variable>
|
|
|
|
<xsl:if test="(@SIZEABRV and not(@SIZEABRV = 'U'))">
|
|
<xsl:variable name="baseAddr_"><xsl:value-of select="translate(@BASEVALUE,&HEXU2L;)"/></xsl:variable>
|
|
<xsl:variable name="highAddr_"><xsl:value-of select="translate(@HIGHVALUE,&HEXU2L;)"/></xsl:variable>
|
|
<VARIABLE VIEWTYPE="{$baseAddrViewType_}" VIEWDISP="Base Address" NAME="BASEVALUE" VALUE="{$baseAddr_}"/>
|
|
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="High Address" NAME="HIGHVALUE" VALUE="{$highAddr_}"/>
|
|
|
|
<xsl:if test="not(@MEMTYPE) or not(@MEMTYPE = 'BRIDGE')">
|
|
<VARIABLE VIEWTYPE="CHECKBOX" VIEWDISP="Lock" NAME="IS_LOCKED" VALUE="{$is_locked_}"/>
|
|
</xsl:if>
|
|
|
|
<xsl:if test="@MEMTYPE and (@MEMTYPE = 'BRIDGE') and not(@BRIDGE_TO)">
|
|
<VARIABLE VIEWTYPE="CHECKBOX" VIEWDISP="Lock" NAME="IS_LOCKED" VALUE="{$is_locked_}"/>
|
|
</xsl:if>
|
|
|
|
</xsl:if>
|
|
|
|
<xsl:if test="(@SIZEABRV and (@SIZEABRV = 'U'))">
|
|
<VARIABLE VIEWTYPE="TEXTBOX" VIEWDISP="Base Address" NAME="BASEVALUE" VALUE=""/>
|
|
</xsl:if>
|
|
|
|
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Base Name" NAME="BASENAME" VALUE="{@BASENAME}"/>
|
|
|
|
<xsl:variable name="sizeViewType_">
|
|
<xsl:choose>
|
|
<xsl:when test="(@SIZEABRV and (@SIZEABRV = 'U'))">DROPDOWN</xsl:when>
|
|
<xsl:when test="$is_locked_='TRUE'">STATIC</xsl:when>
|
|
<xsl:otherwise>DROPDOWN</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:variable>
|
|
|
|
<VARIABLE VIEWTYPE="{$sizeViewType_}" VIEWDISP="Size" NAME="SIZEABRV" VALUE="{@SIZEABRV}"/>
|
|
|
|
<xsl:variable name="modInst_" select="$G_SYS_MODS/MODULE[(@INSTANCE = $instName_)]"/>
|
|
<xsl:variable name="modMemMap_" select="$modInst_/MEMORYMAP"/>
|
|
|
|
<xsl:variable name="valid_bifNames_">
|
|
<xsl:choose>
|
|
<xsl:when test="$modMemMap_/MEMRANGE[(@BASENAME = $baseName_) and (@HIGHNAME = $highName_)]/SLAVES">
|
|
<xsl:for-each select="$modMemMap_/MEMRANGE[(@BASENAME = $baseName_) and (@HIGHNAME = $highName_)]/SLAVES/SLAVE">
|
|
<xsl:variable name="bifName_" select="@BUSINTERFACE"/>
|
|
<!-- <xsl:message>Bif Name <xsl:value-of select="$bifName_"/> </xsl:message> -->
|
|
<xsl:variable name="modBifs_" select="$modInst_/BUSINTERFACES"/>
|
|
<xsl:if test="$modBifs_/BUSINTERFACE[((@NAME = $bifName_) and not(@IS_VALID = 'FALSE') and not(@BUSNAME = '__NOC__'))]">
|
|
<xsl:variable name="busName_" select="$modBifs_/BUSINTERFACE[((@NAME = $bifName_) and not(@IS_VALID = 'FALSE') and not(@BUSNAME = '__NOC__'))]/@BUSNAME"/>
|
|
<xsl:if test="position() > 1">:</xsl:if><xsl:value-of select="@BUSINTERFACE"/>
|
|
</xsl:if>
|
|
</xsl:for-each>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:for-each select="$modMemMap_/MEMRANGE[(@BASENAME = $baseName_) and (@HIGHNAME = $highName_)]/SLVINTERFACES/BUSINTERFACE">
|
|
<xsl:variable name="bifName_" select="@NAME"/>
|
|
<xsl:variable name="modBifs_" select="$modInst_"/>
|
|
<xsl:if test="$modBifs_/BUSINTERFACE[((@NAME = $bifName_) and not(@IS_VALID = 'FALSE') and not(@BUSNAME = '__NOC__'))]">
|
|
<xsl:variable name="busName_" select="$modBifs_/BUSINTERFACE[((@NAME = $bifName_) and not(@IS_VALID = 'FALSE') and not(@BUSNAME = '__NOC__'))]/@BUSNAME"/>
|
|
<xsl:if test="position() > 1">:</xsl:if><xsl:value-of select="@NAME"/>
|
|
</xsl:if>
|
|
</xsl:for-each>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:variable>
|
|
|
|
<!--
|
|
<xsl:message>Module Instances <xsl:value-of select="$instName_"/> </xsl:message>
|
|
<xsl:message>Base Name <xsl:value-of select="$baseName_"/> </xsl:message>
|
|
<xsl:message>High Name <xsl:value-of select="$highName_"/> </xsl:message>
|
|
<xsl:message>Valid bif names <xsl:value-of select="$valid_bifNames_"/> </xsl:message>
|
|
-->
|
|
|
|
|
|
<xsl:variable name="def_bifNames_">
|
|
<xsl:choose>
|
|
<xsl:when test="string-length($valid_bifNames_) < 1">
|
|
<xsl:choose>
|
|
<xsl:when test="$modClass_ = 'BUS'">Not Applicable</xsl:when>
|
|
<xsl:otherwise>Not Connected</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:when>
|
|
<xsl:when test="starts-with($valid_bifNames_,':')"><xsl:value-of select="substring-after($valid_bifNames_,':')"/></xsl:when>
|
|
<xsl:otherwise><xsl:value-of select="$valid_bifNames_"/></xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:variable>
|
|
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Bus Interface(s)" NAME="BIFNAMES" VALUE="{$def_bifNames_}"/>
|
|
|
|
<xsl:choose>
|
|
<xsl:when test="$modMemMap_/MEMRANGE[(@BASENAME = $baseName_) and (@HIGHNAME = $highName_)]/SLAVES">
|
|
<xsl:for-each select="$modMemMap_/MEMRANGE[(@BASENAME = $baseName_) and (@HIGHNAME = $highName_)]/SLAVES/SLAVE">
|
|
<xsl:variable name="bifName_" select="@BUSINTERFACE"/>
|
|
<xsl:variable name="modBifs_" select="$modInst_/BUSINTERFACES"/>
|
|
<xsl:if test="$modBifs_/BUSINTERFACE[((@NAME = $bifName_) and not(@IS_VALID = 'FALSE') and not(@BUSNAME = '__NOC__'))]">
|
|
<xsl:variable name="busName_" select="$modBifs_/BUSINTERFACE[((@NAME = $bifName_) and not(@IS_VALID = 'FALSE') and not(@BUSNAME = '__NOC__'))]/@BUSNAME"/>
|
|
<xsl:variable name="numBifs_" select="count($modBifs_/BUSINTERFACE[((@NAME = $bifName_) and not(@IS_VALID = 'FALSE') and not(@BUSNAME = '__NOC__'))])"/>
|
|
<xsl:if test="((position() = 1) or ($numBifs_ = 1))">
|
|
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Bus Name" NAME="BUSNAME" VALUE="{$busName_}"/>
|
|
</xsl:if>
|
|
</xsl:if>
|
|
</xsl:for-each>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:for-each select="$modMemMap_/MEMRANGE[(@BASENAME = $baseName_) and (@HIGHNAME = $highName_)]/SLVINTERFACES/BUSINTERFACE">
|
|
<xsl:variable name="bifName_" select="@NAME"/>
|
|
<xsl:variable name="modBifs_" select="$modInst_"/>
|
|
<xsl:if test="$modBifs_/BUSINTERFACE[((@NAME = $bifName_) and not(@IS_VALID = 'FALSE') and not(@BUSNAME = '__NOC__'))]">
|
|
<xsl:variable name="busName_" select="$modBifs_/BUSINTERFACE[((@NAME = $bifName_) and not(@IS_VALID = 'FALSE') and not(@BUSNAME = '__NOC__'))]/@BUSNAME"/>
|
|
<xsl:variable name="numBifs_" select="count($modBifs_/BUSINTERFACE[((@NAME = $bifName_) and not(@IS_VALID = 'FALSE') and not(@BUSNAME = '__NOC__'))])"/>
|
|
<xsl:if test="((position() = 1) or ($numBifs_ = 1))">
|
|
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Bus Name" NAME="BUSNAME" VALUE="{$busName_}"/>
|
|
</xsl:if>
|
|
</xsl:if>
|
|
</xsl:for-each>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
<!--
|
|
-->
|
|
</SET> <!-- End of one processor memory range row -->
|
|
</xsl:for-each> <!-- end of processor memory ranges loop -->
|
|
</SET>
|
|
</xsl:for-each> <!-- end of processor module address space loop -->
|
|
|
|
<!--
|
|
Add branch for valid address that are not part of a processor's
|
|
memory map. Usually modules that have just been added, but have
|
|
not been connected to a bus yet.
|
|
-->
|
|
|
|
<xsl:variable name="nonProcAddresses_">
|
|
|
|
<!-- Add a dummy non proc as a place holder. Otherwise the exsl:node-set test
|
|
Below complains if the variable is completely empty
|
|
-->
|
|
<NONPROCADDRESS INSTANCE="__DUMMY__" BASENAME="__DUMMY__" HIGHNAME="__DUMMY__" BASEDECIMAL="__DUMMY__"/>
|
|
|
|
<xsl:for-each select="$G_SYS_MODS/MODULE[(not(@MODCLASS = 'PROCESSOR') and (MEMORYMAP/MEMRANGE[((not(@IS_VALID) or (@IS_VALID = 'TRUE')) and (ACCESSROUTE or (@IS_CONSTANT = 'TRUE')))]))]">
|
|
<xsl:variable name="nonProcInst_" select="@INSTANCE"/>
|
|
|
|
<xsl:for-each select="MEMORYMAP/MEMRANGE[(not(@IS_VALID) or (@IS_VALID = 'TRUE'))]">
|
|
|
|
<xsl:variable name="highName_" select="@HIGHNAME"/>
|
|
<xsl:variable name="baseName_" select="@BASENAME"/>
|
|
<xsl:variable name="baseDecimal_" select="@BASEDECIMAL"/>
|
|
|
|
<xsl:if test="not($G_SYS_MODS/MODULE[(@MODCLASS = 'PROCESSOR')]/MEMORYMAP/MEMRANGE[((@INSTANCE = $nonProcInst_) and (@BASENAME = $baseName_) and (@HIGHNAME = $highName_))])">
|
|
<NONPROCADDRESS INSTANCE="{$nonProcInst_}" BASENAME="{$baseName_}" HIGHNAME="{$highName_}" BASEDECIMAL="{$baseDecimal_}"/>
|
|
</xsl:if>
|
|
</xsl:for-each>
|
|
</xsl:for-each>
|
|
|
|
</xsl:variable>
|
|
|
|
<!-- Add unmapped addresses -->
|
|
<xsl:variable name="hasUnMappedAddress">
|
|
<xsl:for-each select="$G_SYS_MODS/MODULE[(not(@MODCLASS = 'PROCESSOR') and (MEMORYMAP/MEMRANGE[(not(@IS_VALID) or (@IS_VALID = 'TRUE'))]))]">
|
|
<xsl:variable name="nonProcInst_" select="@INSTANCE"/>
|
|
<xsl:for-each select="MEMORYMAP/MEMRANGE[(not(@IS_VALID) or (@IS_VALID = 'TRUE'))]">
|
|
<xsl:variable name="highName_" select="@HIGHNAME"/>
|
|
<xsl:variable name="baseName_" select="@BASENAME"/>
|
|
<xsl:variable name="baseDecimal_" select="@BASEDECIMAL"/>
|
|
<xsl:if test="not($G_SYS_MODS/MODULE[(@MODCLASS = 'PROCESSOR')]/MEMORYMAP/MEMRANGE[((@INSTANCE = $nonProcInst_) and (@BASENAME = $baseName_) and (@HIGHNAME = $highName_))])"><xsl:value-of select="$nonProcInst_"/></xsl:if>
|
|
</xsl:for-each>
|
|
</xsl:for-each>
|
|
</xsl:variable>
|
|
|
|
<xsl:if test="string-length($hasUnMappedAddress) > 1">
|
|
|
|
<SET ID="Unmapped Addresses" CLASS="MODULE" ROW_INDEX="{$G_NUM_OF_PROCS_W_ADDRS}">
|
|
|
|
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Instance" NAME="INSTANCE" VALUE="Unmapped Addresses"/>
|
|
|
|
<xsl:for-each select="$G_SYS_MODS/MODULE[(not(@MODCLASS = 'PROCESSOR') and (MEMORYMAP/MEMRANGE[(not(@IS_VALID) or (@IS_VALID = 'TRUE'))]))]/MEMORYMAP/MEMRANGE[(not(@IS_VALID) or (@IS_VALID = 'TRUE'))]">
|
|
|
|
<xsl:variable name="nonProcMod_" select="../.."/>
|
|
<xsl:variable name="nonProcMMap_" select="$nonProcMod_/MEMORYMAP"/>
|
|
<xsl:variable name="instance_" select="$nonProcMod_/@INSTANCE"/>
|
|
|
|
<xsl:variable name="row_index_" select="position()"/>
|
|
<xsl:variable name="instName_" select="$nonProcMod_/@INSTANCE"/>
|
|
<xsl:variable name="highName_" select="@HIGHNAME"/>
|
|
<xsl:variable name="baseName_" select="@BASENAME"/>
|
|
<xsl:variable name="baseDecimal_" select="@BASEDECIMAL"/>
|
|
|
|
<xsl:for-each select="$nonProcMMap_/MEMRANGE[((@BASENAME = $baseName_) and (@HIGHNAME = $highName_))]">
|
|
|
|
<xsl:if test="not($G_SYS_MODS/MODULE[(@MODCLASS = 'PROCESSOR')]/MEMORYMAP/MEMRANGE[((@INSTANCE = $instName_) and (@BASENAME = $baseName_) and (@HIGHNAME = $highName_))])">
|
|
|
|
<xsl:variable name="addr_id_"><xsl:value-of select="$baseName_"/>:<xsl:value-of select="$highName_"/></xsl:variable>
|
|
<xsl:variable name="set_id_"><xsl:value-of select="$instName_"/>:<xsl:value-of select="$addr_id_"/></xsl:variable>
|
|
|
|
<xsl:variable name="inst_modtype_" select="$nonProcMod_/@MODTYPE"/>
|
|
<xsl:variable name="inst_viewicon_" select="$nonProcMod_/LICENSEINFO/@ICON_NAME"/>
|
|
<xsl:variable name="inst_modclass_" select="$nonProcMod_/@MODCLASS"/>
|
|
<xsl:variable name="inst_hwversion_" select="$nonProcMod_/@HWVERSION"/>
|
|
|
|
<SET ID="{$set_id_}" CLASS="ADDRESS">
|
|
|
|
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Instance" NAME="INSTANCE" VALUE="{$instance_}"/>
|
|
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="IP Type" NAME="MODTYPE" VALUE="{$inst_modtype_}" VIEWICON="{$inst_viewicon_}"/>
|
|
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="IP Version" NAME="HWVERSION" VALUE="{$inst_hwversion_}"/>
|
|
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Address Type" NAME="MEMTYPE" VALUE="{@MEMTYPE}"/>
|
|
|
|
<xsl:variable name="is_locked_">
|
|
<xsl:if test="@IS_LOCKED = 'TRUE'">TRUE</xsl:if>
|
|
<xsl:if test="not(@IS_LOCKED) or not(@IS_LOCKED = 'TRUE')">FALSE</xsl:if>
|
|
</xsl:variable>
|
|
|
|
<xsl:variable name="baseAddrViewType_">
|
|
<xsl:choose>
|
|
<xsl:when test="$is_locked_='TRUE'">STATIC</xsl:when>
|
|
<xsl:otherwise>TEXTBOX</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:variable>
|
|
|
|
<xsl:if test="(@SIZEABRV and not(@SIZEABRV = 'U'))">
|
|
|
|
<xsl:variable name="baseAddr_"><xsl:value-of select="translate(@BASEVALUE,&HEXU2L;)"/></xsl:variable>
|
|
<xsl:variable name="highAddr_"><xsl:value-of select="translate(@HIGHVALUE,&HEXU2L;)"/></xsl:variable>
|
|
|
|
<VARIABLE VIEWTYPE="{$baseAddrViewType_}" VIEWDISP="Base Address" NAME="BASEVALUE" VALUE="{$baseAddr_}"/>
|
|
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="High Address" NAME="HIGHVALUE" VALUE="{$highAddr_}"/>
|
|
|
|
<xsl:if test="not(@MEMTYPE) or not(@MEMTYPE = 'BRIDGE')">
|
|
<VARIABLE VIEWTYPE="CHECKBOX" VIEWDISP="Lock" NAME="IS_LOCKED" VALUE="{$is_locked_}"/>
|
|
</xsl:if>
|
|
|
|
<xsl:if test="@MEMTYPE and (@MEMTYPE = 'BRIDGE') and not(@BRIDGE_TO)">
|
|
<VARIABLE VIEWTYPE="CHECKBOX" VIEWDISP="Lock" NAME="IS_LOCKED" VALUE="{$is_locked_}"/>
|
|
</xsl:if>
|
|
|
|
</xsl:if>
|
|
|
|
<xsl:if test="(@SIZEABRV and (@SIZEABRV = 'U'))">
|
|
<VARIABLE VIEWTYPE="TEXTBOX" VIEWDISP="Base Address" NAME="BASEVALUE" VALUE=""/>
|
|
</xsl:if>
|
|
|
|
|
|
<!--
|
|
Lock, DCache and ICache removed in 11.1
|
|
|
|
<xsl:if test="(@IS_CACHEABLE = 'TRUE')">
|
|
|
|
<xsl:variable name="is_dcached_">
|
|
<xsl:if test="(@IS_DCACHED = 'TRUE')">TRUE</xsl:if>
|
|
<xsl:if test="(not(@IS_DCACHED) or not(@IS_DCACHED = 'TRUE'))">FALSE</xsl:if>
|
|
</xsl:variable>
|
|
|
|
<xsl:variable name="is_icached_">
|
|
<xsl:if test="(@IS_ICACHED = 'TRUE')">TRUE</xsl:if>
|
|
<xsl:if test="(not(@IS_ICACHED) or not(@IS_ICACHED = 'TRUE'))">FALSE</xsl:if>
|
|
</xsl:variable>
|
|
|
|
<VARIABLE VIEWTYPE="CHECKBOX" VIEWDISP="DCache" NAME="IS_DCACHED" VALUE="{$is_dcached_}"/>
|
|
<VARIABLE VIEWTYPE="CHECKBOX" VIEWDISP="ICache" NAME="IS_ICACHED" VALUE="{$is_icached_}"/>
|
|
</xsl:if>
|
|
-->
|
|
|
|
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Base Name" NAME="BASENAME" VALUE="{@BASENAME}"/>
|
|
|
|
<xsl:variable name="sizeViewType_">
|
|
<xsl:choose>
|
|
<xsl:when test="(@SIZEABRV and (@SIZEABRV = 'U'))">DROPDOWN</xsl:when>
|
|
<xsl:when test="$is_locked_='TRUE'">STATIC</xsl:when>
|
|
<xsl:otherwise>DROPDOWN</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:variable>
|
|
|
|
<VARIABLE VIEWTYPE="{$sizeViewType_}" VIEWDISP="Size" NAME="SIZEABRV" VALUE="{@SIZEABRV}"/>
|
|
|
|
<xsl:variable name="valid_bifNames_">
|
|
<xsl:choose>
|
|
<xsl:when test="$nonProcMMap_/MEMRANGE[(@BASENAME = $baseName_) and (@HIGHNAME = $highName_)]/SLAVES">
|
|
<xsl:for-each select="$nonProcMMap_/MEMRANGE[(@BASENAME = $baseName_) and (@HIGHNAME = $highName_)]/SLAVES/SLAVE">
|
|
<xsl:variable name="bifName_" select="@BUSINTERFACE"/>
|
|
<!-- <xsl:message>Bif Name <xsl:value-of select="$bifName_"/> </xsl:message> -->
|
|
<xsl:variable name="modBifs_" select="$nonProcMod_/BUSINTERFACES"/>
|
|
<xsl:if test="$modBifs_/BUSINTERFACE[((@NAME = $bifName_) and not(@IS_VALID = 'FALSE') and not(@BUSNAME = '__NOC__'))]">
|
|
<xsl:variable name="busName_" select="$modBifs_/BUSINTERFACE[((@NAME = $bifName_) and not(@IS_VALID = 'FALSE') and not(@BUSNAME = '__NOC__'))]/@BUSNAME"/>
|
|
<xsl:if test="position() > 1">:</xsl:if><xsl:value-of select="@BUSINTERFACE"/>
|
|
</xsl:if>
|
|
</xsl:for-each>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:for-each select="$nonProcMMap_/MEMRANGE[(@BASENAME = $baseName_) and (@HIGHNAME = $highName_)]/SLVINTERFACES/BUSINTERFACE">
|
|
<xsl:variable name="bifName_" select="@NAME"/>
|
|
<xsl:variable name="modBifs_" select="$nonProcMod_"/>
|
|
<xsl:if test="$modBifs_/BUSINTERFACE[((@NAME = $bifName_) and not(@IS_VALID = 'FALSE') and not(@BUSNAME = '__NOC__'))]">
|
|
<xsl:variable name="busName_" select="$modBifs_/BUSINTERFACE[((@NAME = $bifName_) and not(@IS_VALID = 'FALSE') and not(@BUSNAME = '__NOC__'))]/@BUSNAME"/>
|
|
<xsl:if test="position() > 1">:</xsl:if><xsl:value-of select="@NAME"/>
|
|
</xsl:if>
|
|
</xsl:for-each>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:variable>
|
|
|
|
<xsl:variable name="def_bifNames_">
|
|
<xsl:choose>
|
|
<xsl:when test="(string-length($valid_bifNames_) < 1) or ((string-length($valid_bifNames_) = 1) and ($valid_bifNames_ = ':'))">Not Connected</xsl:when>
|
|
<xsl:when test="starts-with($valid_bifNames_,':')"><xsl:value-of select="substring-after($valid_bifNames_,':')"/></xsl:when>
|
|
<xsl:otherwise><xsl:value-of select="$valid_bifNames_"/></xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:variable>
|
|
|
|
|
|
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Bus Interface(s)" NAME="BIFNAMES" VALUE="{$def_bifNames_}"/>
|
|
|
|
<xsl:choose>
|
|
<xsl:when test="$nonProcMMap_/MEMRANGE[(@BASENAME = $baseName_) and (@HIGHNAME = $highName_)]/SLAVES">
|
|
<xsl:for-each select="$nonProcMMap_/MEMRANGE[(@BASENAME = $baseName_) and (@HIGHNAME = $highName_)]/SLAVES/SLAVE">
|
|
<xsl:variable name="slvBifName_" select="@BUSINTERFACE"/>
|
|
<xsl:variable name="modBifs_" select="$nonProcMod_/BUSINTERFACES"/>
|
|
<xsl:if test="count($modBifs_/BUSINTERFACE[((@NAME = $slvBifName_) and not(@IS_VALID = 'FALSE') and not(@BUSNAME = '__NOC__'))]) = 1">
|
|
<xsl:variable name="slvBusName_" select="$modBifs_/BUSINTERFACE[((@NAME = $slvBifName_) and not(@IS_VALID = 'FALSE') and not(@BUSNAME = '__NOC__'))]/@BUSNAME"/>
|
|
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Bus Name" NAME="BUSNAME" VALUE="{$slvBusName_}"/>
|
|
</xsl:if>
|
|
</xsl:for-each>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:for-each select="$nonProcMMap_/MEMRANGE[(@BASENAME = $baseName_) and (@HIGHNAME = $highName_)]/SLVINTERFACES/BUSINTERFACE">
|
|
<xsl:variable name="slvBifName_" select="@NAME"/>
|
|
<xsl:variable name="modBifs_" select="$nonProcMod_"/>
|
|
<xsl:if test="count($modBifs_/BUSINTERFACE[((@NAME = $slvBifName_) and not(@IS_VALID = 'FALSE') and not(@BUSNAME = '__NOC__'))]) = 1">
|
|
<xsl:variable name="slvBusName_" select="$modBifs_/BUSINTERFACE[((@NAME = $slvBifName_) and not(@IS_VALID = 'FALSE') and not(@BUSNAME = '__NOC__'))]/@BUSNAME"/>
|
|
<VARIABLE VIEWTYPE="STATIC" VIEWDISP="Bus Name" NAME="BUSNAME" VALUE="{$slvBusName_}"/>
|
|
</xsl:if>
|
|
</xsl:for-each>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
|
|
|
|
</SET> <!-- End of one non processor memory range row -->
|
|
</xsl:if>
|
|
|
|
</xsl:for-each> <!-- end of non processor memory ranges loop -->
|
|
|
|
</xsl:for-each> <!-- end of NONPROCADDRESS loop -->
|
|
|
|
</SET> <!-- End of non processor tree branch -->
|
|
|
|
</xsl:if> <!-- End of test to see if we have and non processor mapped address -->
|
|
|
|
</xsl:template>
|
|
|
|
</xsl:stylesheet>
|
|
|