From 3947fd513fe9147090eaad0ed704852ed4535842 Mon Sep 17 00:00:00 2001 From: Blaise Tine Date: Fri, 25 Jun 2021 22:53:07 -0400 Subject: [PATCH] adding share memory stack overflow check --- hw/rtl/cache/VX_shared_mem.v | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/hw/rtl/cache/VX_shared_mem.v b/hw/rtl/cache/VX_shared_mem.v index 44b2f42b..2db32aca 100644 --- a/hw/rtl/cache/VX_shared_mem.v +++ b/hw/rtl/cache/VX_shared_mem.v @@ -270,6 +270,19 @@ module VX_shared_mem #( end `endif + // Check potential stack overflow + for (genvar i = 0; i < NUM_REQS; ++i) begin + wire [31:0] addr_offset = `SMEM_BASE_ADDR - `TO_FULL_ADDR(core_req_addr[i]); + wire [31:0] stack_offset = addr_offset % `STACK_SIZE; + always @(posedge clk) begin + if (core_req_valid[i] && core_req_ready[i]) begin + if (stack_offset > (`STACK_SIZE-5)) begin + $error("*** stack overflow! tid=%0d, offset=%0d ", i, stack_offset); + end + end + end + end + `ifdef DBG_PRINT_CACHE_BANK reg is_multi_tag_req;