<?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 AMBA Advanced Peripheral Bus (APB 3.0)
//
// =============================================================================
-->
<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>AMBA3</ipxact:library>
   <ipxact:name>APB_rtl</ipxact:name>
   <ipxact:version>r1p0_4</ipxact:version>
   <ipxact:busType library="AMBA3" name="APB" vendor="amba.com" version="r1p0_4"/>
   <ipxact:extends library="AMBA2"
                   name="APB_rtl"
                   vendor="amba.com"
                   version="r2p0_4"/>
   <ipxact:ports>
      <ipxact:port>
         <ipxact:logicalName>PCLK</ipxact:logicalName>
         <ipxact:wire>
            <ipxact:qualifier>
               <ipxact:isClock>true</ipxact:isClock>
            </ipxact:qualifier>
            <ipxact:onSystem>
               <ipxact:group>apb_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>PRESETn</ipxact:logicalName>
         <ipxact:wire>
            <ipxact:qualifier>
               <ipxact:isReset>true</ipxact:isReset>
            </ipxact:qualifier>
            <ipxact:onSystem>
               <ipxact:group>apb_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>PCLKEN</ipxact:logicalName>
         <ipxact:wire>
            <ipxact:onSystem>
               <ipxact:group>apb_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>PADDR</ipxact:logicalName>
         <ipxact:wire>
            <ipxact:qualifier>
               <ipxact:isAddress>true</ipxact:isAddress>
            </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>PSELx</ipxact:logicalName>
         <ipxact:wire>
            <ipxact:onInitiator>
               <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>PENABLE</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>PWRITE</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>PRDATA</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>PWDATA</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>PREADY</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>out</ipxact:direction>
            </ipxact:onTarget>
         </ipxact:wire>
      </ipxact:port>
      <ipxact:port>
         <ipxact:logicalName>PSLVERR</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>out</ipxact:direction>
            </ipxact:onTarget>
         </ipxact:wire>
      </ipxact:port>
   </ipxact:ports>
</ipxact:abstractionDefinition>
