in src/de10nano/de10nano_driver.cc [116:136]
int Run(vta_phy_addr_t insn_phy_addr,
uint32_t insn_count,
uint32_t wait_cycles) {
VTAWriteMappedReg(vta_host_handle_, 0x04, 0);
VTAWriteMappedReg(vta_host_handle_, 0x08, insn_count);
VTAWriteMappedReg(vta_host_handle_, 0x0c, insn_phy_addr);
// VTA start
VTAWriteMappedReg(vta_host_handle_, 0x0, VTA_START);
// Loop until the VTA is done
unsigned t, flag = 0;
for (t = 0; t < wait_cycles; ++t) {
flag = VTAReadMappedReg(vta_host_handle_, 0x00);
flag &= 0x2;
if (flag == 0x2) break;
std::this_thread::yield();
}
// Report error if timeout
return t < wait_cycles ? 0 : 1;
}