@@ -404,27 +404,15 @@ begin
404404 // predecode_mshr_read_address_s1 = mshr_pipe_address_s1;
405405 predecode_mshr_read_homeid_s1 = mshr_pipe_readres_homeid_s1;
406406
407- // mshr_val_array
408- //mshr_val_array[0] = mshr_pipe_vals_s1[`L15_NUM_MSHRID_PER_THREAD*1 - 1 -: `L15_NUM_MSHRID_PER_THREAD];
409- //mshr_st_state_array[0] = mshr_pipe_st_state_s1[`L15_MESI_TRANS_STATE_WIDTH*1 - 1 -: `L15_MESI_TRANS_STATE_WIDTH];
410- //mshr_st_address_array[0] = mshr_pipe_st_address[`L15_PADDR_WIDTH*1 - 1 -: `L15_PADDR_WIDTH];
411- //mshr_ld_address_array[0] = mshr_pipe_ld_address[`L15_PADDR_WIDTH*1 - 1 -: `L15_PADDR_WIDTH];
412- //mshr_st_way_array[0] = mshr_pipe_st_way_s1[2*1 - 1 -: 2];
413- //
414- //mshr_val_array[1] = mshr_pipe_vals_s1[`L15_NUM_MSHRID_PER_THREAD*2 - 1 -: `L15_NUM_MSHRID_PER_THREAD];
415- //mshr_st_state_array[1] = mshr_pipe_st_state_s1[`L15_MESI_TRANS_STATE_WIDTH*2 - 1 -: `L15_MESI_TRANS_STATE_WIDTH];
416- //mshr_st_address_array[1] = mshr_pipe_st_address[`L15_PADDR_WIDTH*2 - 1 -: `L15_PADDR_WIDTH];
417- //mshr_ld_address_array[1] = mshr_pipe_ld_address[`L15_PADDR_WIDTH*2 - 1 -: `L15_PADDR_WIDTH];
418- //mshr_st_way_array[1] = mshr_pipe_st_way_s1[2*2 - 1 -: 2];
419-
420- for(i = 0; i < `L15_NUM_THREADS; i = i+1)
421- begin
422- mshr_val_array[i] = mshr_pipe_vals_s1[`L15_NUM_MSHRID_PER_THREAD*(i+1) - 1 -: `L15_NUM_MSHRID_PER_THREAD];
423- mshr_st_state_array[i] = mshr_pipe_st_state_s1[`L15_MESI_TRANS_STATE_WIDTH*(i+1) - 1 -: `L15_MESI_TRANS_STATE_WIDTH];
424- mshr_st_address_array[i] = mshr_pipe_st_address[`L15_PADDR_WIDTH*(i+1) - 1 -: `L15_PADDR_WIDTH];
425- mshr_ld_address_array[i] = mshr_pipe_ld_address[`L15_PADDR_WIDTH*(i+1) - 1 -: `L15_PADDR_WIDTH];
426- mshr_st_way_array[i] = mshr_pipe_st_way_s1[`L15_WAY_WIDTH*(i+1) - 1 -: `L15_WAY_WIDTH];
427- end
407+ // mshr_val_array
408+ for(i = 0; i < `L15_NUM_THREADS; i = i+1)
409+ begin
410+ mshr_val_array[i] = mshr_pipe_vals_s1[`L15_NUM_MSHRID_PER_THREAD*(i+1) - 1 -: `L15_NUM_MSHRID_PER_THREAD];
411+ mshr_st_state_array[i] = mshr_pipe_st_state_s1[`L15_MESI_TRANS_STATE_WIDTH*(i+1) - 1 -: `L15_MESI_TRANS_STATE_WIDTH];
412+ mshr_st_address_array[i] = mshr_pipe_st_address[`L15_PADDR_WIDTH*(i+1) - 1 -: `L15_PADDR_WIDTH];
413+ mshr_ld_address_array[i] = mshr_pipe_ld_address[`L15_PADDR_WIDTH*(i+1) - 1 -: `L15_PADDR_WIDTH];
414+ mshr_st_way_array[i] = mshr_pipe_st_way_s1[`L15_WAY_WIDTH*(i+1) - 1 -: `L15_WAY_WIDTH];
415+ end
428416
429417end
430418
@@ -450,10 +438,6 @@ reg predecode_tagcheck_matched_trd_ld_s1 [`L15_THREAD_ARRAY_MASK]; // each eleme
450438reg predecode_tagcheck_matched_trd_st_s1 [`L15_THREAD_ARRAY_MASK];
451439reg predecode_tagcheck_matched_lds_s1;
452440reg predecode_tagcheck_matched_sts_s1;
453- //reg predecode_tagcheck_matched_t0ld_s1;
454- //reg predecode_tagcheck_matched_t0st_s1;
455- //reg predecode_tagcheck_matched_t1ld_s1;
456- //reg predecode_tagcheck_matched_t1st_s1;
457441
458442reg predecode_int_vec_dis_s1;
459443reg predecode_tagcheck_matched_s1;
@@ -850,28 +834,26 @@ begin
850834
851835 // TAG CHECKING
852836 predecode_partial_tag_s1[19:4] = pcxdecoder_l15_address[19:4]; // compare partial tag to save energy & timing
853- predecode_tagcheck_matched_lds_s1 = 0;
854- predecode_tagcheck_matched_sts_s1 = 0;
837+ predecode_tagcheck_matched_lds_s1 = 0;
838+ predecode_tagcheck_matched_sts_s1 = 0;
855839
856- for(i = 0; i < `L15_NUM_THREADS; i = i+1)
857- begin
858- predecode_tagcheck_matched_trd_ld_s1[i] = mshr_val_array[i][`L15_MSHR_ID_LD]
840+ for(i = 0; i < `L15_NUM_THREADS; i = i+1)
841+ begin
842+ predecode_tagcheck_matched_trd_ld_s1[i] = mshr_val_array[i][`L15_MSHR_ID_LD]
859843 && (predecode_partial_tag_s1[19:4] == mshr_ld_address_array[i][19:4]);
860- predecode_tagcheck_matched_trd_st_s1[i] = mshr_val_array[i][`L15_MSHR_ID_ST]
861- && (pcxdecoder_l15_address[39:4] == mshr_st_address_array[i][39:4]);
844+ predecode_tagcheck_matched_trd_st_s1[i] = mshr_val_array[i][`L15_MSHR_ID_ST]
845+ && (pcxdecoder_l15_address[39:4] == mshr_st_address_array[i][39:4]);
862846
863- predecode_tagcheck_matched_lds_s1 = predecode_tagcheck_matched_trd_ld_s1[i] | predecode_tagcheck_matched_lds_s1;
864- predecode_tagcheck_matched_sts_s1 = predecode_tagcheck_matched_trd_st_s1[i] | predecode_tagcheck_matched_sts_s1;
865-
866- if(predecode_tagcheck_matched_trd_st_s1[i] == 1)
867- predecode_hit_stbuf_threadid_s1 = i;
847+ predecode_tagcheck_matched_lds_s1 = predecode_tagcheck_matched_trd_ld_s1[i] | predecode_tagcheck_matched_lds_s1;
848+ predecode_tagcheck_matched_sts_s1 = predecode_tagcheck_matched_trd_st_s1[i] | predecode_tagcheck_matched_sts_s1;
868849
869- end
850+ if(predecode_tagcheck_matched_trd_st_s1[i] == 1)
851+ predecode_hit_stbuf_threadid_s1 = i;
852+ end
870853
871- predecode_tagcheck_matched_s1 = predecode_tagcheck_matched_lds_s1 | predecode_tagcheck_matched_sts_s1;
854+ predecode_tagcheck_matched_s1 = predecode_tagcheck_matched_lds_s1 | predecode_tagcheck_matched_sts_s1;
872855 // misc
873856 predecode_hit_stbuf_s1 = predecode_tagcheck_matched_sts_s1;
874- //predecode_hit_stbuf_threadid_s1 = predecode_tagcheck_matched_t1st_s1 ? 1'b1 : 1'b0;
875857 // note: only work with 2 threads for now; need to change the algo of mshr if need to increase the num of threads
876858end
877859
@@ -3326,31 +3308,35 @@ reg [`L15_UNPARAM_1_0] stbuf_way_s3; // wmt todo: move calculation to s2
33263308always @ *
33273309begin
33283310
3329- stbuf_compare_match_val_s3 = 0;
3330- stbuf_compare_lru_match_val_s3 = 0;
3331- for(i = 0; i < `L15_NUM_THREADS; i = i+1)
3332- begin
3333- `ifdef PITON_ASIC_RTL
3334- stbuf_compare_address_match_s3[i] = mshr_st_address_array[i][10:4] == cache_index_s3;
3335- `else
3336- stbuf_compare_address_match_s3[i] = mshr_st_address_array[i][39:4] == address_s3[39:4];
3337- `endif
3311+ stbuf_compare_match_val_s3 = 0;
3312+ stbuf_compare_lru_match_val_s3 = 0;
3313+ for(i = 0; i < `L15_NUM_THREADS; i = i+1)
3314+ begin
3315+ `ifdef PITON_ASIC_RTL
3316+ stbuf_compare_address_match_s3[i] = mshr_st_address_array[i][10:4] == cache_index_s3;
3317+ `else
3318+ stbuf_compare_address_match_s3[i] = mshr_st_address_array[i][39:4] == address_s3[39:4];
3319+ `endif
33383320
3339- stbuf_compare_match_s3[i] = mshr_val_array[i][`L15_MSHR_ID_ST]
3340- && (mshr_st_state_array[i] == `L15_MESI_TRANSITION_STATE_SM)
3341- && (stbuf_compare_address_match_s3[i] == 1'b1);
3321+ stbuf_compare_match_s3[i] = mshr_val_array[i][`L15_MSHR_ID_ST]
3322+ && (mshr_st_state_array[i] == `L15_MESI_TRANSITION_STATE_SM)
3323+ && (stbuf_compare_address_match_s3[i] == 1'b1);
33423324
3343- stbuf_compare_lru_match_s3[i] = stbuf_compare_match_s3[i] && (mshr_st_way_array[i] == lru_way_s3);
3325+ stbuf_compare_lru_match_s3[i] = stbuf_compare_match_s3[i] && (mshr_st_way_array[i] == lru_way_s3);
33443326
3345- if (stbuf_compare_match_s3[i] == 1)
3327+ if (stbuf_compare_match_s3[i] == 1)
3328+ begin
33463329 stbuf_compare_threadid_s3 = i;
3330+ end
33473331
3348- if (stbuf_compare_lru_match_s3[i] == 1)
3332+ if (stbuf_compare_lru_match_s3[i] == 1)
3333+ begin
33493334 stbuf_compare_lru_threadid_s3 = i;
3335+ end
33503336
3351- stbuf_compare_match_val_s3 = stbuf_compare_match_s3[i] | stbuf_compare_match_val_s3;
3352- stbuf_compare_lru_match_val_s3 = stbuf_compare_lru_match_s3[i] | stbuf_compare_lru_match_val_s3;
3353- end
3337+ stbuf_compare_match_val_s3 = stbuf_compare_match_s3[i] | stbuf_compare_match_val_s3;
3338+ stbuf_compare_lru_match_val_s3 = stbuf_compare_lru_match_s3[i] | stbuf_compare_lru_match_val_s3;
3339+ end
33543340
33553341 stbuf_way_s3 = mshr_st_way_array[stbuf_compare_threadid_s3];
33563342 // stbuf_way_wmt_data_s3 = wmt_data_s3[stbuf_way_s3];
0 commit comments