minor update
This commit is contained in:
@@ -67,7 +67,7 @@ typedef struct vx_buffer_ {
|
|||||||
size_t size;
|
size_t size;
|
||||||
} vx_buffer_t;
|
} vx_buffer_t;
|
||||||
|
|
||||||
inline size_t align_size(size_t size, size_t alignment) {
|
inline size_t aligned_size(size_t size, size_t alignment) {
|
||||||
assert(0 == (alignment & (alignment - 1)));
|
assert(0 == (alignment & (alignment - 1)));
|
||||||
return (size + alignment - 1) & ~(alignment - 1);
|
return (size + alignment - 1) & ~(alignment - 1);
|
||||||
}
|
}
|
||||||
@@ -288,7 +288,7 @@ extern int vx_alloc_dev_mem(vx_device_h hdevice, size_t size, size_t* dev_maddr)
|
|||||||
vx_device_t *device = ((vx_device_t*)hdevice);
|
vx_device_t *device = ((vx_device_t*)hdevice);
|
||||||
|
|
||||||
size_t dev_mem_size = LOCAL_MEM_SIZE;
|
size_t dev_mem_size = LOCAL_MEM_SIZE;
|
||||||
size_t asize = align_size(size, CACHE_BLOCK_SIZE);
|
size_t asize = aligned_size(size, CACHE_BLOCK_SIZE);
|
||||||
|
|
||||||
if (device->mem_allocation + asize > dev_mem_size)
|
if (device->mem_allocation + asize > dev_mem_size)
|
||||||
return -1;
|
return -1;
|
||||||
@@ -313,7 +313,7 @@ extern int vx_alloc_shared_mem(vx_device_h hdevice, size_t size, vx_buffer_h* hb
|
|||||||
|
|
||||||
vx_device_t *device = ((vx_device_t*)hdevice);
|
vx_device_t *device = ((vx_device_t*)hdevice);
|
||||||
|
|
||||||
size_t asize = align_size(size, CACHE_BLOCK_SIZE);
|
size_t asize = aligned_size(size, CACHE_BLOCK_SIZE);
|
||||||
|
|
||||||
res = fpgaPrepareBuffer(device->fpga, asize, &host_ptr, &wsid, 0);
|
res = fpgaPrepareBuffer(device->fpga, asize, &host_ptr, &wsid, 0);
|
||||||
if (FPGA_OK != res) {
|
if (FPGA_OK != res) {
|
||||||
@@ -439,7 +439,7 @@ extern int vx_copy_to_dev(vx_buffer_h hbuffer, size_t dev_maddr, size_t size, si
|
|||||||
vx_device_t *device = ((vx_device_t*)buffer->hdevice);
|
vx_device_t *device = ((vx_device_t*)buffer->hdevice);
|
||||||
|
|
||||||
size_t dev_mem_size = LOCAL_MEM_SIZE;
|
size_t dev_mem_size = LOCAL_MEM_SIZE;
|
||||||
size_t asize = align_size(size, CACHE_BLOCK_SIZE);
|
size_t asize = aligned_size(size, CACHE_BLOCK_SIZE);
|
||||||
|
|
||||||
// check alignment
|
// check alignment
|
||||||
if (!is_aligned(dev_maddr, CACHE_BLOCK_SIZE))
|
if (!is_aligned(dev_maddr, CACHE_BLOCK_SIZE))
|
||||||
@@ -480,7 +480,7 @@ extern int vx_copy_from_dev(vx_buffer_h hbuffer, size_t dev_maddr, size_t size,
|
|||||||
vx_device_t *device = ((vx_device_t*)buffer->hdevice);
|
vx_device_t *device = ((vx_device_t*)buffer->hdevice);
|
||||||
|
|
||||||
size_t dev_mem_size = LOCAL_MEM_SIZE;
|
size_t dev_mem_size = LOCAL_MEM_SIZE;
|
||||||
size_t asize = align_size(size, CACHE_BLOCK_SIZE);
|
size_t asize = aligned_size(size, CACHE_BLOCK_SIZE);
|
||||||
|
|
||||||
// check alignment
|
// check alignment
|
||||||
if (!is_aligned(dev_maddr, CACHE_BLOCK_SIZE))
|
if (!is_aligned(dev_maddr, CACHE_BLOCK_SIZE))
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ public:
|
|||||||
vx_buffer(size_t size, vx_device* device)
|
vx_buffer(size_t size, vx_device* device)
|
||||||
: size_(size)
|
: size_(size)
|
||||||
, device_(device) {
|
, device_(device) {
|
||||||
auto aligned_asize = align_size(size, CACHE_BLOCK_SIZE);
|
auto aligned_asize = aligned_size(size, CACHE_BLOCK_SIZE);
|
||||||
data_ = malloc(aligned_asize);
|
data_ = malloc(aligned_asize);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -66,7 +66,7 @@ public:
|
|||||||
|
|
||||||
int alloc_local_mem(size_t size, size_t* dev_maddr) {
|
int alloc_local_mem(size_t size, size_t* dev_maddr) {
|
||||||
auto dev_mem_size = LOCAL_MEM_SIZE;
|
auto dev_mem_size = LOCAL_MEM_SIZE;
|
||||||
size_t asize = align_size(size, CACHE_BLOCK_SIZE);
|
size_t asize = aligned_size(size, CACHE_BLOCK_SIZE);
|
||||||
if (mem_allocation_ + asize > dev_mem_size)
|
if (mem_allocation_ + asize > dev_mem_size)
|
||||||
return -1;
|
return -1;
|
||||||
*dev_maddr = mem_allocation_;
|
*dev_maddr = mem_allocation_;
|
||||||
@@ -75,7 +75,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
int upload(const void* src, size_t dest_addr, size_t size, size_t src_offset) {
|
int upload(const void* src, size_t dest_addr, size_t size, size_t src_offset) {
|
||||||
size_t asize = align_size(size, CACHE_BLOCK_SIZE);
|
size_t asize = aligned_size(size, CACHE_BLOCK_SIZE);
|
||||||
if (dest_addr + asize > ram_.size())
|
if (dest_addr + asize > ram_.size())
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
@@ -93,7 +93,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
int download(void* dest, size_t src_addr, size_t size, size_t dest_offset) {
|
int download(void* dest, size_t src_addr, size_t size, size_t dest_offset) {
|
||||||
size_t asize = align_size(size, CACHE_BLOCK_SIZE);
|
size_t asize = aligned_size(size, CACHE_BLOCK_SIZE);
|
||||||
if (src_addr + asize > ram_.size())
|
if (src_addr + asize > ram_.size())
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ public:
|
|||||||
vx_buffer(size_t size, vx_device* device)
|
vx_buffer(size_t size, vx_device* device)
|
||||||
: size_(size)
|
: size_(size)
|
||||||
, device_(device) {
|
, device_(device) {
|
||||||
auto aligned_asize = align_size(size, CACHE_BLOCK_SIZE);
|
auto aligned_asize = aligned_size(size, CACHE_BLOCK_SIZE);
|
||||||
data_ = malloc(aligned_asize);
|
data_ = malloc(aligned_asize);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -70,7 +70,7 @@ public:
|
|||||||
mem_allocation_ = ALLOC_BASE_ADDR;
|
mem_allocation_ = ALLOC_BASE_ADDR;
|
||||||
mmu_.attach(ram_, 0, 0xffffffff);
|
mmu_.attach(ram_, 0, 0xffffffff);
|
||||||
for (int i = 0; i < arch_.num_cores(); ++i) {
|
for (int i = 0; i < arch_.num_cores(); ++i) {
|
||||||
cores_[i] = std::make_shared<Core>(arch_, decoder_, mmu_, i);
|
cores_.at(i) = std::make_shared<Core>(arch_, decoder_, mmu_, i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -84,7 +84,7 @@ public:
|
|||||||
|
|
||||||
int alloc_local_mem(size_t size, size_t* dev_maddr) {
|
int alloc_local_mem(size_t size, size_t* dev_maddr) {
|
||||||
auto dev_mem_size = LOCAL_MEM_SIZE;
|
auto dev_mem_size = LOCAL_MEM_SIZE;
|
||||||
auto asize = align_size(size, CACHE_BLOCK_SIZE);
|
auto asize = aligned_size(size, CACHE_BLOCK_SIZE);
|
||||||
if (mem_allocation_ + asize > dev_mem_size)
|
if (mem_allocation_ + asize > dev_mem_size)
|
||||||
return -1;
|
return -1;
|
||||||
*dev_maddr = mem_allocation_;
|
*dev_maddr = mem_allocation_;
|
||||||
@@ -93,7 +93,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
int upload(const void* src, size_t dest_addr, size_t size, size_t src_offset) {
|
int upload(const void* src, size_t dest_addr, size_t size, size_t src_offset) {
|
||||||
auto asize = align_size(size, CACHE_BLOCK_SIZE);
|
auto asize = aligned_size(size, CACHE_BLOCK_SIZE);
|
||||||
if (dest_addr + asize > ram_.size())
|
if (dest_addr + asize > ram_.size())
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
@@ -108,7 +108,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
int download(void* dest, size_t src_addr, size_t size, size_t dest_offset) {
|
int download(void* dest, size_t src_addr, size_t size, size_t dest_offset) {
|
||||||
size_t asize = align_size(size, CACHE_BLOCK_SIZE);
|
size_t asize = aligned_size(size, CACHE_BLOCK_SIZE);
|
||||||
if (src_addr + asize > ram_.size())
|
if (src_addr + asize > ram_.size())
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
@@ -126,7 +126,7 @@ public:
|
|||||||
|
|
||||||
mutex_.lock();
|
mutex_.lock();
|
||||||
for (int i = 0; i < arch_.num_cores(); ++i) {
|
for (int i = 0; i < arch_.num_cores(); ++i) {
|
||||||
cores_[i]->clear();
|
cores_.at(i)->clear();
|
||||||
}
|
}
|
||||||
is_running_ = true;
|
is_running_ = true;
|
||||||
mutex_.unlock();
|
mutex_.unlock();
|
||||||
|
|||||||
@@ -1,6 +1,10 @@
|
|||||||
`ifndef VX_CONFIG
|
`ifndef VX_CONFIG
|
||||||
`define VX_CONFIG
|
`define VX_CONFIG
|
||||||
|
|
||||||
|
`ifndef XLEN
|
||||||
|
`define XLEN 32
|
||||||
|
`endif
|
||||||
|
|
||||||
`ifndef NUM_CLUSTERS
|
`ifndef NUM_CLUSTERS
|
||||||
`define NUM_CLUSTERS 1
|
`define NUM_CLUSTERS 1
|
||||||
`endif
|
`endif
|
||||||
@@ -373,7 +377,7 @@
|
|||||||
|
|
||||||
// Number of banks
|
// Number of banks
|
||||||
`ifndef L2_NUM_BANKS
|
`ifndef L2_NUM_BANKS
|
||||||
`define L2_NUM_BANKS `MIN(`NUM_CORES, 4)
|
`define L2_NUM_BANKS ((`NUM_CORES < 4) ? `NUM_CORES : 4)
|
||||||
`endif
|
`endif
|
||||||
|
|
||||||
// Number of ports per bank
|
// Number of ports per bank
|
||||||
@@ -415,7 +419,7 @@
|
|||||||
|
|
||||||
// Number of banks
|
// Number of banks
|
||||||
`ifndef L3_NUM_BANKS
|
`ifndef L3_NUM_BANKS
|
||||||
`define L3_NUM_BANKS `MIN(`NUM_CLUSTERS, 4)
|
`define L3_NUM_BANKS ((`NUM_CLUSTERS < 4) ? `NUM_CORES : 4)
|
||||||
`endif
|
`endif
|
||||||
|
|
||||||
// Number of ports per bank
|
// Number of ports per bank
|
||||||
|
|||||||
Reference in New Issue
Block a user