noc_semaphore_set_multicast

inline void noc_semaphore_set_multicast(std::uint32_t src_local_l1_addr, std::uint64_t dst_noc_addr_multicast, std::uint32_t num_dests, bool linked = false, bool multicast_path_reserve = true)

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, the multicast sender cannot be part of the multicast destinations. If the multicast sender has to be in the multicast destinations (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

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

num_dests

Number of destinations that the multicast source is targetting

uint32_t

0..119

True