<?xml version="1.0" encoding="UTF-8"?>
<!-- cv_gemv_axi: IEEE 1685-2014 component. Corvel / RISCON Labs. Generated by integration/scripts/gen_ipxact.py. -->
<!-- AMBA bus definition VLNVs were not verified against the official AMBA IP-XACT definition files (not downloaded in this round); they match the VLNVs used by a publicly available third-party IEEE 1685-2014 component. Confirm against the licensed AMBA library. -->
<ipxact:component xmlns:ipxact="http://www.accellera.org/XMLSchema/IPXACT/1685-2014" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.accellera.org/XMLSchema/IPXACT/1685-2014 http://www.accellera.org/XMLSchema/IPXACT/1685-2014/index.xsd">
  <ipxact:vendor>risconlabs.com</ipxact:vendor>
  <ipxact:library>corvel</ipxact:library>
  <ipxact:name>cv_gemv_axi</ipxact:name>
  <ipxact:version>1.0.0</ipxact:version>
  <ipxact:busInterfaces>
    <ipxact:busInterface>
      <ipxact:name>s_axil</ipxact:name>
      <ipxact:description>AXI4-Lite slave: control, status and memory-mapped registers.</ipxact:description>
      <ipxact:busType vendor="amba.com" library="AMBA4" name="AXI4-Lite" version="r0p0"/>
      <ipxact:abstractionTypes>
        <ipxact:abstractionType>
          <ipxact:abstractionRef vendor="amba.com" library="AMBA4" name="AXI4-Lite_rtl" version="r0p0"/>
          <ipxact:portMaps>
            <ipxact:portMap>
              <ipxact:logicalPort>
                <ipxact:name>ACLK</ipxact:name>
              </ipxact:logicalPort>
              <ipxact:physicalPort>
                <ipxact:name>aclk</ipxact:name>
              </ipxact:physicalPort>
            </ipxact:portMap>
            <ipxact:portMap>
              <ipxact:logicalPort>
                <ipxact:name>ARESETn</ipxact:name>
              </ipxact:logicalPort>
              <ipxact:physicalPort>
                <ipxact:name>aresetn</ipxact:name>
              </ipxact:physicalPort>
            </ipxact:portMap>
            <ipxact:portMap>
              <ipxact:logicalPort>
                <ipxact:name>AWADDR</ipxact:name>
              </ipxact:logicalPort>
              <ipxact:physicalPort>
                <ipxact:name>s_axil_awaddr</ipxact:name>
              </ipxact:physicalPort>
            </ipxact:portMap>
            <ipxact:portMap>
              <ipxact:logicalPort>
                <ipxact:name>AWPROT</ipxact:name>
              </ipxact:logicalPort>
              <ipxact:physicalPort>
                <ipxact:name>s_axil_awprot</ipxact:name>
              </ipxact:physicalPort>
            </ipxact:portMap>
            <ipxact:portMap>
              <ipxact:logicalPort>
                <ipxact:name>AWVALID</ipxact:name>
              </ipxact:logicalPort>
              <ipxact:physicalPort>
                <ipxact:name>s_axil_awvalid</ipxact:name>
              </ipxact:physicalPort>
            </ipxact:portMap>
            <ipxact:portMap>
              <ipxact:logicalPort>
                <ipxact:name>AWREADY</ipxact:name>
              </ipxact:logicalPort>
              <ipxact:physicalPort>
                <ipxact:name>s_axil_awready</ipxact:name>
              </ipxact:physicalPort>
            </ipxact:portMap>
            <ipxact:portMap>
              <ipxact:logicalPort>
                <ipxact:name>WDATA</ipxact:name>
              </ipxact:logicalPort>
              <ipxact:physicalPort>
                <ipxact:name>s_axil_wdata</ipxact:name>
              </ipxact:physicalPort>
            </ipxact:portMap>
            <ipxact:portMap>
              <ipxact:logicalPort>
                <ipxact:name>WSTRB</ipxact:name>
              </ipxact:logicalPort>
              <ipxact:physicalPort>
                <ipxact:name>s_axil_wstrb</ipxact:name>
              </ipxact:physicalPort>
            </ipxact:portMap>
            <ipxact:portMap>
              <ipxact:logicalPort>
                <ipxact:name>WVALID</ipxact:name>
              </ipxact:logicalPort>
              <ipxact:physicalPort>
                <ipxact:name>s_axil_wvalid</ipxact:name>
              </ipxact:physicalPort>
            </ipxact:portMap>
            <ipxact:portMap>
              <ipxact:logicalPort>
                <ipxact:name>WREADY</ipxact:name>
              </ipxact:logicalPort>
              <ipxact:physicalPort>
                <ipxact:name>s_axil_wready</ipxact:name>
              </ipxact:physicalPort>
            </ipxact:portMap>
            <ipxact:portMap>
              <ipxact:logicalPort>
                <ipxact:name>BRESP</ipxact:name>
              </ipxact:logicalPort>
              <ipxact:physicalPort>
                <ipxact:name>s_axil_bresp</ipxact:name>
              </ipxact:physicalPort>
            </ipxact:portMap>
            <ipxact:portMap>
              <ipxact:logicalPort>
                <ipxact:name>BVALID</ipxact:name>
              </ipxact:logicalPort>
              <ipxact:physicalPort>
                <ipxact:name>s_axil_bvalid</ipxact:name>
              </ipxact:physicalPort>
            </ipxact:portMap>
            <ipxact:portMap>
              <ipxact:logicalPort>
                <ipxact:name>BREADY</ipxact:name>
              </ipxact:logicalPort>
              <ipxact:physicalPort>
                <ipxact:name>s_axil_bready</ipxact:name>
              </ipxact:physicalPort>
            </ipxact:portMap>
            <ipxact:portMap>
              <ipxact:logicalPort>
                <ipxact:name>ARADDR</ipxact:name>
              </ipxact:logicalPort>
              <ipxact:physicalPort>
                <ipxact:name>s_axil_araddr</ipxact:name>
              </ipxact:physicalPort>
            </ipxact:portMap>
            <ipxact:portMap>
              <ipxact:logicalPort>
                <ipxact:name>ARPROT</ipxact:name>
              </ipxact:logicalPort>
              <ipxact:physicalPort>
                <ipxact:name>s_axil_arprot</ipxact:name>
              </ipxact:physicalPort>
            </ipxact:portMap>
            <ipxact:portMap>
              <ipxact:logicalPort>
                <ipxact:name>ARVALID</ipxact:name>
              </ipxact:logicalPort>
              <ipxact:physicalPort>
                <ipxact:name>s_axil_arvalid</ipxact:name>
              </ipxact:physicalPort>
            </ipxact:portMap>
            <ipxact:portMap>
              <ipxact:logicalPort>
                <ipxact:name>ARREADY</ipxact:name>
              </ipxact:logicalPort>
              <ipxact:physicalPort>
                <ipxact:name>s_axil_arready</ipxact:name>
              </ipxact:physicalPort>
            </ipxact:portMap>
            <ipxact:portMap>
              <ipxact:logicalPort>
                <ipxact:name>RDATA</ipxact:name>
              </ipxact:logicalPort>
              <ipxact:physicalPort>
                <ipxact:name>s_axil_rdata</ipxact:name>
              </ipxact:physicalPort>
            </ipxact:portMap>
            <ipxact:portMap>
              <ipxact:logicalPort>
                <ipxact:name>RRESP</ipxact:name>
              </ipxact:logicalPort>
              <ipxact:physicalPort>
                <ipxact:name>s_axil_rresp</ipxact:name>
              </ipxact:physicalPort>
            </ipxact:portMap>
            <ipxact:portMap>
              <ipxact:logicalPort>
                <ipxact:name>RVALID</ipxact:name>
              </ipxact:logicalPort>
              <ipxact:physicalPort>
                <ipxact:name>s_axil_rvalid</ipxact:name>
              </ipxact:physicalPort>
            </ipxact:portMap>
            <ipxact:portMap>
              <ipxact:logicalPort>
                <ipxact:name>RREADY</ipxact:name>
              </ipxact:logicalPort>
              <ipxact:physicalPort>
                <ipxact:name>s_axil_rready</ipxact:name>
              </ipxact:physicalPort>
            </ipxact:portMap>
          </ipxact:portMaps>
        </ipxact:abstractionType>
      </ipxact:abstractionTypes>
      <ipxact:slave>
        <ipxact:memoryMapRef memoryMapRef="regs"/>
      </ipxact:slave>
    </ipxact:busInterface>
    <ipxact:busInterface>
      <ipxact:name>s_axis</ipxact:name>
      <ipxact:description>Load port: TDATA[31:0], TDEST[1:0] (0 weights, 1 metadata, 2 query, 3 invalid), TLAST ends a packet.</ipxact:description>
      <ipxact:busType vendor="amba.com" library="AMBA4" name="AXI4Stream" version="r0p0"/>
      <ipxact:abstractionTypes>
        <ipxact:abstractionType>
          <ipxact:abstractionRef vendor="amba.com" library="AMBA4" name="AXI4Stream_rtl" version="r0p0"/>
          <ipxact:portMaps>
            <ipxact:portMap>
              <ipxact:logicalPort>
                <ipxact:name>ACLK</ipxact:name>
              </ipxact:logicalPort>
              <ipxact:physicalPort>
                <ipxact:name>aclk</ipxact:name>
              </ipxact:physicalPort>
            </ipxact:portMap>
            <ipxact:portMap>
              <ipxact:logicalPort>
                <ipxact:name>ARESETn</ipxact:name>
              </ipxact:logicalPort>
              <ipxact:physicalPort>
                <ipxact:name>aresetn</ipxact:name>
              </ipxact:physicalPort>
            </ipxact:portMap>
            <ipxact:portMap>
              <ipxact:logicalPort>
                <ipxact:name>TVALID</ipxact:name>
              </ipxact:logicalPort>
              <ipxact:physicalPort>
                <ipxact:name>s_axis_tvalid</ipxact:name>
              </ipxact:physicalPort>
            </ipxact:portMap>
            <ipxact:portMap>
              <ipxact:logicalPort>
                <ipxact:name>TREADY</ipxact:name>
              </ipxact:logicalPort>
              <ipxact:physicalPort>
                <ipxact:name>s_axis_tready</ipxact:name>
              </ipxact:physicalPort>
            </ipxact:portMap>
            <ipxact:portMap>
              <ipxact:logicalPort>
                <ipxact:name>TDATA</ipxact:name>
              </ipxact:logicalPort>
              <ipxact:physicalPort>
                <ipxact:name>s_axis_tdata</ipxact:name>
              </ipxact:physicalPort>
            </ipxact:portMap>
            <ipxact:portMap>
              <ipxact:logicalPort>
                <ipxact:name>TDEST</ipxact:name>
              </ipxact:logicalPort>
              <ipxact:physicalPort>
                <ipxact:name>s_axis_tdest</ipxact:name>
              </ipxact:physicalPort>
            </ipxact:portMap>
            <ipxact:portMap>
              <ipxact:logicalPort>
                <ipxact:name>TLAST</ipxact:name>
              </ipxact:logicalPort>
              <ipxact:physicalPort>
                <ipxact:name>s_axis_tlast</ipxact:name>
              </ipxact:physicalPort>
            </ipxact:portMap>
          </ipxact:portMaps>
        </ipxact:abstractionType>
      </ipxact:abstractionTypes>
      <ipxact:slave/>
    </ipxact:busInterface>
    <ipxact:busInterface>
      <ipxact:name>m_axis</ipxact:name>
      <ipxact:description>Result rows in row order, one signed 32-bit row per beat, TLAST on the last row.</ipxact:description>
      <ipxact:busType vendor="amba.com" library="AMBA4" name="AXI4Stream" version="r0p0"/>
      <ipxact:abstractionTypes>
        <ipxact:abstractionType>
          <ipxact:abstractionRef vendor="amba.com" library="AMBA4" name="AXI4Stream_rtl" version="r0p0"/>
          <ipxact:portMaps>
            <ipxact:portMap>
              <ipxact:logicalPort>
                <ipxact:name>ACLK</ipxact:name>
              </ipxact:logicalPort>
              <ipxact:physicalPort>
                <ipxact:name>aclk</ipxact:name>
              </ipxact:physicalPort>
            </ipxact:portMap>
            <ipxact:portMap>
              <ipxact:logicalPort>
                <ipxact:name>ARESETn</ipxact:name>
              </ipxact:logicalPort>
              <ipxact:physicalPort>
                <ipxact:name>aresetn</ipxact:name>
              </ipxact:physicalPort>
            </ipxact:portMap>
            <ipxact:portMap>
              <ipxact:logicalPort>
                <ipxact:name>TVALID</ipxact:name>
              </ipxact:logicalPort>
              <ipxact:physicalPort>
                <ipxact:name>m_axis_tvalid</ipxact:name>
              </ipxact:physicalPort>
            </ipxact:portMap>
            <ipxact:portMap>
              <ipxact:logicalPort>
                <ipxact:name>TREADY</ipxact:name>
              </ipxact:logicalPort>
              <ipxact:physicalPort>
                <ipxact:name>m_axis_tready</ipxact:name>
              </ipxact:physicalPort>
            </ipxact:portMap>
            <ipxact:portMap>
              <ipxact:logicalPort>
                <ipxact:name>TDATA</ipxact:name>
              </ipxact:logicalPort>
              <ipxact:physicalPort>
                <ipxact:name>m_axis_tdata</ipxact:name>
              </ipxact:physicalPort>
            </ipxact:portMap>
            <ipxact:portMap>
              <ipxact:logicalPort>
                <ipxact:name>TLAST</ipxact:name>
              </ipxact:logicalPort>
              <ipxact:physicalPort>
                <ipxact:name>m_axis_tlast</ipxact:name>
              </ipxact:physicalPort>
            </ipxact:portMap>
          </ipxact:portMaps>
        </ipxact:abstractionType>
      </ipxact:abstractionTypes>
      <ipxact:master/>
    </ipxact:busInterface>
  </ipxact:busInterfaces>
  <ipxact:memoryMaps>
    <ipxact:memoryMap>
      <ipxact:name>regs</ipxact:name>
      <ipxact:addressBlock>
        <ipxact:name>registers</ipxact:name>
        <ipxact:baseAddress>0x0</ipxact:baseAddress>
        <ipxact:range>4096</ipxact:range>
        <ipxact:width>32</ipxact:width>
        <ipxact:usage>register</ipxact:usage>
        <ipxact:register>
          <ipxact:name>ID</ipxact:name>
          <ipxact:description>Identification, ASCII "CVGM".</ipxact:description>
          <ipxact:addressOffset>0x0</ipxact:addressOffset>
          <ipxact:size>32</ipxact:size>
          <ipxact:volatile>false</ipxact:volatile>
          <ipxact:access>read-only</ipxact:access>
          <ipxact:field>
            <ipxact:name>ID</ipxact:name>
            <ipxact:description>Constant.</ipxact:description>
            <ipxact:bitOffset>0</ipxact:bitOffset>
            <ipxact:resets>
              <ipxact:reset>
                <ipxact:value>0x4356474D</ipxact:value>
              </ipxact:reset>
            </ipxact:resets>
            <ipxact:bitWidth>32</ipxact:bitWidth>
            <ipxact:access>read-only</ipxact:access>
          </ipxact:field>
        </ipxact:register>
        <ipxact:register>
          <ipxact:name>VERSION</ipxact:name>
          <ipxact:description>Wrapper version 1.0.0.</ipxact:description>
          <ipxact:addressOffset>0x4</ipxact:addressOffset>
          <ipxact:size>32</ipxact:size>
          <ipxact:volatile>false</ipxact:volatile>
          <ipxact:access>read-only</ipxact:access>
          <ipxact:field>
            <ipxact:name>MAJOR</ipxact:name>
            <ipxact:bitOffset>16</ipxact:bitOffset>
            <ipxact:resets>
              <ipxact:reset>
                <ipxact:value>0x00000001</ipxact:value>
              </ipxact:reset>
            </ipxact:resets>
            <ipxact:bitWidth>16</ipxact:bitWidth>
            <ipxact:access>read-only</ipxact:access>
          </ipxact:field>
          <ipxact:field>
            <ipxact:name>MINOR</ipxact:name>
            <ipxact:bitOffset>8</ipxact:bitOffset>
            <ipxact:resets>
              <ipxact:reset>
                <ipxact:value>0x00000000</ipxact:value>
              </ipxact:reset>
            </ipxact:resets>
            <ipxact:bitWidth>8</ipxact:bitWidth>
            <ipxact:access>read-only</ipxact:access>
          </ipxact:field>
          <ipxact:field>
            <ipxact:name>PATCH</ipxact:name>
            <ipxact:bitOffset>0</ipxact:bitOffset>
            <ipxact:resets>
              <ipxact:reset>
                <ipxact:value>0x00000000</ipxact:value>
              </ipxact:reset>
            </ipxact:resets>
            <ipxact:bitWidth>8</ipxact:bitWidth>
            <ipxact:access>read-only</ipxact:access>
          </ipxact:field>
        </ipxact:register>
        <ipxact:register>
          <ipxact:name>PARAM_ROWS</ipxact:name>
          <ipxact:description>Parameter ROWS.</ipxact:description>
          <ipxact:addressOffset>0x8</ipxact:addressOffset>
          <ipxact:size>32</ipxact:size>
          <ipxact:volatile>true</ipxact:volatile>
          <ipxact:access>read-only</ipxact:access>
          <ipxact:field>
            <ipxact:name>ROWS</ipxact:name>
            <ipxact:bitOffset>0</ipxact:bitOffset>
            <ipxact:resets>
              <ipxact:reset>
                <ipxact:value>ROWS</ipxact:value>
              </ipxact:reset>
            </ipxact:resets>
            <ipxact:bitWidth>32</ipxact:bitWidth>
            <ipxact:access>read-only</ipxact:access>
          </ipxact:field>
        </ipxact:register>
        <ipxact:register>
          <ipxact:name>PARAM_COLS</ipxact:name>
          <ipxact:description>Parameter COLS.</ipxact:description>
          <ipxact:addressOffset>0xC</ipxact:addressOffset>
          <ipxact:size>32</ipxact:size>
          <ipxact:volatile>true</ipxact:volatile>
          <ipxact:access>read-only</ipxact:access>
          <ipxact:field>
            <ipxact:name>COLS</ipxact:name>
            <ipxact:bitOffset>0</ipxact:bitOffset>
            <ipxact:resets>
              <ipxact:reset>
                <ipxact:value>COLS</ipxact:value>
              </ipxact:reset>
            </ipxact:resets>
            <ipxact:bitWidth>32</ipxact:bitWidth>
            <ipxact:access>read-only</ipxact:access>
          </ipxact:field>
        </ipxact:register>
        <ipxact:register>
          <ipxact:name>PARAM_CFG</ipxact:name>
          <ipxact:description>Parameters P and RESULT_STREAM. Bit 16 is an implementation configuration flag documented in the evaluation-licence register map.</ipxact:description>
          <ipxact:addressOffset>0x10</ipxact:addressOffset>
          <ipxact:size>32</ipxact:size>
          <ipxact:volatile>true</ipxact:volatile>
          <ipxact:access>read-only</ipxact:access>
          <ipxact:field>
            <ipxact:name>P</ipxact:name>
            <ipxact:description>Row engines (8 lanes each).</ipxact:description>
            <ipxact:bitOffset>0</ipxact:bitOffset>
            <ipxact:resets>
              <ipxact:reset>
                <ipxact:value>P</ipxact:value>
              </ipxact:reset>
            </ipxact:resets>
            <ipxact:bitWidth>16</ipxact:bitWidth>
            <ipxact:access>read-only</ipxact:access>
          </ipxact:field>
          <ipxact:field>
            <ipxact:name>RESULT_STREAM</ipxact:name>
            <ipxact:description>1: m_axis result stream present.</ipxact:description>
            <ipxact:bitOffset>17</ipxact:bitOffset>
            <ipxact:resets>
              <ipxact:reset>
                <ipxact:value>RESULT_STREAM</ipxact:value>
              </ipxact:reset>
            </ipxact:resets>
            <ipxact:bitWidth>1</ipxact:bitWidth>
            <ipxact:access>read-only</ipxact:access>
          </ipxact:field>
        </ipxact:register>
        <ipxact:register>
          <ipxact:name>PARAM_BEATS</ipxact:name>
          <ipxact:description>AXI4-Stream beats per memory word.</ipxact:description>
          <ipxact:addressOffset>0x14</ipxact:addressOffset>
          <ipxact:size>32</ipxact:size>
          <ipxact:volatile>true</ipxact:volatile>
          <ipxact:access>read-only</ipxact:access>
          <ipxact:field>
            <ipxact:name>WEIGHT_BEATS</ipxact:name>
            <ipxact:description>Beats per P*32-bit weight word.</ipxact:description>
            <ipxact:bitOffset>0</ipxact:bitOffset>
            <ipxact:resets>
              <ipxact:reset>
                <ipxact:value>P</ipxact:value>
              </ipxact:reset>
            </ipxact:resets>
            <ipxact:bitWidth>8</ipxact:bitWidth>
            <ipxact:access>read-only</ipxact:access>
          </ipxact:field>
          <ipxact:field>
            <ipxact:name>META_BEATS</ipxact:name>
            <ipxact:description>Beats per P*12-bit metadata word.</ipxact:description>
            <ipxact:bitOffset>8</ipxact:bitOffset>
            <ipxact:resets>
              <ipxact:reset>
                <ipxact:value>(P * 12 + 31) / 32</ipxact:value>
              </ipxact:reset>
            </ipxact:resets>
            <ipxact:bitWidth>8</ipxact:bitWidth>
            <ipxact:access>read-only</ipxact:access>
          </ipxact:field>
          <ipxact:field>
            <ipxact:name>QUERY_BEATS</ipxact:name>
            <ipxact:description>Beats per 64-bit query word.</ipxact:description>
            <ipxact:bitOffset>16</ipxact:bitOffset>
            <ipxact:resets>
              <ipxact:reset>
                <ipxact:value>0x00000002</ipxact:value>
              </ipxact:reset>
            </ipxact:resets>
            <ipxact:bitWidth>8</ipxact:bitWidth>
            <ipxact:access>read-only</ipxact:access>
          </ipxact:field>
        </ipxact:register>
        <ipxact:register>
          <ipxact:name>W_DEPTH</ipxact:name>
          <ipxact:description>Weight memory depth in words.</ipxact:description>
          <ipxact:addressOffset>0x18</ipxact:addressOffset>
          <ipxact:size>32</ipxact:size>
          <ipxact:volatile>true</ipxact:volatile>
          <ipxact:access>read-only</ipxact:access>
          <ipxact:field>
            <ipxact:name>DEPTH</ipxact:name>
            <ipxact:bitOffset>0</ipxact:bitOffset>
            <ipxact:resets>
              <ipxact:reset>
                <ipxact:value>(ROWS / P) * (COLS / 8)</ipxact:value>
              </ipxact:reset>
            </ipxact:resets>
            <ipxact:bitWidth>32</ipxact:bitWidth>
            <ipxact:access>read-only</ipxact:access>
          </ipxact:field>
        </ipxact:register>
        <ipxact:register>
          <ipxact:name>M_DEPTH</ipxact:name>
          <ipxact:description>Metadata memory depth in words.</ipxact:description>
          <ipxact:addressOffset>0x1C</ipxact:addressOffset>
          <ipxact:size>32</ipxact:size>
          <ipxact:volatile>true</ipxact:volatile>
          <ipxact:access>read-only</ipxact:access>
          <ipxact:field>
            <ipxact:name>DEPTH</ipxact:name>
            <ipxact:bitOffset>0</ipxact:bitOffset>
            <ipxact:resets>
              <ipxact:reset>
                <ipxact:value>(ROWS / P) * (COLS / 32)</ipxact:value>
              </ipxact:reset>
            </ipxact:resets>
            <ipxact:bitWidth>32</ipxact:bitWidth>
            <ipxact:access>read-only</ipxact:access>
          </ipxact:field>
        </ipxact:register>
        <ipxact:register>
          <ipxact:name>Q_DEPTH</ipxact:name>
          <ipxact:description>Query memory depth in words.</ipxact:description>
          <ipxact:addressOffset>0x20</ipxact:addressOffset>
          <ipxact:size>32</ipxact:size>
          <ipxact:volatile>true</ipxact:volatile>
          <ipxact:access>read-only</ipxact:access>
          <ipxact:field>
            <ipxact:name>DEPTH</ipxact:name>
            <ipxact:bitOffset>0</ipxact:bitOffset>
            <ipxact:resets>
              <ipxact:reset>
                <ipxact:value>COLS / 8</ipxact:value>
              </ipxact:reset>
            </ipxact:resets>
            <ipxact:bitWidth>32</ipxact:bitWidth>
            <ipxact:access>read-only</ipxact:access>
          </ipxact:field>
        </ipxact:register>
        <ipxact:register>
          <ipxact:name>R_BLOCKS</ipxact:name>
          <ipxact:description>Result blocks of P rows.</ipxact:description>
          <ipxact:addressOffset>0x24</ipxact:addressOffset>
          <ipxact:size>32</ipxact:size>
          <ipxact:volatile>true</ipxact:volatile>
          <ipxact:access>read-only</ipxact:access>
          <ipxact:field>
            <ipxact:name>BLOCKS</ipxact:name>
            <ipxact:bitOffset>0</ipxact:bitOffset>
            <ipxact:resets>
              <ipxact:reset>
                <ipxact:value>ROWS / P</ipxact:value>
              </ipxact:reset>
            </ipxact:resets>
            <ipxact:bitWidth>32</ipxact:bitWidth>
            <ipxact:access>read-only</ipxact:access>
          </ipxact:field>
        </ipxact:register>
        <ipxact:register>
          <ipxact:name>CTRL</ipxact:name>
          <ipxact:description>Command register (byte lane 0). Reads return 0. Writing both bits is rejected.</ipxact:description>
          <ipxact:addressOffset>0x40</ipxact:addressOffset>
          <ipxact:size>32</ipxact:size>
          <ipxact:volatile>false</ipxact:volatile>
          <ipxact:access>write-only</ipxact:access>
          <ipxact:field>
            <ipxact:name>START</ipxact:name>
            <ipxact:description>1: start a command. Rejected (SLVERR, ERR.START_REJECT) while BUSY, START_PENDING, LOAD_ACTIVE or RSTREAM_ACTIVE.</ipxact:description>
            <ipxact:bitOffset>0</ipxact:bitOffset>
            <ipxact:resets>
              <ipxact:reset>
                <ipxact:value>0x00000000</ipxact:value>
              </ipxact:reset>
            </ipxact:resets>
            <ipxact:bitWidth>1</ipxact:bitWidth>
            <ipxact:access>write-only</ipxact:access>
          </ipxact:field>
          <ipxact:field>
            <ipxact:name>RSTREAM</ipxact:name>
            <ipxact:description>1: stream all ROWS results on m_axis. Rejected (SLVERR, ERR.RESULT_REJECT) unless RESULT_VALID=1 and no START is pending and no stream is active.</ipxact:description>
            <ipxact:bitOffset>1</ipxact:bitOffset>
            <ipxact:resets>
              <ipxact:reset>
                <ipxact:value>0x00000000</ipxact:value>
              </ipxact:reset>
            </ipxact:resets>
            <ipxact:bitWidth>1</ipxact:bitWidth>
            <ipxact:access>write-only</ipxact:access>
          </ipxact:field>
        </ipxact:register>
        <ipxact:register>
          <ipxact:name>STATUS</ipxact:name>
          <ipxact:description>Live status (reset value shown).</ipxact:description>
          <ipxact:addressOffset>0x44</ipxact:addressOffset>
          <ipxact:size>32</ipxact:size>
          <ipxact:volatile>true</ipxact:volatile>
          <ipxact:access>read-only</ipxact:access>
          <ipxact:field>
            <ipxact:name>CFG_READY</ipxact:name>
            <ipxact:description>Device idle and out of reset: loads are accepted.</ipxact:description>
            <ipxact:bitOffset>0</ipxact:bitOffset>
            <ipxact:resets>
              <ipxact:reset>
                <ipxact:value>0x00000001</ipxact:value>
              </ipxact:reset>
            </ipxact:resets>
            <ipxact:bitWidth>1</ipxact:bitWidth>
            <ipxact:access>read-only</ipxact:access>
          </ipxact:field>
          <ipxact:field>
            <ipxact:name>BUSY</ipxact:name>
            <ipxact:description>Command executing or START pending.</ipxact:description>
            <ipxact:bitOffset>1</ipxact:bitOffset>
            <ipxact:resets>
              <ipxact:reset>
                <ipxact:value>0x00000000</ipxact:value>
              </ipxact:reset>
            </ipxact:resets>
            <ipxact:bitWidth>1</ipxact:bitWidth>
            <ipxact:access>read-only</ipxact:access>
          </ipxact:field>
          <ipxact:field>
            <ipxact:name>RESULT_VALID</ipxact:name>
            <ipxact:description>The last command completed; results are resident.</ipxact:description>
            <ipxact:bitOffset>2</ipxact:bitOffset>
            <ipxact:resets>
              <ipxact:reset>
                <ipxact:value>0x00000000</ipxact:value>
              </ipxact:reset>
            </ipxact:resets>
            <ipxact:bitWidth>1</ipxact:bitWidth>
            <ipxact:access>read-only</ipxact:access>
          </ipxact:field>
          <ipxact:field>
            <ipxact:name>ERROR</ipxact:name>
            <ipxact:description>ERR != 0.</ipxact:description>
            <ipxact:bitOffset>3</ipxact:bitOffset>
            <ipxact:resets>
              <ipxact:reset>
                <ipxact:value>0x00000000</ipxact:value>
              </ipxact:reset>
            </ipxact:resets>
            <ipxact:bitWidth>1</ipxact:bitWidth>
            <ipxact:access>read-only</ipxact:access>
          </ipxact:field>
          <ipxact:field>
            <ipxact:name>START_PENDING</ipxact:name>
            <ipxact:description>START accepted, command not yet started by the device.</ipxact:description>
            <ipxact:bitOffset>4</ipxact:bitOffset>
            <ipxact:resets>
              <ipxact:reset>
                <ipxact:value>0x00000000</ipxact:value>
              </ipxact:reset>
            </ipxact:resets>
            <ipxact:bitWidth>1</ipxact:bitWidth>
            <ipxact:access>read-only</ipxact:access>
          </ipxact:field>
          <ipxact:field>
            <ipxact:name>LOAD_ACTIVE</ipxact:name>
            <ipxact:description>A load packet has started and TLAST has not been received.</ipxact:description>
            <ipxact:bitOffset>5</ipxact:bitOffset>
            <ipxact:resets>
              <ipxact:reset>
                <ipxact:value>0x00000000</ipxact:value>
              </ipxact:reset>
            </ipxact:resets>
            <ipxact:bitWidth>1</ipxact:bitWidth>
            <ipxact:access>read-only</ipxact:access>
          </ipxact:field>
          <ipxact:field>
            <ipxact:name>WINDOW_VALID</ipxact:name>
            <ipxact:description>RESULT_DATA holds the block selected by RESULT_SEL.</ipxact:description>
            <ipxact:bitOffset>6</ipxact:bitOffset>
            <ipxact:resets>
              <ipxact:reset>
                <ipxact:value>0x00000000</ipxact:value>
              </ipxact:reset>
            </ipxact:resets>
            <ipxact:bitWidth>1</ipxact:bitWidth>
            <ipxact:access>read-only</ipxact:access>
          </ipxact:field>
          <ipxact:field>
            <ipxact:name>RSTREAM_ACTIVE</ipxact:name>
            <ipxact:description>Result stream in progress.</ipxact:description>
            <ipxact:bitOffset>7</ipxact:bitOffset>
            <ipxact:resets>
              <ipxact:reset>
                <ipxact:value>0x00000000</ipxact:value>
              </ipxact:reset>
            </ipxact:resets>
            <ipxact:bitWidth>1</ipxact:bitWidth>
            <ipxact:access>read-only</ipxact:access>
          </ipxact:field>
          <ipxact:field>
            <ipxact:name>LOAD_DEST</ipxact:name>
            <ipxact:description>TDEST of the active or last load packet.</ipxact:description>
            <ipxact:bitOffset>8</ipxact:bitOffset>
            <ipxact:resets>
              <ipxact:reset>
                <ipxact:value>0x00000000</ipxact:value>
              </ipxact:reset>
            </ipxact:resets>
            <ipxact:bitWidth>2</ipxact:bitWidth>
            <ipxact:access>read-only</ipxact:access>
          </ipxact:field>
          <ipxact:field>
            <ipxact:name>IRQ</ipxact:name>
            <ipxact:description>State of the irq output.</ipxact:description>
            <ipxact:bitOffset>10</ipxact:bitOffset>
            <ipxact:resets>
              <ipxact:reset>
                <ipxact:value>0x00000000</ipxact:value>
              </ipxact:reset>
            </ipxact:resets>
            <ipxact:bitWidth>1</ipxact:bitWidth>
            <ipxact:access>read-only</ipxact:access>
          </ipxact:field>
        </ipxact:register>
        <ipxact:register>
          <ipxact:name>ERR</ipxact:name>
          <ipxact:description>Sticky error flags; write 1 to clear (byte lane 0). A new event in the same cycle wins.</ipxact:description>
          <ipxact:addressOffset>0x48</ipxact:addressOffset>
          <ipxact:size>32</ipxact:size>
          <ipxact:volatile>true</ipxact:volatile>
          <ipxact:access>read-write</ipxact:access>
          <ipxact:field>
            <ipxact:name>PARTIAL_WORD</ipxact:name>
            <ipxact:description>TLAST before the last beat of a word; the partial word is discarded.</ipxact:description>
            <ipxact:bitOffset>0</ipxact:bitOffset>
            <ipxact:resets>
              <ipxact:reset>
                <ipxact:value>0x00000000</ipxact:value>
              </ipxact:reset>
            </ipxact:resets>
            <ipxact:bitWidth>1</ipxact:bitWidth>
            <ipxact:access>read-write</ipxact:access>
            <ipxact:modifiedWriteValue>oneToClear</ipxact:modifiedWriteValue>
          </ipxact:field>
          <ipxact:field>
            <ipxact:name>OVERRUN</ipxact:name>
            <ipxact:description>Word address at or beyond the destination depth; the word is discarded.</ipxact:description>
            <ipxact:bitOffset>1</ipxact:bitOffset>
            <ipxact:resets>
              <ipxact:reset>
                <ipxact:value>0x00000000</ipxact:value>
              </ipxact:reset>
            </ipxact:resets>
            <ipxact:bitWidth>1</ipxact:bitWidth>
            <ipxact:access>read-write</ipxact:access>
            <ipxact:modifiedWriteValue>oneToClear</ipxact:modifiedWriteValue>
          </ipxact:field>
          <ipxact:field>
            <ipxact:name>BAD_DEST</ipxact:name>
            <ipxact:description>TDEST=3; beats are consumed and discarded.</ipxact:description>
            <ipxact:bitOffset>2</ipxact:bitOffset>
            <ipxact:resets>
              <ipxact:reset>
                <ipxact:value>0x00000000</ipxact:value>
              </ipxact:reset>
            </ipxact:resets>
            <ipxact:bitWidth>1</ipxact:bitWidth>
            <ipxact:access>read-write</ipxact:access>
            <ipxact:modifiedWriteValue>oneToClear</ipxact:modifiedWriteValue>
          </ipxact:field>
          <ipxact:field>
            <ipxact:name>DEST_MISMATCH</ipxact:name>
            <ipxact:description>TDEST changed inside a packet; beats follow the latched destination.</ipxact:description>
            <ipxact:bitOffset>3</ipxact:bitOffset>
            <ipxact:resets>
              <ipxact:reset>
                <ipxact:value>0x00000000</ipxact:value>
              </ipxact:reset>
            </ipxact:resets>
            <ipxact:bitWidth>1</ipxact:bitWidth>
            <ipxact:access>read-write</ipxact:access>
            <ipxact:modifiedWriteValue>oneToClear</ipxact:modifiedWriteValue>
          </ipxact:field>
          <ipxact:field>
            <ipxact:name>START_REJECT</ipxact:name>
            <ipxact:description>START rejected (or both CTRL bits written).</ipxact:description>
            <ipxact:bitOffset>4</ipxact:bitOffset>
            <ipxact:resets>
              <ipxact:reset>
                <ipxact:value>0x00000000</ipxact:value>
              </ipxact:reset>
            </ipxact:resets>
            <ipxact:bitWidth>1</ipxact:bitWidth>
            <ipxact:access>read-write</ipxact:access>
            <ipxact:modifiedWriteValue>oneToClear</ipxact:modifiedWriteValue>
          </ipxact:field>
          <ipxact:field>
            <ipxact:name>RESULT_REJECT</ipxact:name>
            <ipxact:description>RESULT_SEL or RSTREAM rejected.</ipxact:description>
            <ipxact:bitOffset>5</ipxact:bitOffset>
            <ipxact:resets>
              <ipxact:reset>
                <ipxact:value>0x00000000</ipxact:value>
              </ipxact:reset>
            </ipxact:resets>
            <ipxact:bitWidth>1</ipxact:bitWidth>
            <ipxact:access>read-write</ipxact:access>
            <ipxact:modifiedWriteValue>oneToClear</ipxact:modifiedWriteValue>
          </ipxact:field>
          <ipxact:field>
            <ipxact:name>ADDR_ERR</ipxact:name>
            <ipxact:description>Write to an unmapped or read-only address.</ipxact:description>
            <ipxact:bitOffset>6</ipxact:bitOffset>
            <ipxact:resets>
              <ipxact:reset>
                <ipxact:value>0x00000000</ipxact:value>
              </ipxact:reset>
            </ipxact:resets>
            <ipxact:bitWidth>1</ipxact:bitWidth>
            <ipxact:access>read-write</ipxact:access>
            <ipxact:modifiedWriteValue>oneToClear</ipxact:modifiedWriteValue>
          </ipxact:field>
        </ipxact:register>
        <ipxact:register>
          <ipxact:name>INT_STATUS</ipxact:name>
          <ipxact:description>Interrupt status; write 1 to clear.</ipxact:description>
          <ipxact:addressOffset>0x4C</ipxact:addressOffset>
          <ipxact:size>32</ipxact:size>
          <ipxact:volatile>true</ipxact:volatile>
          <ipxact:access>read-write</ipxact:access>
          <ipxact:field>
            <ipxact:name>DONE</ipxact:name>
            <ipxact:description>Command completed (results resident).</ipxact:description>
            <ipxact:bitOffset>0</ipxact:bitOffset>
            <ipxact:resets>
              <ipxact:reset>
                <ipxact:value>0x00000000</ipxact:value>
              </ipxact:reset>
            </ipxact:resets>
            <ipxact:bitWidth>1</ipxact:bitWidth>
            <ipxact:access>read-write</ipxact:access>
            <ipxact:modifiedWriteValue>oneToClear</ipxact:modifiedWriteValue>
          </ipxact:field>
          <ipxact:field>
            <ipxact:name>RSTREAM_DONE</ipxact:name>
            <ipxact:description>Last result beat accepted on m_axis.</ipxact:description>
            <ipxact:bitOffset>1</ipxact:bitOffset>
            <ipxact:resets>
              <ipxact:reset>
                <ipxact:value>0x00000000</ipxact:value>
              </ipxact:reset>
            </ipxact:resets>
            <ipxact:bitWidth>1</ipxact:bitWidth>
            <ipxact:access>read-write</ipxact:access>
            <ipxact:modifiedWriteValue>oneToClear</ipxact:modifiedWriteValue>
          </ipxact:field>
        </ipxact:register>
        <ipxact:register>
          <ipxact:name>INT_ENABLE</ipxact:name>
          <ipxact:description>Interrupt enable; irq = |(INT_STATUS &amp; INT_ENABLE), registered (one cycle).</ipxact:description>
          <ipxact:addressOffset>0x50</ipxact:addressOffset>
          <ipxact:size>32</ipxact:size>
          <ipxact:volatile>false</ipxact:volatile>
          <ipxact:access>read-write</ipxact:access>
          <ipxact:field>
            <ipxact:name>DONE</ipxact:name>
            <ipxact:bitOffset>0</ipxact:bitOffset>
            <ipxact:resets>
              <ipxact:reset>
                <ipxact:value>0x00000000</ipxact:value>
              </ipxact:reset>
            </ipxact:resets>
            <ipxact:bitWidth>1</ipxact:bitWidth>
            <ipxact:access>read-write</ipxact:access>
          </ipxact:field>
          <ipxact:field>
            <ipxact:name>RSTREAM_DONE</ipxact:name>
            <ipxact:bitOffset>1</ipxact:bitOffset>
            <ipxact:resets>
              <ipxact:reset>
                <ipxact:value>0x00000000</ipxact:value>
              </ipxact:reset>
            </ipxact:resets>
            <ipxact:bitWidth>1</ipxact:bitWidth>
            <ipxact:access>read-write</ipxact:access>
          </ipxact:field>
        </ipxact:register>
        <ipxact:register>
          <ipxact:name>CYCLES</ipxact:name>
          <ipxact:description>Device resident_cycles of the last command (core cycle_count + 1); 0 after reset and START.</ipxact:description>
          <ipxact:addressOffset>0x54</ipxact:addressOffset>
          <ipxact:size>32</ipxact:size>
          <ipxact:volatile>true</ipxact:volatile>
          <ipxact:access>read-only</ipxact:access>
          <ipxact:field>
            <ipxact:name>CYCLES</ipxact:name>
            <ipxact:bitOffset>0</ipxact:bitOffset>
            <ipxact:resets>
              <ipxact:reset>
                <ipxact:value>0x00000000</ipxact:value>
              </ipxact:reset>
            </ipxact:resets>
            <ipxact:bitWidth>32</ipxact:bitWidth>
            <ipxact:access>read-only</ipxact:access>
          </ipxact:field>
        </ipxact:register>
        <ipxact:register>
          <ipxact:name>LOAD_WORDS</ipxact:name>
          <ipxact:description>Memory words written through the load port since reset (wraps).</ipxact:description>
          <ipxact:addressOffset>0x5C</ipxact:addressOffset>
          <ipxact:size>32</ipxact:size>
          <ipxact:volatile>true</ipxact:volatile>
          <ipxact:access>read-only</ipxact:access>
          <ipxact:field>
            <ipxact:name>COUNT</ipxact:name>
            <ipxact:bitOffset>0</ipxact:bitOffset>
            <ipxact:resets>
              <ipxact:reset>
                <ipxact:value>0x00000000</ipxact:value>
              </ipxact:reset>
            </ipxact:resets>
            <ipxact:bitWidth>32</ipxact:bitWidth>
            <ipxact:access>read-only</ipxact:access>
          </ipxact:field>
        </ipxact:register>
        <ipxact:register>
          <ipxact:name>W_BASE</ipxact:name>
          <ipxact:description>Start word address of each weight packet (all byte lanes honoured).</ipxact:description>
          <ipxact:addressOffset>0x60</ipxact:addressOffset>
          <ipxact:size>32</ipxact:size>
          <ipxact:volatile>false</ipxact:volatile>
          <ipxact:access>read-write</ipxact:access>
          <ipxact:field>
            <ipxact:name>BASE</ipxact:name>
            <ipxact:description>Width ceil(log2(W_DEPTH)).</ipxact:description>
            <ipxact:bitOffset>0</ipxact:bitOffset>
            <ipxact:resets>
              <ipxact:reset>
                <ipxact:value>0x00000000</ipxact:value>
              </ipxact:reset>
            </ipxact:resets>
            <ipxact:bitWidth>$clog2((ROWS / P) * (COLS / 8))</ipxact:bitWidth>
            <ipxact:access>read-write</ipxact:access>
          </ipxact:field>
        </ipxact:register>
        <ipxact:register>
          <ipxact:name>M_BASE</ipxact:name>
          <ipxact:description>Start word address of each metadata packet.</ipxact:description>
          <ipxact:addressOffset>0x64</ipxact:addressOffset>
          <ipxact:size>32</ipxact:size>
          <ipxact:volatile>false</ipxact:volatile>
          <ipxact:access>read-write</ipxact:access>
          <ipxact:field>
            <ipxact:name>BASE</ipxact:name>
            <ipxact:description>Width ceil(log2(M_DEPTH)), at least 1.</ipxact:description>
            <ipxact:bitOffset>0</ipxact:bitOffset>
            <ipxact:resets>
              <ipxact:reset>
                <ipxact:value>0x00000000</ipxact:value>
              </ipxact:reset>
            </ipxact:resets>
            <ipxact:bitWidth>((ROWS / P) * (COLS / 32) &gt; 1 ? $clog2((ROWS / P) * (COLS / 32)) : 1)</ipxact:bitWidth>
            <ipxact:access>read-write</ipxact:access>
          </ipxact:field>
        </ipxact:register>
        <ipxact:register>
          <ipxact:name>Q_BASE</ipxact:name>
          <ipxact:description>Start word address of each query packet.</ipxact:description>
          <ipxact:addressOffset>0x68</ipxact:addressOffset>
          <ipxact:size>32</ipxact:size>
          <ipxact:volatile>false</ipxact:volatile>
          <ipxact:access>read-write</ipxact:access>
          <ipxact:field>
            <ipxact:name>BASE</ipxact:name>
            <ipxact:description>Width ceil(log2(Q_DEPTH)).</ipxact:description>
            <ipxact:bitOffset>0</ipxact:bitOffset>
            <ipxact:resets>
              <ipxact:reset>
                <ipxact:value>0x00000000</ipxact:value>
              </ipxact:reset>
            </ipxact:resets>
            <ipxact:bitWidth>$clog2(COLS / 8)</ipxact:bitWidth>
            <ipxact:access>read-write</ipxact:access>
          </ipxact:field>
        </ipxact:register>
        <ipxact:register>
          <ipxact:name>LOAD_PTR</ipxact:name>
          <ipxact:description>Next word address of the active or last load packet.</ipxact:description>
          <ipxact:addressOffset>0x6C</ipxact:addressOffset>
          <ipxact:size>32</ipxact:size>
          <ipxact:volatile>true</ipxact:volatile>
          <ipxact:access>read-only</ipxact:access>
          <ipxact:field>
            <ipxact:name>PTR</ipxact:name>
            <ipxact:bitOffset>0</ipxact:bitOffset>
            <ipxact:resets>
              <ipxact:reset>
                <ipxact:value>0x00000000</ipxact:value>
              </ipxact:reset>
            </ipxact:resets>
            <ipxact:bitWidth>PTRW</ipxact:bitWidth>
            <ipxact:access>read-only</ipxact:access>
          </ipxact:field>
        </ipxact:register>
        <ipxact:register>
          <ipxact:name>RESULT_SEL</ipxact:name>
          <ipxact:description>Writing selects result block b (rows b*P..b*P+P-1) and reads it into RESULT_DATA. Rejected (SLVERR, ERR.RESULT_REJECT, value unchanged) unless RESULT_VALID=1, b &lt; R_BLOCKS, no START pending and no result stream active.</ipxact:description>
          <ipxact:addressOffset>0x70</ipxact:addressOffset>
          <ipxact:size>32</ipxact:size>
          <ipxact:volatile>false</ipxact:volatile>
          <ipxact:access>read-write</ipxact:access>
          <ipxact:field>
            <ipxact:name>BLOCK</ipxact:name>
            <ipxact:bitOffset>0</ipxact:bitOffset>
            <ipxact:resets>
              <ipxact:reset>
                <ipxact:value>0x00000000</ipxact:value>
              </ipxact:reset>
            </ipxact:resets>
            <ipxact:bitWidth>(ROWS / P &gt; 1 ? $clog2(ROWS / P) : 1)</ipxact:bitWidth>
            <ipxact:access>read-write</ipxact:access>
          </ipxact:field>
        </ipxact:register>
        <ipxact:register>
          <ipxact:name>RESULT_DATA</ipxact:name>
          <ipxact:description>Rows of the selected block: element l is row RESULT_SEL*P + l (signed 32-bit, saturated). Read with SLVERR and value 0 while STATUS.WINDOW_VALID=0.</ipxact:description>
          <ipxact:dim>P</ipxact:dim>
          <ipxact:addressOffset>0x100</ipxact:addressOffset>
          <ipxact:size>32</ipxact:size>
          <ipxact:volatile>true</ipxact:volatile>
          <ipxact:access>read-only</ipxact:access>
          <ipxact:field>
            <ipxact:name>ROW</ipxact:name>
            <ipxact:bitOffset>0</ipxact:bitOffset>
            <ipxact:resets>
              <ipxact:reset>
                <ipxact:value>0x00000000</ipxact:value>
              </ipxact:reset>
            </ipxact:resets>
            <ipxact:bitWidth>32</ipxact:bitWidth>
            <ipxact:access>read-only</ipxact:access>
          </ipxact:field>
        </ipxact:register>
      </ipxact:addressBlock>
      <ipxact:addressUnitBits>8</ipxact:addressUnitBits>
    </ipxact:memoryMap>
  </ipxact:memoryMaps>
  <ipxact:model>
    <ipxact:views>
      <ipxact:view>
        <ipxact:name>rtl</ipxact:name>
        <ipxact:envIdentifier>:*Simulation:</ipxact:envIdentifier>
        <ipxact:envIdentifier>:*Synthesis:</ipxact:envIdentifier>
        <ipxact:componentInstantiationRef>rtl_instantiation</ipxact:componentInstantiationRef>
      </ipxact:view>
    </ipxact:views>
    <ipxact:instantiations>
      <ipxact:componentInstantiation>
        <ipxact:name>rtl_instantiation</ipxact:name>
        <ipxact:language>SystemVerilog</ipxact:language>
        <ipxact:moduleName>cv_gemv_axi</ipxact:moduleName>
        <ipxact:moduleParameters>
          <ipxact:moduleParameter parameterId="mp_ROWS" type="int" minimum="1" maximum="4096" usageType="nontyped">
            <ipxact:name>ROWS</ipxact:name>
            <ipxact:value>ROWS</ipxact:value>
          </ipxact:moduleParameter>
          <ipxact:moduleParameter parameterId="mp_COLS" type="int" minimum="32" maximum="65536" usageType="nontyped">
            <ipxact:name>COLS</ipxact:name>
            <ipxact:value>COLS</ipxact:value>
          </ipxact:moduleParameter>
          <ipxact:moduleParameter parameterId="mp_P" type="int" minimum="1" maximum="960" usageType="nontyped">
            <ipxact:name>P</ipxact:name>
            <ipxact:value>P</ipxact:value>
          </ipxact:moduleParameter>
          <ipxact:moduleParameter parameterId="mp_RESULT_STREAM" type="int" minimum="0" maximum="1" usageType="nontyped">
            <ipxact:name>RESULT_STREAM</ipxact:name>
            <ipxact:value>RESULT_STREAM</ipxact:value>
          </ipxact:moduleParameter>
        </ipxact:moduleParameters>
        <ipxact:fileSetRef>
          <ipxact:localName>rtl</ipxact:localName>
        </ipxact:fileSetRef>
      </ipxact:componentInstantiation>
    </ipxact:instantiations>
    <ipxact:ports>
      <ipxact:port>
        <ipxact:name>aclk</ipxact:name>
        <ipxact:wire>
          <ipxact:direction>in</ipxact:direction>
        </ipxact:wire>
      </ipxact:port>
      <ipxact:port>
        <ipxact:name>aresetn</ipxact:name>
        <ipxact:wire>
          <ipxact:direction>in</ipxact:direction>
        </ipxact:wire>
      </ipxact:port>
      <ipxact:port>
        <ipxact:name>s_axil_awaddr</ipxact:name>
        <ipxact:wire>
          <ipxact:direction>in</ipxact:direction>
          <ipxact:vectors>
            <ipxact:vector>
              <ipxact:left>11</ipxact:left>
              <ipxact:right>0</ipxact:right>
            </ipxact:vector>
          </ipxact:vectors>
        </ipxact:wire>
      </ipxact:port>
      <ipxact:port>
        <ipxact:name>s_axil_awprot</ipxact:name>
        <ipxact:wire>
          <ipxact:direction>in</ipxact:direction>
          <ipxact:vectors>
            <ipxact:vector>
              <ipxact:left>2</ipxact:left>
              <ipxact:right>0</ipxact:right>
            </ipxact:vector>
          </ipxact:vectors>
        </ipxact:wire>
      </ipxact:port>
      <ipxact:port>
        <ipxact:name>s_axil_awvalid</ipxact:name>
        <ipxact:wire>
          <ipxact:direction>in</ipxact:direction>
        </ipxact:wire>
      </ipxact:port>
      <ipxact:port>
        <ipxact:name>s_axil_awready</ipxact:name>
        <ipxact:wire>
          <ipxact:direction>out</ipxact:direction>
        </ipxact:wire>
      </ipxact:port>
      <ipxact:port>
        <ipxact:name>s_axil_wdata</ipxact:name>
        <ipxact:wire>
          <ipxact:direction>in</ipxact:direction>
          <ipxact:vectors>
            <ipxact:vector>
              <ipxact:left>31</ipxact:left>
              <ipxact:right>0</ipxact:right>
            </ipxact:vector>
          </ipxact:vectors>
        </ipxact:wire>
      </ipxact:port>
      <ipxact:port>
        <ipxact:name>s_axil_wstrb</ipxact:name>
        <ipxact:wire>
          <ipxact:direction>in</ipxact:direction>
          <ipxact:vectors>
            <ipxact:vector>
              <ipxact:left>3</ipxact:left>
              <ipxact:right>0</ipxact:right>
            </ipxact:vector>
          </ipxact:vectors>
        </ipxact:wire>
      </ipxact:port>
      <ipxact:port>
        <ipxact:name>s_axil_wvalid</ipxact:name>
        <ipxact:wire>
          <ipxact:direction>in</ipxact:direction>
        </ipxact:wire>
      </ipxact:port>
      <ipxact:port>
        <ipxact:name>s_axil_wready</ipxact:name>
        <ipxact:wire>
          <ipxact:direction>out</ipxact:direction>
        </ipxact:wire>
      </ipxact:port>
      <ipxact:port>
        <ipxact:name>s_axil_bresp</ipxact:name>
        <ipxact:wire>
          <ipxact:direction>out</ipxact:direction>
          <ipxact:vectors>
            <ipxact:vector>
              <ipxact:left>1</ipxact:left>
              <ipxact:right>0</ipxact:right>
            </ipxact:vector>
          </ipxact:vectors>
        </ipxact:wire>
      </ipxact:port>
      <ipxact:port>
        <ipxact:name>s_axil_bvalid</ipxact:name>
        <ipxact:wire>
          <ipxact:direction>out</ipxact:direction>
        </ipxact:wire>
      </ipxact:port>
      <ipxact:port>
        <ipxact:name>s_axil_bready</ipxact:name>
        <ipxact:wire>
          <ipxact:direction>in</ipxact:direction>
        </ipxact:wire>
      </ipxact:port>
      <ipxact:port>
        <ipxact:name>s_axil_araddr</ipxact:name>
        <ipxact:wire>
          <ipxact:direction>in</ipxact:direction>
          <ipxact:vectors>
            <ipxact:vector>
              <ipxact:left>11</ipxact:left>
              <ipxact:right>0</ipxact:right>
            </ipxact:vector>
          </ipxact:vectors>
        </ipxact:wire>
      </ipxact:port>
      <ipxact:port>
        <ipxact:name>s_axil_arprot</ipxact:name>
        <ipxact:wire>
          <ipxact:direction>in</ipxact:direction>
          <ipxact:vectors>
            <ipxact:vector>
              <ipxact:left>2</ipxact:left>
              <ipxact:right>0</ipxact:right>
            </ipxact:vector>
          </ipxact:vectors>
        </ipxact:wire>
      </ipxact:port>
      <ipxact:port>
        <ipxact:name>s_axil_arvalid</ipxact:name>
        <ipxact:wire>
          <ipxact:direction>in</ipxact:direction>
        </ipxact:wire>
      </ipxact:port>
      <ipxact:port>
        <ipxact:name>s_axil_arready</ipxact:name>
        <ipxact:wire>
          <ipxact:direction>out</ipxact:direction>
        </ipxact:wire>
      </ipxact:port>
      <ipxact:port>
        <ipxact:name>s_axil_rdata</ipxact:name>
        <ipxact:wire>
          <ipxact:direction>out</ipxact:direction>
          <ipxact:vectors>
            <ipxact:vector>
              <ipxact:left>31</ipxact:left>
              <ipxact:right>0</ipxact:right>
            </ipxact:vector>
          </ipxact:vectors>
        </ipxact:wire>
      </ipxact:port>
      <ipxact:port>
        <ipxact:name>s_axil_rresp</ipxact:name>
        <ipxact:wire>
          <ipxact:direction>out</ipxact:direction>
          <ipxact:vectors>
            <ipxact:vector>
              <ipxact:left>1</ipxact:left>
              <ipxact:right>0</ipxact:right>
            </ipxact:vector>
          </ipxact:vectors>
        </ipxact:wire>
      </ipxact:port>
      <ipxact:port>
        <ipxact:name>s_axil_rvalid</ipxact:name>
        <ipxact:wire>
          <ipxact:direction>out</ipxact:direction>
        </ipxact:wire>
      </ipxact:port>
      <ipxact:port>
        <ipxact:name>s_axil_rready</ipxact:name>
        <ipxact:wire>
          <ipxact:direction>in</ipxact:direction>
        </ipxact:wire>
      </ipxact:port>
      <ipxact:port>
        <ipxact:name>s_axis_tvalid</ipxact:name>
        <ipxact:wire>
          <ipxact:direction>in</ipxact:direction>
        </ipxact:wire>
      </ipxact:port>
      <ipxact:port>
        <ipxact:name>s_axis_tready</ipxact:name>
        <ipxact:wire>
          <ipxact:direction>out</ipxact:direction>
        </ipxact:wire>
      </ipxact:port>
      <ipxact:port>
        <ipxact:name>s_axis_tdata</ipxact:name>
        <ipxact:wire>
          <ipxact:direction>in</ipxact:direction>
          <ipxact:vectors>
            <ipxact:vector>
              <ipxact:left>31</ipxact:left>
              <ipxact:right>0</ipxact:right>
            </ipxact:vector>
          </ipxact:vectors>
        </ipxact:wire>
      </ipxact:port>
      <ipxact:port>
        <ipxact:name>s_axis_tdest</ipxact:name>
        <ipxact:wire>
          <ipxact:direction>in</ipxact:direction>
          <ipxact:vectors>
            <ipxact:vector>
              <ipxact:left>1</ipxact:left>
              <ipxact:right>0</ipxact:right>
            </ipxact:vector>
          </ipxact:vectors>
        </ipxact:wire>
      </ipxact:port>
      <ipxact:port>
        <ipxact:name>s_axis_tlast</ipxact:name>
        <ipxact:wire>
          <ipxact:direction>in</ipxact:direction>
        </ipxact:wire>
      </ipxact:port>
      <ipxact:port>
        <ipxact:name>m_axis_tvalid</ipxact:name>
        <ipxact:wire>
          <ipxact:direction>out</ipxact:direction>
        </ipxact:wire>
      </ipxact:port>
      <ipxact:port>
        <ipxact:name>m_axis_tready</ipxact:name>
        <ipxact:wire>
          <ipxact:direction>in</ipxact:direction>
        </ipxact:wire>
      </ipxact:port>
      <ipxact:port>
        <ipxact:name>m_axis_tdata</ipxact:name>
        <ipxact:wire>
          <ipxact:direction>out</ipxact:direction>
          <ipxact:vectors>
            <ipxact:vector>
              <ipxact:left>31</ipxact:left>
              <ipxact:right>0</ipxact:right>
            </ipxact:vector>
          </ipxact:vectors>
        </ipxact:wire>
      </ipxact:port>
      <ipxact:port>
        <ipxact:name>m_axis_tlast</ipxact:name>
        <ipxact:wire>
          <ipxact:direction>out</ipxact:direction>
        </ipxact:wire>
      </ipxact:port>
      <ipxact:port>
        <ipxact:name>irq</ipxact:name>
        <ipxact:wire>
          <ipxact:direction>out</ipxact:direction>
        </ipxact:wire>
      </ipxact:port>
    </ipxact:ports>
  </ipxact:model>
  <ipxact:fileSets>
    <ipxact:fileSet>
      <ipxact:name>rtl</ipxact:name>
      <ipxact:file>
        <ipxact:name>ip/cv_gemv/core.sv</ipxact:name>
        <ipxact:fileType>systemVerilogSource</ipxact:fileType>
      </ipxact:file>
      <ipxact:file>
        <ipxact:name>ip/cv_gemv/memory.sv</ipxact:name>
        <ipxact:fileType>systemVerilogSource</ipxact:fileType>
      </ipxact:file>
      <ipxact:file>
        <ipxact:name>ip/cv_gemv/device.sv</ipxact:name>
        <ipxact:fileType>systemVerilogSource</ipxact:fileType>
      </ipxact:file>
      <ipxact:file>
        <ipxact:name>integration/rtl/cv_gemv_axi.sv</ipxact:name>
        <ipxact:fileType>systemVerilogSource</ipxact:fileType>
      </ipxact:file>
    </ipxact:fileSet>
    <ipxact:fileSet>
      <ipxact:name>constraints</ipxact:name>
      <ipxact:file>
        <ipxact:name>integration/sdc/cv_gemv_axi.sdc</ipxact:name>
        <ipxact:fileType>SDC</ipxact:fileType>
      </ipxact:file>
    </ipxact:fileSet>
  </ipxact:fileSets>
  <ipxact:description>CV-GEMV resident W4A8-G32 matrix-vector research device with AXI4-Lite control/readback, an AXI4-Stream load port (TDEST selects weights, metadata or query) and an optional AXI4-Stream result stream. Single clock aclk, asynchronous active-low reset aresetn (synchronous release required). RTL delivered under evaluation licence.</ipxact:description>
  <ipxact:parameters>
    <ipxact:parameter parameterId="ROWS" resolve="user" type="int" minimum="1" maximum="4096">
      <ipxact:name>ROWS</ipxact:name>
      <ipxact:value>32</ipxact:value>
    </ipxact:parameter>
    <ipxact:parameter parameterId="COLS" resolve="user" type="int" minimum="32" maximum="65536">
      <ipxact:name>COLS</ipxact:name>
      <ipxact:value>128</ipxact:value>
    </ipxact:parameter>
    <ipxact:parameter parameterId="P" resolve="user" type="int" minimum="1" maximum="960">
      <ipxact:name>P</ipxact:name>
      <ipxact:value>8</ipxact:value>
    </ipxact:parameter>
    <ipxact:parameter parameterId="RESULT_STREAM" resolve="user" type="int" minimum="0" maximum="1">
      <ipxact:name>RESULT_STREAM</ipxact:name>
      <ipxact:value>1</ipxact:value>
    </ipxact:parameter>
    <ipxact:parameter parameterId="PTRW" resolve="generated" type="int">
      <ipxact:name>PTRW</ipxact:name>
      <ipxact:description>Load pointer width: max(AW, MW, QAW) + 1 = AW + 1.</ipxact:description>
      <ipxact:value>$clog2((ROWS / P) * (COLS / 8)) + 1</ipxact:value>
    </ipxact:parameter>
  </ipxact:parameters>
</ipxact:component>
