mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-10-29 18:52:30 +00:00 
			
		
		
		
	Added "test_autotb -seed" (and "autotest.sh -S")
This commit is contained in:
		
							parent
							
								
									90c17aad56
								
							
						
					
					
						commit
						88a67afa7d
					
				
					 2 changed files with 12 additions and 5 deletions
				
			
		|  | @ -71,7 +71,7 @@ static std::string idy(std::string str1, std::string str2 = std::string(), std:: | |||
| 	return id(str1); | ||||
| } | ||||
| 
 | ||||
| static void autotest(std::ostream &f, RTLIL::Design *design, int num_iter) | ||||
| static void autotest(std::ostream &f, RTLIL::Design *design, int num_iter, int seed) | ||||
| { | ||||
| 	f << stringf("`ifndef outfile\n"); | ||||
| 	f << stringf("\t`define outfile \"/dev/stdout\"\n"); | ||||
|  | @ -85,7 +85,7 @@ static void autotest(std::ostream &f, RTLIL::Design *design, int num_iter) | |||
| 	f << stringf("reg [31:0] xorshift128_x = 123456789;\n"); | ||||
| 	f << stringf("reg [31:0] xorshift128_y = 362436069;\n"); | ||||
| 	f << stringf("reg [31:0] xorshift128_z = 521288629;\n"); | ||||
| 	f << stringf("reg [31:0] xorshift128_w = %u; // <-- seed value\n", int(time(NULL))); | ||||
| 	f << stringf("reg [31:0] xorshift128_w = %u; // <-- seed value\n", seed ? seed : int(time(NULL))); | ||||
| 	f << stringf("reg [31:0] xorshift128_t;\n\n"); | ||||
| 	f << stringf("task xorshift128;\n"); | ||||
| 	f << stringf("begin\n"); | ||||
|  | @ -342,6 +342,7 @@ struct TestAutotbBackend : public Backend { | |||
| 	virtual void execute(std::ostream *&f, std::string filename, std::vector<std::string> args, RTLIL::Design *design) | ||||
| 	{ | ||||
| 		int num_iter = 1000; | ||||
| 		int seed = 0; | ||||
| 
 | ||||
| 		log_header(design, "Executing TEST_AUTOTB backend (auto-generate pseudo-random test benches).\n"); | ||||
| 
 | ||||
|  | @ -352,11 +353,15 @@ struct TestAutotbBackend : public Backend { | |||
| 				num_iter = atoi(args[++argidx].c_str()); | ||||
| 				continue; | ||||
| 			} | ||||
| 			if (args[argidx] == "-seed" && argidx+1 < GetSize(args)) { | ||||
| 				seed = atoi(args[++argidx].c_str()); | ||||
| 				continue; | ||||
| 			} | ||||
| 			break; | ||||
| 		} | ||||
| 
 | ||||
| 		extra_args(f, filename, args, argidx); | ||||
| 		autotest(*f, design, num_iter); | ||||
| 		autotest(*f, design, num_iter, seed); | ||||
| 	} | ||||
| } TestAutotbBackend; | ||||
| 
 | ||||
|  |  | |||
|  | @ -19,7 +19,7 @@ if [ ! -f $toolsdir/cmp_tbdata -o $toolsdir/cmp_tbdata.c -nt $toolsdir/cmp_tbdat | |||
| 	( set -ex; ${CC:-gcc} -Wall -o $toolsdir/cmp_tbdata $toolsdir/cmp_tbdata.c; ) || exit 1 | ||||
| fi | ||||
| 
 | ||||
| while getopts xmGl:wkjvref:s:p:n: opt; do | ||||
| while getopts xmGl:wkjvref:s:p:n:S: opt; do | ||||
| 	case "$opt" in | ||||
| 		x) | ||||
| 			use_xsim=true ;; | ||||
|  | @ -50,8 +50,10 @@ while getopts xmGl:wkjvref:s:p:n: opt; do | |||
| 			scriptopt="$OPTARG" ;; | ||||
| 		n) | ||||
| 			autotb_opts="$autotb_opts -n $OPTARG" ;; | ||||
| 		S) | ||||
| 			autotb_opts="$autotb_opts -seed $OPTARG" ;; | ||||
| 		*) | ||||
| 			echo "Usage: $0 [-x|-m] [-w] [-k] [-j] [-v] [-r] [-e] [-l libs] [-f frontend] [-s script] [-p cmdstring] verilog-files\n" >&2 | ||||
| 			echo "Usage: $0 [-x|-m] [-G] [-w] [-k] [-j] [-v] [-r] [-e] [-l libs] [-f frontend] [-s script] [-p cmdstring] [-n iters] [-S seed] verilog-files\n" >&2 | ||||
| 			exit 1 | ||||
| 	esac | ||||
| done | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue