Files
vortex/hw/rtl/shared_memory/VX_bank_valids.v
2020-04-16 07:49:19 -04:00

36 lines
706 B
Verilog

`include "../VX_define.vh"
// Converts in_valids to bank_valids
module VX_bank_valids
#(
parameter NB = 4,
parameter BITS_PER_BANK = 3
)
(
input wire[`NUM_THREADS-1:0] in_valids,
input wire[`NUM_THREADS-1:0][31:0] in_addr,
output reg[NB:0][`NUM_THREADS-1:0] bank_valids
);
integer i, j;
always@(*) begin
for(j = 0; j <= NB; j = j+1 ) begin
for(i = 0; i < `NUM_THREADS; i = i+1) begin
if(in_valids[i]) begin
if(in_addr[i][(2+BITS_PER_BANK-1):2] == j[BITS_PER_BANK-1:0]) begin
bank_valids[j][i] = 1'b1;
end
else begin
bank_valids[j][i] = 1'b0;
end
end
else begin
bank_valids[j][i] = 1'b0;
end
end
end
end
endmodule