summaryrefslogtreecommitdiff
path: root/python/openvino/demo/ip/intel_ai_ip/verilog/dla_output_streamer_config.svh
blob: d21048a52cdb92b53ba6235841dd5304860ee050 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// Copyright 2024 Intel Corporation.
//
// This software and the related documents are Intel copyrighted materials,
// and your use of them is governed by the express license under which they
// were provided to you ("License"). Unless the License provides otherwise,
// you may not use, modify, copy, publish, distribute, disclose or transmit
// this software or the related documents without Intel's prior written
// permission.
//
// This software and the related documents are provided as is, with no express
// or implied warranties, other than those that are expressly stated in the
// License.

/*
  This is the shared datatype between C++ compiler config generation and output streamer RTL
*/
typedef struct packed {
  uint32_t   valid_bytes_stream_width;    // number of valid bytes for last transfer of one HW pixel, used to drive the tstrb signal
  uint16_t   transfers_per_hw_pixel;      // total number of AXI transfers for one pixel in HW (all output channels of one pixel)
  uint32_t   total_transfers;             // total number of AXI transfers for a layer given the AXI data width
  uint32_t   total_transfers_adjusted;    // total number of AXI transfers for a layer minus the last invalid transactions if any
  uint8_t    last_index;                  // index of transaction within a single HW pixel where some valid and invalid elements exist
  uint8_t    last_stream;                 // bool to determine if this is the last stream to generate the tlast signal (mainly for multi-output support)
} output_streamer_config_t;

typedef struct packed {
  uint32_t   total_transfers;             // total number of input transactions from xbar to output streamer width adapter
  uint32_t   transfers_per_hw_pixel;      // total number of xbar transfers for one pixel in HW (all output channels of one pixel)
  uint32_t   flush_index;                 // index of the last transaction at a given pixel, where we need to flush the width adapter and move to next pixel
} output_streamer_flush_config_t;