1
0
mirror of https://github.com/aolofsson/oh.git synced 2025-01-17 20:02:53 +08:00
oh/scripts/trace2trace
Andreas.Olofsson 82f160561e Only write result for r0-31
-Add spcial csrs later
2020-02-15 21:57:11 -05:00

87 lines
2.2 KiB
Python
Executable File

#!/usr/bin/env python3
#############################################################################
# trace2trace <inputfile> <outputfile>
#
# Converts a simulation trace file to the epiphany trace format
#
# Simulators supported: ovpsim, spike
#
#############################################################################
import re
import sys
#Input Arguments
with open(sys.argv[1], 'r') as f:
file_content = f.read()
fileout=open(sys.argv[2],"w")
#Reading input file into buffer
list=file_content.split('\'riscvOVPsim/cpu\'')
#ABI dictionary
regs={
"zero":"r0",
"ra":"r1",
"sp":"r2",
"gp":"r3",
"tp":"r4",
"t0":"r5",
"t1":"r6",
"t2":"r7",
"s0":"r8",
"s1":"r9",
"a0":"r10",
"a1":"r11",
"a2":"r12",
"a3":"r13",
"a4":"r14",
"a5":"r15",
"a6":"r16",
"a7":"r17",
"s2":"r18",
"s3":"r19",
"s4":"r20",
"s5":"r21",
"s6":"r22",
"s7":"r23",
"s8":"r24",
"s9":"r25",
"s10":"r26",
"s11":"r27",
"t3":"r28",
"t4":"r29",
"t5":"r30",
"t6":"r31",
"mtvec":"mtvec",
"pmpaddr0":"pmpaddr0",
"pmpcfg0":"pmpcfg0",
"mstatus":"mstatus",
"mepc":"mepc",
"mcause":"mcause",
}
#Format Trace
for i in list:
instr=i.replace('\n',' ') #replace all newlines in middle of strings
instr=instr.replace('Info','') #remove info
instr=re.sub('\(SIGNATURE_DUMP.*','',instr) #remove crud from end of file
if(re.search('^\,',instr)) : #filter out more crud
fields=instr.split() #split into fields
pc=re.sub('\(.*','',fields[1])
pc=re.sub('0x','',pc) #removing hex prefix
opcode=fields[2]
name=fields[3].rjust(8)
if(re.search('\-\>',instr)) :
#print("XXX" + instr)
reg=fields[-4]
reg=regs[reg]
val=fields[-1]
if(re.search('^r',reg)) :
update=reg + "=" + val.zfill(16); #don't update csrs for now
else :
update=""
fileout.write("TRACE: cpu_0.trace PC=" + pc + " I=" + name + " F=-------- " + update + "\n")
fileout.close()