Added basic commit register update trace in exec.log
This commit is contained in:
parent
761e69df4e
commit
cf4d56c78c
|
@ -105,7 +105,11 @@ module tb_top ( input logic core_clk, input logic reset_l, output finished);
|
||||||
`endif
|
`endif
|
||||||
|
|
||||||
wire dma_hready_out;
|
wire dma_hready_out;
|
||||||
|
integer commit_count;
|
||||||
|
|
||||||
|
logic wb_valid[1:0];
|
||||||
|
logic [4:0] wb_dest[1:0];
|
||||||
|
logic [31:0] wb_data[1:0];
|
||||||
|
|
||||||
//assign mailbox_write = &{i_ahb_lsu.Write, i_ahb_lsu.Last_HADDR==32'hD0580000, i_ahb_lsu.HRESETn==1};
|
//assign mailbox_write = &{i_ahb_lsu.Write, i_ahb_lsu.Last_HADDR==32'hD0580000, i_ahb_lsu.HRESETn==1};
|
||||||
assign mailbox_write = i_ahb_lsu.mailbox_write;
|
assign mailbox_write = i_ahb_lsu.mailbox_write;
|
||||||
|
@ -118,6 +122,8 @@ module tb_top ( input logic core_clk, input logic reset_l, output finished);
|
||||||
assign jtag_id[27:12] = '0;
|
assign jtag_id[27:12] = '0;
|
||||||
assign jtag_id[11:1] = 11'h45;
|
assign jtag_id[11:1] = 11'h45;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
`ifndef VERILATOR
|
`ifndef VERILATOR
|
||||||
`define FORCE force
|
`define FORCE force
|
||||||
`else
|
`else
|
||||||
|
@ -128,9 +134,10 @@ module tb_top ( input logic core_clk, input logic reset_l, output finished);
|
||||||
integer fd;
|
integer fd;
|
||||||
initial begin
|
initial begin
|
||||||
fd = $fopen("console.log","w");
|
fd = $fopen("console.log","w");
|
||||||
|
commit_count = 0;
|
||||||
end
|
end
|
||||||
|
|
||||||
integer tp;
|
integer tp,el;
|
||||||
|
|
||||||
always @(posedge core_clk or negedge reset_l) begin
|
always @(posedge core_clk or negedge reset_l) begin
|
||||||
if( reset_l == 0)
|
if( reset_l == 0)
|
||||||
|
@ -160,14 +167,30 @@ module tb_top ( input logic core_clk, input logic reset_l, output finished);
|
||||||
|
|
||||||
always @(posedge finished) begin
|
always @(posedge finished) begin
|
||||||
$display("\n\nFinished : minstret = %0d, mcycle = %0d", rvtop.swerv.dec.tlu.minstretl[31:0],rvtop.swerv.dec.tlu.mcyclel[31:0]);
|
$display("\n\nFinished : minstret = %0d, mcycle = %0d", rvtop.swerv.dec.tlu.minstretl[31:0],rvtop.swerv.dec.tlu.mcyclel[31:0]);
|
||||||
|
$display("\n\nSee \"exec.log\" for execution trace with register updates..\n");
|
||||||
`ifndef VERILATOR
|
`ifndef VERILATOR
|
||||||
$finish;
|
$finish;
|
||||||
`endif
|
`endif
|
||||||
end
|
end
|
||||||
|
|
||||||
always @(posedge core_clk)
|
always @(posedge core_clk) begin
|
||||||
|
wb_valid[1:0] <= '{rvtop.swerv.dec.dec_i1_wen_wb & ~rvtop.swerv.dec.decode.dec_tlu_i1_kill_writeb_wb,
|
||||||
|
rvtop.swerv.dec.decode.wbd.i0v & ~rvtop.swerv.dec.decode.dec_tlu_i0_kill_writeb_wb};
|
||||||
|
wb_dest[1:0] <= '{rvtop.swerv.dec.dec_i1_waddr_wb, rvtop.swerv.dec.dec_i0_waddr_wb};
|
||||||
|
wb_data[1:0] <= '{rvtop.swerv.dec.dec_i1_wdata_wb, rvtop.swerv.dec.dec_i0_wdata_wb};
|
||||||
if (rvtop.trace_rv_i_valid_ip !== 0) begin
|
if (rvtop.trace_rv_i_valid_ip !== 0) begin
|
||||||
$fwrite(tp,"%b,%h,%h,%0h,%0h,3,%b,%h,%h,%b\n", rvtop.trace_rv_i_valid_ip, rvtop.trace_rv_i_address_ip[63:32], rvtop.trace_rv_i_address_ip[31:0], rvtop.trace_rv_i_insn_ip[63:32], rvtop.trace_rv_i_insn_ip[31:0],rvtop.trace_rv_i_exception_ip,rvtop.trace_rv_i_ecause_ip,rvtop.trace_rv_i_tval_ip,rvtop.trace_rv_i_interrupt_ip);
|
$fwrite(tp,"%b,%h,%h,%0h,%0h,3,%b,%h,%h,%b\n", rvtop.trace_rv_i_valid_ip, rvtop.trace_rv_i_address_ip[63:32], rvtop.trace_rv_i_address_ip[31:0], rvtop.trace_rv_i_insn_ip[63:32], rvtop.trace_rv_i_insn_ip[31:0],rvtop.trace_rv_i_exception_ip,rvtop.trace_rv_i_ecause_ip,rvtop.trace_rv_i_tval_ip,rvtop.trace_rv_i_interrupt_ip);
|
||||||
|
// Basic trace - no exception register updates
|
||||||
|
// #1 0 ee000000 b0201073 c 0b02 00000000
|
||||||
|
if (rvtop.trace_rv_i_valid_ip[0]==1) begin
|
||||||
|
commit_count ++;
|
||||||
|
$fwrite (el, "%0d : #%0d 0 %0h %0h r %0d %0h\n",$time(), commit_count, rvtop.trace_rv_i_address_ip[31:0], rvtop.trace_rv_i_insn_ip[31:0], wb_dest[0], wb_data[0]);
|
||||||
|
end
|
||||||
|
if (rvtop.trace_rv_i_valid_ip[1]==1) begin
|
||||||
|
commit_count ++;
|
||||||
|
$fwrite (el, "%0d : #%0d 0 0x%0h 0x%0h r %0d 0x%h\n",$time(), commit_count, rvtop.trace_rv_i_address_ip[63:32], rvtop.trace_rv_i_insn_ip[63:32], wb_dest[1], wb_data[1]);
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
initial begin
|
initial begin
|
||||||
|
@ -189,6 +212,8 @@ module tb_top ( input logic core_clk, input logic reset_l, output finished);
|
||||||
$readmemh("data.hex", i_ahb_lsu.mem);
|
$readmemh("data.hex", i_ahb_lsu.mem);
|
||||||
$readmemh("program.hex", i_ahb_ic.mem);
|
$readmemh("program.hex", i_ahb_ic.mem);
|
||||||
tp = $fopen("trace_port.csv","w");
|
tp = $fopen("trace_port.csv","w");
|
||||||
|
el = $fopen("exec.log","w");
|
||||||
|
$fwrite (el, "//Time : #inst 0 pc opcode reg regnum value\n");
|
||||||
|
|
||||||
`ifndef VERILATOR
|
`ifndef VERILATOR
|
||||||
repeat (5) @(posedge core_clk);
|
repeat (5) @(posedge core_clk);
|
||||||
|
|
Loading…
Reference in New Issue