noc_inline_dw_write

template<InlineWriteDst dst_type = InlineWriteDst::DEFAULT, bool posted = false>
void noc_inline_dw_write(uint64_t addr, uint32_t val, uint8_t be = 0xF, uint8_t noc = noc_index, uint8_t vc = NOC_UNICAST_WRITE_VC)

Initiates an asynchronous write of a 32-bit value to a NOC destination. Typically used for writing registers, but can be used for memory locations as well. The destination is specified as a 64-bit NOC address (see noc_async_write). The advantage over using noc_async_write is that we don’t use a Tensix L1 memory source location; the write value is written directly into a register. Unlike using noc_async_write, there are also no address alignment concerns. Also, see noc_async_write_barrier.

The destination node can be either a Tensix core+L1 memory address or a PCIe controller; This API does not support DRAM addresses.

Return value: None

Argument

Description

Type

Valid Range

Required

addr

Encoding of the destination location (x,y)+address

uint64_t

Results of get_noc_addr calls

True

val

The value to be written

uint32_t

Any uint32_t value

True

be

Byte-enable

uint8_t

0x1-0xF

False

noc

NOC to use for the transaction

uint8_t

0 or 1

False

vc

Virtual channel to use for the transaction

uint8_t

0-3 (Unicast VCs)

False

InlineWriteDst (template parameter)

Whether the write is targeting L1 or a Stream Register

InlineWriteDst

DEFAULT, L1, REG

False

posted (template parameter)

Whether the call is posted (i.e. ack requirement)

bool

true or false

False