aboutsummaryrefslogtreecommitdiffstats
path: root/tests/arch/common/dynamic_part_select/multiple_blocking.v
blob: 7861722d4ae828a8f7300959a12a348f2e74e30b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
module multiple_blocking #(parameter WIDTH=256, SELW=2)
   (input 	         clk ,
    input [9:0] 	 ctrl ,
    input [15:0] 	 din ,
    input [SELW-1:0] 	 sel ,
    output reg [WIDTH:0] dout);

   localparam SLICE = WIDTH/(SELW**2);
   reg [9:0] 		 a;
   reg [SELW-1:0] 	 b;
   reg [15:0] 		 c;
   always @(posedge clk) begin
      a = ctrl + 1;
      b = sel - 1;
      c = ~din;
      dout = dout + 1;
      dout[a*b+:SLICE] = c;
   end
endmodule