rlm@23: #========================================================================= rlm@23: # Trace-bsv.pl Config File rlm@23: # rlm@23: rlm@23: package settings; rlm@23: rlm@23: #-------------------------------------------------------------------- rlm@23: # Trace Tags rlm@23: #-------------------------------------------------------------------- rlm@23: rlm@23: $base = "mkCoreTH_wrapper.coreTH"; rlm@23: rlm@23: # This should be a hash of tags to what should be displayed if the rlm@23: # tag is not present on a given cycle. The tags correspond to the rlm@23: # trace tags used in the BSV source code. rlm@23: rlm@23: %fields = rlm@23: ( rlm@23: rlm@23: "mkProc:pc" => " ", rlm@23: "mkProc:pcgen" => " ", rlm@23: "mkProc:exec" => " ", rlm@23: "mkProc:writeback" => " ", rlm@23: "mkProc:exInstFull" => " ", rlm@23: rlm@23: "mkInstCacheBlocking:reqTiny" => " ", rlm@23: "mkInstCacheBlocking:respTiny" => " ", rlm@23: "mkInstCacheBlocking:stage" => " ", rlm@23: "mkInstCacheBlocking:hitMiss" => " ", rlm@23: rlm@23: "mkDataCacheBlocking:reqTiny" => " ", rlm@23: "mkDataCacheBlocking:respTiny" => " ", rlm@23: "mkDataCacheBlocking:stage" => " ", rlm@23: "mkDataCacheBlocking:hitMiss" => " ", rlm@23: rlm@23: "mkMemArb:req0" => " ", rlm@23: "mkMemArb:req1" => " ", rlm@23: "mkMemArb:resp" => " ", rlm@23: rlm@23: ); rlm@23: rlm@23: %headers = rlm@23: ( rlm@23: rlm@23: "mkProc:pc" => "pc ", rlm@23: "mkProc:pcgen" => "stage", rlm@23: "mkProc:exec" => "", rlm@23: "mkProc:writeback" => "", rlm@23: "mkProc:exInstFull" => "exInst ", rlm@23: rlm@23: "mkInstCacheBlocking:reqTiny" => "req", rlm@23: "mkInstCacheBlocking:respTiny" => "resp", rlm@23: "mkInstCacheBlocking:stage" => "stage", rlm@23: "mkInstCacheBlocking:hitMiss" => "hit/miss", rlm@23: rlm@23: "mkDataCacheBlocking:reqTiny" => "req", rlm@23: "mkDataCacheBlocking:respTiny" => "resp", rlm@23: "mkDataCacheBlocking:stage" => "stage", rlm@23: "mkDataCacheBlocking:hitMiss" => "hit/miss", rlm@23: rlm@23: "mkMemArb:req0" => "req0", rlm@23: "mkMemArb:req1" => "req1", rlm@23: "mkMemArb:resp" => "req2", rlm@23: rlm@23: ); rlm@23: rlm@23: rlm@23: #-------------------------------------------------------------------- rlm@23: # Trace String rlm@23: #-------------------------------------------------------------------- rlm@23: rlm@23: # For the processor we display the PC and what stage we are in. rlm@23: rlm@23: $proc = "pc={mkProc:pc} [{mkProc:pcgen}|{mkProc:exec}|{mkProc:writeback}]"; rlm@23: $procl = "{mkProc:pc} [{mkProc:pcgen}{mkProc:exec}{mkProc:writeback}]"; rlm@23: rlm@23: # For the caches we display the current request and response, rlm@23: # the current cache stage, whether or not the access is a hit or a miss. rlm@23: rlm@23: $icache = "[{mkInstCacheBlocking:reqTiny}|{mkInstCacheBlocking:respTiny}|". rlm@23: "{mkInstCacheBlocking:stage}|{mkInstCacheBlocking:hitMiss}]"; rlm@23: rlm@23: $dcache = "[{mkDataCacheBlocking:reqTiny}|{mkDataCacheBlocking:respTiny}|". rlm@23: "{mkDataCacheBlocking:stage}|{mkDataCacheBlocking:hitMiss}]"; rlm@23: rlm@23: # For the memory arbiter we display the two requests from the rlm@23: # instruction and data caches and the response (which might be rlm@23: # going to either cache) rlm@23: rlm@23: $marb = "[{mkMemArb:req0}|{mkMemArb:req1}|{mkMemArb:resp}]"; rlm@23: rlm@23: # The trace string is used by bsv-trace.pl to for one line trace rlm@23: # output. Basically the current value for a given tag is substituted rlm@23: # into the trace string every cycle. If the tag is not present then rlm@23: # the empty field is used form the %fields hash. rlm@23: rlm@23: $traceString = "$proc $icache $dcache $marb {mkProc:exInstFull} "; rlm@23: $labelString = "$procl $icache $dcache $marb {mkProc:exInstFull} "; rlm@23: