On Mon, Jul 1, 2013 at 1:21 PM, Olof Kindgren <[email protected]>wrote:
> > > On Mon, Jul 1, 2013 at 10:53 AM, Julius Baxter <[email protected]>wrote: > >> On Fri, Jun 28, 2013 at 10:31 PM, Olof Kindgren <[email protected]> >> wrote: >> > Two small patches in one to make or1200-monitor more useful outside of >> > orpsocv2: >> > >> > - Setting log path with a parameter allows more flexible directory >> layout >> > - By setting TEST_NAME_STRING with a parameter we can get rid of >> `include >> > test-defines in or1200_monitor.v >> > >> > Index: verilog/or1200_monitor.v >> > =================================================================== >> > --- verilog/or1200_monitor.v (revision 860) >> > +++ verilog/or1200_monitor.v (working copy) >> > @@ -38,11 +38,13 @@ >> > `include "timescale.v" >> > `include "or1200_defines.v" >> > `include "or1200_monitor_defines.v" >> > -`include "test-defines.v" >> > >> > >> > module or1200_monitor; >> > >> > + parameter TEST_NAME_STRING = "unnamed"; >> > + parameter LOG_DIR = "."; >> > + >> > integer fexe; >> > integer finsn; >> > >> > @@ -64,18 +66,18 @@ >> > initial begin >> > ref = 0; >> > `ifdef OR1200_MONITOR_EXEC_STATE >> > - fexe = $fopen({"../out/",`TEST_NAME_STRING,"-executed.log"}); >> > + fexe = $fopen({LOG_DIR, "/", TEST_NAME_STRING,"-executed.log"}); >> > `endif >> > `ifdef OR1200_MONITOR_EXEC_LOG_DISASSEMBLY >> > finsn = fexe; >> > `endif >> > $timeformat (-9, 2, " ns", 12); >> > `ifdef OR1200_MONITOR_SPRS >> > - fspr = $fopen({"../out/",`TEST_NAME_STRING,"-sprs.log"}); >> > + fspr = $fopen({LOG_DIR, "/", TEST_NAME_STRING,"-sprs.log"}); >> > `endif >> > - fgeneral = $fopen({"../out/",`TEST_NAME_STRING,"-general.log"}); >> > + fgeneral = $fopen({LOG_DIR, "/", >> TEST_NAME_STRING,"-general.log"}); >> > `ifdef OR1200_MONITOR_LOOKUP >> > - flookup = $fopen({"../out/",`TEST_NAME_STRING,"-lookup.log"}); >> > + flookup = $fopen({LOG_DIR, "/", TEST_NAME_STRING,"-lookup.log"}); >> > `endif >> > insns = 0; >> > >> > Index: verilog/orpsoc_testbench.v >> > =================================================================== >> > --- verilog/orpsoc_testbench.v (revision 859) >> > +++ verilog/orpsoc_testbench.v (working copy) >> > @@ -91,7 +91,10 @@ >> > // >> > // Instantiate OR1200 monitor >> > // >> > - or1200_monitor monitor(); >> > + or1200_monitor >> > + #(.TEST_NAME_STRING (`TEST_NAME_STRING), >> > + .LOG_DIR("../out")) >> > + monitor(); >> > >> > `ifndef SIM_QUIET >> > `define CPU_ic_top or1200_ic_top >> > >> > //Olof >> > >> >> Hey Olof >> >> Yeah, that looks good. But what about plusargs? Is that more useful? >> Might be nice to have the single simulation executable and just vary >> plusargs to set up things like this? Just a thought, I don't mind >> either way. >> >> Cheers >> >> Julius >> > > Yes, plusargs is a better solution. I'll cook up a new patch right away. > We could still use this patch though, and just optionally override the > values if the plusargs are set. That would be less intrusive for orpsocv2 > as it is right now. > > //Olof > Patch version 2 Two small patches in one to make or1200-monitor more useful outside of orpsocv2: - Setting log path with a parameter allows more flexible directory layout - if The plusarg "testcase" is set at runtime, this is used to set a unique prefix for the log files. Plusargs are currently not used in orpsocv2, so if it is not set, the name falls back to the value of the parameter TEST_NAME_STRING. The value of the parameter is set to the define `TEST_NAME_STRING in the test bench top levele to avoid any changes to the orpsocv2 scripts. With this, we can get rid of `include test-defines in or1200_monitor.v Index: verilog/or1200_monitor.v =================================================================== --- verilog/or1200_monitor.v (revision 860) +++ verilog/or1200_monitor.v (working copy) @@ -38,11 +38,13 @@ `include "timescale.v" `include "or1200_defines.v" `include "or1200_monitor_defines.v" -`include "test-defines.v" module or1200_monitor; + parameter TEST_NAME_STRING = "unnamed"; + parameter LOG_DIR = "."; + integer fexe; integer finsn; @@ -57,25 +59,45 @@ integer r3; integer insns; + //Trim \0 characters from str and return a right-adjusted string + function [128*8-1:0] trim; + input [128*8-1:0] str; + integer wpos; + integer rpos; + begin + trim = 0; + wpos = 0; + for(rpos=0;rpos<=128*8;rpos=rpos+8) + if(str[rpos+:8] != 0) begin + trim[wpos+:8] = str[rpos+:8]; + wpos = wpos +8; + end + end + endfunction // // Initialization // + reg [64*8-1:0] testcase; //Maximum 64 characters + initial begin ref = 0; + if(!$value$plusargs("testcase=%s", testcase)) + testcase = TEST_NAME_STRING; + `ifdef OR1200_MONITOR_EXEC_STATE - fexe = $fopen({"../out/",`TEST_NAME_STRING,"-executed.log"}); + fexe = $fopen(trim({LOG_DIR, "/", testcase, "-executed.log"})); `endif `ifdef OR1200_MONITOR_EXEC_LOG_DISASSEMBLY finsn = fexe; `endif $timeformat (-9, 2, " ns", 12); `ifdef OR1200_MONITOR_SPRS - fspr = $fopen({"../out/",`TEST_NAME_STRING,"-sprs.log"}); + fspr = $fopen(trim({LOG_DIR, "/", testcase, "-sprs.log"})); `endif - fgeneral = $fopen({"../out/",`TEST_NAME_STRING,"-general.log"}); + fgeneral = $fopen(trim({LOG_DIR, "/", testcase, "-general.log"})); `ifdef OR1200_MONITOR_LOOKUP - flookup = $fopen({"../out/",`TEST_NAME_STRING,"-lookup.log"}); + flookup = $fopen(trim({LOG_DIR, "/", testcase, "-lookup.log"})); `endif insns = 0; Index: verilog/orpsoc_testbench.v =================================================================== --- verilog/orpsoc_testbench.v (revision 859) +++ verilog/orpsoc_testbench.v (working copy) @@ -91,7 +91,10 @@ // // Instantiate OR1200 monitor // - or1200_monitor monitor(); + or1200_monitor + #(.TEST_NAME_STRING (`TEST_NAME_STRING), + .LOG_DIR("../out")) + monitor(); `ifndef SIM_QUIET `define CPU_ic_top or1200_ic_top
_______________________________________________ OpenRISC mailing list [email protected] http://lists.openrisc.net/listinfo/openrisc
