From 2216a3059dc8002b7717a4d14f39bcd9902561cb Mon Sep 17 00:00:00 2001 From: Blaise Tine Date: Tue, 27 Apr 2021 05:52:01 -0400 Subject: [PATCH] minor update --- driver/common/vx_utils.cpp | 7 ++ driver/opae/vlsim/opae_sim.h | 9 ++- driver/opae/vlsim/verilated_stub.h | 126 +++++++++++++++++++++++++++++ 3 files changed, 140 insertions(+), 2 deletions(-) create mode 100644 driver/opae/vlsim/verilated_stub.h diff --git a/driver/common/vx_utils.cpp b/driver/common/vx_utils.cpp index 4bc2017b..754cea4b 100644 --- a/driver/common/vx_utils.cpp +++ b/driver/common/vx_utils.cpp @@ -33,6 +33,13 @@ extern int vx_upload_kernel_bytes(vx_device_h device, const void* content, size_ while (offset < size) { auto chunk_size = std::min(buffer_transfer_size, size - offset); std::memcpy(buf_ptr, (uint8_t*)content + offset, chunk_size); + + /*printf("** Upload Kernel to 0x%0x: data=", kernel_base_addr + offset); + for (int i = 0, n = ((chunk_size+7)/8); i < n; ++i) { + printf("%08x", ((uint64_t*)((uint8_t*)content + offset))[n-1-i]); + } + printf("\n");*/ + err = vx_copy_to_dev(buffer, kernel_base_addr + offset, chunk_size, 0); if (err != 0) { vx_buf_release(buffer); diff --git a/driver/opae/vlsim/opae_sim.h b/driver/opae/vlsim/opae_sim.h index ee4f022a..1d9bef54 100644 --- a/driver/opae/vlsim/opae_sim.h +++ b/driver/opae/vlsim/opae_sim.h @@ -1,8 +1,10 @@ #pragma once +#include "verilated.h" +#include "verilated_stub.h" + #include "Vvortex_afu_shim.h" #include "Vvortex_afu_shim__Syms.h" -#include "verilated.h" #ifdef VCD_OUTPUT #include @@ -17,7 +19,10 @@ #include #include -#define CACHE_BLOCK_SIZE 64 +#undef MEM_BLOCK_SIZE +#define MEM_BLOCK_SIZE (Vvortex_afu_shim::VL_BITS_avs_writedata / 8) + +#define CACHE_BLOCK_SIZE 64 class opae_sim { public: diff --git a/driver/opae/vlsim/verilated_stub.h b/driver/opae/vlsim/verilated_stub.h new file mode 100644 index 00000000..ad79adac --- /dev/null +++ b/driver/opae/vlsim/verilated_stub.h @@ -0,0 +1,126 @@ +#pragma once + +#undef VL_ST_SIG8 +#define VL_ST_SIG8(name, msb, lsb) \ + enum { VL_MSB_##name = msb, VL_LSB_##name = lsb, VL_BITS_##name = (msb - lsb + 1) }; \ + CData name + +#undef VL_ST_SIG16 +#define VL_ST_SIG16(name, msb, lsb) \ + enum { VL_MSB_##name = msb, VL_LSB_##name = lsb, VL_BITS_##name = (msb - lsb + 1) }; \ + SData name + +#undef VL_ST_SIG64 +#define VL_ST_SIG64(name, msb, lsb) \ + enum { VL_MSB_##name = msb, VL_LSB_##name = lsb, VL_BITS_##name = (msb - lsb + 1) }; \ + QData name + +#undef VL_ST_SIG +#define VL_ST_SIG(name, msb, lsb) \ + enum { VL_MSB_##name = msb, VL_LSB_##name = lsb, VL_BITS_##name = (msb - lsb + 1) }; \ + IData name + +#undef VL_ST_SIGW +#define VL_ST_SIGW(name, msb, lsb, words) \ + enum { VL_MSB_##name = msb, VL_LSB_##name = lsb, VL_BITS_##name = (msb - lsb + 1) }; \ + WData name[words] + +#undef VL_SIG8 +#define VL_SIG8(name, msb, lsb) \ + enum { VL_MSB_##name = msb, VL_LSB_##name = lsb, VL_BITS_##name = (msb - lsb + 1) }; \ + CData name + +#undef VL_SIG16 +#define VL_SIG16(name, msb, lsb) \ + enum { VL_MSB_##name = msb, VL_LSB_##name = lsb, VL_BITS_##name = (msb - lsb + 1) }; \ + SData name + +#undef VL_SIG64 +#define VL_SIG64(name, msb, lsb) \ + enum { VL_MSB_##name = msb, VL_LSB_##name = lsb, VL_BITS_##name = (msb - lsb + 1) }; \ + QData name + +#undef VL_SIG +#define VL_SIG(name, msb, lsb) \ + enum { VL_MSB_##name = msb, VL_LSB_##name = lsb, VL_BITS_##name = (msb - lsb + 1) }; \ + IData name + +#undef VL_SIGW +#define VL_SIGW(name, msb, lsb, words) \ + enum { VL_MSB_##name = msb, VL_LSB_##name = lsb, VL_BITS_##name = (msb - lsb + 1) }; \ + WData name[words] + +#undef VL_IN8 +#define VL_IN8(name, msb, lsb) \ + enum { VL_MSB_##name = msb, VL_LSB_##name = lsb, VL_BITS_##name = (msb - lsb + 1) }; \ + CData name + +#undef VL_IN16 +#define VL_IN16(name, msb, lsb) \ + enum { VL_MSB_##name = msb, VL_LSB_##name = lsb, VL_BITS_##name = (msb - lsb + 1) }; \ + SData name + +#undef VL_IN64 +#define VL_IN64(name, msb, lsb) \ + enum { VL_MSB_##name = msb, VL_LSB_##name = lsb, VL_BITS_##name = (msb - lsb + 1) }; \ + QData name + +#undef VL_IN +#define VL_IN(name, msb, lsb) \ + enum { VL_MSB_##name = msb, VL_LSB_##name = lsb, VL_BITS_##name = (msb - lsb + 1) }; \ + IData name + +#undef VL_INW +#define VL_INW(name, msb, lsb, words) \ + enum { VL_MSB_##name = msb, VL_LSB_##name = lsb, VL_BITS_##name = (msb - lsb + 1) }; \ + WData name[words] + +#undef VL_INOUT8 +#define VL_INOUT8(name, msb, lsb) \ + enum { VL_MSB_##name = msb, VL_LSB_##name = lsb, VL_BITS_##name = (msb - lsb + 1) }; \ + CData name + +#undef VL_INOUT16 +#define VL_INOUT16(name, msb, lsb) \ + enum { VL_MSB_##name = msb, VL_LSB_##name = lsb, VL_BITS_##name = (msb - lsb + 1) }; \ + SData name + +#undef VL_INOUT64 +#define VL_INOUT64(name, msb, lsb) \ + enum { VL_MSB_##name = msb, VL_LSB_##name = lsb, VL_BITS_##name = (msb - lsb + 1) }; \ + QData name + +#undef VL_INOUT +#define VL_INOUT(name, msb, lsb) \ + enum { VL_MSB_##name = msb, VL_LSB_##name = lsb, VL_BITS_##name = (msb - lsb + 1) }; \ + IData name + +#undef VL_INOUTW +#define VL_INOUTW(name, msb, lsb, words) \ + enum { VL_MSB_##name = msb, VL_LSB_##name = lsb, VL_BITS_##name = (msb - lsb + 1) }; \ + WData name[words] + +#undef VL_OUT8 +#define VL_OUT8(name, msb, lsb) \ + enum { VL_MSB_##name = msb, VL_LSB_##name = lsb, VL_BITS_##name = (msb - lsb + 1) }; \ + CData name + +#undef VL_OUT16 +#define VL_OUT16(name, msb, lsb) \ + enum { VL_MSB_##name = msb, VL_LSB_##name = lsb, VL_BITS_##name = (msb - lsb + 1) }; \ + SData name + +#undef VL_OUT64 +#define VL_OUT64(name, msb, lsb) \ + enum { VL_MSB_##name = msb, VL_LSB_##name = lsb, VL_BITS_##name = (msb - lsb + 1) }; \ + QData name + +#undef VL_OUT +#define VL_OUT(name, msb, lsb) \ + enum { VL_MSB_##name = msb, VL_LSB_##name = lsb, VL_BITS_##name = (msb - lsb + 1) }; \ + IData name + +#undef VL_OUTW +#define VL_OUTW(name, msb, lsb, words) \ + enum { VL_MSB_##name = msb, VL_LSB_##name = lsb, VL_BITS_##name = (msb - lsb + 1) }; \ + WData name[words]