noc_semaphore_set_multicast_loopback_src

inline void noc_semaphore_set_multicast_loopback_src(uint32_t src_local_l1_addr, uint64_t dst_noc_addr_multicast, uint32_t num_dests, bool linked = false, 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 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.

Note: With this API, sending data only to the source node (when num_dests is 1) may result in unexpected behaviour. For some parameters, hangs have been observed. For some other parameters, nothing may happen. Consider using regular non multicast operations such as noc_async_write in this case.

Return value: None

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

Results of get_noc_multicast_addr calls

True

num_dests

Number of destinations that the multicast source is targetting

uint32_t

0..(number of cores)

True

linked

Whether the transaction is linked

bool

true or false

False

noc

Which NOC to use for the transaction

uint8_t

0 or 1

False