@@ -106,9 +106,9 @@ module controller
106106 // Address of trap vector table entry - CSR
107107 input logic [CVA6Cfg.VLEN - 1 : 0 ] trap_vector_base_i,
108108 // Integer Register File content - ISSUE_STAGE
109- input logic [31 : 0 ] [CVA6Cfg.XLEN - 1 : 0 ] int_regs_i,
109+ input logic [31 : 0 ][CVA6Cfg.XLEN - 1 : 0 ] int_regs_i,
110110 // Floating Point Register File content - ISSUE_STAGE
111- input logic [31 : 0 ] [CVA6Cfg.XLEN - 1 : 0 ] fp_regs_i,
111+ input logic [31 : 0 ][CVA6Cfg.XLEN - 1 : 0 ] fp_regs_i,
112112 // Kernel stack pointer from CSR - CSR_REGFILE
113113 input logic [CVA6Cfg.XLEN - 1 : 0 ] kernel_stack_pointer_i,
114114 // Write enable to integer register file for SP update - ISSUE_STAGE
@@ -282,45 +282,45 @@ module controller
282282
283283 // Hwstack fill FSM signals
284284 hwstack_fifo_fill_state_e hwstack_fill_state_d, hwstack_fill_state_q;
285- logic [4 : 0 ] hwstack_regs_count_d, hwstack_regs_count_q;
286- logic [4 : 0 ] hwstack_regs_num_d, hwstack_regs_num_q;
285+ logic [4 : 0 ] hwstack_regs_count_d, hwstack_regs_count_q;
286+ logic [4 : 0 ] hwstack_regs_num_d, hwstack_regs_num_q;
287287
288288 // Hwstack drain FSM signals
289- hwstack_fifo_drain_state_e hwstack_drain_state_d, hwstack_drain_state_q;
290- logic [CVA6Cfg.VLEN - 1 : 0 ] hwstack_drain_address_d, hwstack_drain_address_q;
289+ hwstack_fifo_drain_state_e hwstack_drain_state_d, hwstack_drain_state_q;
290+ logic [CVA6Cfg.VLEN - 1 : 0 ] hwstack_drain_address_d, hwstack_drain_address_q;
291291
292292 // Hwstack configuration
293293 logic [1 : 0 ] hwstack_config;
294294 logic [1 : 0 ] hwstack_config_d, hwstack_config_q;
295295
296- logic [ 4 : 0 ] hwstack_regs_num;
297- logic [31 : 0 ] [CVA6Cfg.XLEN - 1 : 0 ] hwstack_reg_pool;
296+ logic [ 4 : 0 ] hwstack_regs_num;
297+ logic [ 31 : 0 ][CVA6Cfg.XLEN - 1 : 0 ] hwstack_reg_pool;
298298
299299 // Hwstack FIFO control signals
300- logic [CVA6Cfg.HwstackFifoDepth- 1 : 0 ] [CVA6Cfg.XLEN - 1 : 0 ] hwstack_fifo_load_data;
301- logic [CVA6Cfg. XLEN - 1 : 0 ] hwstack_fifo_wdata;
302- logic [CVA6Cfg. XLEN - 1 : 0 ] hwstack_fifo_rdata;
303- logic hwstack_fifo_load;
304- logic hwstack_fifo_full;
305- logic hwstack_fifo_empty;
306- logic hwstack_fifo_push;
307- logic hwstack_fifo_pop;
300+ logic [CVA6Cfg.HwstackFifoDepth- 1 : 0 ][CVA6Cfg.XLEN - 1 : 0 ] hwstack_fifo_load_data;
301+ logic [ CVA6Cfg. XLEN - 1 : 0 ] hwstack_fifo_wdata;
302+ logic [ CVA6Cfg. XLEN - 1 : 0 ] hwstack_fifo_rdata;
303+ logic hwstack_fifo_load;
304+ logic hwstack_fifo_full;
305+ logic hwstack_fifo_empty;
306+ logic hwstack_fifo_push;
307+ logic hwstack_fifo_pop;
308308
309309 // Data cache request signals
310- logic hwstack_dcache_req_valid;
310+ logic hwstack_dcache_req_valid;
311311
312- assign dcache_req_o.data_req = hwstack_dcache_req_valid;
312+ assign dcache_req_o.data_req = hwstack_dcache_req_valid;
313313 assign dcache_req_o.address_index = hwstack_drain_address_q[CVA6Cfg.DCACHE_INDEX_WIDTH - 1 : 0 ];
314314 assign dcache_req_o.address_tag = hwstack_drain_address_q[CVA6Cfg.DCACHE_TAG_WIDTH + CVA6Cfg.DCACHE_INDEX_WIDTH - 1 : CVA6Cfg.DCACHE_INDEX_WIDTH ];
315- assign dcache_req_o.data_wdata = hwstack_fifo_rdata;
316- assign dcache_req_o.data_wuser = '0 ;
317- assign dcache_req_o.data_we = 1'b1 ;
318- assign dcache_req_o.data_be = '1 ;
319- assign dcache_req_o.data_size = '1 ;
320- assign dcache_req_o.data_id = '0 ;
321- assign dcache_req_o.tag_valid = '0 ;
322- assign dcache_req_o.kill_req = '0 ;
323- assign dcache_req_o.cbo_op = '0 ;
315+ assign dcache_req_o.data_wdata = hwstack_fifo_rdata;
316+ assign dcache_req_o.data_wuser = '0 ;
317+ assign dcache_req_o.data_we = 1'b1 ;
318+ assign dcache_req_o.data_be = '1 ;
319+ assign dcache_req_o.data_size = '1 ;
320+ assign dcache_req_o.data_id = '0 ;
321+ assign dcache_req_o.tag_valid = '0 ;
322+ assign dcache_req_o.kill_req = '0 ;
323+ assign dcache_req_o.cbo_op = '0 ;
324324
325325 assign hwstack_fifo_wdata = hwstack_reg_pool[hwstack_regs_count_q];
326326
@@ -356,30 +356,31 @@ module controller
356356 hwstack_reg_pool = '0 ;
357357 hwstack_regs_num = '0 ;
358358 hwstack_regs_count_o = '0 ;
359- case (hwstack_config)
359+ case (hwstack_config)
360360 2'b01 : begin
361361 // Only caller-saved registers
362362 hwstack_regs_num = 5'd16 ;
363- hwstack_reg_pool[ 0 ] = int_regs_i[ 1 ]; // ra
364- hwstack_reg_pool[ 1 ] = int_regs_i[ 2 ]; // sp
365- hwstack_reg_pool[ 2 ] = int_regs_i[ 5 ]; // t0
366- hwstack_reg_pool[ 3 ] = int_regs_i[ 6 ]; // t1
367- hwstack_reg_pool[ 4 ] = int_regs_i[ 7 ]; // t2
368- hwstack_reg_pool[ 5 ] = int_regs_i[10 ]; // a0
369- hwstack_reg_pool[ 6 ] = int_regs_i[11 ]; // a1
370- hwstack_reg_pool[ 7 ] = int_regs_i[12 ]; // a2
371- hwstack_reg_pool[ 8 ] = int_regs_i[13 ]; // a3
372- hwstack_reg_pool[ 9 ] = int_regs_i[14 ]; // a4
373- hwstack_reg_pool[10 ] = int_regs_i[15 ]; // a5
374- hwstack_reg_pool[11 ] = int_regs_i[16 ]; // a6
375- hwstack_reg_pool[12 ] = int_regs_i[17 ]; // a7
376- hwstack_reg_pool[13 ] = int_regs_i[28 ]; // t3
377- hwstack_reg_pool[14 ] = int_regs_i[29 ]; // t4
378- hwstack_reg_pool[15 ] = int_regs_i[30 ]; // t5
379- hwstack_reg_pool[16 ] = int_regs_i[31 ]; // t6
363+ hwstack_reg_pool[0 ] = int_regs_i[1 ]; // ra
364+ hwstack_reg_pool[1 ] = int_regs_i[2 ]; // sp
365+ hwstack_reg_pool[2 ] = int_regs_i[5 ]; // t0
366+ hwstack_reg_pool[3 ] = int_regs_i[6 ]; // t1
367+ hwstack_reg_pool[4 ] = int_regs_i[7 ]; // t2
368+ hwstack_reg_pool[5 ] = int_regs_i[10 ]; // a0
369+ hwstack_reg_pool[6 ] = int_regs_i[11 ]; // a1
370+ hwstack_reg_pool[7 ] = int_regs_i[12 ]; // a2
371+ hwstack_reg_pool[8 ] = int_regs_i[13 ]; // a3
372+ hwstack_reg_pool[9 ] = int_regs_i[14 ]; // a4
373+ hwstack_reg_pool[10 ] = int_regs_i[15 ]; // a5
374+ hwstack_reg_pool[11 ] = int_regs_i[16 ]; // a6
375+ hwstack_reg_pool[12 ] = int_regs_i[17 ]; // a7
376+ hwstack_reg_pool[13 ] = int_regs_i[28 ]; // t3
377+ hwstack_reg_pool[14 ] = int_regs_i[29 ]; // t4
378+ hwstack_reg_pool[15 ] = int_regs_i[30 ]; // t5
379+ hwstack_reg_pool[16 ] = int_regs_i[31 ]; // t6
380380 if (hwstack_fill_state_q != HWSTACK_FILL_IDLE ) begin
381381 hwstack_regs_count_o = get_abi_index (hwstack_regs_count_q);
382- end ;
382+ end
383+ ;
383384 end
384385 2'b10 : begin
385386 // All GPRs
@@ -391,18 +392,18 @@ module controller
391392 end
392393
393394 hwstack_fifo # (
394- . CVA6Cfg ( CVA6Cfg )
395+ . CVA6Cfg ( CVA6Cfg)
395396 ) i_hwstack_fifo (
396- .clk_i ( clk_i ),
397- .rst_ni ( rst_ni ),
398- .load_i ( hwstack_fifo_load ),
399- .load_data_i ( hwstack_fifo_load_data ),
400- .data_i ( hwstack_fifo_wdata ),
401- .push_i ( hwstack_fifo_push ),
402- .pop_i ( hwstack_fifo_pop ),
403- .data_o ( hwstack_fifo_rdata ),
404- .empty_o ( hwstack_fifo_empty ),
405- .full_o ( hwstack_fifo_full )
397+ .clk_i ( clk_i),
398+ .rst_ni ( rst_ni),
399+ .load_i ( hwstack_fifo_load),
400+ .load_data_i ( hwstack_fifo_load_data),
401+ .data_i ( hwstack_fifo_wdata),
402+ .push_i ( hwstack_fifo_push),
403+ .pop_i ( hwstack_fifo_pop),
404+ .data_o ( hwstack_fifo_rdata),
405+ .empty_o ( hwstack_fifo_empty),
406+ .full_o ( hwstack_fifo_full)
406407 );
407408
408409 always_ff @ (posedge clk_i or negedge rst_ni) begin
@@ -434,7 +435,7 @@ module controller
434435 hwstack_fifo_push = 1'b0 ;
435436 hwstack_pushing_o = 1'b0 ;
436437 gpr_we_o = 1'b0 ;
437- gpr_waddr_o = 5'd2 ; // x2 = sp
438+ gpr_waddr_o = 5'd2 ; // x2 = sp
438439 gpr_wdata_o = kernel_stack_pointer_i;
439440 unique case (hwstack_fill_state_q)
440441
@@ -495,7 +496,7 @@ module controller
495496 HWSTACK_DRAIN_IDLE : begin
496497 if (ex_valid_i && clic_irq_i && (| clic_rstk_i)) begin
497498 hwstack_drain_address_d = (clic_rstk_i == 2'b01 ) ? trap_frame_base_i : task_context_base_i;
498- hwstack_drain_state_d = HWSTACK_DRAIN_SEND_REQ ;
499+ hwstack_drain_state_d = HWSTACK_DRAIN_SEND_REQ ;
499500 end
500501 end
501502
@@ -508,7 +509,7 @@ module controller
508509 hwstack_dcache_req_valid = 1'b1 ;
509510 if (dcache_rsp_i.data_gnt) begin
510511 hwstack_fifo_pop = 1'b1 ;
511- hwstack_drain_address_d = hwstack_drain_address_q + (CVA6Cfg.XLEN / 8 );
512+ hwstack_drain_address_d = hwstack_drain_address_q + (CVA6Cfg.XLEN / 8 );
512513 hwstack_drain_state_d = HWSTACK_DRAIN_SEND_REQ ;
513514 end else begin
514515 hwstack_drain_state_d = HWSTACK_DRAIN_WAIT_GNT ;
@@ -520,7 +521,7 @@ module controller
520521 hwstack_dcache_req_valid = 1'b1 ;
521522 if (dcache_rsp_i.data_gnt) begin
522523 hwstack_fifo_pop = 1'b1 ;
523- hwstack_drain_address_d = hwstack_drain_address_q + (CVA6Cfg.XLEN / 8 );
524+ hwstack_drain_address_d = hwstack_drain_address_q + (CVA6Cfg.XLEN / 8 );
524525 hwstack_drain_state_d = HWSTACK_DRAIN_SEND_REQ ;
525526 end
526527 end
0 commit comments