dump.v 1.54 KB
// dump.v v1 Frank Berndt
// dump control module;
// :set tabstop=4

module dump;

	// turn on dumping globally or on a per-module basis;
	// set the dump flag instead of $dumpon or $dumpoff;

	reg dump;

	initial
	begin
		dump = 0;
		$dumpoff;
		if($test$plusargs("dump_all")) $dumpvars;
		if($test$plusargs("dump_bb")) $dumpvars(0, vsim.bb);
		if($test$plusargs("dump_cpu")) $dumpvars(0, vsim.bb.cpu);
		if($test$plusargs("dump_bcp")) $dumpvars(0, vsim.bb.bcp);
		if($test$plusargs("dump_arb")) $dumpvars(0, vsim.bb.bcp.arb);
		if($test$plusargs("dump_mi")) $dumpvars(0, vsim.bb.bcp.mi);
		if($test$plusargs("dump_ri")) $dumpvars(0, vsim.bb.bcp.ri);
		if($test$plusargs("dump_pi")) $dumpvars(0, vsim.bb.bcp.pi);
		if($test$plusargs("dump_si")) $dumpvars(0, vsim.bb.bcp.si);
		if($test$plusargs("dump_rsp")) $dumpvars(0, vsim.bb.bcp.rsp);
		if($test$plusargs("dump_rdp")) $dumpvars(0, vsim.bb.bcp.rdp);
		if($test$plusargs("dump_vi")) $dumpvars(0, vsim.bb.bcp.vi);
		if($test$plusargs("dump_ai")) $dumpvars(0, vsim.bb.bcp.ai);
		if($test$plusargs("dump_ui")) begin
			$dumpvars(0, vsim.bb.bcp.ui);
			$dumpvars(0, vsim.usb_tests);
		end
		if($test$plusargs("dump_vsim")) $dumpvars(1, vsim);
		if($test$plusargs("dump")) begin
			dump = 1;
			$dumpvars(1, vsim.bb.bcp.sysclk);
			$dumpvars(1, vsim.bb.bcp.reset_l);
			$dumpvars(1, vsim.bb.bcp.vclock);
			$dumpvars(1, vsim.bb.bcp.memclk);
		end
	end

	// simulator dumping flag;

	always @(dump)
	begin
		if(dump)
			$dumpon;
		else
			$dumpoff;
		$display("%t: %M: dumping %0s", $time, dump? "on" : "off");
	end

endmodule