noc_async_read_barrier
-
void noc_async_read_barrier(uint8_t noc = noc_index)
-
Initiates an asynchronous write from a source address in L1 memory on the Tensix core executing this function call to an L-shaped destination which is defined by a grid and an exclusion zone. The destinations are specified using a uint64_t encoding referencing an on-chip grid of nodes located at NOC coordinate range (x_start,y_start,x_end,y_end) and a local address created using get_noc_multicast_addr function. Also, see noc_async_write_barrier. Similarly, the exclusion zone is specified using uint32_t encoding referencing an on-chip core and directions relative to it created using get_noc_exclude_region function.
The destination nodes can only be a set of Tensix cores + L1 memory address. The destination nodes must form an L-shaped grid (where dst_noc_addr_multicast defines a grid and exclude_region define a subgrid to exclude, the inner part of the L). The destination L1 memory address must be the same on all destination nodes.
With this API, the multicast sender cannot be part of the multicast destinations.
Note: The number of destinations needs to be non-zero. Besides that, there is no restriction on the number of destinations, i.e. the multicast destinations can span the full chip. However, as mentioned previously, the multicast source cannot be part of the destinations. So, the maximum number of destinations is number of cores - 1.
Return value: None
NOTE: only supported on Blackhole
| Argument | Description | Type | Valid Range | Required | |————————|———————————————————————–—|——-—|—————————————————————|——-—| | src_local_l1_addr | Source address in local L1 memory | uint32_t | 0..1MB | True | | dst_noc_addr_multicast | Encoding of the destinations nodes (x_start,y_start,x_end,y_end)+address | uint64_t | DOX-TODO(insert a reference to what constitutes valid coords) | True | | size | Size of data transfer in bytes | uint32_t | 0..1MB | True | | num_dests | Number of destinations that the multicast source is targetting | uint32_t | 0..(number of cores - 1) | True | | exclude_region | Encoding of the excluded regin (x_start,y_start,x_direction,y_direction) | uint32_t | DOX-TODO(insert a reference to what constitutes valid coords) | True | This blocking call waits for all the outstanding enqueued noc_async_read calls issued on the current Tensix core to complete. After returning from this call the noc_async_read queue will be empty for the current Tensix core.
Return value: None