noc_inline_dw_write_set_state

template<bool posted = false, bool set_val = false>
void noc_inline_dw_write_set_state(uint64_t addr, uint32_t val = 0, uint8_t be = 0xF, uint8_t cmd_buf = write_at_cmd_buf, uint8_t noc = noc_index, uint8_t vc = NOC_UNICAST_WRITE_VC)

Sets the stateful registers for an inline write of a 32-bit value to a NOC destination. This function is used to set up the state for noc_inline_dw_write_with_state, which will issue the actual write request. The 32-bit value and part of the destination address can be set later in noc_inline_dw_write_with_state. noc_inline_dw_write can be used instead if the state preservation is not needed. 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.

Note: On Blackhole, this API can only write to stream registers, writing to L1 will cause hangs!

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

False

be

Byte-enable

uint8_t

0x1-0xF

False

cmd_buf

Command buffer to use for the transaction

uint8_t

0-3

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

posted (template parameter)

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

bool

true or false

False

set_val (template parameter)

Whether to set the value for the write here

bool

true or false

False