Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update Dynamic NoC sw counter before issue NoC txns #18794

Draft
wants to merge 4 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions tests/scripts/run_tt_metal.py
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,7 @@
)

TT_METAL_FAST_DISPATCH_TEST_ENTRIES = (
TestEntry("tt_metal/tests/unit_tests_noc", "unit_tests_noc"),
TestEntry("tt_metal/tests/test_eltwise_binary", "test_eltwise_binary"),
# TestEntry(
# "tt_metal/tests/test_matmul_multi_core_multi_dram",
Expand Down
39 changes: 30 additions & 9 deletions tt_metal/hw/firmware/src/brisc.cc
Original file line number Diff line number Diff line change
Expand Up @@ -368,6 +368,21 @@ inline void wait_ncrisc_trisc() {

inline void trigger_sync_register_init() { mailboxes->slave_sync.trisc0 = RUN_SYNC_MSG_INIT_SYNC_REGISTERS; }

template <uint8_t noc_mode = DM_DEDICATED_NOC>
inline __attribute__((always_inline)) void signal_dispatch_done(
uint8_t noc, uint8_t cmd_buf, uint64_t dispatch_addr, uint32_t atomic_ret_val, bool posted) {
noc_fast_atomic_increment<noc_mode>(
noc,
cmd_buf,
dispatch_addr,
NOC_UNICAST_WRITE_VC,
1,
31 /*wrap*/,
false /*linked*/,
posted /*posted*/,
atomic_ret_val);
}

int main() {
configure_l1_data_cache();
DIRTY_STACK_MEMORY();
Expand Down Expand Up @@ -451,6 +466,9 @@ int main() {
31 /*wrap*/,
false /*linked*/,
post_atomic_increments /*posted*/);
#if defined(ARCH_BLACKHOLE)
while (!ncrisc_noc_nonposted_atomics_flushed(noc_index));
#endif
}
}

Expand Down Expand Up @@ -592,15 +610,18 @@ int main() {
// messages in the ring buffer. Must be executed before the atomic increment, as after that the launch
// message is no longer owned by us.
CLEAR_PREVIOUS_LAUNCH_MESSAGE_ENTRY_FOR_WATCHER();
noc_fast_atomic_increment(
noc_index,
NCRISC_AT_CMD_BUF,
dispatch_addr,
NOC_UNICAST_WRITE_VC,
1,
31 /*wrap*/,
false /*linked*/,
post_atomic_increments /*posted*/);
#if defined(ARCH_BLACKHOLE)
if (noc_mode == DM_DEDICATED_NOC) {
signal_dispatch_done(noc_index, cmd_buf, dispatch_addr, 0, post_atomic_increments);
while (!ncrisc_noc_nonposted_atomics_flushed(noc_index));
} else {
signal_dispatch_done<DM_DYNAMIC_NOC>(
noc_index, cmd_buf, dispatch_addr, MEM_NOC_ATOMIC_RET_VAL_ADDR, post_atomic_increments);
while (!ncrisc_dynamic_noc_nonposted_atomics_flushed(noc_index));
}
#else
signal_dispatch_done(noc_index, cmd_buf, dispatch_addr, 0, post_atomic_increments);
#endif
mailboxes->launch_msg_rd_ptr = (launch_msg_rd_ptr + 1) & (launch_msg_buffer_num_entries - 1);
}
}
Expand Down
106 changes: 60 additions & 46 deletions tt_metal/hw/inc/blackhole/noc_nonblocking_api.h
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,9 @@ inline __attribute__((always_inline)) bool noc_cmd_buf_ready(uint32_t noc, uint3
template <uint8_t noc_mode = DM_DEDICATED_NOC>
inline __attribute__((always_inline)) void ncrisc_noc_fast_read(
uint32_t noc, uint32_t cmd_buf, uint64_t src_addr, uint32_t dest_addr, uint32_t len_bytes) {
if constexpr (noc_mode == DM_DYNAMIC_NOC) {
inc_noc_counter_val<proc_type, NocBarrierType::READS_NUM_ISSUED>(noc, 1);
}
if constexpr (noc_mode == DM_DYNAMIC_NOC) {
uint32_t noc_rd_cmd_field =
NOC_CMD_CPY | NOC_CMD_RD | NOC_CMD_RESP_MARKED | NOC_CMD_VC_STATIC | NOC_CMD_STATIC_VC(1);
Expand All @@ -146,17 +149,16 @@ inline __attribute__((always_inline)) void ncrisc_noc_fast_read(
noc, cmd_buf, NOC_TARG_ADDR_COORDINATE, (uint32_t)(src_addr >> NOC_ADDR_COORD_SHIFT) & NOC_COORDINATE_MASK);
NOC_CMD_BUF_WRITE_REG(noc, cmd_buf, NOC_AT_LEN_BE, len_bytes);
NOC_CMD_BUF_WRITE_REG(noc, cmd_buf, NOC_CMD_CTRL, NOC_CTRL_SEND_REQ);
if constexpr (noc_mode == DM_DYNAMIC_NOC) {
inc_noc_counter_val<proc_type, NocBarrierType::READS_NUM_ISSUED>(noc, 1);
} else {
if constexpr (noc_mode == DM_DEDICATED_NOC) {
noc_reads_num_issued[noc] += 1;
}
}

inline __attribute__((always_inline)) bool ncrisc_dynamic_noc_reads_flushed(uint32_t noc) {
uint32_t status_reg_val = NOC_STATUS_READ_REG(noc, NIU_MST_RD_RESP_RECEIVED);
uint32_t self_risc_acked = get_noc_counter_val<proc_type, NocBarrierType::READS_NUM_ISSUED>(noc);
uint32_t other_risc_acked = get_noc_counter_val<1 - proc_type, NocBarrierType::READS_NUM_ISSUED>(noc);
return (NOC_STATUS_READ_REG(noc, NIU_MST_RD_RESP_RECEIVED) == (self_risc_acked + other_risc_acked));
return (status_reg_val == (self_risc_acked + other_risc_acked));
}

inline __attribute__((always_inline)) bool ncrisc_noc_reads_flushed(uint32_t noc) {
Expand All @@ -182,6 +184,14 @@ inline __attribute__((always_inline)) void ncrisc_noc_fast_write(
bool multicast_path_reserve,
bool posted = false,
uint32_t trid = 0) {
if constexpr (noc_mode == DM_DYNAMIC_NOC) {
if (posted) {
inc_noc_counter_val<proc_type, NocBarrierType::POSTED_WRITES_NUM_ISSUED>(noc, 1);
} else {
inc_noc_counter_val<proc_type, NocBarrierType::NONPOSTED_WRITES_NUM_ISSUED>(noc, 1);
inc_noc_counter_val<proc_type, NocBarrierType::NONPOSTED_WRITES_ACKED>(noc, num_dests);
}
}
uint32_t noc_cmd_field =
NOC_CMD_CPY | NOC_CMD_WR | NOC_CMD_VC_STATIC | NOC_CMD_STATIC_VC(vc) | (linked ? NOC_CMD_VC_LINKED : 0x0) |
(mcast ? ((multicast_path_reserve ? NOC_CMD_PATH_RESERVE : 0) | NOC_CMD_BRCST_PACKET) : 0x0) |
Expand All @@ -201,16 +211,9 @@ inline __attribute__((always_inline)) void ncrisc_noc_fast_write(
NOC_CMD_BUF_WRITE_REG(noc, cmd_buf, NOC_AT_LEN_BE, len_bytes);
NOC_CMD_BUF_WRITE_REG(noc, cmd_buf, NOC_CMD_CTRL, NOC_CTRL_SEND_REQ);

if (posted) {
if constexpr (noc_mode == DM_DYNAMIC_NOC) {
inc_noc_counter_val<proc_type, NocBarrierType::POSTED_WRITES_NUM_ISSUED>(noc, 1);
} else {
if constexpr (noc_mode == DM_DEDICATED_NOC) {
if (posted) {
noc_posted_writes_num_issued[noc] += 1;
}
} else {
if constexpr (noc_mode == DM_DYNAMIC_NOC) {
inc_noc_counter_val<proc_type, NocBarrierType::NONPOSTED_WRITES_NUM_ISSUED>(noc, 1);
inc_noc_counter_val<proc_type, NocBarrierType::NONPOSTED_WRITES_ACKED>(noc, num_dests);
} else {
noc_nonposted_writes_num_issued[noc] += 1;
noc_nonposted_writes_acked[noc] += num_dests;
Expand All @@ -230,6 +233,10 @@ inline __attribute__((always_inline)) void ncrisc_noc_fast_write_loopback_src(
bool linked,
uint32_t num_dests,
bool multicast_path_reserve) {
if constexpr (noc_mode == DM_DYNAMIC_NOC) {
inc_noc_counter_val<proc_type, NocBarrierType::NONPOSTED_WRITES_NUM_ISSUED>(noc, 1);
inc_noc_counter_val<proc_type, NocBarrierType::NONPOSTED_WRITES_ACKED>(noc, num_dests);
}
uint32_t noc_cmd_field =
NOC_CMD_CPY | NOC_CMD_WR | NOC_CMD_VC_STATIC | NOC_CMD_STATIC_VC(vc) | (linked ? NOC_CMD_VC_LINKED : 0x0) |
(mcast ? ((multicast_path_reserve ? NOC_CMD_PATH_RESERVE : 0) | NOC_CMD_BRCST_PACKET) : 0x0) |
Expand All @@ -244,10 +251,7 @@ inline __attribute__((always_inline)) void ncrisc_noc_fast_write_loopback_src(
NOC_CMD_BUF_WRITE_REG(noc, cmd_buf, NOC_BRCST_EXCLUDE, 0);
NOC_CMD_BUF_WRITE_REG(noc, cmd_buf, NOC_AT_LEN_BE, len_bytes);
NOC_CMD_BUF_WRITE_REG(noc, cmd_buf, NOC_CMD_CTRL, NOC_CTRL_SEND_REQ);
if constexpr (noc_mode == DM_DYNAMIC_NOC) {
inc_noc_counter_val<proc_type, NocBarrierType::NONPOSTED_WRITES_NUM_ISSUED>(noc, 1);
inc_noc_counter_val<proc_type, NocBarrierType::NONPOSTED_WRITES_ACKED>(noc, num_dests);
} else {
if constexpr (noc_mode == DM_DEDICATED_NOC) {
noc_nonposted_writes_num_issued[noc] += 1;
noc_nonposted_writes_acked[noc] += num_dests;
}
Expand All @@ -266,6 +270,10 @@ inline __attribute__((always_inline)) void ncrisc_noc_fast_write_exclude_region(
uint32_t num_dests,
bool multicast_path_reserve,
uint32_t exclude_region) {
if constexpr (noc_mode == DM_DYNAMIC_NOC) {
inc_noc_counter_val<proc_type, NocBarrierType::NONPOSTED_WRITES_NUM_ISSUED>(noc, 1);
inc_noc_counter_val<proc_type, NocBarrierType::NONPOSTED_WRITES_ACKED>(noc, num_dests);
}
uint32_t noc_cmd_field =
NOC_CMD_CPY | NOC_CMD_WR | NOC_CMD_VC_STATIC | NOC_CMD_STATIC_VC(vc) | (linked ? NOC_CMD_VC_LINKED : 0x0) |
(mcast ? ((multicast_path_reserve ? NOC_CMD_PATH_RESERVE : 0) | NOC_CMD_BRCST_PACKET) : 0x0) |
Expand All @@ -280,10 +288,7 @@ inline __attribute__((always_inline)) void ncrisc_noc_fast_write_exclude_region(
NOC_CMD_BUF_WRITE_REG(noc, cmd_buf, NOC_BRCST_EXCLUDE, exclude_region);
NOC_CMD_BUF_WRITE_REG(noc, cmd_buf, NOC_AT_LEN_BE, len_bytes);
NOC_CMD_BUF_WRITE_REG(noc, cmd_buf, NOC_CMD_CTRL, NOC_CTRL_SEND_REQ);
if constexpr (noc_mode == DM_DYNAMIC_NOC) {
inc_noc_counter_val<proc_type, NocBarrierType::NONPOSTED_WRITES_NUM_ISSUED>(noc, 1);
inc_noc_counter_val<proc_type, NocBarrierType::NONPOSTED_WRITES_ACKED>(noc, num_dests);
} else {
if constexpr (noc_mode == DM_DEDICATED_NOC) {
noc_nonposted_writes_num_issued[noc] += 1;
noc_nonposted_writes_acked[noc] += num_dests;
}
Expand All @@ -292,6 +297,10 @@ inline __attribute__((always_inline)) void ncrisc_noc_fast_write_exclude_region(
template <uint8_t noc_mode = DM_DEDICATED_NOC>
inline __attribute__((always_inline)) void ncrisc_noc_blitz_write_setup(
uint32_t noc, uint32_t cmd_buf, uint64_t dest_addr, uint32_t len_bytes, uint32_t vc, uint32_t num_times_to_write) {
if constexpr (noc_mode == DM_DYNAMIC_NOC) {
inc_noc_counter_val<proc_type, NocBarrierType::NONPOSTED_WRITES_NUM_ISSUED>(noc, num_times_to_write);
inc_noc_counter_val<proc_type, NocBarrierType::NONPOSTED_WRITES_ACKED>(noc, num_times_to_write);
}
uint32_t noc_cmd_field = NOC_CMD_CPY | NOC_CMD_WR | NOC_CMD_VC_STATIC | NOC_CMD_STATIC_VC(vc) | NOC_CMD_RESP_MARKED;

while (!noc_cmd_buf_ready(noc, cmd_buf));
Expand All @@ -300,39 +309,39 @@ inline __attribute__((always_inline)) void ncrisc_noc_blitz_write_setup(
NOC_CMD_BUF_WRITE_REG(noc, cmd_buf, NOC_RET_ADDR_MID, (uint32_t)(dest_addr >> 32) & 0x1000000F);
NOC_CMD_BUF_WRITE_REG(
noc, cmd_buf, NOC_RET_ADDR_COORDINATE, (uint32_t)(dest_addr >> NOC_ADDR_COORD_SHIFT) & NOC_COORDINATE_MASK);
if constexpr (noc_mode == DM_DYNAMIC_NOC) {
inc_noc_counter_val<proc_type, NocBarrierType::NONPOSTED_WRITES_NUM_ISSUED>(noc, num_times_to_write);
inc_noc_counter_val<proc_type, NocBarrierType::NONPOSTED_WRITES_ACKED>(noc, num_times_to_write);
} else {
if constexpr (noc_mode == DM_DEDICATED_NOC) {
noc_nonposted_writes_num_issued[noc] += num_times_to_write;
noc_nonposted_writes_acked[noc] += num_times_to_write;
}
}

inline __attribute__((always_inline)) bool ncrisc_dynamic_noc_nonposted_writes_sent(uint32_t noc) {
uint32_t status_reg_val = NOC_STATUS_READ_REG(noc, NIU_MST_NONPOSTED_WR_REQ_SENT);
uint32_t self_risc_acked = get_noc_counter_val<proc_type, NocBarrierType::NONPOSTED_WRITES_NUM_ISSUED>(noc);
uint32_t other_risc_acked = get_noc_counter_val<1 - proc_type, NocBarrierType::NONPOSTED_WRITES_NUM_ISSUED>(noc);
return (NOC_STATUS_READ_REG(noc, NIU_MST_NONPOSTED_WR_REQ_SENT) == (self_risc_acked + other_risc_acked));
return (status_reg_val == (self_risc_acked + other_risc_acked));
}

inline __attribute__((always_inline)) bool ncrisc_noc_nonposted_writes_sent(uint32_t noc) {
return (NOC_STATUS_READ_REG(noc, NIU_MST_NONPOSTED_WR_REQ_SENT) == noc_nonposted_writes_num_issued[noc]);
}

inline __attribute__((always_inline)) bool ncrisc_dynamic_noc_posted_writes_sent(uint32_t noc) {
uint32_t status_reg_val = NOC_STATUS_READ_REG(noc, NIU_MST_POSTED_WR_REQ_SENT);
uint32_t self_risc_acked = get_noc_counter_val<proc_type, NocBarrierType::POSTED_WRITES_NUM_ISSUED>(noc);
uint32_t other_risc_acked = get_noc_counter_val<1 - proc_type, NocBarrierType::POSTED_WRITES_NUM_ISSUED>(noc);
return (NOC_STATUS_READ_REG(noc, NIU_MST_POSTED_WR_REQ_SENT) == (self_risc_acked + other_risc_acked));
return (status_reg_val == (self_risc_acked + other_risc_acked));
}

inline __attribute__((always_inline)) bool ncrisc_noc_posted_writes_sent(uint32_t noc) {
return (NOC_STATUS_READ_REG(noc, NIU_MST_POSTED_WR_REQ_SENT) == noc_posted_writes_num_issued[noc]);
}

inline __attribute__((always_inline)) bool ncrisc_dynamic_noc_nonposted_writes_flushed(uint32_t noc) {
uint32_t status_reg_val = NOC_STATUS_READ_REG(noc, NIU_MST_WR_ACK_RECEIVED);
uint32_t self_risc_acked = get_noc_counter_val<proc_type, NocBarrierType::NONPOSTED_WRITES_ACKED>(noc);
uint32_t other_risc_acked = get_noc_counter_val<1 - proc_type, NocBarrierType::NONPOSTED_WRITES_ACKED>(noc);
return (NOC_STATUS_READ_REG(noc, NIU_MST_WR_ACK_RECEIVED) == (self_risc_acked + other_risc_acked));
return (status_reg_val == (self_risc_acked + other_risc_acked));
}

inline __attribute__((always_inline)) bool ncrisc_noc_nonposted_writes_flushed(uint32_t noc) {
Expand All @@ -350,9 +359,10 @@ inline __attribute__((always_inline)) bool ncrisc_noc_nonposted_write_with_trans
}

inline __attribute__((always_inline)) bool ncrisc_dynamic_noc_nonposted_atomics_flushed(uint32_t noc) {
uint32_t status_reg_val = NOC_STATUS_READ_REG(noc, NIU_MST_ATOMIC_RESP_RECEIVED);
uint32_t self_risc_acked = get_noc_counter_val<proc_type, NocBarrierType::NONPOSTED_ATOMICS_ACKED>(noc);
uint32_t other_risc_acked = get_noc_counter_val<1 - proc_type, NocBarrierType::NONPOSTED_ATOMICS_ACKED>(noc);
return (NOC_STATUS_READ_REG(noc, NIU_MST_ATOMIC_RESP_RECEIVED) == (self_risc_acked + other_risc_acked));
return (status_reg_val == (self_risc_acked + other_risc_acked));
}

inline __attribute__((always_inline)) bool ncrisc_noc_nonposted_atomics_flushed(uint32_t noc) {
Expand Down Expand Up @@ -676,6 +686,14 @@ inline __attribute__((always_inline)) void noc_fast_write_dw_inline(
uint32_t static_vc,
bool mcast,
bool posted = false) {
if constexpr (noc_mode == DM_DYNAMIC_NOC) {
if (posted) {
inc_noc_counter_val<proc_type, NocBarrierType::POSTED_WRITES_NUM_ISSUED>(noc, 1);
} else {
inc_noc_counter_val<proc_type, NocBarrierType::NONPOSTED_WRITES_NUM_ISSUED>(noc, 1);
inc_noc_counter_val<proc_type, NocBarrierType::NONPOSTED_WRITES_ACKED>(noc, 1);
}
}
bool static_vc_alloc = true;
uint32_t noc_cmd_field = (static_vc_alloc ? NOC_CMD_VC_STATIC : 0x0) | NOC_CMD_STATIC_VC(static_vc) | NOC_CMD_CPY |
NOC_CMD_WR | NOC_CMD_WR_INLINE |
Expand All @@ -696,17 +714,9 @@ inline __attribute__((always_inline)) void noc_fast_write_dw_inline(
noc, cmd_buf, NOC_TARG_ADDR_COORDINATE, (uint32_t)(dest_addr >> NOC_ADDR_COORD_SHIFT) & NOC_COORDINATE_MASK);
NOC_CMD_BUF_WRITE_REG(noc, cmd_buf, NOC_AT_LEN_BE, be32);
NOC_CMD_BUF_WRITE_REG(noc, cmd_buf, NOC_CMD_CTRL, NOC_CTRL_SEND_REQ);

if (posted) {
if constexpr (noc_mode == DM_DYNAMIC_NOC) {
inc_noc_counter_val<proc_type, NocBarrierType::POSTED_WRITES_NUM_ISSUED>(noc, 1);
} else {
if constexpr (noc_mode == DM_DEDICATED_NOC) {
if (posted) {
noc_posted_writes_num_issued[noc] += 1;
}
} else {
if constexpr (noc_mode == DM_DYNAMIC_NOC) {
inc_noc_counter_val<proc_type, NocBarrierType::NONPOSTED_WRITES_NUM_ISSUED>(noc, 1);
inc_noc_counter_val<proc_type, NocBarrierType::NONPOSTED_WRITES_ACKED>(noc, 1);
} else {
noc_nonposted_writes_num_issued[noc] += 1;
noc_nonposted_writes_acked[noc] += 1;
Expand All @@ -725,6 +735,11 @@ inline __attribute__((always_inline)) void noc_fast_atomic_increment(
bool linked,
bool posted = false,
uint32_t atomic_ret_val = 0) {
if constexpr (noc_mode == DM_DYNAMIC_NOC) {
if (!posted) {
inc_noc_counter_val<proc_type, NocBarrierType::NONPOSTED_ATOMICS_ACKED>(noc, 1);
}
}
while (!noc_cmd_buf_ready(noc, cmd_buf));
if constexpr (noc_mode == DM_DYNAMIC_NOC || program_ret_addr == true) {
uint32_t noc_id_reg = NOC_CMD_BUF_READ_REG(noc, 0, NOC_NODE_ID);
Expand All @@ -750,10 +765,8 @@ inline __attribute__((always_inline)) void noc_fast_atomic_increment(
NOC_AT_INS(NOC_AT_INS_INCR_GET) | NOC_AT_WRAP(wrap) | NOC_AT_IND_32((addr >> 2) & 0x3) | NOC_AT_IND_32_SRC(0));
NOC_CMD_BUF_WRITE_REG(noc, cmd_buf, NOC_AT_DATA, incr);
NOC_CMD_BUF_WRITE_REG(noc, cmd_buf, NOC_CMD_CTRL, 0x1);
if (!posted) {
if constexpr (noc_mode == DM_DYNAMIC_NOC) {
inc_noc_counter_val<proc_type, NocBarrierType::NONPOSTED_ATOMICS_ACKED>(noc, 1);
} else {
if constexpr (noc_mode == DM_DEDICATED_NOC) {
if (!posted) {
noc_nonposted_atomics_acked[noc] += 1;
}
}
Expand All @@ -763,6 +776,9 @@ inline __attribute__((always_inline)) void noc_fast_atomic_increment(
template <uint8_t noc_mode = DM_DEDICATED_NOC>
inline __attribute__((always_inline)) void ncrisc_noc_fast_read_with_transaction_id(
uint32_t noc, uint32_t cmd_buf, uint32_t src_base_addr, uint32_t src_addr, uint32_t dest_addr, uint32_t trid) {
if constexpr (noc_mode == DM_DYNAMIC_NOC) {
inc_noc_counter_val<proc_type, NocBarrierType::READS_NUM_ISSUED>(noc, 1);
}
uint32_t src_addr_;
src_addr_ = src_base_addr + src_addr;

Expand All @@ -772,9 +788,7 @@ inline __attribute__((always_inline)) void ncrisc_noc_fast_read_with_transaction
NOC_CMD_BUF_WRITE_REG(noc, cmd_buf, NOC_RET_ADDR_LO, dest_addr);
NOC_CMD_BUF_WRITE_REG(noc, cmd_buf, NOC_TARG_ADDR_LO, src_addr_); // (uint32_t)src_addr
NOC_CMD_BUF_WRITE_REG(noc, cmd_buf, NOC_CMD_CTRL, NOC_CTRL_SEND_REQ);
if constexpr (noc_mode == DM_DYNAMIC_NOC) {
inc_noc_counter_val<proc_type, NocBarrierType::READS_NUM_ISSUED>(noc, 1);
} else {
if constexpr (noc_mode == DM_DEDICATED_NOC) {
noc_reads_num_issued[noc] += 1;
}
}
Expand Down
Loading
Loading