<?xml version="1.0" encoding="UTF-8"?>
<!--
// =============================================================================
// This confidential and proprietary software may be used only as
// authorised by a licensing agreement from ARM Limited
//   (C) COPYRIGHT 2006,2007 ARM Limited
//       ALL RIGHTS RESERVED
// The entire notice above must be reproduced on all authorised
// copies and copies may only be made to the extent permitted
// by a licensing agreement from ARM Limited.
//
// =============================================================================
//
// Purpose :
//           This defines the ARM High Speed Bus (AHB)
//
// =============================================================================
-->
<ipxact:abstractionDefinition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                              xmlns:ipxact="http://www.accellera.org/XMLSchema/IPXACT/1685-2022"
                              xsi:schemaLocation="http://www.accellera.org/XMLSchema/IPXACT/1685-2022 http://www.accellera.org/XMLSchema/IPXACT/1685-2022/index.xsd">
   <ipxact:vendor>amba.com</ipxact:vendor>
   <ipxact:library>AMBA2</ipxact:library>
   <ipxact:name>AHB_rtl</ipxact:name>
   <ipxact:version>r2p0_6</ipxact:version>
   <ipxact:busType library="AMBA2" name="AHB" vendor="amba.com" version="r2p0_6"/>
   <ipxact:extends library="AMBA3"
                   name="AHBLite_rtl"
                   vendor="amba.com"
                   version="r1p0_6"/>
   <ipxact:ports>
      <ipxact:port>
         <ipxact:logicalName>HCLK</ipxact:logicalName>
         <ipxact:wire>
            <ipxact:qualifier>
               <ipxact:isClock>true</ipxact:isClock>
            </ipxact:qualifier>
            <ipxact:onSystem>
               <ipxact:group>ahb_clk</ipxact:group>
               <ipxact:width>1</ipxact:width>
               <ipxact:direction>out</ipxact:direction>
            </ipxact:onSystem>
            <ipxact:onInitiator>
               <ipxact:width>1</ipxact:width>
               <ipxact:direction>in</ipxact:direction>
            </ipxact:onInitiator>
            <ipxact:onTarget>
               <ipxact:width>1</ipxact:width>
               <ipxact:direction>in</ipxact:direction>
            </ipxact:onTarget>
            <ipxact:requiresDriver driverType="clock">true</ipxact:requiresDriver>
         </ipxact:wire>
      </ipxact:port>
      <ipxact:port>
         <ipxact:logicalName>HRESETn</ipxact:logicalName>
         <ipxact:wire>
            <ipxact:qualifier>
               <ipxact:isReset>true</ipxact:isReset>
            </ipxact:qualifier>
            <ipxact:onSystem>
               <ipxact:group>ahb_reset</ipxact:group>
               <ipxact:width>1</ipxact:width>
               <ipxact:direction>out</ipxact:direction>
            </ipxact:onSystem>
            <ipxact:onInitiator>
               <ipxact:width>1</ipxact:width>
               <ipxact:direction>in</ipxact:direction>
            </ipxact:onInitiator>
            <ipxact:onTarget>
               <ipxact:width>1</ipxact:width>
               <ipxact:direction>in</ipxact:direction>
            </ipxact:onTarget>
            <ipxact:requiresDriver driverType="singleShot">true</ipxact:requiresDriver>
         </ipxact:wire>
      </ipxact:port>
      <ipxact:port>
         <ipxact:logicalName>HCLKEN</ipxact:logicalName>
         <ipxact:wire>
            <ipxact:onSystem>
               <ipxact:group>ahb_clk</ipxact:group>
               <ipxact:width>1</ipxact:width>
               <ipxact:direction>out</ipxact:direction>
            </ipxact:onSystem>
            <ipxact:onInitiator>
               <ipxact:width>1</ipxact:width>
               <ipxact:direction>in</ipxact:direction>
            </ipxact:onInitiator>
            <ipxact:onTarget>
               <ipxact:width>1</ipxact:width>
               <ipxact:direction>in</ipxact:direction>
            </ipxact:onTarget>
            <ipxact:defaultValue>1</ipxact:defaultValue>
         </ipxact:wire>
      </ipxact:port>
      <ipxact:port>
         <ipxact:logicalName>HADDR</ipxact:logicalName>
         <ipxact:wire>
            <ipxact:qualifier>
               <ipxact:isAddress>true</ipxact:isAddress>
            </ipxact:qualifier>
            <ipxact:onInitiator>
               <ipxact:width>32</ipxact:width>
               <ipxact:direction>out</ipxact:direction>
            </ipxact:onInitiator>
            <ipxact:onTarget>
               <ipxact:width>32</ipxact:width>
               <ipxact:direction>in</ipxact:direction>
            </ipxact:onTarget>
         </ipxact:wire>
      </ipxact:port>
      <ipxact:port>
         <ipxact:logicalName>HTRANS</ipxact:logicalName>
         <ipxact:wire>
            <ipxact:onInitiator>
               <ipxact:width>2</ipxact:width>
               <ipxact:direction>out</ipxact:direction>
            </ipxact:onInitiator>
            <ipxact:onTarget>
               <ipxact:width>2</ipxact:width>
               <ipxact:direction>in</ipxact:direction>
            </ipxact:onTarget>
         </ipxact:wire>
      </ipxact:port>
      <ipxact:port>
         <ipxact:logicalName>HWRITE</ipxact:logicalName>
         <ipxact:wire>
            <ipxact:onInitiator>
               <ipxact:width>1</ipxact:width>
               <ipxact:direction>out</ipxact:direction>
            </ipxact:onInitiator>
            <ipxact:onTarget>
               <ipxact:width>1</ipxact:width>
               <ipxact:direction>in</ipxact:direction>
            </ipxact:onTarget>
         </ipxact:wire>
      </ipxact:port>
      <ipxact:port>
         <ipxact:logicalName>HSIZE</ipxact:logicalName>
         <ipxact:wire>
            <ipxact:onInitiator>
               <ipxact:width>3</ipxact:width>
               <ipxact:direction>out</ipxact:direction>
            </ipxact:onInitiator>
            <ipxact:onTarget>
               <ipxact:width>3</ipxact:width>
               <ipxact:direction>in</ipxact:direction>
            </ipxact:onTarget>
         </ipxact:wire>
      </ipxact:port>
      <ipxact:port>
         <ipxact:logicalName>HBURST</ipxact:logicalName>
         <ipxact:wire>
            <ipxact:onInitiator>
               <ipxact:width>3</ipxact:width>
               <ipxact:direction>out</ipxact:direction>
            </ipxact:onInitiator>
            <ipxact:onTarget>
               <ipxact:width>3</ipxact:width>
               <ipxact:direction>in</ipxact:direction>
            </ipxact:onTarget>
         </ipxact:wire>
      </ipxact:port>
      <ipxact:port>
         <ipxact:logicalName>HPROT</ipxact:logicalName>
         <ipxact:wire>
            <ipxact:onInitiator>
               <ipxact:direction>out</ipxact:direction>
            </ipxact:onInitiator>
            <ipxact:onTarget>
               <ipxact:direction>in</ipxact:direction>
            </ipxact:onTarget>
         </ipxact:wire>
      </ipxact:port>
      <ipxact:port>
         <ipxact:logicalName>HWDATA</ipxact:logicalName>
         <ipxact:wire>
            <ipxact:qualifier>
               <ipxact:isData>true</ipxact:isData>
            </ipxact:qualifier>
            <ipxact:onInitiator>
               <ipxact:direction>out</ipxact:direction>
            </ipxact:onInitiator>
            <ipxact:onTarget>
               <ipxact:direction>in</ipxact:direction>
            </ipxact:onTarget>
         </ipxact:wire>
      </ipxact:port>
      <ipxact:port>
         <ipxact:logicalName>HSELx</ipxact:logicalName>
         <ipxact:wire>
            <ipxact:onInitiator>
               <ipxact:presence>illegal</ipxact:presence>
            </ipxact:onInitiator>
            <ipxact:onTarget>
               <ipxact:width>1</ipxact:width>
               <ipxact:direction>in</ipxact:direction>
            </ipxact:onTarget>
         </ipxact:wire>
      </ipxact:port>
      <ipxact:port>
         <ipxact:logicalName>HRDATA</ipxact:logicalName>
         <ipxact:wire>
            <ipxact:qualifier>
               <ipxact:isData>true</ipxact:isData>
            </ipxact:qualifier>
            <ipxact:onInitiator>
               <ipxact:direction>in</ipxact:direction>
            </ipxact:onInitiator>
            <ipxact:onTarget>
               <ipxact:direction>out</ipxact:direction>
            </ipxact:onTarget>
         </ipxact:wire>
      </ipxact:port>
      <ipxact:port>
         <ipxact:logicalName>HREADY</ipxact:logicalName>
         <ipxact:wire>
            <ipxact:onInitiator>
               <ipxact:width>1</ipxact:width>
               <ipxact:direction>in</ipxact:direction>
            </ipxact:onInitiator>
            <ipxact:onTarget>
               <ipxact:width>1</ipxact:width>
               <ipxact:direction>in</ipxact:direction>
            </ipxact:onTarget>
         </ipxact:wire>
      </ipxact:port>
      <ipxact:port>
         <ipxact:logicalName>HREADYOUT</ipxact:logicalName>
         <ipxact:wire>
            <ipxact:onInitiator>
               <ipxact:presence>illegal</ipxact:presence>
            </ipxact:onInitiator>
            <ipxact:onTarget>
               <ipxact:width>1</ipxact:width>
               <ipxact:direction>out</ipxact:direction>
            </ipxact:onTarget>
         </ipxact:wire>
      </ipxact:port>
      <ipxact:port>
         <ipxact:logicalName>HRESP</ipxact:logicalName>
         <ipxact:wire>
            <ipxact:onInitiator>
               <ipxact:direction>in</ipxact:direction>
            </ipxact:onInitiator>
            <ipxact:onTarget>
               <ipxact:direction>out</ipxact:direction>
            </ipxact:onTarget>
         </ipxact:wire>
      </ipxact:port>
      <ipxact:port>
         <ipxact:logicalName>HBUSREQx</ipxact:logicalName>
         <ipxact:wire>
            <ipxact:onInitiator>
               <ipxact:width>1</ipxact:width>
               <ipxact:direction>out</ipxact:direction>
            </ipxact:onInitiator>
            <ipxact:onTarget>
               <ipxact:presence>illegal</ipxact:presence>
            </ipxact:onTarget>
         </ipxact:wire>
      </ipxact:port>
      <ipxact:port>
         <ipxact:logicalName>HLOCKx</ipxact:logicalName>
         <ipxact:wire>
            <ipxact:onInitiator>
               <ipxact:width>1</ipxact:width>
               <ipxact:direction>out</ipxact:direction>
            </ipxact:onInitiator>
            <ipxact:onTarget>
               <ipxact:presence>illegal</ipxact:presence>
            </ipxact:onTarget>
         </ipxact:wire>
      </ipxact:port>
      <ipxact:port>
         <ipxact:logicalName>HGRANTx</ipxact:logicalName>
         <ipxact:wire>
            <ipxact:onInitiator>
               <ipxact:width>1</ipxact:width>
               <ipxact:direction>in</ipxact:direction>
            </ipxact:onInitiator>
            <ipxact:onTarget>
               <ipxact:presence>illegal</ipxact:presence>
            </ipxact:onTarget>
         </ipxact:wire>
      </ipxact:port>
      <ipxact:port>
         <ipxact:logicalName>HMASTER</ipxact:logicalName>
         <ipxact:wire>
            <ipxact:onInitiator>
               <ipxact:presence>illegal</ipxact:presence>
            </ipxact:onInitiator>
            <ipxact:onTarget>
               <ipxact:width>4</ipxact:width>
               <ipxact:direction>in</ipxact:direction>
            </ipxact:onTarget>
         </ipxact:wire>
      </ipxact:port>
      <ipxact:port>
         <ipxact:logicalName>HMASTLOCK</ipxact:logicalName>
         <ipxact:wire>
            <ipxact:onInitiator>
               <ipxact:presence>illegal</ipxact:presence>
            </ipxact:onInitiator>
            <ipxact:onTarget>
               <ipxact:width>1</ipxact:width>
               <ipxact:direction>in</ipxact:direction>
            </ipxact:onTarget>
         </ipxact:wire>
      </ipxact:port>
      <ipxact:port>
         <ipxact:logicalName>HSPLITx</ipxact:logicalName>
         <ipxact:wire>
            <ipxact:onInitiator>
               <ipxact:presence>illegal</ipxact:presence>
            </ipxact:onInitiator>
            <ipxact:onTarget>
               <ipxact:width>16</ipxact:width>
               <ipxact:direction>out</ipxact:direction>
            </ipxact:onTarget>
         </ipxact:wire>
      </ipxact:port>
   </ipxact:ports>
</ipxact:abstractionDefinition>
