noc_semaphore_set_multicast
-
inline void noc_semaphore_set_multicast(uint32_t src_local_l1_addr, uint64_t dst_noc_addr_multicast, uint32_t num_dests, bool linked = false, uint8_t noc = noc_index, uint8_t vc = NOC_MULTICAST_WRITE_VC)
-
Initiates an asynchronous write from a source address in L1 memory on the Tensix core executing this function call to a rectangular destination grid. 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. The size of data that is sent is 4 Bytes. This is usually used to set a semaphore value at the destination nodes, as a way of a synchronization mechanism. The same as noc_async_write_multicast with preset size of 4 Bytes.
With this API (non-loopback multicast), the multicast sender can be part of the multicast destination range, but data will NOT be written to self. The num_dests argument should NOT count self. For example, when mcasting to an 8x8 grid that includes self, num_dests should be 63. The destination range must not be just self (i.e. at least one other core must be in the range). If the multicast sender also needs to receive the data (i.e. must perform a local L1 write), the other API variant noc_semaphore_set_multicast_loopback_src can be used.
Return value: None
Argument Description
src_local_l1_addr Source address in local L1 memory
dst_noc_addr_multicast Encoding of the destinations nodes (x_start,y_start,x_end,y_end)+address
num_dests Number of destinations that the multicast source is targeting
linked Whether the transaction is linked
noc Which NOC to use for the transaction