@@ -38,19 +38,17 @@ package trace_spike_pkg;
3838 // IFU
3939 logic [XLEN - 1 : 0 ] ifu_adr, // PC (IFU address)
4040 logic [XLEN - 1 : 0 ] ifu_ins, // instruction
41- logic ifu_ill, // instruction is illegal
4241 // WBU (write back to destination register)
43- logic wbu_vld , // valid
42+ logic wbu_ena , // enable
4443 logic [ 5 - 1 : 0 ] wbu_idx, // index of destination register
4544 logic [XLEN - 1 : 0 ] wbu_dat, // data
4645 // LSU
47- logic lsu_vld , // valid
48- logic lsu_wen, // enable
49- logic [ 5 - 1 : 0 ] lsu_idx, // index of data source register
46+ logic lsu_ena , // enable
47+ logic lsu_wen, // write enable
48+ logic lsu_ren, // read enable
5049 logic [XLEN - 1 : 0 ] lsu_adr, // PC (IFU address)
5150 logic [XLEN - 1 : 0 ] lsu_siz, // load/store size
52- logic [XLEN - 1 : 0 ] lsu_wdt, // write data (store)
53- logic [XLEN - 1 : 0 ] lsu_rdt // read data (load)
51+ logic [XLEN - 1 : 0 ] lsu_wdt // write data (store)
5452 );
5553 string str_if; // instruction fetch
5654 string str_wb; // write-back
@@ -62,22 +60,27 @@ package trace_spike_pkg;
6260 str_if = $sformatf (" 0x%8h (0x%8h )" , ifu_adr, ifu_ins);
6361
6462 // prepare write-back
65- str_wb = wbu_vld ? $sformatf (" %s 0x%8h " , format_gpr (wbu_idx), wbu_dat) : " " ;
63+ str_wb = wbu_ena ? $sformatf (" %s 0x%8h " , format_gpr (wbu_idx), wbu_dat) : " " ;
6664
6765 // prepare load
68- str_ld = $sformatf (" mem 0x%8h " , lsu_adr);
66+ if (lsu_ena & lsu_ren) begin
67+ str_ld = $sformatf (" mem 0x%8h " , lsu_adr);
68+ end else begin
69+ str_ld = " " ;
70+ end
6971
7072 // prepare store
71- case (lsu_siz)
72- 2'd0 : str_st = $sformatf (" mem 0x%8h 0x%2h " , lsu_adr, lsu_wdt[ 8 - 1 : 0 ]);
73- 2'd1 : str_st = $sformatf (" mem 0x%8h 0x%4h " , lsu_adr, lsu_wdt[16 - 1 : 0 ]);
74- 2'd2 : str_st = $sformatf (" mem 0x%8h 0x%8h " , lsu_adr, lsu_wdt[32 - 1 : 0 ]);
75- // 2'd3: str_st = $sformatf(" mem 0x%8h 0x%16h", lsu_adr, lsu_wdt[64-1:0]);
76- default : $error (" Unsupported store size %0d " , lsu_siz);
77- endcase
78-
79- // prepare load/store
80- str_ls = lsu_vld ? (lsu_wen ? str_st : str_ld) : " " ;
73+ if (lsu_ena & lsu_wen) begin
74+ case (lsu_siz)
75+ 2'd0 : str_st = $sformatf (" mem 0x%8h 0x%2h " , lsu_adr, lsu_wdt[ 8 - 1 : 0 ]);
76+ 2'd1 : str_st = $sformatf (" mem 0x%8h 0x%4h " , lsu_adr, lsu_wdt[16 - 1 : 0 ]);
77+ 2'd2 : str_st = $sformatf (" mem 0x%8h 0x%8h " , lsu_adr, lsu_wdt[32 - 1 : 0 ]);
78+ // 2'd3: str_st = $sformatf(" mem 0x%8h 0x%16h", lsu_adr, lsu_wdt[64-1:0]);
79+ default : $error (" Unsupported store size %0d " , lsu_siz);
80+ endcase
81+ end else begin
82+ str_st = " " ;
83+ end
8184
8285 // combine fetch/write-back/load/store
8386 return ($sformatf (" core %0d : 3%s%s%s%s \n " , core, str_if, str_wb, str_ld, str_st));
0 commit comments